微网配置支持设置配置区

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 #endif
// Flash最后一块作为配置区
Config::Current = &Config::CreateFlash();
} }
void Fix2401(void* param) void Fix2401(void* param)
@ -160,9 +163,6 @@ TinyClient* CreateTinyClient(ITransport* port)
void* InitConfig(void* data, uint size) void* InitConfig(void* data, uint size)
{ {
// Flash最后一块作为配置区
Config::Current = &Config::CreateFlash();
// 启动信息 // 启动信息
auto hot = &HotConfig::Current(); auto hot = &HotConfig::Current();
hot->Times++; hot->Times++;

View File

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

View File

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