1*89c4ff92SAndroid Build Coastguard Worker // 2*89c4ff92SAndroid Build Coastguard Worker // Copyright © 2020 Arm Ltd and Contributors. All rights reserved. 3*89c4ff92SAndroid Build Coastguard Worker // SPDX-License-Identifier: MIT 4*89c4ff92SAndroid Build Coastguard Worker // 5*89c4ff92SAndroid Build Coastguard Worker 6*89c4ff92SAndroid Build Coastguard Worker #pragma once 7*89c4ff92SAndroid Build Coastguard Worker 8*89c4ff92SAndroid Build Coastguard Worker #include <client/src/ProfilingUtils.hpp> 9*89c4ff92SAndroid Build Coastguard Worker 10*89c4ff92SAndroid Build Coastguard Worker #include <client/include/ILocalPacketHandler.hpp> 11*89c4ff92SAndroid Build Coastguard Worker #include <client/include/ProfilingOptions.hpp> 12*89c4ff92SAndroid Build Coastguard Worker 13*89c4ff92SAndroid Build Coastguard Worker #include <common/include/Packet.hpp> 14*89c4ff92SAndroid Build Coastguard Worker 15*89c4ff92SAndroid Build Coastguard Worker namespace arm 16*89c4ff92SAndroid Build Coastguard Worker { 17*89c4ff92SAndroid Build Coastguard Worker 18*89c4ff92SAndroid Build Coastguard Worker namespace pipe 19*89c4ff92SAndroid Build Coastguard Worker { 20*89c4ff92SAndroid Build Coastguard Worker 21*89c4ff92SAndroid Build Coastguard Worker class RequestCountersPacketHandler : public ILocalPacketHandler 22*89c4ff92SAndroid Build Coastguard Worker { 23*89c4ff92SAndroid Build Coastguard Worker public: RequestCountersPacketHandler(uint32_t capturePeriod=arm::pipe::LOWEST_CAPTURE_PERIOD)24*89c4ff92SAndroid Build Coastguard Worker explicit RequestCountersPacketHandler(uint32_t capturePeriod = arm::pipe::LOWEST_CAPTURE_PERIOD) : 25*89c4ff92SAndroid Build Coastguard Worker m_CapturePeriod(capturePeriod), 26*89c4ff92SAndroid Build Coastguard Worker m_Connection(nullptr), 27*89c4ff92SAndroid Build Coastguard Worker m_CounterDirectoryMessageHeader(ConstructHeader(0, 2)) {} 28*89c4ff92SAndroid Build Coastguard Worker 29*89c4ff92SAndroid Build Coastguard Worker std::vector<uint32_t> GetHeadersAccepted() override; // ILocalPacketHandler 30*89c4ff92SAndroid Build Coastguard Worker 31*89c4ff92SAndroid Build Coastguard Worker void HandlePacket(const arm::pipe::Packet& packet) override; // ILocalPacketHandler 32*89c4ff92SAndroid Build Coastguard Worker SetConnection(IInternalProfilingConnection * profilingConnection)33*89c4ff92SAndroid Build Coastguard Worker void SetConnection(IInternalProfilingConnection* profilingConnection) override // ILocalPacketHandler 34*89c4ff92SAndroid Build Coastguard Worker { 35*89c4ff92SAndroid Build Coastguard Worker m_Connection = profilingConnection; 36*89c4ff92SAndroid Build Coastguard Worker } 37*89c4ff92SAndroid Build Coastguard Worker 38*89c4ff92SAndroid Build Coastguard Worker private: 39*89c4ff92SAndroid Build Coastguard Worker uint32_t m_CapturePeriod; 40*89c4ff92SAndroid Build Coastguard Worker IInternalProfilingConnection* m_Connection; 41*89c4ff92SAndroid Build Coastguard Worker uint32_t m_CounterDirectoryMessageHeader; 42*89c4ff92SAndroid Build Coastguard Worker std::vector<uint16_t> m_IdList; 43*89c4ff92SAndroid Build Coastguard Worker 44*89c4ff92SAndroid Build Coastguard Worker void SendCounterSelectionPacket(); 45*89c4ff92SAndroid Build Coastguard Worker }; 46*89c4ff92SAndroid Build Coastguard Worker 47*89c4ff92SAndroid Build Coastguard Worker } // namespace pipe 48*89c4ff92SAndroid Build Coastguard Worker 49*89c4ff92SAndroid Build Coastguard Worker } // namespace arm 50