Device 不允许手动 Load 避免重复 Load 造成设备数量不对
This commit is contained in:
parent
cb73ba8580
commit
5c6585d9a4
|
@ -63,12 +63,12 @@ void TinyServer::Start()
|
|||
//const uint DevSize = 4 << 10;
|
||||
//pDevMgmt->SetFlashCfg(DevAddr,DevSize);
|
||||
|
||||
if (DevicesManagement::Current)
|
||||
pDevMgmt = DevicesManagement::Current;
|
||||
else
|
||||
pDevMgmt = new DevicesManagement();
|
||||
pDevMgmt = DevicesManagement::CreateDevMgmt();
|
||||
|
||||
auto count = pDevMgmt->LoadDev();
|
||||
//if (DevicesManagement::Current)
|
||||
// pDevMgmt = DevicesManagement::Current;
|
||||
//else
|
||||
// pDevMgmt = new DevicesManagement();
|
||||
|
||||
// 添加网关这一条设备信息
|
||||
if (!pDevMgmt->FindDev(Cfg->Address))
|
||||
|
|
|
@ -5,11 +5,12 @@ DevicesManagement* DevicesManagement::Current = nullptr;
|
|||
|
||||
/******************************** 功能代码 ********************************/
|
||||
|
||||
DevicesManagement::DevicesManagement()
|
||||
{
|
||||
//DevArr.SetLength(0);
|
||||
Current = this;
|
||||
}
|
||||
//DevicesManagement::DevicesManagement()
|
||||
//{
|
||||
// //DevArr.SetLength(0);
|
||||
// Current = this;
|
||||
// LoadDev();
|
||||
//}
|
||||
|
||||
DevicesManagement::~DevicesManagement()
|
||||
{
|
||||
|
@ -574,3 +575,12 @@ void DevicesManagement::MaintainState()
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
DevicesManagement* DevicesManagement::CreateDevMgmt()
|
||||
{
|
||||
if (Current)return Current;
|
||||
Current = new DevicesManagement();
|
||||
Current->LoadDev();
|
||||
return Current;
|
||||
}
|
||||
|
||||
|
|
|
@ -23,7 +23,7 @@ public:
|
|||
static bool InvokeDelete(void * param, const Pair& args, Stream& result);
|
||||
|
||||
public:
|
||||
DevicesManagement();
|
||||
// DevicesManagement();
|
||||
~DevicesManagement();
|
||||
|
||||
bool SetFlashCfg(uint addr, uint size);
|
||||
|
@ -32,11 +32,12 @@ public:
|
|||
Device* FindDev(byte id)const;
|
||||
Device* FindDev(const Buffer& hardid) const;
|
||||
|
||||
int LoadDev();
|
||||
void ClearDev();
|
||||
void ShowDev();
|
||||
|
||||
private:
|
||||
private:
|
||||
// 不允许外部调用 避免重复LoadDev()
|
||||
int LoadDev();
|
||||
// 外部操作使用 DeviceRequest
|
||||
void SaveDev();
|
||||
bool DeleteDev(byte id);
|
||||
|
@ -79,6 +80,9 @@ private:
|
|||
|
||||
DevPrsCallback _DevProcess = nullptr;
|
||||
void * _ClbkParam = nullptr;
|
||||
|
||||
public:
|
||||
static DevicesManagement* CreateDevMgmt();
|
||||
};
|
||||
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
#include "Security\Crc.h"
|
||||
|
||||
// 循环间隔
|
||||
#define LOOP_Interval 10000
|
||||
#define LOOP_Interval 20000
|
||||
|
||||
bool TokenToTiny(const TokenMessage& msg, TinyMessage& msg2);
|
||||
void TinyToToken(const TinyMessage& msg, TokenMessage& msg2);
|
||||
|
@ -37,6 +37,7 @@ Gateway::~Gateway()
|
|||
void Gateway::Start()
|
||||
{
|
||||
if (Running) return;
|
||||
Running = true;
|
||||
|
||||
TS("Gateway::Start");
|
||||
|
||||
|
@ -50,13 +51,12 @@ void Gateway::Start()
|
|||
Client->Param = this;
|
||||
debug_printf("\r\nGateway::Start \r\n");
|
||||
|
||||
Server->Start();
|
||||
|
||||
pDevMgmt = DevicesManagement::CreateDevMgmt();
|
||||
// 如果全局都没有设备列表,那就直接创建一个
|
||||
if (DevicesManagement::Current)
|
||||
pDevMgmt = DevicesManagement::Current;
|
||||
else
|
||||
pDevMgmt = new DevicesManagement();
|
||||
//if (DevicesManagement::Current)
|
||||
// pDevMgmt = DevicesManagement::Current;
|
||||
//else
|
||||
// pDevMgmt = new DevicesManagement();
|
||||
|
||||
// 设备列表服务于Token 保存token的“联系方式”
|
||||
//pDevMgmt->Port = Client;
|
||||
|
@ -64,21 +64,47 @@ void Gateway::Start()
|
|||
|
||||
if (pDevMgmt->Length() == 0)
|
||||
{
|
||||
// 如果全局设备列表为空,则添加一条Addr=1的设备
|
||||
auto dv = new Device();
|
||||
dv->Address = 1;
|
||||
dv->Kind = Sys.Code;
|
||||
dv->LastTime = Sys.Seconds();
|
||||
// // 如果全局设备列表为空,则添加一条Addr=1的设备
|
||||
// auto dv = new Device();
|
||||
// dv->Address = 1;
|
||||
// dv->Kind = Sys.Code;
|
||||
// dv->LastTime = Sys.Seconds();
|
||||
//
|
||||
// dv->HardID = Sys.ID;
|
||||
// dv->Name = Sys.Name;
|
||||
//
|
||||
// //pDevMgmt->PushDev(dv);
|
||||
// // 标记为永久在线设备
|
||||
// dv->Flag.BitFlag.OnlineAlws = 1;
|
||||
// pDevMgmt->DeviceRequest(DeviceAtions::Register, dv);
|
||||
|
||||
dv->HardID = Sys.ID;
|
||||
dv->Name = Sys.Name;
|
||||
|
||||
//pDevMgmt->PushDev(dv);
|
||||
// 标记为永久在线设备
|
||||
dv->Flag.BitFlag.OnlineAlws = 1;
|
||||
pDevMgmt->DeviceRequest(DeviceAtions::Register, dv);
|
||||
ushort kinds[] = { 0x0201,0x0202,0x0203,0x0431 };
|
||||
byte ids[12];
|
||||
Buffer bufids(ids, sizeof(ids));
|
||||
bufids = Sys.ID;
|
||||
byte Addr = Sys.Ms();
|
||||
|
||||
for (int i = 0; i < ArrayLength(kinds); i++)
|
||||
{
|
||||
// 如果全局设备列表为空,则添加一条Addr=1的设备
|
||||
auto dv2 = new Device();
|
||||
dv2->Address = Addr + i;
|
||||
dv2->Kind = kinds[i];
|
||||
dv2->LastTime = Sys.Seconds();
|
||||
|
||||
ids[11] += Sys.Ms();
|
||||
dv2->HardID = ids;
|
||||
dv2->Name = "测试设备";
|
||||
|
||||
//pDevMgmt->PushDev(dv);
|
||||
// 标记为永久在线设备
|
||||
dv2->Flag.BitFlag.OnlineAlws = 0;
|
||||
pDevMgmt->DeviceRequest(DeviceAtions::Register, dv2);
|
||||
}
|
||||
}
|
||||
|
||||
Server->Start();
|
||||
Client->Open();
|
||||
_task = Sys.AddTask(Loop, this, 10000, LOOP_Interval, "设备任务");
|
||||
|
||||
|
@ -331,6 +357,6 @@ void Gateway::Loop(void* param)
|
|||
gw->SetMode(0);
|
||||
}
|
||||
}
|
||||
// gw->pDevMgmt->MaintainState();
|
||||
gw->pDevMgmt->MaintainState();
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue