blob: b5e48626a7e2ece8245c35f34bf95068da5f50db [file] [log] [blame]
Jim Flynn01d02812020-04-29 21:12:13 +01001//
Jim Flynnbbfe6032020-07-20 16:57:44 +01002// Copyright © 2020 Arm Ltd and Contributors. All rights reserved.
Jim Flynn01d02812020-04-29 21:12:13 +01003// SPDX-License-Identifier: MIT
4//
5
6#pragma once
7
8#include <armnn/Types.hpp>
9#include <armnn/profiling/ILocalPacketHandler.hpp>
Jim Flynn01d02812020-04-29 21:12:13 +010010#include "ProfilingUtils.hpp"
11
Jim Flynnbbfe6032020-07-20 16:57:44 +010012#include <common/include/Packet.hpp>
13
Jim Flynn01d02812020-04-29 21:12:13 +010014namespace armnn
15{
16
17namespace profiling
18{
19
20class RequestCountersPacketHandler : public ILocalPacketHandler
21{
22public:
23 explicit RequestCountersPacketHandler(uint32_t capturePeriod = LOWEST_CAPTURE_PERIOD) :
24 m_CapturePeriod(capturePeriod),
25 m_Connection(nullptr),
26 m_CounterDirectoryMessageHeader(ConstructHeader(0, 2)) {}
27
28 std::vector<uint32_t> GetHeadersAccepted() override; // ILocalPacketHandler
29
Jim Flynnbbfe6032020-07-20 16:57:44 +010030 void HandlePacket(const arm::pipe::Packet& packet) override; // ILocalPacketHandler
Jim Flynn01d02812020-04-29 21:12:13 +010031
32 void SetConnection(IInternalProfilingConnection* profilingConnection) override // ILocalPacketHandler
33 {
34 m_Connection = profilingConnection;
35 }
36
37private:
38 uint32_t m_CapturePeriod;
39 IInternalProfilingConnection* m_Connection;
40 uint32_t m_CounterDirectoryMessageHeader;
41 std::vector<uint16_t> m_IdList;
42
43 void SendCounterSelectionPacket();
44};
45
46} // namespace profiling
47
48} // namespace armnn