blob: 6c0c57ae6962a7d937a1d67673b87b8d336b5c81 [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 Williams0c8cb992020-05-07 10:38:15 +01008#include <armnn/profiling/ITimelineDecoder.hpp>
Finn Williams8a2b4682020-02-26 10:25:26 +00009
Finn Williamse6a2ccd2020-02-27 16:21:41 +000010#include <CommandHandlerFunctor.hpp>
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,
Finn Williamse6a2ccd2020-02-27 16:21:41 +000034 uint32_t threadIdSize = 0)
35 : CommandHandlerFunctor(familyId, packetId, version)
36 , m_TimelineDecoder(timelineDecoder)
37 , m_ThreadIdSize(threadIdSize)
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 Williamse6a2ccd2020-02-27 16:21:41 +000049 void SetThreadIdSize(uint32_t size);
50
Finn Williamse63a0262019-10-22 10:30:49 +010051private:
52 void ParseData(const armnn::profiling::Packet& packet);
53
Finn Williams510f6182020-02-21 11:14:08 +000054 ITimelineDecoder& m_TimelineDecoder;
Finn Williamse6a2ccd2020-02-27 16:21:41 +000055 uint32_t m_ThreadIdSize;
Keith Davis5238aff2020-03-11 12:17:05 +000056 unsigned int m_PacketLength;
Finn Williamse63a0262019-10-22 10:30:49 +010057 static const ReadFunction m_ReadFunctions[];
Keith Davis5238aff2020-03-11 12:17:05 +000058
Finn Williamse63a0262019-10-22 10:30:49 +010059};
60
61} //namespace gatordmock
62
63} //namespace armnn