blob: 8aba9216b8b412e66542aa234e544ac2fd4db606 [file] [log] [blame]
Sadik Armaganb5f01b22019-09-18 17:29:00 +01001//
2// Copyright © 2019 Arm Ltd. All rights reserved.
3// SPDX-License-Identifier: MIT
4//
5
6#pragma once
7
Finn Williamsfe5a24b2020-04-09 16:05:28 +01008#include <armnn/backends/profiling/IBackendProfilingContext.hpp>
Sadik Armaganb5f01b22019-09-18 17:29:00 +01009#include "CommandHandlerFunctor.hpp"
Keith Davis3201eea2019-10-24 17:30:41 +010010#include "ISendCounterPacket.hpp"
Colm Donelan5ccb33d2020-01-24 16:27:02 +000011#include "armnn/profiling/ISendTimelinePacket.hpp"
Finn Williams56b465d2020-05-15 13:34:12 +010012#include <Packet.hpp>
Sadik Armaganb5f01b22019-09-18 17:29:00 +010013#include "ProfilingStateMachine.hpp"
14
15namespace armnn
16{
17
18namespace profiling
19{
20
Matteo Martincighc2728f92019-10-07 12:35:21 +010021class ConnectionAcknowledgedCommandHandler final : public CommandHandlerFunctor
Sadik Armaganb5f01b22019-09-18 17:29:00 +010022{
23
Finn Williamsfe5a24b2020-04-09 16:05:28 +010024typedef const std::unordered_map<BackendId, std::shared_ptr<armnn::profiling::IBackendProfilingContext>>&
25 BackendProfilingContexts;
26
Sadik Armaganb5f01b22019-09-18 17:29:00 +010027public:
Jim Flynn397043f2019-10-17 17:37:10 +010028 ConnectionAcknowledgedCommandHandler(uint32_t familyId,
29 uint32_t packetId,
Sadik Armaganb5f01b22019-09-18 17:29:00 +010030 uint32_t version,
Keith Davis3201eea2019-10-24 17:30:41 +010031 ICounterDirectory& counterDirectory,
32 ISendCounterPacket& sendCounterPacket,
Matteo Martincighcdfb9412019-11-08 11:23:06 +000033 ISendTimelinePacket& sendTimelinePacket,
Finn Williamsfe5a24b2020-04-09 16:05:28 +010034 ProfilingStateMachine& profilingStateMachine,
35 Optional<BackendProfilingContexts> backendProfilingContexts = EmptyOptional())
Jim Flynn397043f2019-10-17 17:37:10 +010036 : CommandHandlerFunctor(familyId, packetId, version)
Keith Davis3201eea2019-10-24 17:30:41 +010037 , m_CounterDirectory(counterDirectory)
38 , m_SendCounterPacket(sendCounterPacket)
Matteo Martincighcdfb9412019-11-08 11:23:06 +000039 , m_SendTimelinePacket(sendTimelinePacket)
Matteo Martincighc2728f92019-10-07 12:35:21 +010040 , m_StateMachine(profilingStateMachine)
Finn Williamsfe5a24b2020-04-09 16:05:28 +010041 , m_BackendProfilingContext(backendProfilingContexts)
Matteo Martincighc2728f92019-10-07 12:35:21 +010042 {}
Sadik Armaganb5f01b22019-09-18 17:29:00 +010043
44 void operator()(const Packet& packet) override;
45
Finn Williamsd7fcafa2020-04-23 17:55:18 +010046 void setTimelineEnabled(bool timelineEnabled)
47 {
48 m_TimelineEnabled = timelineEnabled;
49 }
50
Sadik Armaganb5f01b22019-09-18 17:29:00 +010051private:
Keith Davis3201eea2019-10-24 17:30:41 +010052 const ICounterDirectory& m_CounterDirectory;
53 ISendCounterPacket& m_SendCounterPacket;
Matteo Martincighcdfb9412019-11-08 11:23:06 +000054 ISendTimelinePacket& m_SendTimelinePacket;
Keith Davis3201eea2019-10-24 17:30:41 +010055 ProfilingStateMachine& m_StateMachine;
Finn Williamsfe5a24b2020-04-09 16:05:28 +010056 Optional<BackendProfilingContexts> m_BackendProfilingContext;
Finn Williamsd7fcafa2020-04-23 17:55:18 +010057 bool m_TimelineEnabled = false;
Sadik Armaganb5f01b22019-09-18 17:29:00 +010058};
59
60} // namespace profiling
61
62} // namespace armnn
63