修正重复ID问题

This commit is contained in:
WangQiang 2015-12-01 03:00:47 +00:00
parent e95a0923fd
commit 94c006cf2b
1 changed files with 22 additions and 21 deletions

View File

@ -196,6 +196,7 @@ bool TinyServer::OnJoin(const TinyMessage& msg)
dm.ReadMessage(msg);
// 根据硬件编码找设备
auto dv = FindDevice(dm.HardID);
bool IsNewDv = false;
if(!dv)
{
// 以网关地址为基准,进行递增分配
@ -213,21 +214,10 @@ bool TinyServer::OnJoin(const TinyMessage& msg)
dv->Logins = 0;
// 节点注册
dv->RegTime = now;
}
// 更新设备信息
Current = dv;
dv->Kind = dm.Kind;
dv->HardID = dm.HardID;
dv->Version = dm.Version;
if(dv->Logins++ == 0) dv->LoginTime = now;
dv->LastTime = now;
debug_printf("\r\nTinyServer::设备第 %d 次组网 TranID=0x%04X \r\n", dv->Logins, dm.TranID);
dv->Show(true);
dv->LoginTime = now;
// 生成随机密码。当前时间的MD5
dv->Pass = MD5::Hash(Array(&now, 8));
dv->Pass.SetLength(8); // 小心不要超长
@ -238,6 +228,20 @@ bool TinyServer::OnJoin(const TinyMessage& msg)
Devices.Push(dv);
SaveDevices(); // 写好相关数据 校验通过才能存flash
}
else
{
delete dv;
return false;
}
}
// 更新设备信息
Current = dv;
if(dv->Logins++ == 0) dv->LoginTime = now;
dv->LastTime = now;
debug_printf("\r\nTinyServer::设备第 %d 次组网 TranID=0x%04X \r\n", dv->Logins, dm.TranID);
dv->Show(true);
// 响应
TinyMessage rs;
@ -247,17 +251,14 @@ bool TinyServer::OnJoin(const TinyMessage& msg)
// 发现响应
dm.Reply = true;
dm.Server = Cfg->Address;
dm.Channel = Cfg->Channel;
dm.Speed = Cfg->Speed / 10;
dm.Address = dv->Address;
dm.Password = dv->Pass;
dm.HardID.SetLength(6); // 小心不要超长
dm.HardID = Sys.ID;
dm.WriteMessage(rs);
Reply(rs);