1
authorhcj <1224667075@qq.com>
Tue, 15 Jul 2025 03:13:05 +0000 (11:13 +0800)
committerhcj <1224667075@qq.com>
Tue, 15 Jul 2025 03:13:05 +0000 (11:13 +0800)
15 files changed:
cat1modem/fd230/EG810MCNLAR06A01M08_VOLTE_OCPU_QPY_TEST0630_20250630-1944_20250710-1429.zip [deleted file]
cat1modem/fd230/EG810MCNLAR06A01M08_VOLTE_OCPU_QPY_TEST0630_20250630-1944_20250710-1524.zip [new file with mode: 0644]
cat1modem/fd230/bak/EG810MCNLAR06A01M08_VOLTE_OCPU_QPY_TEST0630_20250630-1944.zip:Zone.Identifier [deleted file]
cat1modem/fd230/bak/EG810MCNLAR06A01M08_VOLTE_OCPU_QPY_TEST0630_20250630-1944_20250709-1731.zip [deleted file]
cat1modem/fd230/bak/EG810MCNLAR06A01M08_VOLTE_OCPU_QPY_TEST0630_20250630-1944_20250710-1429.zip [deleted file]
cat1modem/fd230/bak/dfota_1.bin [new file with mode: 0644]
cat1modem/fd230/bak/dfota_2.bin [new file with mode: 0644]
cat1modem/src/cat1Service.py
code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.c
code/sdk/application/wearable/service/ble_service/bleservice/bleService.c
code/sdk/drivers/peripheral/slip/cat1Service/cat1_at_cmd.cpp
code/sdk/drivers/peripheral/slip/cat1Service/cat1_server.h
code/sdk/drivers/peripheral/slip/cat1Service/cat1_tcpServer.cpp
code/sdk/drivers/peripheral/slip/cat1Service/cat1_ws.cpp
code/sdk/drivers/peripheral/slip/cat1Service/http_cat1_ota.cpp

diff --git a/cat1modem/fd230/EG810MCNLAR06A01M08_VOLTE_OCPU_QPY_TEST0630_20250630-1944_20250710-1429.zip b/cat1modem/fd230/EG810MCNLAR06A01M08_VOLTE_OCPU_QPY_TEST0630_20250630-1944_20250710-1429.zip
deleted file mode 100644 (file)
index f153a28..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:7b98532e83e5f83c7b86d43e923091987eb3517bacf6fc5bc24c3ed9d88ad4d9
-size 11630097
diff --git a/cat1modem/fd230/EG810MCNLAR06A01M08_VOLTE_OCPU_QPY_TEST0630_20250630-1944_20250710-1524.zip b/cat1modem/fd230/EG810MCNLAR06A01M08_VOLTE_OCPU_QPY_TEST0630_20250630-1944_20250710-1524.zip
new file mode 100644 (file)
index 0000000..8424882
--- /dev/null
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5db7b8ce249c29afc7be765f6814122f6dc836aa49884559938dde22aac89b79
+size 11630065
diff --git a/cat1modem/fd230/bak/EG810MCNLAR06A01M08_VOLTE_OCPU_QPY_TEST0630_20250630-1944.zip:Zone.Identifier b/cat1modem/fd230/bak/EG810MCNLAR06A01M08_VOLTE_OCPU_QPY_TEST0630_20250630-1944.zip:Zone.Identifier
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/cat1modem/fd230/bak/EG810MCNLAR06A01M08_VOLTE_OCPU_QPY_TEST0630_20250630-1944_20250709-1731.zip b/cat1modem/fd230/bak/EG810MCNLAR06A01M08_VOLTE_OCPU_QPY_TEST0630_20250630-1944_20250709-1731.zip
deleted file mode 100644 (file)
index 065abd4..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:82324c00dd851ace1c45e65886849fe39d7d356573b965ce90b66ff123b0c6d7
-size 11630066
diff --git a/cat1modem/fd230/bak/EG810MCNLAR06A01M08_VOLTE_OCPU_QPY_TEST0630_20250630-1944_20250710-1429.zip b/cat1modem/fd230/bak/EG810MCNLAR06A01M08_VOLTE_OCPU_QPY_TEST0630_20250630-1944_20250710-1429.zip
deleted file mode 100644 (file)
index f153a28..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:7b98532e83e5f83c7b86d43e923091987eb3517bacf6fc5bc24c3ed9d88ad4d9
-size 11630097
diff --git a/cat1modem/fd230/bak/dfota_1.bin b/cat1modem/fd230/bak/dfota_1.bin
new file mode 100644 (file)
index 0000000..056adbe
--- /dev/null
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f24e88c307af6112c683db86b7ac96c3907972e36a64b56eb7ba20bb1a219730
+size 63496
diff --git a/cat1modem/fd230/bak/dfota_2.bin b/cat1modem/fd230/bak/dfota_2.bin
new file mode 100644 (file)
index 0000000..261758a
--- /dev/null
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:490ba61e0fc4caee01854c1798cb3738d042acf280940c58761da9daf3393ee2
+size 3530844
index deed269..8472750 100644 (file)
@@ -79,7 +79,7 @@ sms.setCallback(msg_cb)#sms注册回调
 CAT1_SERVICE_HEAD = 'FE' #固定head 
 
 PROJECT_NAME = "Cat1SlipUDPService"
