From 1d29c40d0063e8fbf3dcd8c16dbfb636a6b581b1 Mon Sep 17 00:00:00 2001
From: hiluluk <thodkatz@gmail.com>
Date: Thu, 4 Apr 2019 19:55:01 +0300
Subject: [PATCH] Define the execute()

---
 src/Services/EventActionService.cpp         | 33 ++++++++++++++++++
 src/Services/EventReportService.cpp         | 14 ++++++++
 src/Services/FunctionManagementService.cpp  | 11 ++++++
 src/Services/MemoryManagementService.cpp    | 17 ++++++++++
 src/Services/ParameterService.cpp           | 13 ++++++++
 src/Services/RequestVerificationService.cpp | 37 ---------------------
 src/Services/TestService.cpp                |  4 +--
 src/Services/TimeBasedSchedulingService.cpp | 26 +++++++++++++++
 src/Services/TimeManagementService.cpp      | 11 ++++++
 9 files changed, 126 insertions(+), 40 deletions(-)

diff --git a/src/Services/EventActionService.cpp b/src/Services/EventActionService.cpp
index 6ac29c05..3f680a8b 100644
--- a/src/Services/EventActionService.cpp
+++ b/src/Services/EventActionService.cpp
@@ -191,3 +191,36 @@ void EventActionService::executeAction(uint16_t eventID) {
 		}
 	}
 }
+
+void EventActionService::execute(const Message &message) {
+	switch (message.messageType) {
+		case 1:
+			addEventActionDefinitions(message); // TC[19,1]
+			break;
+		case 2:
+			deleteEventActionDefinitions(message); // TC[19,2]
+			break;
+		case 3:
+			deleteAllEventActionDefinitions(message); // TC[19,3]
+			break;
+		case 4:
+			enableEventActionDefinitions(message); // TC[19,4]
+			break;
+		case 5:
+			disableEventActionDefinitions(message); // TC[19,5]
+			break;
+		case 6:
+			requestEventActionDefinitionStatus(message); // TC[19,6]
+			break;
+		case 8:
+			enableEventActionFunction(message); // TC[19,8]
+			break;
+		case 9:
+			disableEventActionFunction(message); // TC[19,9]
+			break;
+		default:
+			ErrorHandler::reportInternalError(ErrorHandler::UnknownMessageType);
+			break;
+	}
+}
+
diff --git a/src/Services/EventReportService.cpp b/src/Services/EventReportService.cpp
index f537f329..d036ba0a 100644
--- a/src/Services/EventReportService.cpp
+++ b/src/Services/EventReportService.cpp
@@ -130,3 +130,17 @@ void EventReportService::listOfDisabledEventsReport() {
 
 	storeMessage(report);
 }
+
+void EventReportService::execute(const Message &message) {
+	switch (message.messageType) {
+		case 5: enableReportGeneration(message); // TC[5,5]
+			break;
+		case 6: disableReportGeneration(message); // TC[5,6]
+			break;
+		case 7: requestListOfDisabledEvents(message); // TC[5,7]
+			break;
+		default:
+			ErrorHandler::reportInternalError(ErrorHandler::UnknownMessageType);
+			break;
+	}
+}
\ No newline at end of file
diff --git a/src/Services/FunctionManagementService.cpp b/src/Services/FunctionManagementService.cpp
index 8dcc6027..47b1406f 100644
--- a/src/Services/FunctionManagementService.cpp
+++ b/src/Services/FunctionManagementService.cpp
@@ -50,3 +50,14 @@ void FunctionManagementService::include(String<FUNC_NAME_LENGTH> funcName, void(
 		ErrorHandler::reportInternalError(ErrorHandler::InternalErrorType::FunctionMapFull);
 	}
 }
+
+void FunctionManagementService::execute(Message &message) {
+	switch (message.messageType) {
+		case 1:
+			call(message); // TC[8,1]
+			break;
+		default:
+			ErrorHandler::reportInternalError(ErrorHandler::UnknownMessageType);
+			break;
+	}
+}
diff --git a/src/Services/MemoryManagementService.cpp b/src/Services/MemoryManagementService.cpp
index c29c8fc1..6bbb7f7c 100644
--- a/src/Services/MemoryManagementService.cpp
+++ b/src/Services/MemoryManagementService.cpp
@@ -230,3 +230,20 @@ inline bool MemoryManagementService::dataValidator(const uint8_t *data, uint16_t
                                                    uint16_t length) {
 	return (checksum == CRCHelper::calculateCRC(data, length));
 }
