|
|
#pragma once
#include "project_configs.h"
#include "sdk/os/zos.hpp"
namespace iflytop { using namespace std;
class ZNVS { typedef enum { kcfg_type_int8_t, kcfg_type_uint8_t, kcfg_type_int16_t, kcfg_type_uint16_t, kcfg_type_int32_t, kcfg_type_uint32_t, kcfg_type_float, kcfg_type_bool, } type_t;
#pragma pack(1)
typedef struct { char key[64]; uint8_t val[8]; uint8_t type; bool is_initialed; } cfg_t;
typedef struct { uint32_t config_start; cfg_t cfgs[IFLYTOP_NVS_CONFIG_MAX_ITEM_NUM]; uint32_t config_end; } config_t; #pragma pack()
config_t m_cfg;
public: static ZNVS& ins();
void initialize(); void factory_reset(); void dumpcfg();
int8_t get_config_int8(const char* key, int8_t default_val); void set_config_int8(const char* key, int8_t val);
uint8_t get_config_uint8(const char* key, uint8_t default_val); void set_config_uint8(const char* key, uint8_t val);
int16_t get_config_int16(const char* key, int16_t default_val); void set_config_int16(const char* key, int16_t val);
uint16_t get_config_uint16(const char* key, uint16_t default_val); void set_config_uint16(const char* key, uint16_t val);
int32_t get_config_int32(const char* key, int32_t default_val); void set_config_int32(const char* key, int32_t val);
uint32_t get_config_uint32(const char* key, uint32_t default_val); void set_config_uint32(const char* key, uint32_t val);
float get_config_float(const char* key, float default_val); void set_config_float(const char* key, float val);
bool get_config_bool(const char* key, bool default_val); void set_config_bool(const char* key, bool val);
private: void dumpcfg(cfg_t* cfg);
cfg_t* get_cfg(const char* key); void allocate_cfg(const char* key, type_t type, uint8_t* default_val, uint8_t len); cfg_t* get_and_create_cfg(const char* key, type_t type, uint8_t* default_val, uint8_t len); void flush(); };
} // namespace iflytop
|