-PROJECT_VERSION = "PY_SRV_V19"
+PROJECT_VERSION = "PY_SRV_V20"
 CONFIG_JSON="/usr/system_config.json"
 CURRENT_APP_TYPE="pysrv"
 
index 0977143..d56d6e2 100644 (file)
@@ -7487,99 +7487,125 @@ errcode_t decode_single_dial_info(ble_read_data *buffer_handle)
 }\r
 static errcode_t install_dial(void)\r
 {\r
-    char *lzmapkgname =uapi_dev_runtime_get_dialname();\r
-      WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"install %s\n",lzmapkgname);\r
-    char *lzmaindex = strstr(lzmapkgname,".lzma");\r
-    if (lzmaindex != NULL)\r
-    {\r
-        struct stat info;\r
-        if (stat(get_dial_path(), &info) != 0)\r
-        {\r
-            if (mkdir(get_dial_path(), S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH) != 0)\r
-            {\r
-                return ERRCODE_FAIL; // \r
-            }\r
-        }\r
+    char *lzmapkgname = uapi_dev_runtime_get_dialname();\r
+    // 增加初始参数校验打印\r
+    if (lzmapkgname == NULL) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[install_dial] 错误:获取到的表盘包名为空\n");\r
+        return ERRCODE_FAIL;\r
+    }\r
+    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[install_dial] 开始安装表盘,包名:%s\n", lzmapkgname);\r
 \r
-        char dial_basename[64]={0};\r
-        int dial_basenamelen =  (lzmaindex - lzmapkgname);\r
-          WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"dial_basenamelen %d\n",dial_basenamelen);\r
-        if (dial_basenamelen>0 )\r
-        {\r
-            memcpy_s(dial_basename,sizeof(dial_basename),lzmapkgname,dial_basenamelen);\r
-        }\r
-        else{\r
+    // 检查是否为lzma格式包\r
+    char *lzmaindex = strstr(lzmapkgname, ".lzma");\r
+    if (lzmaindex == NULL) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[install_dial] 错误:包名中未找到.lzma后缀,不是有效压缩包\n");\r
+        return ERRCODE_FAIL;\r
+    }\r
+\r
+    // 创建表盘目录(若不存在)\r
+    struct stat info;\r
+    if (stat(get_dial_path(), &info) != 0) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[install_dial] 表盘目录不存在,尝试创建...\n");\r
+        if (mkdir(get_dial_path(), S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH) != 0) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[install_dial] 错误:创建表盘目录失败\n");\r
             return ERRCODE_FAIL;\r
         }\r
-          WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"dial_basename %s\n",dial_basename);\r
-        char dialbin_filepath[128]={0};\r
-        if(ble_dial_uid>5)\r
-        {\r
-            if (get_dial_file_path(dial_basename,strlen(dial_basename),dialbin_filepath,sizeof(dialbin_filepath)) != ERRCODE_SUCC)\r
-            {\r
-                return ERRCODE_FAIL;\r
-            }\r
-        }\r
-        else\r
-        {\r
-            if (get_custom_dial_file_path(ble_dial_uid,dial_basename,strlen(dial_basename),dialbin_filepath,sizeof(dialbin_filepath)) != ERRCODE_SUCC)\r
-            {\r
-                return ERRCODE_FAIL;\r
-            }\r
-        }\r
-       \r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[install_dial] 表盘目录创建成功\n");\r
+    } else {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[install_dial] 表盘目录已存在,无需创建\n");\r
+    }\r
 \r
