EmxParam

统一的加密参数存取接口 更多...

EmxParam 的协作图:

class  Emx::Param
 关于系统需要持久化保存的参数的相关操作 更多...
 
class  Emx::ParamSetEvent
 用于监听参数设置事件 更多...
 

详细描述

  Emx中关于参数配置文件有两个定义,一个是Param(参数),另一个是Config(配置),两者都是保存在flash中的某些json文件(Emx中统一使用json来存储参数和配置文件),但是他们有一些区别。

Param Config
加密 不加密
可动态修改 静态的通常不进行修改
通过ParamServer提供的接口远程读写 通过SysEnv获取到路径后直接读取文件

  实际开发中需要注意他们各自的特性,例如某些敏感信息,需要加密存储,那么就需要使用Param,如果是一些不敏感的信息,也不会去修改它,那么Config更合适,也便于日常调试的时候查看其内容。Config的读写可以使用Core中的Utils模块中的SysEnv结合EasyJson::Load来读取。下面来重点说一下Param,Param模块包含一个ParamServer,ParamServer是EmxCoreServer的一个线程,启动后会在后台运行,负责实现参数的读写等实际操作,使用者通过libEmxCore.so来调用ParamServer的服务。Emx中使用的所有的param都是由EmxCoreServer中的ParamServer服务进行统一加解密读写处理的

  ParamServer集成在EmxCoreServer中,其配置文件也是在EmxCoreServer启动的时候传入,配置文件的内容和含义参看1.EmxCore中的core.json解析

  实际使用中可以直接调用Param来进行参数的读写,也可以继承Param后再进行读写

//直接使用Param来读写mac
ErrCodeE ReadMac() {
// mac文件的默认存放路径为core.json中的param.default
// 当文件修改后,保存在param.normal和param.backup中
Param param("mac");
Json::Value json;
if (param.Get(json) != ErrCodeE::Success) {
emxloge("load mac failed\n");
}
printf("%s\n",json["mac"].asCString());
}
ErrCodeE WriteMac(std::string &mac) {
Param param("mac");
Json::Value json;
if (param.Get(json) != ErrCodeE::Success) {
emxloge("load mac failed\n");
}
json["mac"] = mac;
if (param.Set(json) != ErrCodeE::Success) {
emxloge("save mac failed\n");
}
}
ErrCodeE
错误码定义
Definition: EmxTypeDef.hpp:29
@ Success
成功
@ Failure
失败
//继承Param来读写mac
class Mac:public Param {
public:
Mac():Param("mac"){}
ErrCodeE Read() {
Json::Value json;
if (Get(json) != ErrCodeE::Success) {
emxloge("load mac failed\n");
}
printf("%s\n",json["mac"].asCString());
}
ErrCodeE Write(std::string &mac) {
Json::Value json;
if (Get(json) != ErrCodeE::Success) {
emxloge("load mac failed\n");
}
json["mac"] = mac;
if (Set(json) != ErrCodeE::Success) {
emxloge("save mac failed\n");
}
}
}
ErrCodeE Set(const char *mac)
设置MAC地址
Mac()
Definition: Mac.hpp:18
char * Get()
获取MAC地址
Definition: Mac.hpp:34

  当设备需要恢复出厂配置时,可以通过Param提供的ResetAllToFactory接口实现,ParamServer会删除core.json中param.normal和param.backup指定目录下的参数文件,从而将所有的param恢复默认值,也就是param.default目录中的值,当某些参数文件不需要在这个时候被重置时,可以通过修改resetReserved.json参数文件实现,这个文件内部记录了在ResetAllToFactory过程中哪些参数文件会被忽略