/* * GlobalConfigHandler.h * * Created on: May 3, 2022 * Author: Jona Petri (IRS) */ #ifndef MISSION_UTILITY_GLOBALCONFIGHANDLER_H_ #define MISSION_UTILITY_GLOBALCONFIGHANDLER_H_ #include #include #include #include #include #include #include #include #include #include "GlobalConfigFileDefinitions.h" #include "OBSWConfig.h" #include "fsfw/parameters/HasParametersIF.h" #include "fsfw/parameters/ParameterHelper.h" #include "mission/memory/NVMParameterBase.h" /* * Idea: This class is intended to be used as a subclass for the Core Controller. * Its tasks is managing a configuration JSON file containing config values important for various * object. If some function to read or write a config value is called, a mutex should be used so * only one call is done at a time. */ class GlobalConfigHandler : public SystemObject, public ExecutableObjectIF, public NVMParameterBase { public: GlobalConfigHandler(object_id_t objectId, std::string configFilePath); virtual ~GlobalConfigHandler(); static const uint8_t SUBSYSTEM_ID = SUBSYSTEM_ID::CONFIGHANDLER; static constexpr Event SET_CONFIGFILEVALUE_FAILED = MAKE_EVENT(1, severity::MEDIUM); static constexpr Event GET_CONFIGFILEVALUE_FAILED = MAKE_EVENT(2, severity::MEDIUM); static constexpr Event INSERT_CONFIGFILEVALUE_FAILED = MAKE_EVENT(3, severity::MEDIUM); static constexpr Event WRITE_CONFIGFILE_FAILED = MAKE_EVENT(4, severity::MEDIUM); static constexpr Event READ_CONFIGFILE_FAILED = MAKE_EVENT(5, severity::MEDIUM); ReturnValue_t performOperation(uint8_t operationCode); ReturnValue_t initialize(); template ReturnValue_t setConfigFileValue(std::string paramName, T data); template ReturnValue_t getConfigFileValue(std::string paramName, T& data); ReturnValue_t resetConfigFile(); ReturnValue_t writeConfigFile(); std::string getConfigFileName(); private: static MutexIF* CONFIG_LOCK; ReturnValue_t lockConfigFile(); ReturnValue_t unlockConfigFile(); ReturnValue_t resetConfigFileValues(); ReturnValue_t setConfigFileName(std::string configFileName); ReturnValue_t readConfigFile(); MessageQueueIF* commandQueue; }; #endif /* MISSION_UTILITY_GLOBALCONFIGHANDLER_H_ */