blob: 1e047a65116b86e44925c5e6f6cd6f4e2341cf64 [file] [log] [blame]
Nikhil Rajbc626052019-08-15 15:49:45 +01001//
2// Copyright © 2017 Arm Ltd. All rights reserved.
3// SPDX-License-Identifier: MIT
4//
5#pragma once
6
Aron Virginas-Tare898db92019-08-22 12:56:34 +01007#include <armnn/Exceptions.hpp>
Nikhil Rajbc626052019-08-15 15:49:45 +01008
9#include <boost/log/trivial.hpp>
10
Aron Virginas-Tare898db92019-08-22 12:56:34 +010011namespace armnn
12{
13
14namespace profiling
15{
Nikhil Rajbc626052019-08-15 15:49:45 +010016
17class Packet
18{
19public:
FinnWilliamsArma0c78712019-09-16 12:06:47 +010020 Packet(uint32_t header, uint32_t length, std::unique_ptr<char[]>& data)
21 : m_Header(header), m_Length(length), m_Data(std::move(data))
Matteo Martincigh149528e2019-09-05 12:02:04 +010022 {
23 m_PacketId = ((header >> 16) & 1023);
24 m_PacketFamily = (header >> 26);
Nikhil Rajbc626052019-08-15 15:49:45 +010025
Matteo Martincigh149528e2019-09-05 12:02:04 +010026 if (length == 0 && m_Data != nullptr)
27 {
28 throw armnn::InvalidArgumentException("Data should be null when length is zero");
29 }
30 }
Nikhil Rajbc626052019-08-15 15:49:45 +010031
FinnWilliamsArma0c78712019-09-16 12:06:47 +010032 Packet(Packet&& other) :
33 m_Header(other.m_Header),
34 m_PacketFamily(other.m_PacketFamily),
35 m_PacketId(other.m_PacketId),
36 m_Length(other.m_Length),
37 m_Data(std::move(other.m_Data)){};
38
39 Packet(const Packet& other) = delete;
40 Packet& operator=(const Packet&) = delete;
41
Nikhil Rajbc626052019-08-15 15:49:45 +010042 uint32_t GetHeader() const;
43 uint32_t GetPacketFamily() const;
44 uint32_t GetPacketId() const;
45 uint32_t GetLength() const;
FinnWilliamsArma0c78712019-09-16 12:06:47 +010046 const char* const GetData() const;
Nikhil Rajbc626052019-08-15 15:49:45 +010047
48 uint32_t GetPacketClass() const;
49 uint32_t GetPacketType() const;
50
51private:
52 uint32_t m_Header;
53 uint32_t m_PacketFamily;
54 uint32_t m_PacketId;
55 uint32_t m_Length;
FinnWilliamsArma0c78712019-09-16 12:06:47 +010056 std::unique_ptr<char[]> m_Data;
Aron Virginas-Tare898db92019-08-22 12:56:34 +010057};
58
59} // namespace profiling
60
61} // namespace armnn