From a473dc1d62de672f88590d9afac6caa8b278a7fa Mon Sep 17 00:00:00 2001 From: cheng Date: Sun, 21 Sep 2025 11:13:47 +0800 Subject: [PATCH] =?utf8?q?=E6=B7=BB=E5=8A=A0=E6=81=A2=E5=A4=8D=E5=87=BA?= =?utf8?q?=E5=8E=82=E5=88=A0=E9=99=A4=E9=9B=B7=E9=B8=9F=E6=96=87=E4=BB=B6?= =?utf8?q?=E5=A4=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../thunderbird/src/ThunderBirdModel.cpp | 9 ++- code/sdk/zhihui/leiniao/imsl_ln/ln_api.c | 75 ++++++++++++++----- 2 files changed, 62 insertions(+), 22 deletions(-) diff --git a/code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdModel.cpp b/code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdModel.cpp index 72fe64853..9d0949761 100644 --- a/code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdModel.cpp +++ b/code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdModel.cpp @@ -296,6 +296,11 @@ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "恢复出厂: 删除ConfigModel.json失败 /user/system/ConfigModel.json"); return false; } + if(uapi_delete_folder("/user/leiniao")==-1) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "恢复出厂:删除雷鸟文件夹 /user/leiniao"); + return false; + } WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "恢复出厂: 成功"); //重启 @@ -413,8 +418,8 @@ // 1. 读取录音文件 // 2. 通过网络发送到服务器 // 3. 等待服务器响应 - //do_ln_http_server_send_data(LN_HTTP_SERVICE_CMD_SPEECH_CHAT_STREAM, NULL, 0);//开始对话 - do_ln_http_server_send_data(LN_HTTP_SERVICE_CMD_STORY_CHOOSE, NULL, 0);//选择故事 + do_ln_http_server_send_data(LN_HTTP_SERVICE_CMD_SPEECH_CHAT_STREAM, NULL, 0);//开始对话 + // do_ln_http_server_send_data(LN_HTTP_SERVICE_CMD_STORY_CHOOSE, NULL, 0);//选择故事 return true; // 模拟成功 } diff --git a/code/sdk/zhihui/leiniao/imsl_ln/ln_api.c b/code/sdk/zhihui/leiniao/imsl_ln/ln_api.c index 86ed32aaa..fd87d81a3 100644 --- a/code/sdk/zhihui/leiniao/imsl_ln/ln_api.c +++ b/code/sdk/zhihui/leiniao/imsl_ln/ln_api.c @@ -63,11 +63,41 @@ char *uapi_ln_get_device_model(void) char *uapi_ln_get_device_version(void) { char version_buf[128] = {0}; - uint32_t version_len = 128; + uint32_t version_len = sizeof(version_buf) - 1; // 预留1字节给字符串结束符 uapi_get_buildversion((uint8_t *)version_buf, version_len); - strcpy(g_device_version, version_buf); + + // 原始格式:V1.0.0_20250920_222554,目标:V1.0.0_20250920 + // 步骤1:找到第一个下划线(分隔版本号和日期) + char *first_underline = strstr(version_buf, "_"); + if (!first_underline) { + // 无下划线,直接使用原始版本号(异常情况处理) + snprintf(g_device_version, sizeof(g_device_version), "%s", version_buf); + printf("g_device_version (no underline): %s\n", g_device_version); + return g_device_version; + } + + // 步骤2:找到第二个下划线(分隔日期和时间) + char *second_underline = strstr(first_underline + 1, "_"); + if (!second_underline) { + // 只有一个下划线(如 "V1.0.0_20250920"),直接使用 + snprintf(g_device_version, sizeof(g_device_version), "%s", version_buf); + printf("g_device_version (only one underline): %s\n", g_device_version); + return g_device_version; + } + + // 步骤3:截断第二个下划线后的内容(保留版本号+日期) + size_t target_len = second_underline - version_buf; // 计算目标字符串长度(不含时间) + if (target_len >= sizeof(g_device_version)) { + // 防止缓冲区溢出,取最大可容纳长度 + target_len = sizeof(g_device_version) - 1; + } + + // 复制并构造目标格式字符串 + strncpy(g_device_version, version_buf, target_len); + g_device_version[target_len] = '\0'; // 手动添加字符串结束符 + printf("g_device_version: %s\n", g_device_version); - return g_device_version; + return g_device_version; } /* 获取设备token: 优先读本地缓存,判断过期,否则刷新 */ char *uapi_ln_get_device_token(void) @@ -101,9 +131,26 @@ char *uapi_ln_get_device_token(void) return NULL; } - /* 没有,发出提示信息 */ - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"[TOKEN] 请先激活设备获取 Token"); - + /* 没有,尝试获取 Token */ + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"[TOKEN] 刷新 Token"); + if(uapi_dev_runtime_get_cat1_networkstat()) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"[TOKEN] 网络在线,刷新 Token"); + if(uapi_ln_refresh_device_token() == ERRCODE_SUCC) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"[TOKEN] 刷新 Token 成功"); + return g_device_token; + } + else + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"[TOKEN] 刷新 Token 失败"); + return NULL; + } + } + else + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"[TOKEN] 网络离线,无法刷新 Token"); + } return NULL; } /* 清除设备token */ @@ -1077,20 +1124,7 @@ static void ln_http_server_send_task(void const *arg) if (mail.cmd == LN_HTTP_SERVICE_CMD_GET_DEVICE_TOKEN) { printf("LN_HTTP_SERVICE_CMD_GET_DEVICE_TOKEN:获取雷鸟设备Token\n"); - uint32_t ret = ln_get_device_token_http(uapi_ln_get_device_id(), uapi_ln_get_device_iccid(), uapi_ln_get_device_model(), uapi_ln_get_device_version()); - if (ret == ERRCODE_SUCC) - { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[LN_HTTP_SERVER_SEND_TASK] 获取雷鸟设备Token成功\n"); - ret = ln_ws_start(ln_ws_process_message); - if (ret != 0) - { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[LN_HTTP_SERVER_SEND_TASK] 启动WebSocket失败: %d\n", ret); - } - } - else - { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[LN_HTTP_SERVER_SEND_TASK] 获取雷鸟设备Token失败\n"); - } + uapi_ln_get_device_token(); } else if (mail.cmd == LN_HTTP_SERVICE_CMD_SPEECH_CHAT_STREAM) { @@ -1399,6 +1433,7 @@ errcode_t uapi_ln_http_server_init(void) printf("[LN_AUDIO] init failed in http server init\n"); /* 不中断HTTP服务,按需可返回失败 */ } + ln_ws_start(ln_ws_process_message); return ERRCODE_SUCC; } -- 2.17.1