From 02614362309578d02810fd83e9ed1cd270f4c8bd Mon Sep 17 00:00:00 2001
From: kpetridis <petridkon@gmail.com>
Date: Wed, 27 Apr 2022 17:28:12 +0300
Subject: [PATCH] Corrected the use of namespace

---
 CMakeLists.txt                  |  1 +
 inc/ECSS_Definitions.hpp        |  2 +
 inc/Helpers/AllMessageTypes.hpp | 72 ++++++++-------------------------
 src/Helpers/AllMessageTypes.cpp | 61 ++++++++++++++++++++++++++++
 4 files changed, 80 insertions(+), 56 deletions(-)
 create mode 100644 src/Helpers/AllMessageTypes.cpp

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 8caf2586..d7e7ce90 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -45,6 +45,7 @@ add_library(common OBJECT
         src/Helpers/Statistic.cpp
         src/Services/RealTimeForwardingControlService.cpp
         src/Helpers/PMONBase.cpp
+        src/Helpers/AllMessageTypes.cpp
         )
 
 # Specify the .cpp files for the executables
diff --git a/inc/ECSS_Definitions.hpp b/inc/ECSS_Definitions.hpp
index b17d891f..5c8ee8af 100644
--- a/inc/ECSS_Definitions.hpp
+++ b/inc/ECSS_Definitions.hpp
@@ -174,6 +174,7 @@ inline const uint8_t ECSSMaxControlledApplicationProcesses = 5;
  * The max number of report type blocking definitions per service type definition in the application process
  * configuration
  * @see RealTimeForwardingControlService
+ * todo: must change when a service with more report types is implemented.
  */
 inline const uint8_t ECSSMaxReportTypeDefinitions = 20;
 
@@ -181,6 +182,7 @@ inline const uint8_t ECSSMaxReportTypeDefinitions = 20;
  * The max number of service type definitions per application process type definition in the application process
  * configuration
  * @see RealTimeForwardingControlService
+ * todo: must change when all 15 services are implemented.
  */
 inline const uint8_t ECSSMaxServiceTypeDefinitions = 10;
 