-          WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"dialbin_filepath %s\n",dialbin_filepath);\r
-        char lzma_filepath[128]={0};\r
-        if (get_file_recv_file_path(lzmapkgname,strlen(lzmapkgname),lzma_filepath,sizeof(lzma_filepath)) != ERRCODE_SUCC)\r
-        {\r
+    // 解析表盘基础名称(去除.lzma后缀)\r
+    char dial_basename[64] = {0};\r
+    int dial_basenamelen = lzmaindex - lzmapkgname;\r
+    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[install_dial] 解析基础名称长度:%d\n", dial_basenamelen);\r
+    if (dial_basenamelen <= 0 || dial_basenamelen >= sizeof(dial_basename)) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[install_dial] 错误:基础名称长度无效(%d),超出缓冲区大小\n", dial_basenamelen);\r
+        return ERRCODE_FAIL;\r
+    }\r
+    memcpy_s(dial_basename, sizeof(dial_basename), lzmapkgname, dial_basenamelen);\r
+    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[install_dial] 解析到表盘基础名称:%s\n", dial_basename);\r
+\r
+    // 确定解压后bin文件路径\r
+    char dialbin_filepath[128] = {0};\r
+    if (ble_dial_uid > 5) {\r
+        if (get_dial_file_path(dial_basename, strlen(dial_basename), dialbin_filepath, sizeof(dialbin_filepath)) != ERRCODE_SUCC) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[install_dial] 错误:获取常规表盘文件路径失败\n");\r
+            return ERRCODE_FAIL;\r
+        }\r
+    } else {\r
+        if (get_custom_dial_file_path(ble_dial_uid, dial_basename, strlen(dial_basename), dialbin_filepath, sizeof(dialbin_filepath)) != ERRCODE_SUCC) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[install_dial] 错误:获取自定义表盘文件路径失败\n");\r
             return ERRCODE_FAIL;\r
         }\r
-          WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"lzma_filepath %s\n",lzma_filepath);\r
+    }\r
+    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[install_dial] 解压目标bin文件路径:%s\n", dialbin_filepath);\r
 \r
-        errcode_t ret = uapi_dial_pkg_decompress(lzma_filepath,dialbin_filepath);\r
+    // 确定源lzma文件路径\r
+    char lzma_filepath[128] = {0};\r
+    if (get_file_recv_file_path(lzmapkgname, strlen(lzmapkgname), lzma_filepath, sizeof(lzma_filepath)) != ERRCODE_SUCC) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[install_dial] 错误:获取源lzma文件路径失败\n");\r
+        return ERRCODE_FAIL;\r
+    }\r
+    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[install_dial] 源lzma文件路径:%s\n", lzma_filepath);\r
 \r
-          WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"decode %s to %s , ret %X \n",lzma_filepath,dialbin_filepath, ret);\r
+    // 执行解压操作\r
+    errcode_t ret = uapi_dial_pkg_decompress(lzma_filepath, dialbin_filepath);\r
+    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[install_dial] 解压操作完成,返回码:0x%X(%s)\n", ret, \r
+                 (ret == ERRCODE_SUCC) ? "成功" : "失败");\r
 \r
-        char *namebuf= strtok(lzmapkgname,".");\r
+    // 关键:检查解压后bin文件是否存在及大小\r
+    struct stat bin_info;\r
+    if (stat(dialbin_filepath, &bin_info) != 0) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[install_dial] 错误:解压后bin文件不存在或无法访问(路径:%s)\n", dialbin_filepath);\r
+        ret = ERRCODE_FAIL; // 即使解压返回成功,文件不存在也视为失败\r
+    } else {\r
+        if (bin_info.st_size <= 0) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[install_dial] 错误:解压后bin文件大小为空(%ld字节),无效文件\n", bin_info.st_size);\r
+            ret = ERRCODE_FAIL; // 大小为空视为失败\r
+        } else {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[install_dial] 解压后bin文件大小正常:%ld字节\n", bin_info.st_size);\r
+        }\r
+    }\r
 \r
