#ifndef BSP_Q7S_MEMORY_LOCALPARAMETERHANDLER_H_ #define BSP_Q7S_MEMORY_LOCALPARAMETERHANDLER_H_ #include #include #include /** * @brief Class to handle persistent parameters * * @details Use the insertValue function to add parameters */ class LocalParameterHandler : public NVMParameterBase { public: /** * @brief Constructor * * @param sdRelativeName Absolute name of json file relative to mount * directory of SD card. E.g. conf/example.json * @param sdcMan Pointer to SD card manager */ LocalParameterHandler(std::string sdRelativeName, SdCardMountedIF* sdcMan); virtual ~LocalParameterHandler(); /** * @brief Will initialize the local parameter handler * * @return OK if successful, otherwise error return value */ ReturnValue_t initialize(); /** * @brief Function to add parameter to json file * * @param key The string to identify the parameter * @param value The value to set for this parameter * * @return OK if successful, otherwise error return value * * @details The function will add the parameter only if it is not already * present in the json file */ template ReturnValue_t addParameter(std::string key, T value); private: // Name relative to mount point of SD card where parameters will be stored std::string sdRelativeName; SdCardMountedIF* sdcMan; }; template inline ReturnValue_t LocalParameterHandler::addParameter(std::string key, T value) { ReturnValue_t result = insertValue(key, value); if (result != returnvalue::OK) { return result; } result = writeJsonFile(); if (result != returnvalue::OK) { return result; } return returnvalue::OK; } #endif /* BSP_Q7S_MEMORY_LOCALPARAMETERHANDLER_H_ */