aboutsummaryrefslogtreecommitdiff
path: root/src/profiling
diff options
context:
space:
mode:
authorJim Flynn <jim.flynn@arm.com>2019-10-18 13:21:43 +0100
committerJim Flynn <jim.flynn@arm.com>2019-10-18 13:21:43 +0100
commited25e0e8932895686ffb5166966beb88ddcbd410 (patch)
tree51a0cc42a42b69eb997ed77f1bc574b72c863f46 /src/profiling
parent397043fa3d900430e9e0f6d328b76898f9613388 (diff)
downloadarmnn-ed25e0e8932895686ffb5166966beb88ddcbd410.tar.gz
IVGCVSW-4005 Add PacketFamilyId to version resolver
Change-Id: Ief9373871438df4e1d353bbc545a3ee4f25c1fb0 Signed-off-by: Jim Flynn <jim.flynn@arm.com>
Diffstat (limited to 'src/profiling')
-rw-r--r--src/profiling/CommandHandler.cpp3
-rw-r--r--src/profiling/PacketVersionResolver.cpp41
-rw-r--r--src/profiling/PacketVersionResolver.hpp22
-rw-r--r--src/profiling/ProfilingService.hpp8
-rw-r--r--src/profiling/test/ProfilingTests.cpp28
5 files changed, 94 insertions, 8 deletions
diff --git a/src/profiling/CommandHandler.cpp b/src/profiling/CommandHandler.cpp
index 2e22be35a5..d9722b3183 100644
--- a/src/profiling/CommandHandler.cpp
+++ b/src/profiling/CommandHandler.cpp
@@ -55,7 +55,8 @@ void CommandHandler::HandleCommands(IProfilingConnection& profilingConnection)
continue;
}
- Version version = m_PacketVersionResolver.ResolvePacketVersion(packet.GetPacketId());
+ Version version = m_PacketVersionResolver.ResolvePacketVersion(packet.GetPacketFamily(),
+ packet.GetPacketId());
CommandHandlerFunctor* commandHandlerFunctor =
m_CommandHandlerRegistry.GetFunctor(packet.GetPacketFamily(),
diff --git a/src/profiling/PacketVersionResolver.cpp b/src/profiling/PacketVersionResolver.cpp
index 66e2b4d7ce..3737e3cfca 100644
--- a/src/profiling/PacketVersionResolver.cpp
+++ b/src/profiling/PacketVersionResolver.cpp
@@ -11,7 +11,46 @@ namespace armnn
namespace profiling
{
-Version PacketVersionResolver::ResolvePacketVersion(uint32_t packetId) const
+bool PacketKey::operator<(const PacketKey& rhs) const
+{
+ bool result = true;
+ if (m_FamilyId == rhs.m_FamilyId)
+ {
+ result = m_PacketId < rhs.m_PacketId;
+ }
+ else if (m_FamilyId > rhs.m_FamilyId)
+ {
+ result = false;
+ }
+ return result;
+}
+
+bool PacketKey::operator>(const PacketKey& rhs) const
+{
+ return rhs < *this;
+}
+
+bool PacketKey::operator<=(const PacketKey& rhs) const
+{
+ return !(*this > rhs);
+}
+
+bool PacketKey::operator>=(const PacketKey& rhs) const
+{
+ return !(*this < rhs);
+}
+
+bool PacketKey::operator==(const PacketKey& rhs) const
+{
+ return m_FamilyId == rhs.m_FamilyId && m_PacketId == rhs.m_PacketId;
+}
+
+bool PacketKey::operator!=(const PacketKey& rhs) const
+{
+ return !(*this == rhs);
+}
+
+Version PacketVersionResolver::ResolvePacketVersion(uint32_t familyId, uint32_t packetId) const
{
// NOTE: For now every packet specification is at version 1.0.0
return Version(1, 0, 0);
diff --git a/src/profiling/PacketVersionResolver.hpp b/src/profiling/PacketVersionResolver.hpp
index 168a32ceb8..e959ed548e 100644
--- a/src/profiling/PacketVersionResolver.hpp
+++ b/src/profiling/PacketVersionResolver.hpp
@@ -13,13 +13,33 @@ namespace armnn
namespace profiling
{
+class PacketKey final
+{
+public:
+ PacketKey(uint32_t familyId, uint32_t packetId) : m_FamilyId(familyId), m_PacketId(packetId) {}
+
+ uint32_t GetFamilyId() { return m_FamilyId; }
+ uint32_t GetPacketId() { return m_PacketId; }
+
+ bool operator< (const PacketKey& rhs) const;
+ bool operator> (const PacketKey& rhs) const;
+ bool operator<=(const PacketKey& rhs) const;
+ bool operator>=(const PacketKey& rhs) const;
+ bool operator==(const PacketKey& rhs) const;
+ bool operator!=(const PacketKey& rhs) const;
+
+private:
+ uint32_t m_FamilyId;
+ uint32_t m_PacketId;
+};
+
class PacketVersionResolver final
{
public:
PacketVersionResolver() = default;
~PacketVersionResolver() = default;
- Version ResolvePacketVersion(uint32_t packetId) const;
+ Version ResolvePacketVersion(uint32_t familyId, uint32_t packetId) const;
};
} // namespace profiling
diff --git a/src/profiling/ProfilingService.hpp b/src/profiling/ProfilingService.hpp
index ea11442ba7..f2c1783a11 100644
--- a/src/profiling/ProfilingService.hpp
+++ b/src/profiling/ProfilingService.hpp
@@ -123,17 +123,17 @@ protected:
, m_PeriodicCounterCapture(m_Holder, m_SendCounterPacket, *this)
, m_ConnectionAcknowledgedCommandHandler(0,
1,
- m_PacketVersionResolver.ResolvePacketVersion(1).GetEncodedValue(),
+ m_PacketVersionResolver.ResolvePacketVersion(0, 1).GetEncodedValue(),
m_StateMachine)
, m_RequestCounterDirectoryCommandHandler(0,
3,
- m_PacketVersionResolver.ResolvePacketVersion(3).GetEncodedValue(),
+ m_PacketVersionResolver.ResolvePacketVersion(0, 3).GetEncodedValue(),
m_CounterDirectory,
m_SendCounterPacket,
m_StateMachine)
, m_PeriodicCounterSelectionCommandHandler(0,
4,
- m_PacketVersionResolver.ResolvePacketVersion(4).GetEncodedValue(),
+ m_PacketVersionResolver.ResolvePacketVersion(0, 4).GetEncodedValue(),
m_Holder,
m_PeriodicCounterCapture,
*this,
@@ -141,7 +141,7 @@ protected:
m_StateMachine)
, m_PerJobCounterSelectionCommandHandler(0,
5,
- m_PacketVersionResolver.ResolvePacketVersion(4).GetEncodedValue(),
+ m_PacketVersionResolver.ResolvePacketVersion(0, 5).GetEncodedValue(),
m_StateMachine)
{
// Register the "Connection Acknowledged" command handler
diff --git a/src/profiling/test/ProfilingTests.cpp b/src/profiling/test/ProfilingTests.cpp
index c2550986ab..aba967507e 100644
--- a/src/profiling/test/ProfilingTests.cpp
+++ b/src/profiling/test/ProfilingTests.cpp
@@ -96,6 +96,31 @@ BOOST_AUTO_TEST_CASE(CheckCommandHandlerKeyComparisons)
BOOST_CHECK(vect == expectedVect);
}
+BOOST_AUTO_TEST_CASE(CheckPacketKeyComparisons)
+{
+ PacketKey key0(0,0);
+ PacketKey key1(0,0);
+ PacketKey key2(0,1);
+ PacketKey key3(0,2);
+ PacketKey key4(1,0);
+ PacketKey key5(1,0);
+ PacketKey key6(1,1);
+
+ BOOST_CHECK(!(key0 < key1));
+ BOOST_CHECK(!(key0 > key1));
+ BOOST_CHECK(key0 <= key1);
+ BOOST_CHECK(key0 >= key1);
+ BOOST_CHECK(key0 == key1);
+ BOOST_CHECK(key0 < key2);
+ BOOST_CHECK(key2 < key3);
+ BOOST_CHECK(key3 > key0);
+ BOOST_CHECK(key4 == key5);
+ BOOST_CHECK(key4 > key0);
+ BOOST_CHECK(key5 < key6);
+ BOOST_CHECK(key5 <= key6);
+ BOOST_CHECK(key5 != key6);
+}
+
BOOST_AUTO_TEST_CASE(CheckCommandHandler)
{
PacketVersionResolver packetVersionResolver;
@@ -363,8 +388,9 @@ BOOST_AUTO_TEST_CASE(CheckPacketVersionResolver)
for (unsigned int i = 0u; i < numTests; ++i)
{
+ const uint32_t familyId = distribution(generator);
const uint32_t packetId = distribution(generator);
- Version resolvedVersion = packetVersionResolver.ResolvePacketVersion(packetId);
+ Version resolvedVersion = packetVersionResolver.ResolvePacketVersion(familyId, packetId);
BOOST_TEST(resolvedVersion == expectedVersion);
}