blob: e409ee62f25cb189b5459332bd028ad2606056c6 [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
Sadik Armaganb5f01b22019-09-18 17:29:00 +01008#include "ProfilingStateMachine.hpp"
9
Jim Flynn27761832022-03-20 21:52:17 +000010#include <client/include/IProfilingServiceStatus.hpp>
11#include <client/include/ISendCounterPacket.hpp>
12#include <client/include/ISendTimelinePacket.hpp>
13
14#include <client/include/backends/IBackendProfilingContext.hpp>
15
Jim Flynnbbfe6032020-07-20 16:57:44 +010016#include <common/include/CommandHandlerFunctor.hpp>
17#include <common/include/Packet.hpp>
18
Cathal Corbett5aa9fd72022-02-25 15:33:28 +000019namespace arm
Sadik Armaganb5f01b22019-09-18 17:29:00 +010020{
21
Cathal Corbett5aa9fd72022-02-25 15:33:28 +000022namespace pipe
Sadik Armaganb5f01b22019-09-18 17:29:00 +010023{
24
Jim Flynnbbfe6032020-07-20 16:57:44 +010025class ConnectionAcknowledgedCommandHandler final : public arm::pipe::CommandHandlerFunctor
Sadik Armaganb5f01b22019-09-18 17:29:00 +010026{
27
Cathal Corbett6f073722022-03-04 12:11:09 +000028typedef const std::unordered_map<std::string, std::shared_ptr<IBackendProfilingContext>>&
Finn Williamsfe5a24b2020-04-09 16:05:28 +010029 BackendProfilingContexts;
30
Sadik Armaganb5f01b22019-09-18 17:29:00 +010031public:
Jim Flynn397043f2019-10-17 17:37:10 +010032 ConnectionAcknowledgedCommandHandler(uint32_t familyId,
33 uint32_t packetId,
Sadik Armaganb5f01b22019-09-18 17:29:00 +010034 uint32_t version,
Keith Davis3201eea2019-10-24 17:30:41 +010035 ICounterDirectory& counterDirectory,
36 ISendCounterPacket& sendCounterPacket,
Matteo Martincighcdfb9412019-11-08 11:23:06 +000037 ISendTimelinePacket& sendTimelinePacket,
Finn Williamsfe5a24b2020-04-09 16:05:28 +010038 ProfilingStateMachine& profilingStateMachine,
Jim Flynn6398a982020-05-27 17:05:21 +010039 IProfilingServiceStatus& profilingServiceStatus,
Jim Flynndecd08b2022-03-13 22:35:46 +000040 arm::pipe::Optional<BackendProfilingContexts> backendProfilingContexts =
41 arm::pipe::EmptyOptional())
Jim Flynn397043f2019-10-17 17:37:10 +010042 : CommandHandlerFunctor(familyId, packetId, version)
Keith Davis3201eea2019-10-24 17:30:41 +010043 , m_CounterDirectory(counterDirectory)
44 , m_SendCounterPacket(sendCounterPacket)
Matteo Martincighcdfb9412019-11-08 11:23:06 +000045 , m_SendTimelinePacket(sendTimelinePacket)
Matteo Martincighc2728f92019-10-07 12:35:21 +010046 , m_StateMachine(profilingStateMachine)
Jim Flynn6398a982020-05-27 17:05:21 +010047 , m_ProfilingServiceStatus(profilingServiceStatus)
Finn Williamsfe5a24b2020-04-09 16:05:28 +010048 , m_BackendProfilingContext(backendProfilingContexts)
Matthew Bentham2048bcf2022-01-10 15:41:26 +000049 , m_TimelineEnabled(false)
Matteo Martincighc2728f92019-10-07 12:35:21 +010050 {}
Sadik Armaganb5f01b22019-09-18 17:29:00 +010051
Jim Flynnbbfe6032020-07-20 16:57:44 +010052 void operator()(const arm::pipe::Packet& packet) override;
Sadik Armaganb5f01b22019-09-18 17:29:00 +010053
Finn Williamsd7fcafa2020-04-23 17:55:18 +010054 void setTimelineEnabled(bool timelineEnabled)
55 {
56 m_TimelineEnabled = timelineEnabled;
57 }
58
Sadik Armaganb5f01b22019-09-18 17:29:00 +010059private:
Keith Davis3201eea2019-10-24 17:30:41 +010060 const ICounterDirectory& m_CounterDirectory;
61 ISendCounterPacket& m_SendCounterPacket;
Matteo Martincighcdfb9412019-11-08 11:23:06 +000062 ISendTimelinePacket& m_SendTimelinePacket;
Keith Davis3201eea2019-10-24 17:30:41 +010063 ProfilingStateMachine& m_StateMachine;
Jim Flynn6398a982020-05-27 17:05:21 +010064 IProfilingServiceStatus& m_ProfilingServiceStatus;
Jim Flynndecd08b2022-03-13 22:35:46 +000065 arm::pipe::Optional<BackendProfilingContexts> m_BackendProfilingContext;
Matthew Bentham2048bcf2022-01-10 15:41:26 +000066 std::atomic<bool> m_TimelineEnabled;
Sadik Armaganb5f01b22019-09-18 17:29:00 +010067};
68
Cathal Corbett5aa9fd72022-02-25 15:33:28 +000069} // namespace pipe
Sadik Armaganb5f01b22019-09-18 17:29:00 +010070
Cathal Corbett5aa9fd72022-02-25 15:33:28 +000071} // namespace arm