aboutsummaryrefslogtreecommitdiff
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
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>
-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
-rw-r--r--tests/profiling/gatordmock/GatordMockMain.cpp4
-rw-r--r--tests/profiling/gatordmock/GatordMockService.cpp3
-rw-r--r--tests/profiling/gatordmock/PeriodicCounterCaptureCommandHandler.hpp2
8 files changed, 99 insertions, 12 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);
}
diff --git a/tests/profiling/gatordmock/GatordMockMain.cpp b/tests/profiling/gatordmock/GatordMockMain.cpp
index 2423493491..dd483631ad 100644
--- a/tests/profiling/gatordmock/GatordMockMain.cpp
+++ b/tests/profiling/gatordmock/GatordMockMain.cpp
@@ -29,10 +29,10 @@ int main(int argc, char* argv[])
// This functor will receive back the selection response packet.
armnn::gatordmock::PeriodicCounterSelectionResponseHandler periodicCounterSelectionResponseHandler(
- 0, 4, packetVersionResolver.ResolvePacketVersion(4).GetEncodedValue());
+ 0, 4, packetVersionResolver.ResolvePacketVersion(0, 4).GetEncodedValue());
// This functor will receive the counter data.
armnn::gatordmock::PeriodicCounterCaptureCommandHandler counterCaptureCommandHandler(
- 1, 0, packetVersionResolver.ResolvePacketVersion(0).GetEncodedValue());
+ 1, 0, packetVersionResolver.ResolvePacketVersion(1, 0).GetEncodedValue());
// Register different derived functors
registry.RegisterFunctor(&periodicCounterSelectionResponseHandler);
diff --git a/tests/profiling/gatordmock/GatordMockService.cpp b/tests/profiling/gatordmock/GatordMockService.cpp
index 2697b2f3e9..194b097af1 100644
--- a/tests/profiling/gatordmock/GatordMockService.cpp
+++ b/tests/profiling/gatordmock/GatordMockService.cpp
@@ -326,7 +326,8 @@ armnn::profiling::Packet GatordMockService::ReceivePacket()
m_HandlerRegistry
.GetFunctor(packetRx.GetPacketFamily(),
packetRx.GetPacketId(),
- packetVersionResolver.ResolvePacketVersion(packetRx.GetPacketId()).GetEncodedValue())
+ packetVersionResolver.ResolvePacketVersion(packetRx.GetPacketFamily(),
+ packetRx.GetPacketId()).GetEncodedValue())
->operator()(packetRx);
return packetRx;
diff --git a/tests/profiling/gatordmock/PeriodicCounterCaptureCommandHandler.hpp b/tests/profiling/gatordmock/PeriodicCounterCaptureCommandHandler.hpp
index 4135a2fb06..05539a4073 100644
--- a/tests/profiling/gatordmock/PeriodicCounterCaptureCommandHandler.hpp
+++ b/tests/profiling/gatordmock/PeriodicCounterCaptureCommandHandler.hpp
@@ -37,7 +37,7 @@ public:
PeriodicCounterCaptureCommandHandler(uint32_t familyId,
uint32_t packetId,
uint32_t version,
- bool quietOperation = false)
+ bool quietOperation = true)
: CommandHandlerFunctor(familyId, packetId, version)
, m_QuietOperation(quietOperation)
{}