• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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