From: hcj <1224667075@qq.com> Date: Tue, 12 Aug 2025 12:24:10 +0000 (+0800) Subject: 可开启第二轮对话版本 X-Git-Url: http://git.snicker.com.cn/css/static/gitweb.css?a=commitdiff_plain;h=1d8faa611ed15b61e38e35a8a2dce39dc25b1057;p=mirrors%2FFD230.git 可开启第二轮对话版本 --- diff --git a/code/sdk/drivers/peripheral/slip/cat1Service/cat1_ai_server.cpp b/code/sdk/drivers/peripheral/slip/cat1Service/cat1_ai_server.cpp index ebcbfa241..c50cab45c 100644 --- a/code/sdk/drivers/peripheral/slip/cat1Service/cat1_ai_server.cpp +++ b/code/sdk/drivers/peripheral/slip/cat1Service/cat1_ai_server.cpp @@ -874,10 +874,26 @@ void bk_websocket_demo(void *data) { goto cleanup_and_exit; } - while (chat_client->handshake==0) - { + // 等待WebSocket握手完成,增加超时机制 + uint32_t handshake_start_time = (uint32_t)osKernelGetTickCount(); + const uint32_t handshake_timeout_ms = 30000; // 30秒超时 + + while (chat_client->handshake == 0) { + // 检查是否超时 + if ((uint32_t)osKernelGetTickCount() - handshake_start_time > handshake_timeout_ms) { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "WebSocket握手超时 (%d ms),重新连接", handshake_timeout_ms); + lwip_close_websocket_client(chat_client); + chat_client = NULL; + goto char_reconnet; + } + msleep(1000); + WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "等待WebSocket握手完成... (%d ms)", + (uint32_t)osKernelGetTickCount() - handshake_start_time); } + + WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "WebSocket握手完成,耗时 %d ms", + (uint32_t)osKernelGetTickCount() - handshake_start_time); // 设置socket超时 // struct timeval timeout; @@ -1345,10 +1361,26 @@ void bk_websocket_asr(void *data) { goto asr_cleanup_and_exit; } - while (asr_client->handshake==0) - { + // 等待ASR WebSocket握手完成,增加超时机制 + uint32_t asr_handshake_start_time = (uint32_t)osKernelGetTickCount(); + const uint32_t asr_handshake_timeout_ms = 30000; // 30秒超时 + + while (asr_client->handshake == 0) { + // 检查是否超时 + if ((uint32_t)osKernelGetTickCount() - asr_handshake_start_time > asr_handshake_timeout_ms) { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ASR WebSocket握手超时 (%d ms),重新连接", asr_handshake_timeout_ms); + lwip_close_websocket_client(asr_client); + asr_client = NULL; + goto asr_cleanup_and_exit; + } + msleep(1000); + WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "等待ASR WebSocket握手完成... (%d ms)", + (uint32_t)osKernelGetTickCount() - asr_handshake_start_time); } + + WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "ASR WebSocket握手完成,耗时 %d ms", + (uint32_t)osKernelGetTickCount() - asr_handshake_start_time); uapi_cat1_keep_wakeup(1); @@ -1764,10 +1796,26 @@ void bk_websocket_tts(void *data) { goto tts_cleanup_and_exit; } - while (tts_client->handshake==0) - { + // 等待TTS WebSocket握手完成,增加超时机制 + uint32_t tts_handshake_start_time = (uint32_t)osKernelGetTickCount(); + const uint32_t tts_handshake_timeout_ms = 30000; // 30秒超时 + + while (tts_client->handshake == 0) { + // 检查是否超时 + if ((uint32_t)osKernelGetTickCount() - tts_handshake_start_time > tts_handshake_timeout_ms) { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TTS WebSocket握手超时 (%d ms),重新连接", tts_handshake_timeout_ms); + lwip_close_websocket_client(tts_client); + tts_client = NULL; + goto tts_cleanup_and_exit; + } + msleep(1000); + WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "等待TTS WebSocket握手完成... (%d ms)", + (uint32_t)osKernelGetTickCount() - tts_handshake_start_time); } + + WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "TTS WebSocket握手完成,耗时 %d ms", + (uint32_t)osKernelGetTickCount() - tts_handshake_start_time); server_state = 0x04 ^ server_state;