1 // 2 // Copyright © 2019 Arm Ltd and Contributors. All rights reserved. 3 // SPDX-License-Identifier: MIT 4 // 5 6 #pragma once 7 8 #include <armnn/backends/profiling/IBackendProfilingContext.hpp> 9 #include "IProfilingServiceStatus.hpp" 10 #include "ISendCounterPacket.hpp" 11 #include "armnn/profiling/ISendTimelinePacket.hpp" 12 #include "ProfilingStateMachine.hpp" 13 14 #include <common/include/CommandHandlerFunctor.hpp> 15 #include <common/include/Packet.hpp> 16 17 namespace armnn 18 { 19 20 namespace profiling 21 { 22 23 class ConnectionAcknowledgedCommandHandler final : public arm::pipe::CommandHandlerFunctor 24 { 25 26 typedef const std::unordered_map<BackendId, std::shared_ptr<armnn::profiling::IBackendProfilingContext>>& 27 BackendProfilingContexts; 28 29 public: ConnectionAcknowledgedCommandHandler(uint32_t familyId,uint32_t packetId,uint32_t version,ICounterDirectory & counterDirectory,ISendCounterPacket & sendCounterPacket,ISendTimelinePacket & sendTimelinePacket,ProfilingStateMachine & profilingStateMachine,IProfilingServiceStatus & profilingServiceStatus,Optional<BackendProfilingContexts> backendProfilingContexts=EmptyOptional ())30 ConnectionAcknowledgedCommandHandler(uint32_t familyId, 31 uint32_t packetId, 32 uint32_t version, 33 ICounterDirectory& counterDirectory, 34 ISendCounterPacket& sendCounterPacket, 35 ISendTimelinePacket& sendTimelinePacket, 36 ProfilingStateMachine& profilingStateMachine, 37 IProfilingServiceStatus& profilingServiceStatus, 38 Optional<BackendProfilingContexts> backendProfilingContexts = EmptyOptional()) 39 : CommandHandlerFunctor(familyId, packetId, version) 40 , m_CounterDirectory(counterDirectory) 41 , m_SendCounterPacket(sendCounterPacket) 42 , m_SendTimelinePacket(sendTimelinePacket) 43 , m_StateMachine(profilingStateMachine) 44 , m_ProfilingServiceStatus(profilingServiceStatus) 45 , m_BackendProfilingContext(backendProfilingContexts) 46 {} 47 48 void operator()(const arm::pipe::Packet& packet) override; 49 setTimelineEnabled(bool timelineEnabled)50 void setTimelineEnabled(bool timelineEnabled) 51 { 52 m_TimelineEnabled = timelineEnabled; 53 } 54 55 private: 56 const ICounterDirectory& m_CounterDirectory; 57 ISendCounterPacket& m_SendCounterPacket; 58 ISendTimelinePacket& m_SendTimelinePacket; 59 ProfilingStateMachine& m_StateMachine; 60 IProfilingServiceStatus& m_ProfilingServiceStatus; 61 Optional<BackendProfilingContexts> m_BackendProfilingContext; 62 bool m_TimelineEnabled = false; 63 }; 64 65 } // namespace profiling 66 67 } // namespace armnn 68 69