From bc62605b8f4592881dcc6eb74b5d7af089ae3fd0 Mon Sep 17 00:00:00 2001 From: Nikhil Raj Date: Thu, 15 Aug 2019 15:49:45 +0100 Subject: IVGCVSW-3415 Create the Packet Class Change-Id: Ie59e82e7f87f5ba6496aa8579bc9d40360d90999 Signed-off-by: Nikhil Raj --- CMakeLists.txt | 2 ++ src/profiling/Packet.cpp | 41 +++++++++++++++++++++++++++++++ src/profiling/Packet.hpp | 45 +++++++++++++++++++++++++++++++++++ src/profiling/test/ProfilingTests.cpp | 22 +++++++++++++++++ 4 files changed, 110 insertions(+) create mode 100644 src/profiling/Packet.cpp create mode 100644 src/profiling/Packet.hpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 66b8cf4a10..b098a0ac90 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -413,6 +413,8 @@ list(APPEND armnn_sources src/armnn/optimizations/SquashEqualSiblings.hpp src/profiling/CommandHandlerKey.cpp src/profiling/CommandHandlerKey.hpp + src/profiling/Packet.cpp + src/profiling/Packet.hpp third-party/half/half.hpp ) diff --git a/src/profiling/Packet.cpp b/src/profiling/Packet.cpp new file mode 100644 index 0000000000..97cb89b517 --- /dev/null +++ b/src/profiling/Packet.cpp @@ -0,0 +1,41 @@ +// +// Copyright © 2017 Arm Ltd. All rights reserved. +// SPDX-License-Identifier: MIT +// + +#include "Packet.hpp" + +std::uint32_t Packet::GetHeader() const +{ + return m_Header; +} + +std::uint32_t Packet::GetPacketFamily() const +{ + return m_PacketFamily; +} + +std::uint32_t Packet::GetPacketId() const +{ + return m_PacketId; +} + +std::uint32_t Packet::GetLength() const +{ + return m_Length; +} + +const char* Packet::GetData() +{ + return m_Data; +} + +std::uint32_t Packet::GetPacketClass() const +{ + return (m_PacketId >> 3); +} + +std::uint32_t Packet::GetPacketType() const +{ + return (m_PacketId & 7); +} \ No newline at end of file diff --git a/src/profiling/Packet.hpp b/src/profiling/Packet.hpp new file mode 100644 index 0000000000..0d2ba42af5 --- /dev/null +++ b/src/profiling/Packet.hpp @@ -0,0 +1,45 @@ +// +// Copyright © 2017 Arm Ltd. All rights reserved. +// SPDX-License-Identifier: MIT +// +#pragma once + + +#include + +#include + +class Packet +{ +public: + Packet(uint32_t header, uint32_t length, const char* data) + : m_Header(header), m_Length(length), m_Data(data) + { + m_PacketId = ((header >> 16) & 1023); + m_PacketFamily = (header >> 26); + + if (length == 0) + { + if (m_Data != nullptr) + { + throw armnn::Exception("Data should be null"); + } + } + }; + + uint32_t GetHeader() const; + uint32_t GetPacketFamily() const; + uint32_t GetPacketId() const; + uint32_t GetLength() const; + const char* GetData(); + + uint32_t GetPacketClass() const; + uint32_t GetPacketType() const; + +private: + uint32_t m_Header; + uint32_t m_PacketFamily; + uint32_t m_PacketId; + uint32_t m_Length; + const char* m_Data; +}; \ No newline at end of file diff --git a/src/profiling/test/ProfilingTests.cpp b/src/profiling/test/ProfilingTests.cpp index 5abab2fb78..1ea8ab96a2 100644 --- a/src/profiling/test/ProfilingTests.cpp +++ b/src/profiling/test/ProfilingTests.cpp @@ -4,7 +4,10 @@ // #include "../CommandHandlerKey.hpp" +#include "../Packet.hpp" +#include +#include #include BOOST_AUTO_TEST_SUITE(ExternalProfiling) @@ -56,4 +59,23 @@ BOOST_AUTO_TEST_CASE(CheckCommandHandlerKeyComparisons) BOOST_CHECK(vect == expectedVect); } +BOOST_AUTO_TEST_CASE(CheckPacketClass) +{ + const char* data = "test"; + unsigned int length = static_cast(std::strlen(data)); + + Packet packetTest1(472580096,length,data); + BOOST_CHECK_THROW(Packet packetTest2(472580096,0,""), armnn::Exception); + + Packet packetTest3(472580096,0, nullptr); + + BOOST_CHECK(packetTest1.GetLength() == length); + BOOST_CHECK(packetTest1.GetData() == data); + + BOOST_CHECK(packetTest1.GetPacketFamily() == 7); + BOOST_CHECK(packetTest1.GetPacketId() == 43); + BOOST_CHECK(packetTest1.GetPacketType() == 3); + BOOST_CHECK(packetTest1.GetPacketClass() == 5); +} + BOOST_AUTO_TEST_SUITE_END() -- cgit v1.2.1