diff --git a/vd960DBN/BLE/OnlyUpdateApp_Peripheral/APP/iot_mqtt_srv.c b/vd960DBN/BLE/OnlyUpdateApp_Peripheral/APP/iot_mqtt_srv.c index 87cddce..6a8b13c 100644 --- a/vd960DBN/BLE/OnlyUpdateApp_Peripheral/APP/iot_mqtt_srv.c +++ b/vd960DBN/BLE/OnlyUpdateApp_Peripheral/APP/iot_mqtt_srv.c @@ -792,13 +792,12 @@ static void iot_connect_broker(void) { void iot_mqtt_handle_sock_int(uint8_t socketid, uint8_t intstat) { if (socketid != g_iot_socket) return; - /* CONNECT 成功 — 仅标记状态,由 poll 延迟发送 CONNECT */ + /* CONNECT 成功 — 仅标记状态, WCHNET_HandleSockInt 已设好 RecvBuf 和 KeepLive */ if (intstat & SINT_STAT_CONNECT) { PRINT("IOT: TCP connected (sock=%d)\n", socketid); - WCHNET_ModifyRecvBuf(socketid, (uint32_t)_iot_wchnet_buf, RECE_BUF_LEN); g_iot_state = IOT_STATE_TCP_CONNECTED; _iot_recv_len = 0; - // 不在此发送 CONNECT,等下一轮 poll 处理 + // 不在此发送 CONNECT,等下一轮 iot_mqtt_poll 处理 } /* 收到数据 */ @@ -808,7 +807,7 @@ void iot_mqtt_handle_sock_int(uint8_t socketid, uint8_t intstat) { uint16_t space = IOT_MQTT_RECV_BUF_LEN - _iot_recv_len; if (recv_len > space) recv_len = space; uint32_t rd_len = recv_len; - uint8_t tmp[RECE_BUF_LEN]; + static uint8_t tmp[RECE_BUF_LEN]; /* static: 1152B 栈分配在中断上下文中会撑爆 2KB 栈 (2026-07-23) */ WCHNET_SocketRecv(socketid, tmp, &rd_len); memcpy(_iot_recv_buf + _iot_recv_len, tmp, (uint16_t)rd_len); _iot_recv_len += (uint16_t)rd_len; diff --git a/vd960DBN/BLE/OnlyUpdateApp_Peripheral/APP/net_srv.c b/vd960DBN/BLE/OnlyUpdateApp_Peripheral/APP/net_srv.c index a21e55d..2361570 100644 --- a/vd960DBN/BLE/OnlyUpdateApp_Peripheral/APP/net_srv.c +++ b/vd960DBN/BLE/OnlyUpdateApp_Peripheral/APP/net_srv.c @@ -581,11 +581,16 @@ uint8_t i; // IoT MQTT mode — delegate all socket events to iot_mqtt_srv // (2026-07-23 修复: 旧 mqtt_connect/mqtt_data_manage 与 IoT 栈抢 socket, 致双 CONNECT → broker 踢线 → 频繁 initialize) if (g_sub_code_enable.iot_enable) { -#if KEEPLIVE_ENABLE if (intstat & SINT_STAT_CONNECT) { +#if KEEPLIVE_ENABLE WCHNET_SocketSetKeepLive(socketid, ENABLE); - } #endif + WCHNET_ModifyRecvBuf(socketid, (uint32_t)SocketRecvBuf[socketid], RECE_BUF_LEN); + PRINT("TCP Connect Success (MQTT IoT)\n"); + } + if (intstat & SINT_STAT_DISCONNECT || intstat & SINT_STAT_TIM_OUT) { + PRINT("TCP Disconnect/Timeout (MQTT IoT)\n"); + } iot_mqtt_handle_sock_int(socketid, intstat); return; }