xref: /aosp_15_r20/external/armnn/src/profiling/test/RequestCountersPacketHandler.hpp (revision 89c4ff92f2867872bb9e2354d150bf0c8c502810)
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