diff --git a/APP_Framework/lib/mqtt/platform_mqtt.h b/APP_Framework/lib/mqtt/platform_mqtt.h index c08ba3447..c8c758f85 100644 --- a/APP_Framework/lib/mqtt/platform_mqtt.h +++ b/APP_Framework/lib/mqtt/platform_mqtt.h @@ -25,7 +25,7 @@ #include #define KEEPALIVE_TIME 300 //保活时间(单位s),300s -#define HEART_TIME 120000 //空闲时发送心跳包的时间间隔(单位ms),120s +#define HEART_TIME 200000 //空闲时发送心跳包的时间间隔(单位ms),200s #define PACK_SIZE 512 //存放报文数据缓冲区大小 #define CMD_SIZE 3072 //保存推送的PUBLISH报文中的数据缓冲区大小 #define CLIENTID_SIZE 64 //存放客户端ID的缓冲区大小 diff --git a/Ubiquitous/XiZi_IIoT/tool/bootloader/ota/ota.c b/Ubiquitous/XiZi_IIoT/tool/bootloader/ota/ota.c index 5d95c08ed..658923efc 100644 --- a/Ubiquitous/XiZi_IIoT/tool/bootloader/ota/ota.c +++ b/Ubiquitous/XiZi_IIoT/tool/bootloader/ota/ota.c @@ -824,7 +824,18 @@ reconnect: datalen = MQTT_Recv(MqttRxbuf, sizeof(MqttRxbuf)); if(datalen <= 0) { - freecnt++; + freecnt++; + if((freecnt >= 20) && (CalculateTimeMsFromTick(CurrentTicksGain()) - heart_time >= HEART_TIME)) //连续20次未收到数据默认为为空闲状态,需每隔一段时间发送需要发送心跳包保活 + { + heart_time = CalculateTimeMsFromTick(CurrentTicksGain()); + freecnt = 0; + if(MQTT_SendHeart() != 0) //发送心跳包失败可能连接断开,需要重连 + { + KPrintf("The connection has been disconnected, reconnecting!\n"); + goto reconnect; + } + KPrintf("Send heartbeat packet successful!\n"); + } } else if(MqttRxbuf[0] == 0x30) { @@ -916,19 +927,6 @@ reconnect: freecnt = 0; continue; } - - if((freecnt >= 10) && (CalculateTimeMsFromTick(CurrentTicksGain()) - heart_time >= HEART_TIME)) //连续10次未收到数据默认为为空闲状态,需每隔一段时间发送需要发送心跳包保活 - { - heart_time = CalculateTimeMsFromTick(CurrentTicksGain()); - if(MQTT_SendHeart() != 0) //发送心跳包失败可能连接断开,需要重连 - { - KPrintf("The connection has been disconnected, reconnecting!\n"); - freecnt = 0; - heart_time = 0; - goto reconnect; - } - KPrintf("Send heartbeat packet successful!\n"); - } } if(0 == ret) @@ -1053,7 +1051,18 @@ reconnect: datalen = MQTT_Recv(MqttRxbuf, sizeof(MqttRxbuf)); if(datalen <= 0) { - freecnt++; + freecnt++; + if((freecnt >= 20) && (CalculateTimeMsFromTick(CurrentTicksGain()) - heart_time >= HEART_TIME)) //连续20次未收到数据默认为为空闲状态,需每隔一段时间发送需要发送心跳包保活 + { + heart_time = CalculateTimeMsFromTick(CurrentTicksGain()); + freecnt = 0; + if(MQTT_SendHeart() != 0) //发送心跳包失败可能连接断开,需要重连 + { + KPrintf("The connection has been disconnected, reconnecting!\n"); + goto reconnect; + } + KPrintf("Send heartbeat packet successful!\n"); + } } else if(MqttRxbuf[0] == 0x30) { @@ -1144,19 +1153,6 @@ reconnect: freecnt = 0; continue; } - - if((freecnt >= 10) && (CalculateTimeMsFromTick(CurrentTicksGain()) - heart_time >= HEART_TIME)) //连续10次未收到数据默认为为空闲状态,需每隔一段时间发送需要发送心跳包保活 - { - heart_time = CalculateTimeMsFromTick(CurrentTicksGain()); - if(MQTT_SendHeart() != 0) //发送心跳包失败可能连接断开,需要重连 - { - KPrintf("The connection has been disconnected, reconnecting!\n"); - freecnt = 0; - heart_time = 0; - goto reconnect; - } - KPrintf("Send heartbeat packet successful!\n"); - } } if(0 == ret)