diff --git a/inc/Helpers/ForwardControlConfiguration.hpp b/inc/Helpers/ForwardControlConfiguration.hpp index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..2c2f1f3a8dbda25e4af795f8446046139c1843ad 100644 --- a/inc/Helpers/ForwardControlConfiguration.hpp +++ b/inc/Helpers/ForwardControlConfiguration.hpp @@ -0,0 +1,93 @@ +#ifndef ECSS_SERVICES_FORWARDCONTROLCONFIGURATION_HPP +#define ECSS_SERVICES_FORWARDCONTROLCONFIGURATION_HPP + +#include "ECSS_Definitions.hpp" +#include "ErrorHandler.hpp" +#include "etl/vector.h" +#include "etl/map.h" +#include "Helpers/Parameter.hpp" + +namespace ForwardControlConfiguration +{ +/** + * The Application Process configuration. Its architecture is based on a 3-level hierarchy, where the first level + * is the Application process definitions. Each Application Process definition contains a list of Service Type + * definitions (level 2) and each Service Type definition contains a list of the Report Type definitions (level 3). + * + * Applications [][][] + * / + * Service types [][][][][][] + * / + * [][][][][] Report types + */ +class ApplicationProcess { +public: + /** + * Vector containing the Report Type definitions. Each definition has its unique name of type uint8. For + * example, a Report Type definition could be 'ReportHousekeepingStructures'. + */ + typedef etl::vector<uint8_t, ECSSMaxReportTypeDefinitions> reportTypeDefinitions; + + /** + * Map containing the Service Type definitions. Each Service Type definition is accessed via its key-name, of type + * uint8, for example '20' for the Parameter Management service. Each Service Type definition, contains the + * list of its own Report Type definitions. + */ + typedef etl::map<uint8_t, reportTypeDefinitions, ECSSMaxServiceTypeDefinitions> serviceTypeDefinitions; + + /** + * Map containing the Application Process definitions. Each application has its own ID. The ID is used as a + * key to provide access to the list of Service Type definitions, included by the application. + */ + typedef etl::map<uint8_t, serviceTypeDefinitions, ECSSMaxControlledApplications> applicationProcessDefinitions; +}; + +/** + * The Housekeeping Parameter Report configuration. Its architecture is based on a 2-level hierarchy, where the + * first level is the Application process definitions. Each application process definition contains a list of + * Housekeeping structure IDs (level 2). + * + * Applications [][][] + * / + * [][][][][][] Housekeeping structure IDs + */ +class HousekeepingParameterReport { +public: + /** + * Vector containing the Housekeeping structure IDs. + */ + typedef etl::vector<uint8_t, ECSSMaxHousekeepingStructureIDs> housekeepingStructureIds; + + /** + * Map containing the Housekeeping definitions (application processes). Each application has its own ID. The ID is + * used as a key to provide access to the list of the Housekeeping structure IDs. + */ + typedef etl::map<uint8_t, housekeepingStructureIds, ECSSMaxControlledApplications> housekeepingDefinitions; +}; + +/** + * The Housekeeping Parameter Report configuration. Its architecture is based on a 2-level hierarchy, where the + * first level is the Application process definitions. Each application process definition contains a list of + * Event Definition IDs (level 2). + * + * Applications [][][] + * / + * [][][][][][] Event Definition IDs + */ +class EventReportBlocking { +public: + /** + * Vector containing the Event Definition IDs. + */ + typedef etl::vector<uint8_t, ECSSMaxEventDefinitionIDs> eventDefinitionIds; + + /** + * Map containing the Event Report Blocking definitions (applications). Each application has its own ID. The ID is + * used as a key to provide access to the list of the Event Definitions. + */ + typedef etl::map<uint8_t, eventDefinitionIds, ECSSMaxControlledApplications> eventReportBlockingDefinitions; +}; + +} // namespace ForwardControlConfiguration + +#endif