blob: b69e615b56d8c5b7730084575fa957185119e892 [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
Keith Davis5238aff2020-03-11 12:17:05 +000020class TimelineCaptureCommandHandler :
21 public profiling::CommandHandlerFunctor
Finn Williamse63a0262019-10-22 10:30:49 +010022{
23 // Utils
24 uint32_t uint32_t_size = sizeof(uint32_t);
25 uint32_t uint64_t_size = sizeof(uint64_t);
Finn Williamse63a0262019-10-22 10:30:49 +010026
Keith Davis5238aff2020-03-11 12:17:05 +000027 using ReadFunction = void (TimelineCaptureCommandHandler::*)(const unsigned char*, uint32_t&);
Finn Williamse63a0262019-10-22 10:30:49 +010028
29public:
30 TimelineCaptureCommandHandler(uint32_t familyId,
31 uint32_t packetId,
32 uint32_t version,
Finn Williams510f6182020-02-21 11:14:08 +000033 ITimelineDecoder& timelineDecoder,
34 uint32_t threadId_size)
Keith Davis5238aff2020-03-11 12:17:05 +000035 : CommandHandlerFunctor(familyId, packetId, version),
36 m_TimelineDecoder(timelineDecoder),
37 m_ThreadIdSize(threadId_size),
38 m_PacketLength(0)
Finn Williamse63a0262019-10-22 10:30:49 +010039 {}
40
41 void operator()(const armnn::profiling::Packet& packet) override;
42
Keith Davis5238aff2020-03-11 12:17:05 +000043 void ReadLabel(const unsigned char* data, uint32_t& offset);
44 void ReadEntity(const unsigned char* data, uint32_t& offset);
45 void ReadEventClass(const unsigned char* data, uint32_t& offset);
46 void ReadRelationship(const unsigned char* data, uint32_t& offset);
47 void ReadEvent(const unsigned char* data, uint32_t& offset);
Finn Williamse63a0262019-10-22 10:30:49 +010048
Finn Williamse63a0262019-10-22 10:30:49 +010049private:
50 void ParseData(const armnn::profiling::Packet& packet);
51
Finn Williams510f6182020-02-21 11:14:08 +000052 ITimelineDecoder& m_TimelineDecoder;
Keith Davis5238aff2020-03-11 12:17:05 +000053
54 const uint32_t m_ThreadIdSize;
55 unsigned int m_PacketLength;
Finn Williamse63a0262019-10-22 10:30:49 +010056 static const ReadFunction m_ReadFunctions[];
Keith Davis5238aff2020-03-11 12:17:05 +000057
Finn Williamse63a0262019-10-22 10:30:49 +010058};
59
60} //namespace gatordmock
61
62} //namespace armnn