增加配置基类ConfigBase,统一微网配置和令牌配置
This commit is contained in:
parent
8156fc677c
commit
9da4aa12f7
86
Config.cpp
86
Config.cpp
|
@ -270,6 +270,92 @@ Config& Config::CreateRAM()
|
||||||
return cfg;
|
return cfg;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/******************************** ConfigBase ********************************/
|
||||||
|
|
||||||
|
ConfigBase::ConfigBase()
|
||||||
|
{
|
||||||
|
// Flash最后一块作为配置区
|
||||||
|
if(!Config::Current) Config::Current = &Config::CreateFlash();
|
||||||
|
|
||||||
|
Cfg = Config::Current;
|
||||||
|
|
||||||
|
New = true;
|
||||||
|
|
||||||
|
_Name = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint ConfigBase::Size() const
|
||||||
|
{
|
||||||
|
assert_param2(_End && _Start, "_Start & _End == NULL");
|
||||||
|
|
||||||
|
return (uint)_End - (uint)_Start;
|
||||||
|
}
|
||||||
|
|
||||||
|
Array ConfigBase::ToArray()
|
||||||
|
{
|
||||||
|
return Array(_Start, Size());
|
||||||
|
}
|
||||||
|
|
||||||
|
const Array ConfigBase::ToArray() const
|
||||||
|
{
|
||||||
|
return Array(_Start, Size());
|
||||||
|
}
|
||||||
|
|
||||||
|
void ConfigBase::Init()
|
||||||
|
{
|
||||||
|
memset(_Start, 0, Size());
|
||||||
|
}
|
||||||
|
|
||||||
|
void ConfigBase::Load()
|
||||||
|
{
|
||||||
|
if(!Cfg) return;
|
||||||
|
|
||||||
|
// 尝试加载配置区设置
|
||||||
|
auto bs = ToArray();
|
||||||
|
New = !Cfg->GetOrSet(_Name, bs);
|
||||||
|
if(New)
|
||||||
|
debug_printf("%s::Load 首次运行,创建配置区!\r\n", _Name);
|
||||||
|
else
|
||||||
|
debug_printf("%s::Load 从配置区加载配置\r\n", _Name);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ConfigBase::Save() const
|
||||||
|
{
|
||||||
|
if(!Cfg) return;
|
||||||
|
|
||||||
|
debug_printf("%s::Save \r\n", _Name);
|
||||||
|
|
||||||
|
Cfg->Set(_Name, ToArray());
|
||||||
|
}
|
||||||
|
|
||||||
|
void ConfigBase::Clear()
|
||||||
|
{
|
||||||
|
if(!Cfg) return;
|
||||||
|
|
||||||
|
Init();
|
||||||
|
|
||||||
|
debug_printf("%s::Clear \r\n", _Name);
|
||||||
|
|
||||||
|
Cfg->Set(_Name, ToArray());
|
||||||
|
}
|
||||||
|
|
||||||
|
void ConfigBase::Show() const
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void ConfigBase::Write(Stream& ms) const
|
||||||
|
{
|
||||||
|
ms.Write(ToArray());
|
||||||
|
}
|
||||||
|
|
||||||
|
void ConfigBase::Read(Stream& ms)
|
||||||
|
{
|
||||||
|
auto bs = ToArray();
|
||||||
|
ms.Read(bs);
|
||||||
|
}
|
||||||
|
|
||||||
|
/******************************** HotConfig ********************************/
|
||||||
|
|
||||||
void* HotConfig::Next() const
|
void* HotConfig::Next() const
|
||||||
{
|
{
|
||||||
return (void*)&this[1];
|
return (void*)&this[1];
|
||||||
|
|
37
Config.h
37
Config.h
|
@ -38,11 +38,46 @@ public:
|
||||||
static Config& CreateRAM();
|
static Config& CreateRAM();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/******************************** ConfigBase ********************************/
|
||||||
|
|
||||||
|
// 应用配置基类
|
||||||
|
class ConfigBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
bool New;
|
||||||
|
|
||||||
|
ConfigBase();
|
||||||
|
virtual void Init();
|
||||||
|
|
||||||
|
virtual void Load();
|
||||||
|
virtual void Save() const;
|
||||||
|
virtual void Clear();
|
||||||
|
virtual void Show() const;
|
||||||
|
|
||||||
|
// 序列化到消息数据流
|
||||||
|
void Write(Stream& ms) const;
|
||||||
|
void Read(Stream& ms);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
Config* Cfg;
|
||||||
|
const char* _Name;
|
||||||
|
|
||||||
|
void* _Start;
|
||||||
|
void* _End;
|
||||||
|
|
||||||
|
uint Size() const;
|
||||||
|
|
||||||
|
Array ToArray();
|
||||||
|
const Array ToArray() const;
|
||||||
|
};
|
||||||
|
|
||||||
// 必须设定为1字节对齐,否则offsetof会得到错误的位置
|
// 必须设定为1字节对齐,否则offsetof会得到错误的位置
|
||||||
#pragma pack(push) // 保存对齐状态
|
#pragma pack(push) // 保存对齐状态
|
||||||
// 强制结构体紧凑分配空间
|
// 强制结构体紧凑分配空间
|
||||||
#pragma pack(1)
|
#pragma pack(1)
|
||||||
|
|
||||||
|
/******************************** HotConfig ********************************/
|
||||||
|
|
||||||
// 系统配置信息
|
// 系统配置信息
|
||||||
class HotConfig
|
class HotConfig
|
||||||
{
|
{
|
||||||
|
@ -54,6 +89,8 @@ public:
|
||||||
static HotConfig& Current();
|
static HotConfig& Current();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/******************************** SysConfig ********************************/
|
||||||
|
|
||||||
// 系统配置信息
|
// 系统配置信息
|
||||||
class SysConfig
|
class SysConfig
|
||||||
{
|
{
|
||||||
|
|
|
@ -73,7 +73,7 @@ ITransport* Create2401(SPI_TypeDef* spi_, Pin ce, Pin irq, Pin power, bool power
|
||||||
auto nrf = new NRF24L01();
|
auto nrf = new NRF24L01();
|
||||||
nrf->Init(spi, ce, irq, power);
|
nrf->Init(spi, ce, irq, power);
|
||||||
|
|
||||||
auto tc = TinyConfig::Init();
|
auto tc = TinyConfig::Create();
|
||||||
if(tc->Interval < 40)
|
if(tc->Interval < 40)
|
||||||
{
|
{
|
||||||
tc->Channel = 120;
|
tc->Channel = 120;
|
||||||
|
@ -121,7 +121,7 @@ void ShunComExternalCfg(void * param)
|
||||||
|
|
||||||
ITransport* CreateShunCom(COM_Def index, int baudRate, Pin rst, Pin power, Pin slp, Pin cfg, IDataPort* led)
|
ITransport* CreateShunCom(COM_Def index, int baudRate, Pin rst, Pin power, Pin slp, Pin cfg, IDataPort* led)
|
||||||
{
|
{
|
||||||
auto tc = TinyConfig::Init();
|
auto tc = TinyConfig::Create();
|
||||||
debug_printf("tc->Interval %d\r\n",tc->Interval );
|
debug_printf("tc->Interval %d\r\n",tc->Interval );
|
||||||
if(tc->Interval == 0)
|
if(tc->Interval == 0)
|
||||||
{
|
{
|
||||||
|
@ -181,7 +181,7 @@ void* InitConfig(void* data, uint size)
|
||||||
((byte*)data)[0] = size;
|
((byte*)data)[0] = size;
|
||||||
}
|
}
|
||||||
|
|
||||||
auto tc = TinyConfig::Init();
|
auto tc = TinyConfig::Create();
|
||||||
|
|
||||||
// 尝试加载配置区设置
|
// 尝试加载配置区设置
|
||||||
tc->Load();
|
tc->Load();
|
||||||
|
|
|
@ -437,8 +437,7 @@ bool TinyClient::OnDisjoin(const TinyMessage& msg)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
Cfg->LoadDefault();
|
Cfg->Clear();
|
||||||
Cfg->Save();
|
|
||||||
|
|
||||||
Sys.Sleep(3000);
|
Sys.Sleep(3000);
|
||||||
Sys.Reset();
|
Sys.Reset();
|
||||||
|
@ -461,7 +460,7 @@ void TinyClient::Ping()
|
||||||
{
|
{
|
||||||
if(Server == 0) return;
|
if(Server == 0) return;
|
||||||
|
|
||||||
debug_printf(" %d 秒无法联系网关,最后活跃时间:%d,系统当前时间:%d\r\n",off,LastActive,now);
|
debug_printf(" %d 秒无法联系网关,最后活跃时间: %d ,系统当前时间:%d \r\n", off, (int)LastActive, (int)now);
|
||||||
Sys.SetTaskPeriod(_TaskID, 5000);
|
Sys.SetTaskPeriod(_TaskID, 5000);
|
||||||
|
|
||||||
// 掉线以后,重发组网信息,基本功能继续执行
|
// 掉线以后,重发组网信息,基本功能继续执行
|
||||||
|
|
|
@ -3,103 +3,35 @@
|
||||||
|
|
||||||
TinyConfig* TinyConfig::Current = NULL;
|
TinyConfig* TinyConfig::Current = NULL;
|
||||||
|
|
||||||
TinyConfig::TinyConfig()
|
TinyConfig::TinyConfig() : ConfigBase()
|
||||||
{
|
{
|
||||||
Cfg = Config::Current;
|
_Name = "TCFG";
|
||||||
|
_Start = &Length;
|
||||||
|
_End = &TagEnd;
|
||||||
|
|
||||||
|
Init();
|
||||||
}
|
}
|
||||||
|
|
||||||
uint TinyConfig::Size() const
|
void TinyConfig::Init()
|
||||||
{
|
{
|
||||||
return (uint)&New - (uint)&Length;
|
ConfigBase::Init();
|
||||||
}
|
|
||||||
|
|
||||||
Array TinyConfig::ToArray()
|
Length = Size();
|
||||||
{
|
|
||||||
return Array(&Length, Size());
|
|
||||||
}
|
|
||||||
|
|
||||||
const Array TinyConfig::ToArray() const
|
|
||||||
{
|
|
||||||
return Array(&Length, Size());
|
|
||||||
}
|
|
||||||
|
|
||||||
void TinyConfig::LoadDefault()
|
|
||||||
{
|
|
||||||
// 实际内存大小,减去头部大小
|
|
||||||
uint len = Size();
|
|
||||||
memset(&Length, 0, len);
|
|
||||||
Length = len;
|
|
||||||
|
|
||||||
Kind = Sys.Code;
|
Kind = Sys.Code;
|
||||||
//Server = 0x01;
|
|
||||||
|
|
||||||
//Channel = 120;
|
PingTime = 20;
|
||||||
//Speed = 250;
|
|
||||||
|
|
||||||
//PingTime = 20;
|
|
||||||
OfflineTime = 60;
|
OfflineTime = 60;
|
||||||
}
|
}
|
||||||
|
|
||||||
void TinyConfig::Load()
|
TinyConfig* TinyConfig::Create()
|
||||||
{
|
|
||||||
if(!Cfg) return;
|
|
||||||
|
|
||||||
// 尝试加载配置区设置
|
|
||||||
auto bs = ToArray();
|
|
||||||
New = !Cfg->GetOrSet("TCFG", bs);
|
|
||||||
if(New)
|
|
||||||
debug_printf("TinyConfig::Load 首次运行,创建配置区!\r\n");
|
|
||||||
else
|
|
||||||
debug_printf("TinyConfig::Load 从配置区加载配置\r\n");
|
|
||||||
|
|
||||||
if(Kind != Sys.Code)
|
|
||||||
{
|
|
||||||
debug_printf("TinyConfig::Load 设备类型变更\r\n");
|
|
||||||
|
|
||||||
Kind = Sys.Code;
|
|
||||||
Cfg->Set("TCFG", bs);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void TinyConfig::Save() const
|
|
||||||
{
|
|
||||||
if(!Cfg) return;
|
|
||||||
|
|
||||||
debug_printf("TinyConfig::Save \r\n");
|
|
||||||
|
|
||||||
Cfg->Set("TCFG", ToArray());
|
|
||||||
}
|
|
||||||
|
|
||||||
void TinyConfig::Clear()
|
|
||||||
{
|
|
||||||
if(!Cfg) return;
|
|
||||||
|
|
||||||
LoadDefault();
|
|
||||||
|
|
||||||
debug_printf("TinyConfig::Clear \r\n");
|
|
||||||
|
|
||||||
Cfg->Set("TCFG", ToArray());
|
|
||||||
}
|
|
||||||
|
|
||||||
void TinyConfig::Write(Stream& ms) const
|
|
||||||
{
|
|
||||||
ms.Write(ToArray());
|
|
||||||
}
|
|
||||||
|
|
||||||
void TinyConfig::Read(Stream& ms)
|
|
||||||
{
|
|
||||||
auto bs = ToArray();
|
|
||||||
ms.Read(bs);
|
|
||||||
}
|
|
||||||
|
|
||||||
TinyConfig* TinyConfig::Init()
|
|
||||||
{
|
{
|
||||||
// 默认出厂设置
|
// 默认出厂设置
|
||||||
static TinyConfig tc;
|
static TinyConfig tc;
|
||||||
if(!Current)
|
if(!Current)
|
||||||
{
|
{
|
||||||
Current = &tc;
|
Current = &tc;
|
||||||
tc.LoadDefault();
|
tc.Init();
|
||||||
}
|
}
|
||||||
|
|
||||||
return &tc;
|
return &tc;
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
#pragma pack(1)
|
#pragma pack(1)
|
||||||
|
|
||||||
// 配置信息
|
// 配置信息
|
||||||
class TinyConfig
|
class TinyConfig : public ConfigBase
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
byte Length; // 数据长度
|
byte Length; // 数据长度
|
||||||
|
@ -35,28 +35,14 @@ public:
|
||||||
byte Password[16]; // 通信密码
|
byte Password[16]; // 通信密码
|
||||||
byte Mac[6]; // 无线物理地址
|
byte Mac[6]; // 无线物理地址
|
||||||
|
|
||||||
bool New; // 是否新创建的配置
|
|
||||||
|
|
||||||
TinyConfig();
|
TinyConfig();
|
||||||
void LoadDefault();
|
virtual void Init();
|
||||||
|
|
||||||
void Load();
|
|
||||||
void Save() const;
|
|
||||||
void Clear();
|
|
||||||
|
|
||||||
// 序列化到消息数据流
|
|
||||||
void Write(Stream& ms) const;
|
|
||||||
void Read(Stream& ms);
|
|
||||||
|
|
||||||
static TinyConfig* Current;
|
static TinyConfig* Current;
|
||||||
static TinyConfig* Init();
|
static TinyConfig* Create();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Config* Cfg;
|
byte TagEnd; // 数据区结束标识符
|
||||||
|
|
||||||
uint Size() const;
|
|
||||||
Array ToArray();
|
|
||||||
const Array ToArray() const;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#pragma pack(pop) // 恢复对齐状态
|
#pragma pack(pop) // 恢复对齐状态
|
||||||
|
|
|
@ -215,7 +215,7 @@ TinyController::TinyController() : Controller()
|
||||||
Mode = 0;
|
Mode = 0;
|
||||||
Interval = 20;
|
Interval = 20;
|
||||||
Timeout = 200;
|
Timeout = 200;
|
||||||
auto cfg = TinyConfig::Init();
|
auto cfg = TinyConfig::Create();
|
||||||
if(cfg)
|
if(cfg)
|
||||||
{
|
{
|
||||||
bool flag = false;
|
bool flag = false;
|
||||||
|
@ -250,7 +250,7 @@ TinyController::~TinyController()
|
||||||
|
|
||||||
void TinyController::ApplyConfig()
|
void TinyController::ApplyConfig()
|
||||||
{
|
{
|
||||||
auto cfg = TinyConfig::Init();
|
auto cfg = TinyConfig::Create();
|
||||||
if(cfg)
|
if(cfg)
|
||||||
{
|
{
|
||||||
// 调整参数
|
// 调整参数
|
||||||
|
|
|
@ -211,8 +211,8 @@ ITransport* Token::Create2401(SPI_TypeDef* spi_, Pin ce, Pin irq, Pin power, boo
|
||||||
static NRF24L01 nrf;
|
static NRF24L01 nrf;
|
||||||
nrf.Init(&spi, ce, irq, power);
|
nrf.Init(&spi, ce, irq, power);
|
||||||
|
|
||||||
auto tc = TinyConfig::Init();
|
auto tc = TinyConfig::Create();
|
||||||
if(tc->Interval==0)
|
if(tc->Interval == 0)
|
||||||
{
|
{
|
||||||
tc->Channel = 120;
|
tc->Channel = 120;
|
||||||
tc->Speed = 250;
|
tc->Speed = 250;
|
||||||
|
@ -237,8 +237,8 @@ ITransport* Token::Create2401(SPI_TypeDef* spi_, Pin ce, Pin irq, Pin power, boo
|
||||||
|
|
||||||
ITransport* Token::CreateShunCom(COM_Def index, int baudRate, Pin rst, Pin power, Pin slp, Pin cfg, IDataPort* led)
|
ITransport* Token::CreateShunCom(COM_Def index, int baudRate, Pin rst, Pin power, Pin slp, Pin cfg, IDataPort* led)
|
||||||
{
|
{
|
||||||
auto tc = TinyConfig::Init();
|
auto tc = TinyConfig::Create();
|
||||||
if(tc->Interval==0)
|
if(tc->Interval == 0)
|
||||||
{
|
{
|
||||||
tc->Channel = 0x0F;
|
tc->Channel = 0x0F;
|
||||||
tc->Speed = 250;
|
tc->Speed = 250;
|
||||||
|
|
|
@ -4,17 +4,20 @@
|
||||||
|
|
||||||
TokenConfig* TokenConfig::Current = NULL;
|
TokenConfig* TokenConfig::Current = NULL;
|
||||||
|
|
||||||
uint TokenConfig::Size() const
|
TokenConfig::TokenConfig() : ConfigBase()
|
||||||
{
|
{
|
||||||
return (uint)&New - (uint)&Length;
|
_Name = "TKCF";
|
||||||
|
_Start = &Length;
|
||||||
|
_End = &TagEnd;
|
||||||
|
|
||||||
|
Init();
|
||||||
}
|
}
|
||||||
|
|
||||||
void TokenConfig::LoadDefault()
|
void TokenConfig::Init()
|
||||||
{
|
{
|
||||||
// 实际内存大小,减去头部大小
|
ConfigBase::Init();
|
||||||
uint len = Size();
|
|
||||||
memset(&Length, 0, len);
|
Length = Size();
|
||||||
Length = len;
|
|
||||||
ServerIP = 0;
|
ServerIP = 0;
|
||||||
|
|
||||||
SoftVer = Sys.Version;
|
SoftVer = Sys.Version;
|
||||||
|
@ -23,47 +26,7 @@ void TokenConfig::LoadDefault()
|
||||||
Protocol = 2;
|
Protocol = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TokenConfig::Load()
|
void TokenConfig::Show() const
|
||||||
{
|
|
||||||
// Flash最后一块作为配置区
|
|
||||||
if(!Config::Current) Config::Current = &Config::CreateFlash();
|
|
||||||
|
|
||||||
// 尝试加载配置区设置
|
|
||||||
uint len = Size();
|
|
||||||
if(!len) len = sizeof(this[0]);
|
|
||||||
Array bs(&Length, len);
|
|
||||||
/*if(!Config::Current->GetOrSet("TKCF", bs))
|
|
||||||
debug_printf("TokenConfig::Load 首次运行,创建配置区!\r\n");
|
|
||||||
else
|
|
||||||
debug_printf("TokenConfig::Load 从配置区加载配置\r\n");*/
|
|
||||||
if(Config::Current->Get("TKCF", bs))
|
|
||||||
{
|
|
||||||
debug_printf("TokenConfig::Load 从配置区加载配置\r\n");
|
|
||||||
if(ServerIP == 0)
|
|
||||||
New = true;
|
|
||||||
else
|
|
||||||
New = false;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
New = true;
|
|
||||||
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
void TokenConfig::Save()
|
|
||||||
{
|
|
||||||
uint len = Size();
|
|
||||||
if(!len) len = sizeof(this[0]);
|
|
||||||
|
|
||||||
debug_printf("TokenConfig::Save \r\n");
|
|
||||||
|
|
||||||
Array bs(&Length, len);
|
|
||||||
Config::Current->Set("TKCF", bs);
|
|
||||||
}
|
|
||||||
|
|
||||||
void TokenConfig::Show()
|
|
||||||
{
|
{
|
||||||
#if DEBUG
|
#if DEBUG
|
||||||
debug_printf("TokenConfig::令牌配置:\r\n");
|
debug_printf("TokenConfig::令牌配置:\r\n");
|
||||||
|
@ -78,58 +41,42 @@ void TokenConfig::Show()
|
||||||
debug_printf("\t厂商: %s \r\n", Vendor);
|
debug_printf("\t厂商: %s \r\n", Vendor);
|
||||||
debug_printf("\t登录: %s \r\n", Name);
|
debug_printf("\t登录: %s \r\n", Name);
|
||||||
debug_printf("\t密码: %s \r\n", Key);
|
debug_printf("\t密码: %s \r\n", Key);
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void TokenConfig::Write(Stream& ms) const
|
TokenConfig* TokenConfig::Create(const char* vendor, byte protocol, ushort sport, ushort port)
|
||||||
{
|
{
|
||||||
uint len = Size();
|
|
||||||
if(!len) len = sizeof(this[0]);
|
|
||||||
|
|
||||||
ms.Write(&Length, 0, len);
|
|
||||||
}
|
|
||||||
|
|
||||||
void TokenConfig::Read(Stream& ms)
|
|
||||||
{
|
|
||||||
uint len = Size();
|
|
||||||
if(!len) len = sizeof(this[0]);
|
|
||||||
|
|
||||||
ms.Read(&Length, 0, len);
|
|
||||||
}
|
|
||||||
|
|
||||||
TokenConfig* TokenConfig::Init(const char* vendor, byte protocol, ushort sport, ushort port)
|
|
||||||
{
|
|
||||||
debug_printf("\r\n");
|
|
||||||
|
|
||||||
static TokenConfig tc;
|
static TokenConfig tc;
|
||||||
TokenConfig::Current = &tc;
|
if(!Current)
|
||||||
tc.LoadDefault();
|
|
||||||
|
|
||||||
//strcpy(tc.Vendor, vendor);
|
|
||||||
bool rs = tc.Load();
|
|
||||||
|
|
||||||
if(tc.Vendor[0] == 0)
|
|
||||||
{
|
{
|
||||||
strncpy(tc.Vendor, vendor, ArrayLength(tc.Vendor));
|
TokenConfig::Current = &tc;
|
||||||
|
tc.Init();
|
||||||
|
|
||||||
rs = false;
|
//strcpy(tc.Vendor, vendor);
|
||||||
|
tc.Load();
|
||||||
|
bool rs = tc.New;
|
||||||
|
|
||||||
|
if(tc.Vendor[0] == 0)
|
||||||
|
{
|
||||||
|
strncpy(tc.Vendor, vendor, ArrayLength(tc.Vendor));
|
||||||
|
|
||||||
|
rs = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(tc.Server[0] == 0)
|
||||||
|
{
|
||||||
|
strncpy(tc.Server, tc.Vendor, ArrayLength(tc.Server));
|
||||||
|
|
||||||
|
//tc.ServerIP = svr.Value;
|
||||||
|
tc.ServerPort = sport;
|
||||||
|
tc.Port = port;
|
||||||
|
|
||||||
|
rs = false;
|
||||||
|
}
|
||||||
|
if(!rs) tc.Save();
|
||||||
|
|
||||||
|
tc.Show();
|
||||||
}
|
}
|
||||||
|
|
||||||
if(tc.Server[0] == 0)
|
|
||||||
{
|
|
||||||
strncpy(tc.Server, tc.Vendor, ArrayLength(tc.Server));
|
|
||||||
|
|
||||||
//tc.ServerIP = svr.Value;
|
|
||||||
tc.ServerPort = sport;
|
|
||||||
tc.Port = port;
|
|
||||||
|
|
||||||
rs = false;
|
|
||||||
}
|
|
||||||
if(!rs) tc.Save();
|
|
||||||
|
|
||||||
tc.Show();
|
|
||||||
|
|
||||||
return &tc;
|
return &tc;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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,13 +11,15 @@
|
||||||
#pragma pack(1)
|
#pragma pack(1)
|
||||||
|
|
||||||
// 配置信息
|
// 配置信息
|
||||||
struct TokenConfig
|
class TokenConfig : public ConfigBase
|
||||||
{
|
{
|
||||||
byte Length; // 数据长度
|
public:
|
||||||
char Name[16]; // 登录名
|
byte Length; // 数据长度
|
||||||
char Key[16]; // 登录密码
|
|
||||||
ushort HardVer; // 硬件版本
|
char Name[16]; // 登录名
|
||||||
ushort SoftVer; // 软件版本
|
char Key[16]; // 登录密码
|
||||||
|
ushort HardVer; // 硬件版本
|
||||||
|
ushort SoftVer; // 软件版本
|
||||||
|
|
||||||
byte PingTime; // 心跳时间。秒
|
byte PingTime; // 心跳时间。秒
|
||||||
byte Protocol; // 协议,TCP=1/UDP=2
|
byte Protocol; // 协议,TCP=1/UDP=2
|
||||||
|
@ -27,21 +29,15 @@ struct TokenConfig
|
||||||
char Server[32]; // 服务器域名。出厂为空,从厂商服务器覆盖,恢复出厂设置时清空
|
char Server[32]; // 服务器域名。出厂为空,从厂商服务器覆盖,恢复出厂设置时清空
|
||||||
char Vendor[32]; // 厂商服务器域名。原始厂商服务器地址
|
char Vendor[32]; // 厂商服务器域名。原始厂商服务器地址
|
||||||
|
|
||||||
bool New;
|
TokenConfig();
|
||||||
|
virtual void Init();
|
||||||
void LoadDefault();
|
virtual void Show() const;
|
||||||
|
|
||||||
bool Load();
|
|
||||||
void Save();
|
|
||||||
void Show();
|
|
||||||
uint Size() const;
|
|
||||||
|
|
||||||
// 序列化到消息数据流
|
|
||||||
void Write(Stream& ms) const;
|
|
||||||
void Read(Stream& ms);
|
|
||||||
|
|
||||||
static TokenConfig* Current;
|
static TokenConfig* Current;
|
||||||
static TokenConfig* Init(const char* vendor, byte protocol, ushort sport, ushort port);
|
static TokenConfig* Create(const char* vendor, byte protocol, ushort sport, ushort port);
|
||||||
|
|
||||||
|
private:
|
||||||
|
byte TagEnd; // 数据区结束标识符
|
||||||
};
|
};
|
||||||
|
|
||||||
#pragma pack(pop) // 恢复对齐状态
|
#pragma pack(pop) // 恢复对齐状态
|
||||||
|
|
Loading…
Reference in New Issue