From 825d0027708442c1b9ac893feb604c4629a53aca Mon Sep 17 00:00:00 2001 From: hcj <1224667075@qq.com> Date: Thu, 8 Jan 2026 17:01:27 +0800 Subject: [PATCH] =?utf8?q?=E4=BF=AE=E6=94=B9spi=E4=B8=8B=E8=BD=BD=E9=97=AE?= =?utf8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../Service/http_file_download_client.c | 9 +++++++++ .../zhihui/leiniao/imsl_ln/ln_api_websocket.c | 16 +++++++--------- .../zhihui/leiniao/imsl_ln/ln_websoket_api_ext.c | 8 +++----- code/sdk/zhihui/utils/custom_spi.c | 6 +++++- code/sdk/zhihui/utils/custom_spi.h | 2 ++ 5 files changed, 26 insertions(+), 15 deletions(-) diff --git a/code/sdk/zhihui/4g/cat1Service/Service/http_file_download_client.c b/code/sdk/zhihui/4g/cat1Service/Service/http_file_download_client.c index 5ae73c7a1..8b95ab626 100644 --- a/code/sdk/zhihui/4g/cat1Service/Service/http_file_download_client.c +++ b/code/sdk/zhihui/4g/cat1Service/Service/http_file_download_client.c @@ -384,6 +384,10 @@ void http_file_download_deinit(void) cat1_print_info("HTTP file download service: Timeout timer destroyed\n"); } + if (g_download_complete_sem != NULL) { + osSemaphoreRelease(g_download_complete_sem); + } + // 删除信号量 if (g_download_complete_sem != NULL) { osSemaphoreDelete(g_download_complete_sem); @@ -519,6 +523,9 @@ int http_file_download_start(const char *url, const char *file_path, uint32_t ti g_download_state = HTTP_DOWNLOAD_STATE_IDLE; return -1; } + + set_expected_seq(0); + udp_send_msg_toCat1(UDP_CMD_HTTP_FILE_DOWNLOAD, udp_msg); cat1_print_info("HTTP file download: Download command sent, waiting for completion...\n"); @@ -702,6 +709,8 @@ int http_file_download_start_with_resume(const char *url, const char *file_path, } return -1; } + set_expected_seq(0); + udp_send_msg_toCat1(UDP_CMD_HTTP_FILE_DOWNLOAD, udp_msg); cat1_print_info("HTTP file download: Download command sent (URL: %s, resume from byte: %u, write delay: %u ms)\n", url, resume_from_byte, write_delay_ms); diff --git a/code/sdk/zhihui/leiniao/imsl_ln/ln_api_websocket.c b/code/sdk/zhihui/leiniao/imsl_ln/ln_api_websocket.c index 527294fb5..a7df8a473 100644 --- a/code/sdk/zhihui/leiniao/imsl_ln/ln_api_websocket.c +++ b/code/sdk/zhihui/leiniao/imsl_ln/ln_api_websocket.c @@ -1335,7 +1335,7 @@ void vad_status_callback_ln_ws(int status) void ln_ws_audio_init(bool is_vad_server_enabled) { - // 检查是否已经初始化 + // 检查是否已经初始化 if (g_audio_initialized) { LN_WS_WARN("Audio already initialized, skipping duplicate initialization\n"); return; @@ -1830,14 +1830,12 @@ int ln_ws_send_voice_chat_interrupt(const char *reason) ret = uapi_ws_send_text(json_string); if (ret == 0) { LN_WS_DEBUG("VoiceChatInterrupt sent successfully\n"); - { - // 如果检测到频繁数据接收,直接重连 - LN_WS_INFO("Triggering reconnection due to frequent binary data reception\n"); - if (ln_ws_reconnect() != 0) { - LN_WS_ERROR("Failed to reconnect after frequent data reception\n"); - } - } - } + } + // 如果检测到频繁数据接收,直接重连 + LN_WS_INFO("Triggering reconnection due to frequent binary data reception\n"); + if (ln_ws_reconnect() != 0) { + LN_WS_ERROR("Failed to reconnect after frequent data reception\n"); + } } else { LN_WS_INFO("no to send VoiceChatInterrupt\n"); diff --git a/code/sdk/zhihui/leiniao/imsl_ln/ln_websoket_api_ext.c b/code/sdk/zhihui/leiniao/imsl_ln/ln_websoket_api_ext.c index ccb6f7b2c..2af0bb758 100644 --- a/code/sdk/zhihui/leiniao/imsl_ln/ln_websoket_api_ext.c +++ b/code/sdk/zhihui/leiniao/imsl_ln/ln_websoket_api_ext.c @@ -194,17 +194,15 @@ int ln_http_download_file_do(const char *url, uint32_t timeout_ms) // 如果未初始化,自动初始化 if (!g_download_service_initialized) { WEARABLE_LOGW(WEARABLE_LOG_MODULE_APP, "[HTTP_DL] Service not initialized, auto-initializing..."); - if (ln_http_download_init() != 0) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[HTTP_DL] Auto-initialization failed"); - return -1; - } + return -1; + } WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "[HTTP_DL] Starting download: URL=%s, timeout=%u ms (data via internal callback, no file write)", url, timeout_ms); // file_path传入NULL,不写入文件,数据通过内部回调处理 - int ret = http_file_download_start(url, NULL, timeout_ms, 10); + int ret = http_file_download_start(url, NULL, timeout_ms, 20); if (ret == 0) { // 获取下载统计信息 diff --git a/code/sdk/zhihui/utils/custom_spi.c b/code/sdk/zhihui/utils/custom_spi.c index 3231d42d0..8ed75b4d5 100644 --- a/code/sdk/zhihui/utils/custom_spi.c +++ b/code/sdk/zhihui/utils/custom_spi.c @@ -587,7 +587,7 @@ void custom_spi_init(void) // 降低优先级,避免抢占 NAND Flash 操作(文件下载时会导致 QSPI 总线冲突) // 从 osPriorityHigh (40) 降低到 osPriorityNormal (24),与 sio_irq_proc 同级 - + //改回osPriorityHigh,底优先级,无法正确传输 taskcfg.attr.priority = osPriorityHigh; @@ -728,3 +728,7 @@ void custom_spi_register_error_callback(custom_spi_error_callback_t callback) } } +void set_expected_seq(uint8_t data) +{ + g_expected_seq=data; +} diff --git a/code/sdk/zhihui/utils/custom_spi.h b/code/sdk/zhihui/utils/custom_spi.h index dd1437ef2..06fc99309 100644 --- a/code/sdk/zhihui/utils/custom_spi.h +++ b/code/sdk/zhihui/utils/custom_spi.h @@ -99,6 +99,8 @@ void custom_spi_register_data_callback(custom_spi_data_callback_t callback); */ void custom_spi_register_error_callback(custom_spi_error_callback_t callback); +void set_expected_seq(uint8_t data); + #ifdef __cplusplus } -- 2.17.1