corrections and tests
This commit is contained in:
69
mission/memory/NVMParameterBase.h
Normal file
69
mission/memory/NVMParameterBase.h
Normal file
@ -0,0 +1,69 @@
|
||||
#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_ */
|
Reference in New Issue
Block a user