avoid exceptions
This commit is contained in:
85
mission/memory/NvmParameterBase.h
Normal file
85
mission/memory/NvmParameterBase.h
Normal file
@ -0,0 +1,85 @@
|
||||
#ifndef BSP_Q7S_CORE_NVMPARAMS_NVMPARAMIF_H_
|
||||
#define BSP_Q7S_CORE_NVMPARAMS_NVMPARAMIF_H_
|
||||
|
||||
#include <filesystem>
|
||||
#include <nlohmann/json.hpp>
|
||||
#include <string>
|
||||
|
||||
#include "fsfw/returnvalues/returnvalue.h"
|
||||
#include "returnvalues/classIds.h"
|
||||
|
||||
class NVMParameterBase {
|
||||
public:
|
||||
virtual ~NVMParameterBase() {}
|
||||
|
||||
NVMParameterBase(std::string fullName);
|
||||
|
||||
/**
|
||||
* @brief Use this constructor when name of json file shall be set on an later
|
||||
* point
|
||||
*/
|
||||
NVMParameterBase();
|
||||
|
||||
bool getJsonFileExists();
|
||||
|
||||
/**
|
||||
* Returns returnvalue::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();
|
||||
|
||||
virtual 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>
|
||||
ReturnValue_t getValue(std::string key, T& value) const;
|
||||
|
||||
void printKeys() const;
|
||||
void print() const;
|
||||
|
||||
private:
|
||||
static const uint8_t INTERFACE_ID = CLASS_ID::NVM_PARAM_BASE;
|
||||
|
||||
//! [EXPORT] : [COMMENT] Specified key does not exist in json file
|
||||
static const ReturnValue_t KEY_NOT_EXISTS = MAKE_RETURN_CODE(0xA0);
|
||||
|
||||
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 returnvalue::OK;
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
inline ReturnValue_t NVMParameterBase::setValue(std::string key, T value) {
|
||||
json[key] = value;
|
||||
return returnvalue::OK;
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
inline ReturnValue_t NVMParameterBase::getValue(std::string key, T& value) const {
|
||||
if (!json.contains(key)) {
|
||||
return KEY_NOT_EXISTS;
|
||||
}
|
||||
value = json[key];
|
||||
return returnvalue::OK;
|
||||
}
|
||||
|
||||
#endif /* BSP_Q7S_CORE_NVMPARAMS_NVMPARAMIF_H_ */
|
Reference in New Issue
Block a user