diff --git a/inc/Helpers/AllMessageTypes.hpp b/inc/Helpers/AllMessageTypes.hpp index 2a49215fc283022bebb28a6e4f730a5f46a6ba39..6d7ca757e9cb9b3af89e55d6006a9186efebd330 100644 --- a/inc/Helpers/AllMessageTypes.hpp +++ b/inc/Helpers/AllMessageTypes.hpp @@ -1,23 +1,23 @@ #ifndef ECSS_SERVICES_ALLMESSAGETYPES_HPP #define ECSS_SERVICES_ALLMESSAGETYPES_HPP -#include "Services/RequestVerificationService.hpp" -#include "Services/HousekeepingService.hpp" -#include "Services/ParameterStatisticsService.hpp" +#include "Services/EventActionService.hpp" #include "Services/EventReportService.hpp" -#include "Services/MemoryManagementService.hpp" -#include "Services/TimeBasedSchedulingService.hpp" +#include "Services/HousekeepingService.hpp" #include "Services/LargePacketTransferService.hpp" +#include "Services/MemoryManagementService.hpp" +#include "Services/ParameterService.hpp" +#include "Services/ParameterStatisticsService.hpp" #include "Services/RealTimeForwardingControlService.hpp" +#include "Services/RequestVerificationService.hpp" #include "Services/TestService.hpp" -#include "Services/EventActionService.hpp" -#include "Services/ParameterService.hpp" +#include "Services/TimeBasedSchedulingService.hpp" /** - * Class holding all the message types for every service type. + * Namespace containing all the message types for every service type. + * todo: needs to be updated after the implementation of the remaining ecss services. */ -class AllMessageTypes { -public: +namespace AllMessageTypes { etl::vector<uint8_t, 15> st01Messages = {RequestVerificationService::MessageType::FailedAcceptanceReport, RequestVerificationService::MessageType::FailedCompletionOfExecution, RequestVerificationService::MessageType::FailedProgressOfExecution, @@ -74,6 +74,7 @@ public: {TestService::ServiceType, st17Messages}, {EventActionService::ServiceType, st19Messages}, {ParameterService::ServiceType, st20Messages}}; -}; + +} // namespace AllMessageTypes #endif diff --git a/inc/Services/RealTimeForwardingControlService.hpp b/inc/Services/RealTimeForwardingControlService.hpp index 5deb93974ac184b1dd26d8319335136ac4d3a8c6..824235568936841fa905dec3d2e2fe409529e112 100644 --- a/inc/Services/RealTimeForwardingControlService.hpp +++ b/inc/Services/RealTimeForwardingControlService.hpp @@ -2,11 +2,11 @@ #define ECSS_SERVICES_REALTIMEFORWARDINGCONTROLSERVICE_HPP #include "ECSS_Definitions.hpp" -#include "Service.hpp" #include "ErrorHandler.hpp" -#include "etl/vector.h" -#include "Helpers/ForwardControlConfiguration.hpp" #include "Helpers/AllMessageTypes.hpp" +#include "Helpers/ForwardControlConfiguration.hpp" +#include "Service.hpp" +#include "etl/vector.h" /** * Implementation of the ST[14] 'Real Time Forwarding Control Service' as defined in ECSS-E-ST-70-41C. @@ -27,12 +27,6 @@ public: RealTimeForwardingControlService() = default; - /** - * All the message types of every service type. - * todo: needs to be updated after the implementation of the remaining ecss services. - */ - AllMessageTypes allMessageTypes; - /** * Contains the Application IDs, controlled by the Service. */ diff --git a/src/Services/RealTimeForwardingControlService.cpp b/src/Services/RealTimeForwardingControlService.cpp index 1d67a2f5721593bd81b0cec3511c594b94dc40df..cafbdbbd1538b2fac2245a5276b6577fdfb95b58 100644 --- a/src/Services/RealTimeForwardingControlService.cpp +++ b/src/Services/RealTimeForwardingControlService.cpp @@ -1,24 +1,24 @@ -#include <iostream> #include "Services/RealTimeForwardingControlService.hpp" +#include <iostream> void RealTimeForwardingControlService::addAllReportsOfApplication(uint8_t applicationID) { - for (auto& service : allMessageTypes.messagesOfService) { + for (auto& service: AllMessageTypes::messagesOfService) { uint8_t serviceType = service.first; - for (auto message : service.second) { + for (auto message: service.second) { applicationProcessConfiguration.definitions[std::make_pair(applicationID, serviceType)].push_back(message); } } } void RealTimeForwardingControlService::addAllReportsOfService(uint8_t applicationID, uint8_t serviceType) { - for (auto& messageType : allMessageTypes.messagesOfService[serviceType]) { + for (auto& messageType: AllMessageTypes::messagesOfService[serviceType]) { applicationProcessConfiguration.definitions[std::make_pair(applicationID, serviceType)].push_back(messageType); } } uint8_t RealTimeForwardingControlService::countServicesOfApplication(uint8_t applicationID) { uint8_t serviceCounter = 0; - for (auto& definition : applicationProcessConfiguration.definitions) { + for (auto& definition: applicationProcessConfiguration.definitions) { auto& pair = definition.first; if (pair.first == applicationID) { serviceCounter++; @@ -82,7 +82,7 @@ bool RealTimeForwardingControlService::checkService(Message& request, uint8_t ap bool RealTimeForwardingControlService::allReportTypesAllowed(Message& request, uint8_t applicationID, uint8_t serviceType) { // std::cout<<"num mess= "<<static_cast<int>(countReportsOfService(applicationID, serviceType))<<"\n"; - if (countReportsOfService(applicationID, serviceType) >= allMessageTypes.messagesOfService[serviceType].size()) { + if (countReportsOfService(applicationID, serviceType) >= AllMessageTypes::messagesOfService[serviceType].size()) { // std::cout<<"err23\n"; ErrorHandler::reportError(request, ErrorHandler::ExecutionStartErrorType::AllReportTypesAlreadyAllowed); return true; @@ -92,7 +92,7 @@ bool RealTimeForwardingControlService::allReportTypesAllowed(Message& request, u bool RealTimeForwardingControlService::maxReportTypesReached(Message& request, uint8_t applicationID, uint8_t serviceType) { - if (countReportsOfService(applicationID, serviceType) >= allMessageTypes.messagesOfService[serviceType].size()) { + if (countReportsOfService(applicationID, serviceType) >= AllMessageTypes::messagesOfService[serviceType].size()) { ErrorHandler::reportError(request, ErrorHandler::ExecutionStartErrorType::MaxReportTypesReached); return true; } diff --git a/test/Services/RealTimeForwardingControl.cpp b/test/Services/RealTimeForwardingControl.cpp index 194fd9ca1b440c0410272b30a5546dfe370b6e69..58a943afea5cfafcf18ca315cce9b8fa46edc10c 100644 --- a/test/Services/RealTimeForwardingControl.cpp +++ b/test/Services/RealTimeForwardingControl.cpp @@ -1,9 +1,9 @@ #include <iostream> -#include "catch2/catch.hpp" +#include "ECSS_Definitions.hpp" #include "Message.hpp" #include "ServiceTests.hpp" -#include "ECSS_Definitions.hpp" #include "Services/RealTimeForwardingControlService.hpp" +#include "catch2/catch.hpp" RealTimeForwardingControlService& realTimeForwarding = Services.realTimeForwarding; @@ -24,7 +24,7 @@ void validReportTypes(Message& request) { request.appendUint8(numOfApplications); - for (auto appID : applications) { + for (auto appID: applications) { request.appendUint8(appID); request.appendUint8(numOfServicesPerApp); @@ -48,7 +48,7 @@ void duplicateReportTypes(Message& request) { request.appendUint8(numOfApplications); - for (auto appID : applications) { + for (auto appID: applications) { request.appendUint8(appID); request.appendUint8(numOfServicesPerApp); @@ -97,7 +97,7 @@ void validAllReportsOfService(Message& request) { request.appendUint8(numOfApplications); - for (auto appID : applications) { + for (auto appID: applications) { request.appendUint8(appID); request.appendUint8(numOfServicesPerApp); @@ -144,7 +144,7 @@ void validAllReportsOfApp(Message& request) { request.appendUint8(numOfApplications); - for (auto appID : applications) { + for (auto appID: applications) { request.appendUint8(appID); request.appendUint8(numOfServicesPerApp); } @@ -201,7 +201,7 @@ TEST_CASE("Add report types to the Application Process Configuration") { auto& applicationProcesses = realTimeForwarding.applicationProcessConfiguration.definitions; REQUIRE(applicationProcesses.size() == 2); - for (auto appID : applications) { + for (auto appID: applications) { for (uint8_t j = 0; j < 2; j++) { uint8_t serviceType = services[j]; auto appServicePair = std::make_pair(appID, serviceType); @@ -307,7 +307,7 @@ TEST_CASE("Add report types to the Application Process Configuration") { realTimeForwarding.controlledApplications.push_back(applicationID); validReportTypes(request); - for (auto message : realTimeForwarding.allMessageTypes.st03Messages) { + for (auto message: AllMessageTypes::st03Messages) { realTimeForwarding.applicationProcessConfiguration.definitions[std::make_pair(applicationID, serviceType)] .push_back(message); } @@ -319,7 +319,7 @@ TEST_CASE("Add report types to the Application Process Configuration") { 1); REQUIRE( realTimeForwarding.applicationProcessConfiguration.definitions[std::make_pair(applicationID, serviceType)] - .size() == realTimeForwarding.allMessageTypes.messagesOfService[serviceType].size()); + .size() == AllMessageTypes::messagesOfService[serviceType].size()); resetAppProcessConfiguration(); ServiceTests::reset(); @@ -345,8 +345,8 @@ TEST_CASE("Add report types to the Application Process Configuration") { REQUIRE(applicationProcessConfig.definitions[appServicePair1].empty()); REQUIRE(applicationProcessConfig.definitions[appServicePair2].empty()); - auto numOfMessages1 = realTimeForwarding.allMessageTypes.messagesOfService[serviceType1].size(); - auto numOfMessages2 = realTimeForwarding.allMessageTypes.messagesOfService[serviceType2].size(); + auto numOfMessages1 = AllMessageTypes::messagesOfService[serviceType1].size(); + auto numOfMessages2 = AllMessageTypes::messagesOfService[serviceType2].size(); for (uint8_t i = 0; i < numOfMessages1 - 1; i++) { applicationProcessConfig.definitions[appServicePair1].push_back(i); @@ -385,8 +385,8 @@ TEST_CASE("Add report types to the Application Process Configuration") { auto& applicationProcesses = realTimeForwarding.applicationProcessConfiguration.definitions; REQUIRE(applicationProcesses.size() == 2); - for (auto appID : applications) { - for (auto& serviceType : services) { + for (auto appID: applications) { + for (auto& serviceType: services) { auto appServicePair = std::make_pair(appID, serviceType); REQUIRE(applicationProcesses.find(appServicePair) != applicationProcesses.end()); REQUIRE(applicationProcesses[appServicePair].size() == 1); @@ -427,7 +427,7 @@ TEST_CASE("Add report types to the Application Process Configuration") { auto& definitions = realTimeForwarding.applicationProcessConfiguration.definitions; REQUIRE(definitions.size() == 20); - for (auto serviceType : allServices) { + for (auto serviceType: allServices) { REQUIRE(definitions.find(std::make_pair(applicationID1, serviceType)) != definitions.end()); } @@ -448,9 +448,9 @@ TEST_CASE("Add report types to the Application Process Configuration") { CHECK(ServiceTests::count() == 0); auto& applicationProcesses = realTimeForwarding.applicationProcessConfiguration.definitions; - for (auto serviceType : services) { + for (auto serviceType: services) { REQUIRE(applicationProcesses[std::make_pair(applicationID1, serviceType)].size() == - realTimeForwarding.allMessageTypes.messagesOfService[serviceType].size()); + AllMessageTypes::messagesOfService[serviceType].size()); } resetAppProcessConfiguration(); @@ -479,7 +479,7 @@ TEST_CASE("Add report types to the Application Process Configuration") { int cnt1 = 0; int cnt2 = 0; - for (auto& pair : definitions) { + for (auto& pair: definitions) { if (pair.first.first == applicationID1) { cnt1++; } else if (pair.first.first == applicationID2) { @@ -489,13 +489,13 @@ TEST_CASE("Add report types to the Application Process Configuration") { REQUIRE(cnt1 == 10); REQUIRE(cnt2 == 2); - for (auto& serviceType : allServices) { + for (auto& serviceType: allServices) { REQUIRE(definitions[std::make_pair(applicationID1, serviceType)].size() == - realTimeForwarding.allMessageTypes.messagesOfService[serviceType].size()); + AllMessageTypes::messagesOfService[serviceType].size()); } - for (auto& serviceType : services) { + for (auto& serviceType: services) { REQUIRE(definitions[std::make_pair(applicationID2, serviceType)].size() == - realTimeForwarding.allMessageTypes.messagesOfService[serviceType].size()); + AllMessageTypes::messagesOfService[serviceType].size()); } resetAppProcessConfiguration(); @@ -517,10 +517,10 @@ TEST_CASE("Add report types to the Application Process Configuration") { auto& definitions = realTimeForwarding.applicationProcessConfiguration.definitions; REQUIRE(definitions.size() == ECSSMaxServiceTypeDefinitions); - for (auto serviceType : allServices) { + for (auto serviceType: allServices) { REQUIRE(std::equal(definitions[std::make_pair(applicationID1, serviceType)].begin(), definitions[std::make_pair(applicationID1, serviceType)].end(), - realTimeForwarding.allMessageTypes.messagesOfService[serviceType].begin())); + AllMessageTypes::messagesOfService[serviceType].begin())); } resetAppProcessConfiguration();