-        if(ble_dial_uid>5)\r
-        {\r
-            install_Register_dial(namebuf,ble_dial_uid);\r
+    // 若解压失败,直接返回\r
+    if (ret != ERRCODE_SUCC) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[install_dial] 解压失败,终止安装流程\n");\r
+        return ret;\r
+    }\r
 \r
+    // 注册并设置表盘\r
+    char *namebuf = strtok(lzmapkgname, ".");\r
+    if (ble_dial_uid > 5) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[install_dial] 注册常规表盘:%s(ID:%d)\n", namebuf, ble_dial_uid);\r
+        install_Register_dial(namebuf, ble_dial_uid);\r
+        ble_set_dial_by_id(ble_dial_uid);\r
+    } else {\r
+        if (ble_dial_file_index == ble_dial_file_count) {\r
+            char name_str[32] = {0};\r
+            ble_get_custom_dial(ble_dial_uid, name_str);\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[install_dial] 自定义表盘安装完毕,注册:%s(ID:%d)\n", name_str, ble_dial_uid);\r
+            install_Register_dial(name_str, ble_dial_uid);\r
             ble_set_dial_by_id(ble_dial_uid);\r
-\r
-        }\r
-        else\r
-        {\r
-            if(ble_dial_file_index==ble_dial_file_count)\r
-            {\r
-                  WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"自定义表盘安装完毕\r\n");\r
-                char name_str[32]={0};\r
-                ble_get_custom_dial(ble_dial_uid,name_str);\r
-                install_Register_dial(name_str,ble_dial_uid);\r
-                ble_set_dial_by_id(ble_dial_uid);\r
-            }\r
-     \r
+        } else {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[install_dial] 自定义表盘未达安装条件(当前索引:%d,总数:%d)\n", \r
+                         ble_dial_file_index, ble_dial_file_count);\r
         }\r
-        \r
-       \r
-        //安装完后删除表盘\r
-         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"remove  %s\r\n",lzma_filepath);\r
-\r
-        if(0!=remove(lzma_filepath))\r
-        return ERRCODE_FAIL;\r
+    }\r
 \r
-        if ( ret == ERRCODE_SUCC)\r
-            return ERRCODE_SUCC;\r
-        else\r
-            return ERRCODE_FAIL;\r
-    }else{\r
-          WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,".lzma not found\n");\r
-        return ERRCODE_FAIL;\r
+    // 删除源lzma文件\r
+    #if 1\r
+    if (remove(lzma_filepath) != 0) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[install_dial] 警告:删除源lzma文件失败(路径:%s),可能残留冗余文件\n", lzma_filepath);\r
+        // 此处不返回失败,仅警告,因为核心安装已完成\r
+    } else {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[install_dial] 源lzma文件已成功删除\n");\r
     }\r
-}\r
+    #endif\r
 \r
+    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[install_dial] 表盘安装流程全部完成,返回成功\n");\r
+    return ERRCODE_SUCC;\r
+}\r
 static char file_name[128]={0};\r
 static uint32_t file_size=0;\r
 \r
index 12e926e..4ba80ef 100644 (file)
@@ -2447,6 +2447,24 @@ static void blesrvAi_send_service_task(void const *arg)
 \r
         if(getselect4gorbtai() == 1) //选择的是4g\r
         {\r
+            if(get_clear_queue_stream())\r
+            {\r
+                // osal_msg_queue_write_head_copy(g_ble_Ai_record_queue, (void *)&mail,sizeof(blesrv_custom_cmd_t), 0);\r
+                int quesize = osal_msg_queue_get_msg_num(g_ble_Ai_record_queue);\r
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_MAIN_SERVICE,"do_uart_slip_cmd quesize %d\n",quesize);\r
+                while(quesize)\r
+                {\r
+                    osal_msg_queue_read_copy(g_ble_Ai_record_queue, (void *)&mail, &msgsize,\r
+                                        OSAL_MSGQ_WAIT_FOREVER);\r
+                    if(mail.msg_data)\r
+                    {\r
+                        free(mail.msg_data);\r
+                        mail.msg_data = NULL;\r
+                    }\r
+                    quesize--;\r
+                }\r
+                set_clear_queue_stream(0);\r
+            }\r
             if(mail.msg_data && mail.msg_len!=0)\r
             {\r
                 if(server_handle == 200 ||server_handle == 201 )\r
index 8256686..0072bf2 100644 (file)
@@ -679,7 +679,7 @@ static uint32_t sendfotaurl(uint8_t *para, uint32_t paraLen, char *strCommonCmd)
         printf("CAT1TEST ATCMD Convert Command Failed\n");
         return ERRCODE_FAIL;
     }
