blob: 21e1fe61868aea7d8da653af51b5606d8337e9ce [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"
10#include "IReportStructure.hpp"
Keith Davis33ed2212020-03-30 10:43:41 +010011#include "INotifyBackends.hpp"
12
Jim Flynnbbfe6032020-07-20 16:57:44 +010013#include <common/include/CommandHandlerFunctor.hpp>
Jim Flynndecd08b2022-03-13 22:35:46 +000014#include <common/include/Optional.hpp>
Jim Flynnbbfe6032020-07-20 16:57:44 +010015#include <common/include/Packet.hpp>
Finn Williams0c8cb992020-05-07 10:38:15 +010016
Cathal Corbett5aa9fd72022-02-25 15:33:28 +000017namespace arm
Keith Davis33ed2212020-03-30 10:43:41 +010018{
19
Cathal Corbett5aa9fd72022-02-25 15:33:28 +000020namespace pipe
Keith Davis33ed2212020-03-30 10:43:41 +010021{
22
Jim Flynnbbfe6032020-07-20 16:57:44 +010023class ActivateTimelineReportingCommandHandler : public arm::pipe::CommandHandlerFunctor
Keith Davis33ed2212020-03-30 10:43:41 +010024{
25public:
26 ActivateTimelineReportingCommandHandler(uint32_t familyId,
27 uint32_t packetId,
28 uint32_t version,
29 SendTimelinePacket& sendTimelinePacket,
30 ProfilingStateMachine& profilingStateMachine,
Jim Flynndecd08b2022-03-13 22:35:46 +000031 arm::pipe::Optional<IReportStructure&> reportStructure,
Keith Davis33ed2212020-03-30 10:43:41 +010032 std::atomic<bool>& timelineReporting,
Jim Flynn9c85b412022-03-16 00:27:43 +000033 INotifyBackends& notifyBackends,
34 IProfilingService& profilingService)
Keith Davis33ed2212020-03-30 10:43:41 +010035 : CommandHandlerFunctor(familyId, packetId, version),
36 m_SendTimelinePacket(sendTimelinePacket),
37 m_StateMachine(profilingStateMachine),
38 m_TimelineReporting(timelineReporting),
39 m_BackendNotifier(notifyBackends),
Jim Flynn9c85b412022-03-16 00:27:43 +000040 m_ProfilingService(profilingService),
Keith Davis33ed2212020-03-30 10:43:41 +010041 m_ReportStructure(reportStructure)
42 {}
43
Jim Flynnbbfe6032020-07-20 16:57:44 +010044 void operator()(const arm::pipe::Packet& packet) override;
Keith Davis33ed2212020-03-30 10:43:41 +010045
46private:
47 SendTimelinePacket& m_SendTimelinePacket;
48 ProfilingStateMachine& m_StateMachine;
49 std::atomic<bool>& m_TimelineReporting;
50 INotifyBackends& m_BackendNotifier;
Jim Flynn9c85b412022-03-16 00:27:43 +000051 IProfilingService& m_ProfilingService;
Keith Davis33ed2212020-03-30 10:43:41 +010052
Jim Flynndecd08b2022-03-13 22:35:46 +000053 arm::pipe::Optional<IReportStructure&> m_ReportStructure;
Keith Davis33ed2212020-03-30 10:43:41 +010054};
55
Cathal Corbett5aa9fd72022-02-25 15:33:28 +000056} // namespace pipe
Keith Davis33ed2212020-03-30 10:43:41 +010057
Jim Flynn4a962112022-03-13 20:18:58 +000058} // namespace arm