fix(iot_mqtt): g_iot_socket 未初始化导致 WCHNET_SocketSend(0xFF) 硬故障重启
根因: iot_mqtt_srv.c 中 g_iot_socket 初始化为 0xFF, 仅 iot_connect_broker() 中设为 SocketId_TCP. 但内联 MQTT 模式(iot_mqtt_poll 从未调用)下该赋值永不执行. iot_mqtt_publish_sensor() 调用 iot_mqtt_send() → WCHNET_SocketSend(0xFF, ...) → HardFault → 设备重启. 修复: iot_mqtt_init() 中设置 g_iot_socket = SocketId_TCP, 该函数在 net_srv_init() flag==1 时被调用(含首次启动和每次重连).
This commit is contained in:
@@ -587,6 +587,9 @@ void iot_mqtt_poll(void) {
|
|||||||
* 初始化
|
* 初始化
|
||||||
*===========================================================================*/
|
*===========================================================================*/
|
||||||
void iot_mqtt_init(void) {
|
void iot_mqtt_init(void) {
|
||||||
|
/* 复用 net_srv.c 创建的 MQTT socket (SocketId_TCP) */
|
||||||
|
g_iot_socket = SocketId_TCP;
|
||||||
|
|
||||||
/* 初始化设备序列码 (12 hex chars) */
|
/* 初始化设备序列码 (12 hex chars) */
|
||||||
snprintf(g_iot_dev_serial, sizeof(g_iot_dev_serial),
|
snprintf(g_iot_dev_serial, sizeof(g_iot_dev_serial),
|
||||||
"%02X%02X%02X%02X%02X%02X",
|
"%02X%02X%02X%02X%02X%02X",
|
||||||
|
|||||||
Reference in New Issue
Block a user