-    star_http_ota_updata();
+    star_http_ota_updata(19);
     return 0;
 }
 
index f2963d3..6e2e7c4 100644 (file)
@@ -66,7 +66,7 @@ void cat1_call_hungup_timer(void);
 
 void send_fota_url(char *buf);
 
-void star_http_ota_updata(void);
+void star_http_ota_updata(uint8_t ver);
 
 #ifdef __cplusplus
 #if __cplusplus
index c47292e..6244442 100644 (file)
@@ -1262,12 +1262,19 @@ void cat1_server_file_task(void *pvParameters)
                     
                 CustomEventPublish(TOPIC_EVENT_BLE_TRANSMIT,&TRANSMIT_DATA,1);
             }
-            else if (g_py_ver==19 )
+            else if (g_py_ver>=19 )
             {
                 char * cat1_modemver = uapi_dev_runtime_get_cat1_modemver();
-                if(strcmp(cat1_modemver, "EG810MCNLAR06A01M08_VOLTE_OCPU_QPY_TEST0630")!=0)
+                if(g_py_ver==19)
                 {
-                     star_http_ota_updata();
+                    if(strcmp(cat1_modemver, "EG810MCNLAR06A01M08_VOLTE_OCPU_QPY_TEST0630")!=0)
+                    {
+                        star_http_ota_updata(g_py_ver);
+                    }
+                }
+                else
+                {
+                    star_http_ota_updata(g_py_ver);
                 }
                
             }
index 0e2fda2..cf159f1 100644 (file)
@@ -1239,6 +1239,7 @@ void bk_websocket_demo(void *data) {
 #include "soc_osal.h"
 #include "common_def.h"
 #include "los_printf.h"
+#include <aivoice/include/AiVoiceModelC.h>
 
 #define CAT1_SERVICE_TASK_SIZE       (2048)
 #define CAT1_SERVICE_TASK_PRIO       5
@@ -1981,6 +1982,7 @@ void bk_websocket_tts(void *data) {
         {   
             if(disconnect_server==0)
             {
+                set_clear_queue_stream(1);
                 goto TTS_SATRT;
             }
             tts_reconnect=0;
index 4f176d3..b0312fd 100644 (file)
@@ -209,14 +209,21 @@ static void  read_http_get_ota_url_file(char *out_put_url)
 // 
 // http://snicker.com.cn:8089/FD230/PY_SRV_V19/dfota_2.bin
 
-void star_http_ota_updata(void)
+void star_http_ota_updata(uint8_t ver)
 {
     int ret=0;
     char buf_1[256]={0};
-    ret = http_get_ota_url(buf_1,"PY19_1");
+    char PY_BUF_1[32]={0};
+    sprintf(PY_BUF_1,"PY%d_1",ver);
+    ret = http_get_ota_url(buf_1,PY_BUF_1);
+
+    char PY_BUF_2[32]={0};
+    sprintf(PY_BUF_2,"PY%d_2",ver);
+    ret = http_get_ota_url(buf_1,PY_BUF_2);
+
     for (int i = 0;  i <3; i++)
     {
-        ret = http_get_ota_url(buf_1,"PY19_1");
+        ret = http_get_ota_url(buf_1,PY_BUF_1);
         if(ret==200)
         break;
     }
@@ -226,10 +233,10 @@ void star_http_ota_updata(void)
         return;
     }
     char buf_2[256]={0};
-    http_get_ota_url(buf_2,"PY19_2");
+    http_get_ota_url(buf_2,PY_BUF_2);
     for (int i = 0;  i <3; i++)
     {
-        ret = http_get_ota_url(buf_2,"PY19_2");
+        ret = http_get_ota_url(buf_2,PY_BUF_2);
         if(ret==200)
         break;
     }
@@ -239,6 +246,12 @@ void star_http_ota_updata(void)
         return;
     }
 
+    if(strlen(buf_1)==0 || strlen(buf_2)==0)
+    {
+         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "no updata");
+        return ;
+    }
+
     char * send_buf=(char *) malloc(strlen(buf_1)+strlen(buf_2)+40);
     memset(send_buf,0,strlen(buf_1)+strlen(buf_2)+40);