diff --git a/inc/Helpers/AllMessageTypes.hpp b/inc/Helpers/AllMessageTypes.hpp
index 6d7ca757..76080056 100644
--- a/inc/Helpers/AllMessageTypes.hpp
+++ b/inc/Helpers/AllMessageTypes.hpp
@@ -18,62 +18,22 @@
  * todo: needs to be updated after the implementation of the remaining ecss services.
  */
 namespace AllMessageTypes {
-	etl::vector<uint8_t, 15> st01Messages = {RequestVerificationService::MessageType::FailedAcceptanceReport,
-	                                         RequestVerificationService::MessageType::FailedCompletionOfExecution,
-	                                         RequestVerificationService::MessageType::FailedProgressOfExecution,
-	                                         RequestVerificationService::MessageType::FailedRoutingReport,
-	                                         RequestVerificationService::MessageType::FailedStartOfExecution,
-	                                         RequestVerificationService::MessageType::SuccessfulAcceptanceReport,
-	                                         RequestVerificationService::MessageType::SuccessfulCompletionOfExecution,
-	                                         RequestVerificationService::MessageType::SuccessfulProgressOfExecution,
-	                                         RequestVerificationService::MessageType::SuccessfulStartOfExecution};
-
-	etl::vector<uint8_t, 15> st03Messages = {
-	    HousekeepingService::MessageType::DisablePeriodicHousekeepingParametersReport,
-	    HousekeepingService::MessageType::EnablePeriodicHousekeepingParametersReport,
-	    HousekeepingService::MessageType::GenerateOneShotHousekeepingReport,
-	    HousekeepingService::MessageType::HousekeepingParametersReport,
-	    HousekeepingService::MessageType::HousekeepingPeriodicPropertiesReport,
-	    HousekeepingService::MessageType::HousekeepingStructuresReport};
-
-	etl::vector<uint8_t, 15> st04Messages = {
-	    ParameterStatisticsService::MessageType::ParameterStatisticsDefinitionsReport,
-	    ParameterStatisticsService::MessageType::ParameterStatisticsReport,
-	};
-
-	etl::vector<uint8_t, 15> st05Messages = {EventReportService::MessageType::HighSeverityAnomalyReport,
-	                                         EventReportService::MessageType::DisabledListEventReport,
-	                                         EventReportService::MessageType::InformativeEventReport,
-	                                         EventReportService::MessageType::LowSeverityAnomalyReport,
-	                                         EventReportService::MessageType::MediumSeverityAnomalyReport};
-
-	etl::vector<uint8_t, 15> st06Messages = {MemoryManagementService::MessageType::CheckRawMemoryDataReport,
-	                                         MemoryManagementService::MessageType::DumpRawMemoryDataReport};
-
-	etl::vector<uint8_t, 15> st11Messages = {TimeBasedSchedulingService::MessageType::TimeBasedScheduledSummaryReport};
-
-	etl::vector<uint8_t, 15> st13Messages = {LargePacketTransferService::MessageType::FirstDownlinkPartReport,
-	                                         LargePacketTransferService::MessageType::InternalDownlinkPartReport,
-	                                         LargePacketTransferService::MessageType::LastDownlinkPartReport};
-
-	etl::vector<uint8_t, 15> st17Messages = {TestService::MessageType::AreYouAliveTestReport,
-	                                         TestService::MessageType::OnBoardConnectionTestReport};
-
-	etl::vector<uint8_t, 15> st19Messages = {EventActionService::MessageType::EventActionStatusReport};
-
-	etl::vector<uint8_t, 15> st20Messages = {ParameterService::MessageType::ParameterValuesReport};
-
-	etl::map<uint8_t, etl::vector<uint8_t, 15>, 100> messagesOfService = {
-	    {RequestVerificationService::ServiceType, st01Messages},
-	    {HousekeepingService::ServiceType, st03Messages},
-	    {ParameterStatisticsService::ServiceType, st04Messages},
-	    {EventReportService::ServiceType, st05Messages},
-	    {MemoryManagementService::ServiceType, st06Messages},
-	    {TimeBasedSchedulingService::ServiceType, st11Messages},
-	    {LargePacketTransferService::ServiceType, st13Messages},
-	    {TestService::ServiceType, st17Messages},
-	    {EventActionService::ServiceType, st19Messages},
-	    {ParameterService::ServiceType, st20Messages}};
+	extern etl::vector<uint8_t, ECSSMaxReportTypeDefinitions> st01Messages;
+	extern etl::vector<uint8_t, ECSSMaxReportTypeDefinitions> st03Messages;
+	extern etl::vector<uint8_t, ECSSMaxReportTypeDefinitions> st04Messages;
+	extern etl::vector<uint8_t, ECSSMaxReportTypeDefinitions> st05Messages;
+	extern etl::vector<uint8_t, ECSSMaxReportTypeDefinitions> st06Messages;
+	extern etl::vector<uint8_t, ECSSMaxReportTypeDefinitions> st11Messages;
+	extern etl::vector<uint8_t, ECSSMaxReportTypeDefinitions> st13Messages;
+	extern etl::vector<uint8_t, ECSSMaxReportTypeDefinitions> st17Messages;
+	extern etl::vector<uint8_t, ECSSMaxReportTypeDefinitions> st19Messages;
+	extern etl::vector<uint8_t, ECSSMaxReportTypeDefinitions> st20Messages;
+
+	/**
+	 * Map containing all the message types, per service. The key is the ServiceType and the value,
+	 * an etl vector containing the message types.
+	 */
+	extern etl::map<uint8_t, etl::vector<uint8_t, ECSSMaxReportTypeDefinitions>, ECSSMaxServiceTypeDefinitions> messagesOfService;
 
 } // namespace AllMessageTypes
 
