IVGCVSW-3964 Change the type held by the Packet class to unsigned char

 * Updated the Packet class
 * Updated the pertinent code accordingly

Signed-off-by: Matteo Martincigh <matteo.martincigh@arm.com>
Change-Id: I73eab5b1ead67a610cd17fd33f8a74f764ad8cc4
diff --git a/src/profiling/Packet.hpp b/src/profiling/Packet.hpp
index fae368b..ff6de69 100644
--- a/src/profiling/Packet.hpp
+++ b/src/profiling/Packet.hpp
@@ -33,7 +33,7 @@
         m_PacketFamily = (header >> 26);
     }
 
-    Packet(uint32_t header, uint32_t length, std::unique_ptr<char[]>& data)
+    Packet(uint32_t header, uint32_t length, std::unique_ptr<unsigned char[]>& data)
         : m_Header(header)
         , m_Length(length)
         , m_Data(std::move(data))
@@ -66,13 +66,13 @@
     Packet& operator=(const Packet&) = delete;
     Packet& operator=(Packet&&) = default;
 
-    uint32_t GetHeader() const        { return m_Header;        }
-    uint32_t GetPacketFamily() const  { return m_PacketFamily;  }
-    uint32_t GetPacketId() const      { return m_PacketId;      }
-    uint32_t GetPacketClass() const   { return m_PacketId >> 3; }
-    uint32_t GetPacketType() const    { return m_PacketId & 7;  }
-    uint32_t GetLength() const        { return m_Length;        }
-    const char* const GetData() const { return m_Data.get();    }
+    uint32_t GetHeader() const                 { return m_Header;        }
+    uint32_t GetPacketFamily() const           { return m_PacketFamily;  }
+    uint32_t GetPacketId() const               { return m_PacketId;      }
+    uint32_t GetPacketClass() const            { return m_PacketId >> 3; }
+    uint32_t GetPacketType() const             { return m_PacketId & 7;  }
+    uint32_t GetLength() const                 { return m_Length;        }
+    const unsigned char* const GetData() const { return m_Data.get();    }
 
     bool IsEmpty() { return m_Header == 0 && m_Length == 0; }
 
@@ -81,7 +81,7 @@
     uint32_t m_PacketFamily;
     uint32_t m_PacketId;
     uint32_t m_Length;
-    std::unique_ptr<char[]> m_Data;
+    std::unique_ptr<unsigned char[]> m_Data;
 };
 
 } // namespace profiling
diff --git a/src/profiling/ProfilingConnectionDumpToFileDecorator.cpp b/src/profiling/ProfilingConnectionDumpToFileDecorator.cpp
index 3d4b6bf..d791562 100644
--- a/src/profiling/ProfilingConnectionDumpToFileDecorator.cpp
+++ b/src/profiling/ProfilingConnectionDumpToFileDecorator.cpp
@@ -51,7 +51,7 @@
     bool success = true;
     if (m_Settings.m_DumpOutgoing)
     {
-        success &= DumpOutgoingToFile(reinterpret_cast<const char*>(buffer), length);
+        success &= DumpOutgoingToFile(buffer, length);
     }
     success &= m_Connection->WritePacket(buffer, length);
     return success;
@@ -105,7 +105,8 @@
 
     m_IncomingDumpFileStream.write(reinterpret_cast<const char*>(&header), sizeof header);
     m_IncomingDumpFileStream.write(reinterpret_cast<const char*>(&packetLength), sizeof packetLength);
-    m_IncomingDumpFileStream.write(packet.GetData(), boost::numeric_cast<std::streamsize>(packetLength));
+    m_IncomingDumpFileStream.write(reinterpret_cast<const char*>(packet.GetData()),
+                                   boost::numeric_cast<std::streamsize>(packetLength));
 
     success &= m_IncomingDumpFileStream.good();
     if (!(success || m_Settings.m_IgnoreFileErrors))
@@ -122,7 +123,7 @@
 /// @param buffer pointer to data to write
 /// @param length number of bytes to write
 /// @return true if write successful, false otherwise
-bool ProfilingConnectionDumpToFileDecorator::DumpOutgoingToFile(const char* buffer, uint32_t length)
+bool ProfilingConnectionDumpToFileDecorator::DumpOutgoingToFile(const unsigned char* buffer, uint32_t length)
 {
     bool success = true;
     if (!m_OutgoingDumpFileStream.is_open())
@@ -136,7 +137,8 @@
     }
 
     // attempt to write binary data
