增加WebSocketClientSendText保护机制 2988/1 2988/head 2989/target/1
authorxue <2144439972@qq.com>
Sun, 28 Dec 2025 11:40:10 +0000 (19:40 +0800)
committerxue <2144439972@qq.com>
Sun, 28 Dec 2025 11:40:10 +0000 (19:40 +0800)
code/sdk/zhihui/4g/cat1Service/Service/cat1_utils.c
code/sdk/zhihui/4gTest/cat1_porting.c
code/sdk/zhihui/websocket/os_ws/haisi_websocket.c

index 74ef96d..756edb6 100644 (file)
@@ -448,6 +448,11 @@ void cat1_api_enable_cat1(bool isopen)
         // if(!cat1_api_runtime_get_saveele_status())
         {
             cat1_api_runtime_set_cat1_powerstat(0);
+            cat1_api_runtime_set_cat1_networkstat(0);
+            cat1_api_runtime_set_cat1_signal(0);
+            cat1_api_runtime_set_cat1_simstat(0);
+            cat1_api_runtime_set_cat1_networktype(0);
+            cat1_api_runtime_set_cat1_operator(NULL);
         }
         /*4G 开电有时有干扰进日志串口,因此关闭4G才开启日志串口*/
         cat1_api_custom_enable_cmd_rx(true);
index 7012b4e..2c814a1 100644 (file)
@@ -274,13 +274,21 @@ errcode_t cat1_msg_callback(MESSAGE_4G_T msg, void *msg_buf, uint16_t msglen)
             break;
         case MESSAGE_4G_POWEROFF: //无参数
             cat1_print_warning("MESSAGE_4G_POWEROFF");
+            cat1_api_runtime_set_cat1_networkstat(0);
+            cat1_api_runtime_set_cat1_signal(0);
+            cat1_api_runtime_set_cat1_simstat(0);
+            cat1_api_runtime_set_cat1_networktype(0);
+            cat1_api_runtime_set_cat1_operator(NULL);
             break;
         case MESSAGE_4G_NETWORK_CONNECTED: //无参数
             cat1_print_warning("MESSAGE_4G_NETWORK_CONNECTED");
             cat1_cmd_send(CMD_4G_GET_TIME,NULL,0);
+            cat1_api_runtime_set_cat1_networkstat(1);
             break;
         case MESSAGE_4G_NETWORK_DISCONNECTED: //无参数
             cat1_print_warning("MESSAGE_4G_NETWORK_DISCONNECTED");
+            cat1_api_runtime_set_cat1_networkstat(0);
+
             break;
         case MESSAGE_4G_NETWORK_STAT_CHANGED: //含signal,sim,运营商,
             cat1_print_warning("MESSAGE_4G_NETWORK_STAT_CHANGED netstat(%d),signal(%d),sim(%d),network(%s),imei(%s),iccid(%s),operator(%s)",
index c42d946..a3a34c4 100644 (file)
@@ -752,16 +752,29 @@ int uapi_ws_send_text(const char *text)
     HAISI_WS_DEBUG("uapi_ws_send_text: %s\n", text);
     // 发送数据
     HAISI_WS_WARN("uapi_ws_send_text \n");
-
-    int ret = WebSocketClientSendText(g_ws_client_fd, text, strlen(text));
-
-    HAISI_WS_DEBUG("uapi_ws_send_text ret: %d\n", ret);
+    //
+    extern int ln_ws_get_connection_state(void);
+    int ret = 0;
+    int network_status = uapi_dev_runtime_get_cat1_networkstat();
+    //获取websocket连接状态
+    int wsState = ln_ws_get_connection_state();
+    bool wsConnected = (wsState == 2); // WS_STATE_CONNECTED = 2
+    if(network_status == 1 && wsConnected == true)
+    {
+        HAISI_WS_WARN("uapi_ws_send_text success: network_status=%d, wsConnected=%d\n", network_status, wsConnected);
+        ret = WebSocketClientSendText(g_ws_client_fd, text, strlen(text));
+    }
+    else
+    {
+        HAISI_WS_WARN("uapi_ws_send_text failed: network_status=%d, wsConnected=%d\n", network_status, wsConnected);
+        ret = -1;
+    }
+    // HAISI_WS_DEBUG("uapi_ws_send_text ret: %d\n", ret);
     
     // 更新最后发送时间
     if (ret == 0) {
         uapi_ws_update_tx_time();
     }
-    
     // 清除发送状态标志
     g_ws_is_sending = 0;