blob: d95adc032189c0b8a18ce1f5bb02b5561220274e [file] [log] [blame]
Finn Williamse63a0262019-10-22 10:30:49 +01001//
2// Copyright © 2019 Arm Ltd. All rights reserved.
3// SPDX-License-Identifier: MIT
4//
5
6#pragma once
7
Finn Williamse63a0262019-10-22 10:30:49 +01008#include <CommandHandlerFunctor.hpp>
Finn Williams8a2b4682020-02-26 10:25:26 +00009#include "armnn/profiling/ITimelineDecoder.hpp"
10
Finn Williamse63a0262019-10-22 10:30:49 +010011#include <Packet.hpp>
12#include <ProfilingUtils.hpp>
13
14namespace armnn
15{
16
Finn Williams8a2b4682020-02-26 10:25:26 +000017namespace timelinedecoder
Finn Williamse63a0262019-10-22 10:30:49 +010018{
19
20class TimelineCaptureCommandHandler : public profiling::CommandHandlerFunctor
21{
22 // Utils
23 uint32_t uint32_t_size = sizeof(uint32_t);
24 uint32_t uint64_t_size = sizeof(uint64_t);
Finn Williamse63a0262019-10-22 10:30:49 +010025
26 using ReadFunction = void (TimelineCaptureCommandHandler::*)(const unsigned char*, uint32_t);
27
28public:
29 TimelineCaptureCommandHandler(uint32_t familyId,
30 uint32_t packetId,
31 uint32_t version,
Finn Williams510f6182020-02-21 11:14:08 +000032 ITimelineDecoder& timelineDecoder,
33 uint32_t threadId_size)
Finn Williamse63a0262019-10-22 10:30:49 +010034 : CommandHandlerFunctor(familyId, packetId, version)
Finn Williams510f6182020-02-21 11:14:08 +000035 , m_TimelineDecoder(timelineDecoder)
36 , m_ThreadIdSize(threadId_size)
Finn Williamse63a0262019-10-22 10:30:49 +010037 {}
38
39 void operator()(const armnn::profiling::Packet& packet) override;
40
41 void ReadLabel(const unsigned char* data, uint32_t offset);
42 void ReadEntity(const unsigned char* data, uint32_t offset);
43 void ReadEventClass(const unsigned char* data, uint32_t offset);
44 void ReadRelationship(const unsigned char* data, uint32_t offset);
45 void ReadEvent(const unsigned char* data, uint32_t offset);
46
Finn Williamse63a0262019-10-22 10:30:49 +010047private:
48 void ParseData(const armnn::profiling::Packet& packet);
49
Finn Williams510f6182020-02-21 11:14:08 +000050 ITimelineDecoder& m_TimelineDecoder;
51 const uint32_t m_ThreadIdSize;
Finn Williamse63a0262019-10-22 10:30:49 +010052 static const ReadFunction m_ReadFunctions[];
Finn Williamse63a0262019-10-22 10:30:49 +010053};
54
55} //namespace gatordmock
56
57} //namespace armnn