-    m_OutgoingDumpFileStream.write(buffer, boost::numeric_cast<std::streamsize>(length));
+    m_OutgoingDumpFileStream.write(reinterpret_cast<const char*>(buffer),
+                                   boost::numeric_cast<std::streamsize>(length));
     success &= m_OutgoingDumpFileStream.good();
     if (!(success || m_Settings.m_IgnoreFileErrors))
     {
diff --git a/src/profiling/ProfilingConnectionDumpToFileDecorator.hpp b/src/profiling/ProfilingConnectionDumpToFileDecorator.hpp
index c2ae538..cc79d95 100644
--- a/src/profiling/ProfilingConnectionDumpToFileDecorator.hpp
+++ b/src/profiling/ProfilingConnectionDumpToFileDecorator.hpp
@@ -64,7 +64,7 @@
 
     void DumpIncomingToFile(const Packet& packet);
 
-    bool DumpOutgoingToFile(const char* buffer, uint32_t length);
+    bool DumpOutgoingToFile(const unsigned char* buffer, uint32_t length);
 
     void Fail(const std::string& errorMessage);
 
diff --git a/src/profiling/SocketProfilingConnection.cpp b/src/profiling/SocketProfilingConnection.cpp
index 0ae7b0e..ad62992 100644
--- a/src/profiling/SocketProfilingConnection.cpp
+++ b/src/profiling/SocketProfilingConnection.cpp
@@ -119,10 +119,10 @@
         uint32_t dataLength = 0;
         std::memcpy(&dataLength, header + 4u, sizeof(dataLength));
 
-        std::unique_ptr<char[]> packetData;
+        std::unique_ptr<unsigned char[]> packetData;
         if (dataLength > 0)
         {
-            packetData = std::make_unique<char[]>(dataLength);
+            packetData = std::make_unique<unsigned char[]>(dataLength);
         }
 
         ssize_t receivedLength = recv(m_Socket[0].fd, packetData.get(), dataLength, 0);
diff --git a/src/profiling/test/ProfilingConnectionDumpToFileDecoratorTests.cpp b/src/profiling/test/ProfilingConnectionDumpToFileDecoratorTests.cpp
index fac93c5..a7acdd6 100644
--- a/src/profiling/test/ProfilingConnectionDumpToFileDecoratorTests.cpp
+++ b/src/profiling/test/ProfilingConnectionDumpToFileDecoratorTests.cpp
@@ -32,7 +32,7 @@
 public:
     DummyProfilingConnection()
         : m_Open(true)
-        , m_PacketData(std::make_unique<char[]>(g_DataLength))
+        , m_PacketData(std::make_unique<unsigned char[]>(g_DataLength))
     {
         // populate packet data and construct packet
         std::memcpy(m_PacketData.get(), g_DataPtr, g_DataLength);
@@ -65,8 +65,8 @@
     }
 
 private:
-    bool                    m_Open;
-    std::unique_ptr<char[]> m_PacketData;
+    bool m_Open;
+    std::unique_ptr<unsigned char[]> m_PacketData;
     std::unique_ptr<Packet> m_Packet;
 };
 
@@ -128,7 +128,7 @@
     decorator.Close();
 
     std::vector<char> data = ReadDumpFile(settings.m_IncomingDumpFileName);
-    const char* packetData = packet->GetData();
+    const char* packetData = reinterpret_cast<const char*>(packet->GetData());
 
     // check if the data read back from the dump file matches the original
     constexpr unsigned int bytesToSkip = 2u * sizeof(uint32_t); // skip header and packet length
