diff --git a/CMakeLists.txt b/CMakeLists.txt index 8caf2586e93d15c7539d6084ff9f32dc699067b1..d7e7ce9060182221334367f2fd3b2ddcdb34034d 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 b17d891f8a8bf08c25931788df4631ee13529e8c..5c8ee8af2cdeb6aac81ae6e9f63cc733fa215ccd 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 6d7ca757e9cb9b3af89e55d6006a9186efebd330..760800565d653e2cc60470b1119889307fa496f2 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 0000000000000000000000000000000000000000..8fdb9d5b13ba42e4f1334bcda0a80f6e76b977db --- /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