From e08a707c9fe9be1204cd8ebe6f91bf35e6f2523a Mon Sep 17 00:00:00 2001
From: athatheocsd <athatheo@csd.auth.gr>
Date: Tue, 27 Nov 2018 19:46:05 +0200
Subject: [PATCH] Fixed the way to append auxiliary data

---
 src/Services/EventReportService.cpp | 24 ++++++++++++++++--------
 src/main.cpp                        | 10 +++++-----
 2 files changed, 21 insertions(+), 13 deletions(-)

diff --git a/src/Services/EventReportService.cpp b/src/Services/EventReportService.cpp
index 61f528f6..48616b8a 100644
--- a/src/Services/EventReportService.cpp
+++ b/src/Services/EventReportService.cpp
@@ -1,13 +1,21 @@
 #include "Services/EventReportService.hpp"
 #include "Message.hpp"
 
+/**
+ * Note for the funtions informativeEventReport, lowSeverityReport, mediumSeverityReport,
+ * highSeverityReport: I could use
+ * for (int i=0; i<length; i++ {
+ * 		report.appendByte(data[i]);
+ * }
+ * instead of reinterpret_cast as it is a dangerous cast
+ */
 
 void EventReportService::informativeEventReport(uint16_t eventID, const uint8_t *data,
 																		uint8_t length){
 	// TM[5,1]
 	Message report = createTM(1);
-	report.appendBits(16, eventID);
-	report.appendString(length, (char *)data);
+	report.appendBits(ECSS_EVENTS_BITS, eventID);
+	report.appendString(length, reinterpret_cast<const char*>(data));
 	storeMessage(report);
 }
 
@@ -15,8 +23,8 @@ void EventReportService::lowSeverityAnomalyReport(uint16_t eventID, const uint8_
 																			uint8_t length ){
 	// TM[5,2]
 	Message report = createTM(2);
-	report.appendBits(16, eventID);
-	report.appendString(length, (char *)data);
+	report.appendBits(ECSS_EVENTS_BITS, eventID);
+	report.appendString(length, reinterpret_cast<const char*>(data));
 	storeMessage(report);
 }
 
@@ -24,8 +32,8 @@ void EventReportService::mediumSeverityAnomalyReport(uint16_t eventID, const uin
 																				uint8_t length){
 	// TM[5,3]
 	Message report = createTM(3);
-	report.appendBits(16, eventID);
-	report.appendString(length, (char *)data);
+	report.appendBits(ECSS_EVENTS_BITS, eventID);
+	report.appendString(length, reinterpret_cast<const char*>(data));
 	storeMessage(report);
 }
 
@@ -33,7 +41,7 @@ void EventReportService::highSeverityAnomalyReport(uint16_t eventID, const uint8
 																			uint8_t length){
 	// TM[5,4]
 	Message report = createTM(4);
-	report.appendBits(16, eventID);
-	report.appendString(length, (char *)data);
+	report.appendBits(ECSS_EVENTS_BITS, eventID);
+	report.appendString(length, reinterpret_cast<const char*>(data));
 	storeMessage(report);
 }
diff --git a/src/main.cpp b/src/main.cpp
index a7a48243..f2dcbbc8 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -40,12 +40,12 @@ int main() {
 	reqVerifService.failRoutingVerification(Message::TC, true, 2, 2, 10, 7);
 
 	// ST[05] test [works]
-	char data[12] = "Hello World";
+	const unsigned char data[12] = "Hello World";
 	EventReportService eventReportService;
-	eventReportService.informativeEventReport(1, (const uint8_t *)data, 11);
-	eventReportService.lowSeverityAnomalyReport(2, (const uint8_t *)data, 11);
-	eventReportService.mediumSeverityAnomalyReport(3, (const uint8_t *)data, 11);
-	eventReportService.highSeverityAnomalyReport(4, (const uint8_t *)data, 11);
+	eventReportService.informativeEventReport(1, data, 11);
+	eventReportService.lowSeverityAnomalyReport(2, data, 11);
+	eventReportService.mediumSeverityAnomalyReport(3, data, 11);
+	eventReportService.highSeverityAnomalyReport(4, data, 11);
 
 	return 0;
 }
-- 
GitLab