diff --git a/src/profiling/test/ProfilingTests.cpp b/src/profiling/test/ProfilingTests.cpp
index 57a11d0..27bacf7 100644
--- a/src/profiling/test/ProfilingTests.cpp
+++ b/src/profiling/test/ProfilingTests.cpp
@@ -198,9 +198,9 @@
 BOOST_AUTO_TEST_CASE(CheckPacketClass)
 {
     uint32_t length = 4;
-    std::unique_ptr<char[]> packetData0 = std::make_unique<char[]>(length);
-    std::unique_ptr<char[]> packetData1 = std::make_unique<char[]>(0);
-    std::unique_ptr<char[]> nullPacketData;
+    std::unique_ptr<unsigned char[]> packetData0 = std::make_unique<unsigned char[]>(length);
+    std::unique_ptr<unsigned char[]> packetData1 = std::make_unique<unsigned char[]>(0);
+    std::unique_ptr<unsigned char[]> nullPacketData;
 
     Packet packetTest0(472580096, length, packetData0);
 
@@ -218,7 +218,7 @@
     BOOST_CHECK(packetTest3.GetLength() == 0);
     BOOST_CHECK(packetTest3.GetData() == nullptr);
 
-    const char* packetTest0Data = packetTest0.GetData();
+    const unsigned char* packetTest0Data = packetTest0.GetData();
     Packet packetTest4(std::move(packetTest0));
 
     BOOST_CHECK(packetTest0.GetData() == nullptr);
@@ -260,9 +260,9 @@
     it++;
     BOOST_CHECK(it->first==keyC);
 
-    std::unique_ptr<char[]> packetDataA;
-    std::unique_ptr<char[]> packetDataB;
-    std::unique_ptr<char[]> packetDataC;
+    std::unique_ptr<unsigned char[]> packetDataA;
+    std::unique_ptr<unsigned char[]> packetDataB;
+    std::unique_ptr<unsigned char[]> packetDataC;
 
     Packet packetA(500000000, 0, packetDataA);
     Packet packetB(600000000, 0, packetDataB);
@@ -302,9 +302,9 @@
     registry.RegisterFunctor(&testFunctorB);
     registry.RegisterFunctor(&testFunctorC);
 
-    std::unique_ptr<char[]> packetDataA;
-    std::unique_ptr<char[]> packetDataB;
-    std::unique_ptr<char[]> packetDataC;
+    std::unique_ptr<unsigned char[]> packetDataA;
+    std::unique_ptr<unsigned char[]> packetDataB;
+    std::unique_ptr<unsigned char[]> packetDataC;
 
     Packet packetA(500000000, 0, packetDataA);
     Packet packetB(600000000, 0, packetDataB);
@@ -1707,7 +1707,7 @@
     uint32_t dataLength1 = 8;
     uint32_t offset = 0;
 
-    std::unique_ptr<char[]> uniqueData1 = std::make_unique<char[]>(dataLength1);
+    std::unique_ptr<unsigned char[]> uniqueData1 = std::make_unique<unsigned char[]>(dataLength1);
     unsigned char* data1 = reinterpret_cast<unsigned char*>(uniqueData1.get());
 
     WriteUint32(data1, offset, period1);
@@ -1758,7 +1758,7 @@
     uint32_t period2 = 11;
     uint32_t dataLength2 = 4;
 
-    std::unique_ptr<char[]> uniqueData2 = std::make_unique<char[]>(dataLength2);
+    std::unique_ptr<unsigned char[]> uniqueData2 = std::make_unique<unsigned char[]>(dataLength2);
 
     WriteUint32(reinterpret_cast<unsigned char*>(uniqueData2.get()), 0, period2);
 
@@ -1802,7 +1802,7 @@
     uint32_t dataLength1 = 8;
     uint32_t offset = 0;
 
-    std::unique_ptr<char[]> uniqueData1 = std::make_unique<char[]>(dataLength1);
+    std::unique_ptr<unsigned char[]> uniqueData1 = std::make_unique<unsigned char[]>(dataLength1);
     unsigned char* data1 = reinterpret_cast<unsigned char*>(uniqueData1.get());
 
     WriteUint32(data1, offset, period1);
diff --git a/src/profiling/test/ProfilingTests.hpp b/src/profiling/test/ProfilingTests.hpp
index e168616..4d2f974 100644
--- a/src/profiling/test/ProfilingTests.hpp
+++ b/src/profiling/test/ProfilingTests.hpp
@@ -71,8 +71,7 @@
         std::this_thread::sleep_for(std::chrono::milliseconds(timeout));
 
         // Return connection acknowledged packet
-        std::unique_ptr<char[]> packetData;
-        return Packet(65536, 0, packetData);
+        return Packet(65536);
     }
 };
 
@@ -94,8 +93,7 @@
         }
 
         // Return connection acknowledged packet after three timeouts
-        std::unique_ptr<char[]> packetData;
-        return Packet(65536, 0, packetData);
+        return Packet(65536);
     }
 
 private: