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