From 79e658c13290a035883e7210aef008984bd3f43a Mon Sep 17 00:00:00 2001
From: Dimitrios Stoupis <dimitris.apple@gmail.com>
Date: Sat, 16 Mar 2019 10:00:00 +0000
Subject: [PATCH] Implemented the TC to string conversion in a better way

---
 src/MessageParser.cpp | 17 ++++++++++-------
 1 file changed, 10 insertions(+), 7 deletions(-)

diff --git a/src/MessageParser.cpp b/src/MessageParser.cpp
index 6760988a..fac5d762 100644
--- a/src/MessageParser.cpp
+++ b/src/MessageParser.cpp
@@ -61,7 +61,9 @@ void MessageParser::parseTC(const uint8_t *data, uint16_t length, Message &messa
 	uint8_t serviceType = data[1];
 	uint8_t messageType = data[2];
 
-	ErrorHandler::assertRequest(pusVersion == 2, message, ErrorHandler::UnacceptableMessage);
+	// todo: Fix this parsing function, because it assumes PUS header in data, which is not true
+	//  with the current implementation
+	// ErrorHandler::assertRequest(pusVersion == 2, message, ErrorHandler::UnacceptableMessage);
 
 	// Remove the length of the header
 	length -= 5;
@@ -90,12 +92,13 @@ Message MessageParser::parseRequestTC(uint8_t* data) {
 }
 
 String<ECSS_EVENT_SERVICE_STRING_SIZE> MessageParser::convertTCToStr(Message &message) {
-	String<ECSS_EVENT_SERVICE_STRING_SIZE> dataString("");
-	dataString[0] = ECSS_PUS_VERSION << 4; // Assign the pusVersion = 2
-	dataString[1] = message.serviceType;
-	dataString[2] = message.messageType;
-	dataString.insert(5, reinterpret_cast<char *>(message.data), ECSS_EVENT_SERVICE_STRING_SIZE -
-	5);
+	uint8_t tempString[ECSS_EVENT_SERVICE_STRING_SIZE] = {0};
+
+	tempString[0] = ECSS_PUS_VERSION << 4; // Assign the pusVersion = 2
+	tempString[1] = message.serviceType;
+	tempString[2] = message.messageType;
+	memcpy(tempString + 5, message.data, ECSS_EVENT_SERVICE_STRING_SIZE - 5);
+	String<ECSS_EVENT_SERVICE_STRING_SIZE> dataString(tempString);
 
 	return dataString;
 }
-- 
GitLab