From f3219046adaab14a8169eb1000c88a7318bad900 Mon Sep 17 00:00:00 2001 From: =?utf8?q?=E5=AD=99=E6=98=A5=E9=98=B3?= Date: Tue, 13 Jan 2026 20:36:28 +0800 Subject: [PATCH] =?utf8?q?=E6=B7=BB=E5=8A=A0=E9=9B=B7=E9=B8=9Fwebsocket=20?= =?utf8?q?AT=E6=8C=87=E4=BB=A4=E5=8F=AF=E4=BB=A5=E5=AE=9E=E6=97=B6?= =?utf8?q?=E8=B0=83=E8=8A=82=E5=BF=83=E8=B7=B3=E9=97=B4=E9=9A=94=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../zhihui/leiniao/imsl_ln/leiniao_api_at.c | 31 +++++++++++++++++++ code/sdk/zhihui/leiniao/imsl_ln/ln_api.h | 4 +++ .../zhihui/leiniao/imsl_ln/ln_api_websocket.c | 15 +++++++-- 3 files changed, 47 insertions(+), 3 deletions(-) diff --git a/code/sdk/zhihui/leiniao/imsl_ln/leiniao_api_at.c b/code/sdk/zhihui/leiniao/imsl_ln/leiniao_api_at.c index a5dbce812..11cb5d74e 100644 --- a/code/sdk/zhihui/leiniao/imsl_ln/leiniao_api_at.c +++ b/code/sdk/zhihui/leiniao/imsl_ln/leiniao_api_at.c @@ -1913,6 +1913,33 @@ static uint32_t ln_bt_disconnect_at(uint8_t *para, uint32_t paraLen, char *strCo ln_bt_disconnect(); return ERRCODE_SUCC; } + +//获取心跳间隔 +static uint32_t ln_ws_get_heartbeat_interval_sec_at(uint8_t *para, uint32_t paraLen, char *strCommonCmd) +{ + LN_UNUSED(strCommonCmd); + LN_UNUSED(para); + LN_UNUSED(paraLen); + return ln_ws_get_heartbeat_interval_sec(); +} + +//设置心跳间隔 +static uint32_t ln_ws_set_heartbeat_interval_sec_at(uint8_t *para, uint32_t paraLen, char *strCommonCmd) +{ + LN_UNUSED(strCommonCmd); + LN_UNUSED(para); + LN_UNUSED(paraLen); + uint8_t argv[LN_MAX_ARGC][LN_MAX_ARGV_LEN] = {0}; + uint32_t argc = 0; + if (ConvertCmdToParam(para, paraLen, argv, &argc) != LN_SUCCESS || argc < 1) { + printf("ERROR: Failed to parse heartbeat interval\n"); + return ERRCODE_FAIL; + } + uint32_t heartbeat_interval = atoi((char*)argv[0]); + ln_ws_set_heartbeat_interval_sec(heartbeat_interval); + printf("[LN][WS_HEARTBEAT_INTERVAL] Set heartbeat interval to: %d\n", heartbeat_interval); + return ERRCODE_SUCC; +} static uint32_t ln_ws_set_log_level_at(uint8_t *para, uint32_t paraLen, char *strCommonCmd) { LN_UNUSED(strCommonCmd); @@ -2055,6 +2082,10 @@ static const at_cmd_table_t g_ln_api_cmd[] = { {(char *)"AT^LN_WS_LOG_LEVEL", ln_ws_set_log_level_at, (char *)"设置WebSocket日志等级: AT^LN_WS_LOG_LEVEL=0-3"}, //压测相关 {(char *)"AT^LN_STRESS_TEST_DIALOGUE", ln_stress_test_dialogue_at, (char *)"压测模式:跳转到对话说话界面,常亮屏且循环播放FactoryMode.mp3: AT^LN_STRESS_TEST_DIALOGUE"}, + + //心跳间隔设置 + {(char *)"AT^LN_WS_HEARTBEAT_INTERVAL", ln_ws_get_heartbeat_interval_sec_at, (char *)"获取心跳间隔: AT^LN_WS_HEARTBEAT_INTERVAL"}, + {(char *)"AT^LN_WS_HEARTBEAT_INTERVAL_SET", ln_ws_set_heartbeat_interval_sec_at, (char *)"设置心跳间隔: AT^LN_WS_HEARTBEAT_INTERVAL_SET=60"}, }; diff --git a/code/sdk/zhihui/leiniao/imsl_ln/ln_api.h b/code/sdk/zhihui/leiniao/imsl_ln/ln_api.h index 9249284d0..b4eb46e2b 100644 --- a/code/sdk/zhihui/leiniao/imsl_ln/ln_api.h +++ b/code/sdk/zhihui/leiniao/imsl_ln/ln_api.h @@ -648,6 +648,10 @@ int ln_http_download_get_stats(uint32_t *total_bytes, uint32_t *total_packets); */ uint8_t ln_http_download_is_initialized(void); /* ====================================================================== */ +/* 设置心跳间隔 */ +void ln_ws_set_heartbeat_interval_sec(uint32_t interval); +/* 获取心跳间隔 */ +uint32_t ln_ws_get_heartbeat_interval_sec(void); #ifdef __cplusplus } 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 8b30e79e6..f1cdff3e0 100644 --- a/code/sdk/zhihui/leiniao/imsl_ln/ln_api_websocket.c +++ b/code/sdk/zhihui/leiniao/imsl_ln/ln_api_websocket.c @@ -31,9 +31,18 @@ // 主线程循环间隔时长(毫秒) #define LN_WS_MAIN_THREAD_INTERVAL_MS 500 -// 心跳间隔(秒) -#define LN_WS_HEARTBEAT_INTERVAL_SEC 60*5 //5分钟发送一次心跳,正常最大7分钟 - + // 心跳间隔(秒) +// #define LN_WS_HEARTBEAT_INTERVAL_SEC 60*5 //5分钟发送一次心跳,正常最大7分钟 +static volatile uint32_t LN_WS_HEARTBEAT_INTERVAL_SEC = 60*5; //5分钟发送一次心跳,正常最大7分钟 + +void ln_ws_set_heartbeat_interval_sec(uint32_t interval) +{ + LN_WS_HEARTBEAT_INTERVAL_SEC = interval; +} +uint32_t ln_ws_get_heartbeat_interval_sec(void) +{ + return LN_WS_HEARTBEAT_INTERVAL_SEC; +} // 心跳间隔计数器阈值(基于主线程间隔计算) #define LN_WS_HEARTBEAT_COUNTER_THRESHOLD ((LN_WS_HEARTBEAT_INTERVAL_SEC * 1000) / LN_WS_MAIN_THREAD_INTERVAL_MS) -- 2.17.1