blob: c9fed735948174b7267241bb0d058db24947dc11 [file] [log] [blame]
Keith Davis33ed2212020-03-30 10:43:41 +01001//
Jim Flynnbbfe6032020-07-20 16:57:44 +01002// Copyright © 2020 Arm Ltd and Contributors. All rights reserved.
Keith Davis33ed2212020-03-30 10:43:41 +01003// SPDX-License-Identifier: MIT
4//
5
6#pragma once
7
Keith Davis33ed2212020-03-30 10:43:41 +01008#include "ProfilingStateMachine.hpp"
Keith Davis33ed2212020-03-30 10:43:41 +01009#include "SendTimelinePacket.hpp"
Keith Davis33ed2212020-03-30 10:43:41 +010010#include "INotifyBackends.hpp"
11
Jim Flynn27761832022-03-20 21:52:17 +000012#include <client/include/IReportStructure.hpp>
13
Jim Flynnbbfe6032020-07-20 16:57:44 +010014#include <common/include/CommandHandlerFunctor.hpp>
Jim Flynndecd08b2022-03-13 22:35:46 +000015#include <common/include/Optional.hpp>
Jim Flynnbbfe6032020-07-20 16:57:44 +010016#include <common/include/Packet.hpp>
Finn Williams0c8cb992020-05-07 10:38:15 +010017
Cathal Corbett5aa9fd72022-02-25 15:33:28 +000018namespace arm
Keith Davis33ed2212020-03-30 10:43:41 +010019{
20
Cathal Corbett5aa9fd72022-02-25 15:33:28 +000021namespace pipe
Keith Davis33ed2212020-03-30 10:43:41 +010022{
23
Jim Flynnbbfe6032020-07-20 16:57:44 +010024class ActivateTimelineReportingCommandHandler : public arm::pipe::CommandHandlerFunctor
Keith Davis33ed2212020-03-30 10:43:41 +010025{
26public:
27 ActivateTimelineReportingCommandHandler(uint32_t familyId,
28 uint32_t packetId,
29 uint32_t version,
30 SendTimelinePacket& sendTimelinePacket,
31 ProfilingStateMachine& profilingStateMachine,
Jim Flynndecd08b2022-03-13 22:35:46 +000032 arm::pipe::Optional<IReportStructure&> reportStructure,
Keith Davis33ed2212020-03-30 10:43:41 +010033 std::atomic<bool>& timelineReporting,
Jim Flynn9c85b412022-03-16 00:27:43 +000034 INotifyBackends& notifyBackends,
35 IProfilingService& profilingService)
Keith Davis33ed2212020-03-30 10:43:41 +010036 : CommandHandlerFunctor(familyId, packetId, version),
37 m_SendTimelinePacket(sendTimelinePacket),
38 m_StateMachine(profilingStateMachine),
39 m_TimelineReporting(timelineReporting),
40 m_BackendNotifier(notifyBackends),
Jim Flynn9c85b412022-03-16 00:27:43 +000041 m_ProfilingService(profilingService),
Keith Davis33ed2212020-03-30 10:43:41 +010042 m_ReportStructure(reportStructure)
43 {}
44
Jim Flynnbbfe6032020-07-20 16:57:44 +010045 void operator()(const arm::pipe::Packet& packet) override;
Keith Davis33ed2212020-03-30 10:43:41 +010046
47private:
48 SendTimelinePacket& m_SendTimelinePacket;
49 ProfilingStateMachine& m_StateMachine;
50 std::atomic<bool>& m_TimelineReporting;
51 INotifyBackends& m_BackendNotifier;
Jim Flynn9c85b412022-03-16 00:27:43 +000052 IProfilingService& m_ProfilingService;
Keith Davis33ed2212020-03-30 10:43:41 +010053
Jim Flynndecd08b2022-03-13 22:35:46 +000054 arm::pipe::Optional<IReportStructure&> m_ReportStructure;
Keith Davis33ed2212020-03-30 10:43:41 +010055};
56
Cathal Corbett5aa9fd72022-02-25 15:33:28 +000057} // namespace pipe
Keith Davis33ed2212020-03-30 10:43:41 +010058
Jim Flynn4a962112022-03-13 20:18:58 +000059} // namespace arm