diff --git a/src/Helpers/AllMessageTypes.cpp b/src/Helpers/AllMessageTypes.cpp
new file mode 100644
index 00000000..8fdb9d5b
--- /dev/null
+++ b/src/Helpers/AllMessageTypes.cpp
@@ -0,0 +1,61 @@
+#include "Helpers/AllMessageTypes.hpp"
+
+namespace AllMessageTypes {
+	etl::vector<uint8_t, ECSSMaxReportTypeDefinitions> st01Messages = {RequestVerificationService::MessageType::FailedAcceptanceReport,
+	                                                                   RequestVerificationService::MessageType::FailedCompletionOfExecution,
+	                                                                   RequestVerificationService::MessageType::FailedProgressOfExecution,
+	                                                                   RequestVerificationService::MessageType::FailedRoutingReport,
+	                                                                   RequestVerificationService::MessageType::FailedStartOfExecution,
+	                                                                   RequestVerificationService::MessageType::SuccessfulAcceptanceReport,
+	                                                                   RequestVerificationService::MessageType::SuccessfulCompletionOfExecution,
+	                                                                   RequestVerificationService::MessageType::SuccessfulProgressOfExecution,
+	                                                                   RequestVerificationService::MessageType::SuccessfulStartOfExecution};
+
+	etl::vector<uint8_t, ECSSMaxReportTypeDefinitions> st03Messages = {
+	    HousekeepingService::MessageType::DisablePeriodicHousekeepingParametersReport,
+	    HousekeepingService::MessageType::EnablePeriodicHousekeepingParametersReport,
+	    HousekeepingService::MessageType::GenerateOneShotHousekeepingReport,
+	    HousekeepingService::MessageType::HousekeepingParametersReport,
+	    HousekeepingService::MessageType::HousekeepingPeriodicPropertiesReport,
+	    HousekeepingService::MessageType::HousekeepingStructuresReport};
+
+	etl::vector<uint8_t, ECSSMaxReportTypeDefinitions> st04Messages = {
+	    ParameterStatisticsService::MessageType::ParameterStatisticsDefinitionsReport,
+	    ParameterStatisticsService::MessageType::ParameterStatisticsReport,
+	};
+
+	etl::vector<uint8_t, ECSSMaxReportTypeDefinitions> st05Messages = {EventReportService::MessageType::HighSeverityAnomalyReport,
+	                                                                   EventReportService::MessageType::DisabledListEventReport,
+	                                                                   EventReportService::MessageType::InformativeEventReport,
+	                                                                   EventReportService::MessageType::LowSeverityAnomalyReport,
+	                                                                   EventReportService::MessageType::MediumSeverityAnomalyReport};
+
+	etl::vector<uint8_t, ECSSMaxReportTypeDefinitions> st06Messages = {MemoryManagementService::MessageType::CheckRawMemoryDataReport,
+	                                                                   MemoryManagementService::MessageType::DumpRawMemoryDataReport};
+
+	etl::vector<uint8_t, ECSSMaxReportTypeDefinitions> st11Messages = {TimeBasedSchedulingService::MessageType::TimeBasedScheduledSummaryReport};
+
+	etl::vector<uint8_t, ECSSMaxReportTypeDefinitions> st13Messages = {LargePacketTransferService::MessageType::FirstDownlinkPartReport,
+	                                                                   LargePacketTransferService::MessageType::InternalDownlinkPartReport,
+	                                                                   LargePacketTransferService::MessageType::LastDownlinkPartReport};
+
+	etl::vector<uint8_t, ECSSMaxReportTypeDefinitions> st17Messages = {TestService::MessageType::AreYouAliveTestReport,
+	                                                                   TestService::MessageType::OnBoardConnectionTestReport};
+
+	etl::vector<uint8_t, ECSSMaxReportTypeDefinitions> st19Messages = {EventActionService::MessageType::EventActionStatusReport};
+
+	etl::vector<uint8_t, ECSSMaxReportTypeDefinitions> st20Messages = {ParameterService::MessageType::ParameterValuesReport};
+
+	etl::map<uint8_t, etl::vector<uint8_t, ECSSMaxReportTypeDefinitions>, ECSSMaxServiceTypeDefinitions> messagesOfService = {
+	    {RequestVerificationService::ServiceType, st01Messages},
+	    {HousekeepingService::ServiceType, st03Messages},
+	    {ParameterStatisticsService::ServiceType, st04Messages},
+	    {EventReportService::ServiceType, st05Messages},
+	    {MemoryManagementService::ServiceType, st06Messages},
+	    {TimeBasedSchedulingService::ServiceType, st11Messages},
+	    {LargePacketTransferService::ServiceType, st13Messages},
+	    {TestService::ServiceType, st17Messages},
+	    {EventActionService::ServiceType, st19Messages},
+	    {ParameterService::ServiceType, st20Messages}};
+
+} // namespace AllMessageTypes
-- 
GitLab