blob: 0906f7f9f3eee959012b740889d8dcb2dc466440 [file] [log] [blame]
Sadik Armaganb5f01b22019-09-18 17:29:00 +01001//
Jim Flynn6398a982020-05-27 17:05:21 +01002// Copyright © 2019 Arm Ltd and Contributors. All rights reserved.
Sadik Armaganb5f01b22019-09-18 17:29:00 +01003// SPDX-License-Identifier: MIT
4//
5
6#pragma once
7
Finn Williamsfe5a24b2020-04-09 16:05:28 +01008#include <armnn/backends/profiling/IBackendProfilingContext.hpp>
Jim Flynn6398a982020-05-27 17:05:21 +01009#include "IProfilingServiceStatus.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"
Sadik Armaganb5f01b22019-09-18 17:29:00 +010012#include "ProfilingStateMachine.hpp"
13
Jim Flynnbbfe6032020-07-20 16:57:44 +010014#include <common/include/CommandHandlerFunctor.hpp>
15#include <common/include/Packet.hpp>
16
Sadik Armaganb5f01b22019-09-18 17:29:00 +010017namespace armnn
18{
19
20namespace profiling
21{
22
Jim Flynnbbfe6032020-07-20 16:57:44 +010023class ConnectionAcknowledgedCommandHandler final : public arm::pipe::CommandHandlerFunctor
Sadik Armaganb5f01b22019-09-18 17:29:00 +010024{
25
Finn Williamsfe5a24b2020-04-09 16:05:28 +010026typedef const std::unordered_map<BackendId, std::shared_ptr<armnn::profiling::IBackendProfilingContext>>&
27 BackendProfilingContexts;
28
Sadik Armaganb5f01b22019-09-18 17:29:00 +010029public:
Jim Flynn397043f2019-10-17 17:37:10 +010030 ConnectionAcknowledgedCommandHandler(uint32_t familyId,
31 uint32_t packetId,
Sadik Armaganb5f01b22019-09-18 17:29:00 +010032 uint32_t version,
Keith Davis3201eea2019-10-24 17:30:41 +010033 ICounterDirectory& counterDirectory,
34 ISendCounterPacket& sendCounterPacket,
Matteo Martincighcdfb9412019-11-08 11:23:06 +000035 ISendTimelinePacket& sendTimelinePacket,
Finn Williamsfe5a24b2020-04-09 16:05:28 +010036 ProfilingStateMachine& profilingStateMachine,
Jim Flynn6398a982020-05-27 17:05:21 +010037 IProfilingServiceStatus& profilingServiceStatus,
Finn Williamsfe5a24b2020-04-09 16:05:28 +010038 Optional<BackendProfilingContexts> backendProfilingContexts = EmptyOptional())
Jim Flynn397043f2019-10-17 17:37:10 +010039 : CommandHandlerFunctor(familyId, packetId, version)
Keith Davis3201eea2019-10-24 17:30:41 +010040 , m_CounterDirectory(counterDirectory)
41 , m_SendCounterPacket(sendCounterPacket)
Matteo Martincighcdfb9412019-11-08 11:23:06 +000042 , m_SendTimelinePacket(sendTimelinePacket)
Matteo Martincighc2728f92019-10-07 12:35:21 +010043 , m_StateMachine(profilingStateMachine)
Jim Flynn6398a982020-05-27 17:05:21 +010044 , m_ProfilingServiceStatus(profilingServiceStatus)
Finn Williamsfe5a24b2020-04-09 16:05:28 +010045 , m_BackendProfilingContext(backendProfilingContexts)
Matteo Martincighc2728f92019-10-07 12:35:21 +010046 {}
Sadik Armaganb5f01b22019-09-18 17:29:00 +010047
Jim Flynnbbfe6032020-07-20 16:57:44 +010048 void operator()(const arm::pipe::Packet& packet) override;
Sadik Armaganb5f01b22019-09-18 17:29:00 +010049
Finn Williamsd7fcafa2020-04-23 17:55:18 +010050 void setTimelineEnabled(bool timelineEnabled)
51 {
52 m_TimelineEnabled = timelineEnabled;
53 }
54
Sadik Armaganb5f01b22019-09-18 17:29:00 +010055private:
Keith Davis3201eea2019-10-24 17:30:41 +010056 const ICounterDirectory& m_CounterDirectory;
57 ISendCounterPacket& m_SendCounterPacket;
Matteo Martincighcdfb9412019-11-08 11:23:06 +000058 ISendTimelinePacket& m_SendTimelinePacket;
Keith Davis3201eea2019-10-24 17:30:41 +010059 ProfilingStateMachine& m_StateMachine;
Jim Flynn6398a982020-05-27 17:05:21 +010060 IProfilingServiceStatus& m_ProfilingServiceStatus;
Finn Williamsfe5a24b2020-04-09 16:05:28 +010061 Optional<BackendProfilingContexts> m_BackendProfilingContext;
Finn Williamsd7fcafa2020-04-23 17:55:18 +010062 bool m_TimelineEnabled = false;
Sadik Armaganb5f01b22019-09-18 17:29:00 +010063};
64
65} // namespace profiling
66
67} // namespace armnn
68