微网配置支持设置配置区

This commit is contained in:
nnhy 2015-12-31 08:48:09 +00:00
parent 6135aae84b
commit d7d5c12dd7
3 changed files with 38 additions and 28 deletions

View File

@ -50,6 +50,9 @@ void Setup(ushort code, const char* name, COM_Def message, int baudRate)
}
#endif
// Flash最后一块作为配置区
Config::Current = &Config::CreateFlash();
}
void Fix2401(void* param)
@ -160,9 +163,6 @@ TinyClient* CreateTinyClient(ITransport* port)
void* InitConfig(void* data, uint size)
{
// Flash最后一块作为配置区
Config::Current = &Config::CreateFlash();
// 启动信息
auto hot = &HotConfig::Current();
hot->Times++;

View File

@ -3,6 +3,11 @@
TinyConfig* TinyConfig::Current = NULL;
TinyConfig::TinyConfig()
{
Cfg = Config::Current;
}
void TinyConfig::LoadDefault()
{
// 实际内存大小,减去头部大小
@ -18,19 +23,17 @@ void TinyConfig::LoadDefault()
PingTime = 20;
OfflineTime = 60;
StartSet = 64;
}
void TinyConfig::Load()
{
// Flash最后一块作为配置区
if(!Config::Current) Config::Current = &Config::CreateFlash();
if(!Cfg) return;
// 尝试加载配置区设置
uint len = Length;
if(!len) len = sizeof(this[0]);
Array bs(&Length, len);
if(!Config::Current->GetOrSet("TCFG", bs))
if(!Cfg->GetOrSet("TCFG", bs))
debug_printf("TinyConfig::Load 首次运行,创建配置区!\r\n");
else
debug_printf("TinyConfig::Load 从配置区加载配置\r\n");
@ -40,29 +43,33 @@ void TinyConfig::Load()
debug_printf("TinyConfig::Load 设备类型变更\r\n");
Kind = Sys.Code;
Config::Current->Set("TCFG", bs);
Cfg->Set("TCFG", bs);
}
}
void TinyConfig::Save()
{
if(!Cfg) return;
uint len = Length;
if(!len) len = sizeof(this[0]);
debug_printf("TinyConfig::Save \r\n");
Array bs(&Length, len);
Config::Current->Set("TCFG", bs);
Cfg->Set("TCFG", bs);
}
void TinyConfig::Clear()
{
if(!Cfg) return;
LoadDefault();
debug_printf("TinyConfig::Clear \r\n");
Array bs(&Length, Length);
Config::Current->Set("TCFG", bs);
Cfg->Set("TCFG", bs);
}
void TinyConfig::Write(Stream& ms) const

View File

@ -3,7 +3,7 @@
#include "Sys.h"
#include "Stream.h"
#include "Storage\Storage.h"
#include "Config.h"
// 必须设定为1字节对齐否则offsetof会得到错误的位置
#pragma pack(push) // 保存对齐状态
@ -11,8 +11,9 @@
#pragma pack(1)
// 配置信息
struct TinyConfig
class TinyConfig
{
public:
byte Length; // 数据长度
byte OfflineTime;// 离线阀值时间。秒
@ -30,8 +31,7 @@ struct TinyConfig
byte Password[16]; // 通信密码
byte Mac[6]; // 无线物理地址
byte StartSet;
TinyConfig();
void LoadDefault();
void Load();
@ -44,6 +44,9 @@ struct TinyConfig
static TinyConfig* Current;
static TinyConfig* Init();
private:
Config* Cfg;
};
#pragma pack(pop) // 恢复对齐状态