|
@@ -376,7 +376,7 @@ void master_analysis_status_cmd(uint8_t *data, uint8_t size)
|
|
|
return;
|
|
return;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-
|
|
|
|
|
|
|
+extern timeout_t g_upstatusTime;
|
|
|
uint8_t master_check_dev_table(uint16_t devType, uint32_t devSn)
|
|
uint8_t master_check_dev_table(uint16_t devType, uint32_t devSn)
|
|
|
{
|
|
{
|
|
|
volatile uint8_t i = 0;
|
|
volatile uint8_t i = 0;
|
|
@@ -392,7 +392,12 @@ uint8_t master_check_dev_table(uint16_t devType, uint32_t devSn)
|
|
|
}
|
|
}
|
|
|
if(flag == 1){
|
|
if(flag == 1){
|
|
|
g_runNode.nodMsg[i].readCount = 0;
|
|
g_runNode.nodMsg[i].readCount = 0;
|
|
|
- g_runNode.nodMsg[i].status = 1;
|
|
|
|
|
|
|
+ if(g_runNode.nodMsg[i].status == 0){ // 前一次是离线,离线后再上线
|
|
|
|
|
+ timeout_stop(&g_upstatusTime);
|
|
|
|
|
+ g_runNode.nodMsg[i].status = 1;
|
|
|
|
|
+ g_runNode.devRunMsg[i].readNum = 4;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
return i;
|
|
return i;
|
|
|
}
|
|
}
|
|
|
else
|
|
else
|
|
@@ -442,14 +447,37 @@ void analysis_cmd_status(uint16_t cmd, uint8_t *data,uint8_t len)
|
|
|
{
|
|
{
|
|
|
uint8_t sendbuff[128], sendlen,sIndex;
|
|
uint8_t sendbuff[128], sendlen,sIndex;
|
|
|
MasterSlave *msg = (MasterSlave*)data;
|
|
MasterSlave *msg = (MasterSlave*)data;
|
|
|
-
|
|
|
|
|
|
|
+ status0x2001 *s2001Msg = NULL;
|
|
|
if(0x2000 == (cmd&0x2000)){
|
|
if(0x2000 == (cmd&0x2000)){
|
|
|
data_dump("收到数据",data,len);
|
|
data_dump("收到数据",data,len);
|
|
|
sIndex = master_check_dev_table(msg->comInfo.statusMsg.devTypeS,msg->comInfo.statusMsg.devSnS);
|
|
sIndex = master_check_dev_table(msg->comInfo.statusMsg.devTypeS,msg->comInfo.statusMsg.devSnS);
|
|
|
if(sIndex == 0xFF) return;
|
|
if(sIndex == 0xFF) return;
|
|
|
switch(cmd){
|
|
switch(cmd){
|
|
|
- case 0x2002:case 0x2001: // 实时状态信息 // 固件信息
|
|
|
|
|
|
|
+ case 0x2002:// 实时状态信息 // 固件信息
|
|
|
|
|
+ g_runNode.devRunMsg[sIndex].readNum++;
|
|
|
|
|
+ if(g_runNode.devRunMsg[sIndex].readNum<4) break;
|
|
|
master_analysis_status_cmd(data,len);
|
|
master_analysis_status_cmd(data,len);
|
|
|
|
|
+ g_runNode.devRunMsg[sIndex].readNum = 0;
|
|
|
|
|
+ break;
|
|
|
|
|
+ case 0x2001:
|
|
|
|
|
+ s2001Msg = (status0x2001*)msg->comInfo.info;
|
|
|
|
|
+ //data_dump("aaaaa",msg->comInfo.info,len-12);
|
|
|
|
|
+ printf("aaaaaaaaaa %08x,%08x\n",g_runNode.devRunMsg[sIndex].devAppVer,s2001Msg->appVer);
|
|
|
|
|
+ if(g_runNode.devRunMsg[sIndex].devAppVer != s2001Msg->appVer) {// APP版本不一样时,则上报
|
|
|
|
|
+ timeout_stop(&g_runNode.devRunMsg[sIndex].firmTime);
|
|
|
|
|
+ master_analysis_status_cmd(data,len);
|
|
|
|
|
+ timeout_setValue(&g_runNode.devRunMsg[sIndex].firmTime,UP_STATUS_2001);
|
|
|
|
|
+ timeout_start(&g_runNode.devRunMsg[sIndex].firmTime);
|
|
|
|
|
+ g_runNode.devRunMsg[sIndex].devAppVer = s2001Msg->appVer;
|
|
|
|
|
+ }
|
|
|
|
|
+ else {
|
|
|
|
|
+ if(timeout_isOut(&g_runNode.devRunMsg[sIndex].firmTime)){
|
|
|
|
|
+ master_analysis_status_cmd(data,len);
|
|
|
|
|
+ timeout_setValue(&g_runNode.devRunMsg[sIndex].firmTime,UP_STATUS_2001);
|
|
|
|
|
+ timeout_start(&g_runNode.devRunMsg[sIndex].firmTime);
|
|
|
|
|
+ printf("ccccccccccccccccc\n");
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
break;
|
|
break;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|