From 53fa5753e39c31b142d746bac048405347090019 Mon Sep 17 00:00:00 2001
From: athatheocsd <athatheo@csd.auth.gr>
Date: Tue, 11 Dec 2018 20:03:54 +0200
Subject: [PATCH] Changed from just data in TC functions to Message message
 Changed tests for these functions

---
 inc/Services/EventReportService.hpp  |  9 +++--
 src/Services/EventReportService.cpp  | 51 ++++++++++++++++++----------
 test/Services/EventReportService.cpp | 26 +++++++++++---
 3 files changed, 61 insertions(+), 25 deletions(-)

diff --git a/inc/Services/EventReportService.hpp b/inc/Services/EventReportService.hpp
index 6c2d95ff..026262b1 100644
--- a/inc/Services/EventReportService.hpp
+++ b/inc/Services/EventReportService.hpp
@@ -147,23 +147,26 @@ public:
 	 * TC[5,5] request to enable report generation
 	 * Telecommand to enable the report generation of event definitions
 	 */
-	void enableReportGeneration(uint16_t length, Event *eventID);
+	void enableReportGeneration(Message message);
 
 	/**
 	 * TC[5,6] request to disable report generation
 	 * Telecommand to disable the report generation of event definitions
+	 * @param message
 	 */
-	void disableReportGeneration(uint16_t length, Event *eventID);
+	void disableReportGeneration(Message message);
 
 	/**
 	 * TC[5,7] request to report the disabled event definitions
 	 * Note: No arguments, according to the standard.
+	 * @param message
 	 */
-	void requestListOfDisabledEvents();
+	void requestListOfDisabledEvents(Message message);
 
 	/**
 	 * TM[5,8] disabled event definitions report
 	 * Telemetry package of a report of the disabled event definitions
+	 * @param message
 	 */
 	void listOfDisabledEventsReport();
 
diff --git a/src/Services/EventReportService.cpp b/src/Services/EventReportService.cpp
index 37a41d5c..d49cef3c 100644
--- a/src/Services/EventReportService.cpp
+++ b/src/Services/EventReportService.cpp
@@ -9,7 +9,7 @@
 void EventReportService::informativeEventReport(Event eventID, const uint8_t *data,
                                                 uint8_t length) {
 	// TM[5,1]
-	if (stateOfEvents[static_cast<uint16_t> (eventID)] == 1){
+	if (stateOfEvents[static_cast<uint16_t> (eventID)] == 1) {
 		Message report = createTM(1);
 		report.appendEnum16(eventID);
 		report.appendString(length, data);
@@ -65,36 +65,53 @@ EventReportService::highSeverityAnomalyReport(Event eventID, const uint8_t *data
 	}
 }
 
-void EventReportService::enableReportGeneration(uint16_t length, Event *eventID) {
+void EventReportService::enableReportGeneration(Message message) {
 	// TC[5,5]
-	/**
-	 * @todo: Report an error if length>numberOfEvents
-	 */
-	if (length <= numberOfEvents) {
+	if (message.serviceType == 5 && message.packetType == Message::TC && message.messageType == 5) {
+		/**
+		* @todo: Report an error if length > numberOfEvents
+		*/
+		uint16_t length = message.readUint16();
+		Event eventID[length];
 		for (uint16_t i = 0; i < length; i++) {
-			stateOfEvents[static_cast<uint16_t> (eventID[i])] = 1;
+			eventID[i] = static_cast<Event >(message.readEnum16());
+		}
+		if (length <= numberOfEvents) {
+			for (uint16_t i = 0; i < length; i++) {
+				stateOfEvents[static_cast<uint16_t> (eventID[i])] = 1;
+			}
 		}
+		disabledEventsCount = stateOfEvents.size() - stateOfEvents.count();
 	}
-	disabledEventsCount = stateOfEvents.size() - stateOfEvents.count();
 }
 
-void EventReportService::disableReportGeneration(uint16_t length, Event *eventID) {
+void EventReportService::disableReportGeneration(Message message) {
 	// TC[5,6]
-	/**
-	 * @todo: Report an error if length > numberOfEvents
-	 */
-	if (length <= numberOfEvents) {
+	if (message.serviceType == 5 && message.packetType == Message::TC && message.messageType
+	                                                                     == 6) {
+		/**
+		* @todo: Report an error if length > numberOfEvents
+		*/
+		uint16_t length = message.readUint16();
+		Event eventID[length];
 		for (uint16_t i = 0; i < length; i++) {
-			stateOfEvents[static_cast<uint16_t> (eventID[i])] = 0;
+			eventID[i] = static_cast<Event >(message.readEnum16());
 		}
+		if (length <= numberOfEvents) {
+			for (uint16_t i = 0; i < length; i++) {
+				stateOfEvents[static_cast<uint16_t> (eventID[i])] = 0;
+			}
+		}
+		disabledEventsCount = stateOfEvents.size() - stateOfEvents.count();
 	}
-	disabledEventsCount = stateOfEvents.size() - stateOfEvents.count();
 }
 
-void EventReportService::requestListOfDisabledEvents() {
+void EventReportService::requestListOfDisabledEvents(Message message) {
 	// TC[5,7]
 	// I think this is all that is needed here.
-	listOfDisabledEventsReport();
+	if (message.serviceType == 5 && message.packetType == Message::TC && message.messageType == 7) {
+		listOfDisabledEventsReport();
+	}
 }
 
 void EventReportService::listOfDisabledEventsReport() {
diff --git a/test/Services/EventReportService.cpp b/test/Services/EventReportService.cpp
index fdadfae1..f326e768 100644
--- a/test/Services/EventReportService.cpp
+++ b/test/Services/EventReportService.cpp
@@ -92,7 +92,11 @@ TEST_CASE("Enable Report Generation TC[5,5]", "[service][st05]") {
 	eventReportService.getStateOfEvents().reset();
 	EventReportService::Event eventID[] = {EventReportService::AssertionFail,
 	                                       EventReportService::LowSeverityUnknownEvent};
-	eventReportService.enableReportGeneration(2, eventID);
+	Message message(5, 5, Message::TC, 1);
+	message.appendUint16(2);
+	message.appendEnum16(eventID[0]);
+	message.appendEnum16(eventID[1]);
+	eventReportService.enableReportGeneration(message);
 	CHECK(eventReportService.getStateOfEvents()[2] == 1);
 	CHECK(eventReportService.getStateOfEvents()[4] == 1);
 }
@@ -101,7 +105,11 @@ TEST_CASE("Disable Report Generation TC[5,6]", "[service][st05]") {
 	EventReportService eventReportService;
 	EventReportService::Event eventID[] = {EventReportService::InformativeUnknownEvent,
 	                                       EventReportService::MediumSeverityUnknownEvent};
-	eventReportService.disableReportGeneration(2, eventID);
+	Message message(5, 6, Message::TC, 1);
+	message.appendUint16(2);
+	message.appendEnum16(eventID[0]);
+	message.appendEnum16(eventID[1]);
+	eventReportService.disableReportGeneration(message);
 	CHECK(eventReportService.getStateOfEvents()[0] == 0);
 	CHECK(eventReportService.getStateOfEvents()[5] == 0);
 
@@ -113,7 +121,8 @@ TEST_CASE("Disable Report Generation TC[5,6]", "[service][st05]") {
 
 TEST_CASE("Request list of disabled events TC[5,7]", "[service][st05]") {
 	EventReportService eventReportService;
-	eventReportService.requestListOfDisabledEvents();
+	Message message(5, 7, Message::TC, 1);
+	eventReportService.requestListOfDisabledEvents(message);
 	REQUIRE(ServiceTests::hasOneMessage());
 
 	Message report = ServiceTests::get(0);
@@ -125,8 +134,12 @@ TEST_CASE("List of Disabled Events Report TM[5,8]", "[service][st05]") {
 	EventReportService eventReportService;
 	EventReportService::Event eventID[] = {EventReportService::MCUStart,
 	                                       EventReportService::HighSeverityUnknownEvent};
+	Message message(5, 6, Message::TC, 1);
+	message.appendUint16(2);
+	message.appendEnum16(eventID[0]);
+	message.appendEnum16(eventID[1]);
 	// Disable 3rd and 6th
-	eventReportService.disableReportGeneration(2, eventID);
+	eventReportService.disableReportGeneration(message);
 	eventReportService.listOfDisabledEventsReport();
 	REQUIRE(ServiceTests::hasOneMessage());
 
@@ -145,7 +158,10 @@ TEST_CASE("List of Disabled Events Report TM[5,8]", "[service][st05]") {
 TEST_CASE("List of observables 6.5.6", "[service][st05]") {
 	EventReportService eventReportService;
 	EventReportService::Event eventID[] = {EventReportService::HighSeverityUnknownEvent};
-	eventReportService.disableReportGeneration(1, eventID);
+	Message message(5, 6, Message::TC, 1);
+	message.appendUint16(1);
+	message.appendEnum16(eventID[0]);
+	eventReportService.disableReportGeneration(message);
 
 	const unsigned char eventReportData[] = "HelloWorld";
 
-- 
GitLab