fix(vd960DBN): IoT MQTT 栈独立接管 socket 事件, 消除双 CONNECT 致频繁 initialize
root cause: WCHNET_HandleSockInt 在 iot_enable=1 时仍走旧 MQTT 代码: CONNECT → mqtt_connect() ← 发 MQTT CONNECT #1 iot_mqtt_poll() → send_connect() ← 发 MQTT CONNECT #2 (同一socket) broker 见双 CONNECT → 协议违规踢线 → 4s 后重连 → 循环 RECV → mqtt_data_manage() ← 旧代码收 CONNACK → dev_initialize_pub() ← initialize msg_id=1, 强设 g_iot_state=READY fix: 1. net_srv.c WCHNET_HandleSockInt: iot_enable 时直接调 iot_mqtt_handle_sock_int 2. peripheral_main.c: poll_mqtt() → iot_mqtt_poll() (IoT 自有 PINGREQ) BSS savings: -1024B (data_json eliminated), send buffer 隔离 (v3)
This commit is contained in:
@@ -578,28 +578,15 @@ uint8_t i;
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// IoT MQTT mode — inline MQTT handling (ref: DBN101GA)
|
// 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 (g_sub_code_enable.iot_enable) {
|
||||||
if (intstat & SINT_STAT_RECV) {
|
|
||||||
mqtt_data_manage(socketid);
|
|
||||||
}
|
|
||||||
if (intstat & SINT_STAT_CONNECT) {
|
|
||||||
#if KEEPLIVE_ENABLE
|
#if KEEPLIVE_ENABLE
|
||||||
|
if (intstat & SINT_STAT_CONNECT) {
|
||||||
WCHNET_SocketSetKeepLive(socketid, ENABLE);
|
WCHNET_SocketSetKeepLive(socketid, ENABLE);
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
WCHNET_ModifyRecvBuf(socketid, (uint32_t)SocketRecvBuf[socketid], RECE_BUF_LEN);
|
iot_mqtt_handle_sock_int(socketid, intstat);
|
||||||
PRINT("TCP Connect Success (MQTT)\n");
|
|
||||||
mqtt_connect();
|
|
||||||
}
|
|
||||||
if (intstat & SINT_STAT_DISCONNECT) {
|
|
||||||
PRINT("TCP Disconnect (MQTT)\n");
|
|
||||||
g_iot_state = IOT_STATE_DISCONNECTED;
|
|
||||||
g_net_state.flag = 1;
|
|
||||||
}
|
|
||||||
if (intstat & SINT_STAT_TIM_OUT) {
|
|
||||||
PRINT("TCP Timeout (MQTT)\n");
|
|
||||||
g_net_state.flag = 1;
|
|
||||||
}
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -271,7 +271,7 @@ void Main_Circulation(void)
|
|||||||
|
|
||||||
if (g_sub_code_enable.iot_enable) {
|
if (g_sub_code_enable.iot_enable) {
|
||||||
iot_mqtt_publish_sensor(); // Push 0xC0 sensor data to MQTT broker
|
iot_mqtt_publish_sensor(); // Push 0xC0 sensor data to MQTT broker
|
||||||
poll_mqtt(); // MQTT PINGREQ heartbeat (in net_srv.c)
|
iot_mqtt_poll(); // IoT MQTT state machine + PINGREQ keepalive
|
||||||
} else {
|
} else {
|
||||||
tcp_json_push_sensor(); // Push 0xC0 sensor data to TCP JSON client
|
tcp_json_push_sensor(); // Push 0xC0 sensor data to TCP JSON client
|
||||||
tcp_json_poll();
|
tcp_json_poll();
|
||||||
|
|||||||
Reference in New Issue
Block a user