+
+void MemoryManagementService::RawDataMemoryManagement::execute(Message &message) {
+	switch (message.messageType) {
+		case 2:
+			loadRawData(message); // TC[6,2]
+			break;
+		case 5:
+			dumpRawData(message); // TC[6,5]
+			break;
+		case 9:
+			checkRawData(message); // TC[6,9]
+			break;
+		default:
+			ErrorHandler::reportInternalError(ErrorHandler::UnknownMessageType);
+			break;
+	}
+}
diff --git a/src/Services/ParameterService.cpp b/src/Services/ParameterService.cpp
index b32fa5b5..b193d075 100644
--- a/src/Services/ParameterService.cpp
+++ b/src/Services/ParameterService.cpp
@@ -119,3 +119,16 @@ uint16_t ParameterService::numOfValidIds(Message idMsg) {
 
 	return validIds;
 }
+
+void ParameterService::execute(Message  &message) {
+	switch (message.messageType) {
+		case 1:
+			reportParameterIds(message); // TC[20,1]
+			break;
+		case 3:
+			setParameterIds(message); // TC[20,3]
+		default:
+			ErrorHandler::reportInternalError(ErrorHandler::UnknownMessageType);
+			break;
+	}
+}
diff --git a/src/Services/RequestVerificationService.cpp b/src/Services/RequestVerificationService.cpp
index 465b1c56..733dd0ba 100644
--- a/src/Services/RequestVerificationService.cpp
+++ b/src/Services/RequestVerificationService.cpp
@@ -151,40 +151,3 @@ RequestVerificationService::failRoutingVerification(const Message &request,
 
 	storeMessage(report);
 }
-
-// TODO: This function should not be here. These are TM messages, but `execute` should accept a
-// TC message.
-void RequestVerificationService::execute(const Message &message) {
-	switch (message.messageType) {
-		case 1:
-			successAcceptanceVerification(message);
-			break;
-		//case 2:
-			//failAcceptanceVerification(message);
-			//break;
-		case 3:
-			successStartExecutionVerification(message);
-			break;
-		//case 4:
-			//failStartExecutionVerification(message);
-			//break;
-		//case 5:
-			//successProgressExecutionVerification(message);
-			//break;
-		//case 6:
-			//failProgressExecutionVerification(message);
-			//break;
-		case 7:
-			successCompletionExecutionVerification(message);
-			break;
-		//case 8:
-			//failCompletionExecutionVerification(message);
-			//break;
-		//case 10:
-			//failRoutingVerification(message);
-			//break;
-		default:
-			ErrorHandler::reportInternalError(ErrorHandler::UnknownMessageType);
-			break;
-	}
-}
diff --git a/src/Services/TestService.cpp b/src/Services/TestService.cpp
index 224c2614..74085e4e 100644
--- a/src/Services/TestService.cpp
+++ b/src/Services/TestService.cpp
@@ -27,9 +27,7 @@ void TestService::execute(Message &message) {
 			onBoardConnection(message);
 			break;
 		default:
-			// cout is very bad for embedded systems
-			std::cout << "Error: There is not such a message type in ST[17] test";
-			assert(false);
+			ErrorHandler::reportInternalError(ErrorHandler::UnknownMessageType);
 			break;
 	}
 }
diff --git a/src/Services/TimeBasedSchedulingService.cpp b/src/Services/TimeBasedSchedulingService.cpp
index a4b74861..d88dd52d 100644
--- a/src/Services/TimeBasedSchedulingService.cpp
+++ b/src/Services/TimeBasedSchedulingService.cpp
@@ -281,3 +281,29 @@ void TimeBasedSchedulingService::summaryReportActivitiesByID(Message &request) {
 	}
 	storeMessage(report); // Save the report
 }
+
+void TimeBasedSchedulingService::execute(Message &message) {
+	switch (message.messageType) {
+		case 1:
+			enableScheduleExecution(message); // TC[11,1]
+			break;
+		case 2:
+			disableScheduleExecution(message); // TC[11,2]
+			break;
+		case 3:
+			resetSchedule(message); // TC[11,3]
+			break;
+		case 4:
+			insertActivities(message); // TC[11,4]
+			break;
+		case 15:
+			timeShiftActivitiesByID(message); // TC[11,15]
+			break;
+		case 16:
+			detailReportAllActivities(message); // TC[11,16]
+			break;
+		default:
+			ErrorHandler::reportInternalError(ErrorHandler::UnknownMessageType);
+			break;
+	}
+}
diff --git a/src/Services/TimeManagementService.cpp b/src/Services/TimeManagementService.cpp
index c6f92295..2d1a5a63 100644
--- a/src/Services/TimeManagementService.cpp
+++ b/src/Services/TimeManagementService.cpp
@@ -25,3 +25,14 @@ TimeAndDate TimeManagementService::cdsTimeRequest(Message &message) {
 
 	return timeInfo;
 }
+
+void TimeManagementService::execute(Message &message) {
+	switch (message.messageType) {
+		case 128:
+			cdsTimeRequest(message); // TC[9,128]
+			break;
+		default:
+			ErrorHandler::reportInternalError(ErrorHandler::UnknownMessageType);
+			break;
+	}
+}
-- 
GitLab