70 lines
1.7 KiB
C
70 lines
1.7 KiB
C
|
#ifndef BSP_Q7S_CORE_NVMPARAMS_NVMPARAMIF_H_
|
||
|
#define BSP_Q7S_CORE_NVMPARAMS_NVMPARAMIF_H_
|
||
|
|
||
|
#include "fsfw/returnvalues/HasReturnvaluesIF.h"
|
||
|
|
||
|
#include <nlohmann/json.hpp>
|
||
|
#include <string>
|
||
|
#include <filesystem>
|
||
|
|
||
|
class NVMParameterBase {
|
||
|
public:
|
||
|
virtual~ NVMParameterBase() {}
|
||
|
|
||
|
NVMParameterBase(std::string fullName);
|
||
|
|
||
|
bool getJsonFileExists();
|
||
|
|
||
|
/**
|
||
|
* Returns RETURN_OK on successfull read and HasFileSystemIF::FILE_DOES_NOT_EXIST if
|
||
|
* file does not exist yet.
|
||
|
* @return
|
||
|
*/
|
||
|
virtual ReturnValue_t readJsonFile();
|
||
|
|
||
|
virtual ReturnValue_t writeJsonFile();
|
||
|
|
||
|
void setFullName(std::string fullName);
|
||
|
std::string getFullName() const;
|
||
|
|
||
|
template<typename T>
|
||
|
ReturnValue_t insertValue(std::string key, T value);
|
||
|
|
||
|
template<typename T>
|
||
|
ReturnValue_t setValue(std::string key, T value);
|
||
|
|
||
|
template<typename T>
|
||
|
T getValue(std::string key) const;
|
||
|
|
||
|
void printKeys() const;
|
||
|
void print() const;
|
||
|
|
||
|
private:
|
||
|
nlohmann::json json;
|
||
|
std::vector<std::string> keys;
|
||
|
std::string fullName;
|
||
|
};
|
||
|
|
||
|
template<typename T>
|
||
|
inline ReturnValue_t NVMParameterBase::insertValue(std::string key, T value) {
|
||
|
// Check whether key already exists. If it does not, insert it
|
||
|
if (std::find(keys.begin(), keys.end(), key) == keys.end()) {
|
||
|
keys.push_back(key);
|
||
|
}
|
||
|
json[key] = value;
|
||
|
return HasReturnvaluesIF::RETURN_OK;
|
||
|
}
|
||
|
|
||
|
template<typename T>
|
||
|
inline ReturnValue_t NVMParameterBase::setValue(std::string key, T value) {
|
||
|
json[key] = value;
|
||
|
return HasReturnvaluesIF::RETURN_OK;
|
||
|
}
|
||
|
|
||
|
template<typename T>
|
||
|
inline T NVMParameterBase::getValue(std::string key) const {
|
||
|
return json[key];
|
||
|
}
|
||
|
|
||
|
#endif /* BSP_Q7S_CORE_NVMPARAMS_NVMPARAMIF_H_ */
|