From bcb9ff0409ac682c8c8b502ca01d5cd1cbeceee6 Mon Sep 17 00:00:00 2001 From: zhangsheng Date: Mon, 28 Apr 2025 19:36:13 +0800 Subject: [PATCH] add code --- uart/uart.cpp | 30 +++++++++++++++++++++--------- uart/uart_parameter_config.cpp | 2 +- 2 files changed, 22 insertions(+), 10 deletions(-) diff --git a/uart/uart.cpp b/uart/uart.cpp index a3fa925..6106855 100644 --- a/uart/uart.cpp +++ b/uart/uart.cpp @@ -390,6 +390,7 @@ int Uart::DealReviveDuration(uint16_t ushortAdd){ ScheduleTask scheduleTask; int next_taskID = 0; uint16_t next_duration = scheduler::instance().GetNextDuration(ushortAdd,next_taskID); + next_taskID = MEAS_EVAL; zlog_info(zct, "next_duration = %d ", next_duration); scheduleTask.cmd = REVIVE_DURATION; scheduleTask.shortAddr = ushortAdd; @@ -556,8 +557,8 @@ void Uart::DealRecvData(const char *pData) { DealException(pData); break; case MEAS_EVAL: - DealDataNodeFeature(pData, 0); DealReviveDuration(ushortAdd); + DealDataNodeFeature(pData, 0); break; case UPGRADE: if (recvcode == 0){ @@ -611,13 +612,7 @@ void Uart::DealDataNodeName(const char *pData) { } char MeasurementID[100] = {0x00}; sprintf(MeasurementID, "%02x%02x%02x%02x%02x%02x%02x%02x", pData[71], pData[72], pData[73], pData[74], pData[75], pData[76], pData[77], pData[78]); - uint8_t upgrade = pData[79] & 0xFF; - if (upgrade == 1) - { - uint16_t ushortAdd = BUILD_UINT16(pData[3] & 0xFF, pData[4] & 0xFF); - DealUpgrade(ushortAdd,2); - scheduler::instance().UpgradeResult(ushortAdd,0); - } + char gbkNodeName[128] = {0x00}; sprintf(whereCon, "zigbeeShortAddr='%s'", szShortAdd); @@ -700,6 +695,7 @@ void Uart::DealDataNodeInfo(const char *pData) { RecvData *pRecvData = (RecvData *)pData; zlog_warn(zct, "recv remote zigbee module info shortAddr %02x%02x", pRecvData->Data[46], pRecvData->Data[47]); char buf[32] = {0}; + char whereCon[64] = {0}; char chTemp = pRecvData->Data[0]; //设备状态标志 1 byte DataNodeInfo dataNodeInfo; dataNodeInfo.EquipSta = GET_BIT(chTemp, 2); @@ -842,6 +838,22 @@ void Uart::DealDataNodeInfo(const char *pData) { dataNodeInfo.SamplingRate = 192000; } } + int upgrade = GET_BIT(chTemp, 7); + zlog_info(zct, "upgrade = %d", upgrade); + if (upgrade == 1) + { + uint16_t ushortAdd = BUILD_UINT16(pData[3] & 0xFF, pData[4] & 0xFF); + sprintf(whereCon, "dataNodeNo='%s'", dataNodeInfo.ZigbeeLongAddr.c_str()); + std::string soft_version = sqlite_db_ctrl::instance().GetData(T_SENSOR_INFO(TNAME), " softVersion ", whereCon); + if (dataNodeInfo.SoftVersion != soft_version) { + DealUpgrade(ushortAdd,0); + scheduler::instance().UpgradeResult(ushortAdd,0); + }else{ + DealUpgrade(ushortAdd,3); + scheduler::instance().UpgradeResult(ushortAdd,3); + } + } + // 54=》序号25 ACC采样时间 memset(buf, 0, 32); sprintf(buf, "%u", pRecvData->Data[54]); // ACC 采样时间 1 byte @@ -903,7 +915,7 @@ void Uart::DealDataNodeInfo(const char *pData) { sprintf(buf, "%d", chTemp); dataNodeInfo.VIntegralFilterFrequency = atoi(buf); - char whereCon[64] = {0}; + sprintf(whereCon, "dataNodeNo='%s'", dataNodeInfo.ZigbeeLongAddr.c_str()); if (sqlite_db_ctrl::instance().GetTableRows(T_SENSOR_INFO(TNAME), whereCon) > 0) { char updateSql[1024] = {0}; diff --git a/uart/uart_parameter_config.cpp b/uart/uart_parameter_config.cpp index 19113b5..338516e 100644 --- a/uart/uart_parameter_config.cpp +++ b/uart/uart_parameter_config.cpp @@ -558,7 +558,7 @@ int Uart::TaskResp(ScheduleTask scheduleTask){ UpdateData[4] = scheduleTask.shortAddr & 0xFF; UpdateData[5] = scheduleTask.cmd & 0xFF; UpdateData[6] = 0x00; - if (scheduleTask.cmd == REVIVE_DURATION) + if (scheduleTask.cmd == MEAS_EVAL) { UpdateData[7] = UINT16_LOW(scheduleTask.duration); UpdateData[8] = UINT16_HIGH(scheduleTask.duration);