From c5a468a996897fcb3c43c994c75cdfd45b39b275 Mon Sep 17 00:00:00 2001 From: luozheng <1732036298@qq.com> Date: Wed, 17 Dec 2025 11:07:40 +0800 Subject: [PATCH] =?utf8?q?ln:=E6=A8=A1=E7=BB=84=E5=8D=87=E7=BA=A7=E4=BC=98?= =?utf8?q?=E5=8C=96=EF=BC=8C=E8=87=AA=E5=8A=A8=E8=8E=B7=E5=8F=96=E5=8D=87?= =?utf8?q?=E7=BA=A7=E4=B8=8D=E5=9C=A8=E5=86=99=E6=AD=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../thunderbird/src/ThunderBirdModel.cpp | 129 ++++++++++++++---- 1 file changed, 103 insertions(+), 26 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 27ab99051..437678cbc 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 @@ -97,6 +97,7 @@ extern "C" { #endif #include #include "broadcast_feature.h" + #include int32_t AudioCaptureSample(int32_t argc, const char *argv[]); @@ -1591,53 +1592,129 @@ extern "C" { } /* -------------------------------------------------------------------------- */ - - bool ThunderBirdModel::is_Cat1_OtaUpgrade() - { - cat1_pyver = uapi_dev_runtime_get_cat1_pyver(); - if(cat1_pyver == "PY_SRV_V27" || cat1_pyver == "PY_SRV_V28") - { - return true; - } - else - { - return false; + /** + * @brief 提取modem固件版本号(前缀+最后4位) + * @param input_str 输入字符串(如"EG800AKCN91LCR07A01M04_OCPU_QPY_BETA1022") + * @param output_str 输出固件版本号(需提前分配足够内存,至少16字节) + * @return 成功返回0,失败返回-1;output_str格式:前缀+最后4位(如EG8AK1022、EG810xxxx) + * @note 1. 包含"EG800AK" → 前缀为"EG8AK",拼接最后4位; + * 2. 包含"EG810" → 前缀为"EG810",拼接最后4位; + * 3. 无匹配前缀返回失败;字符串长度<4时,最后4位取全部字符 + */ + int get_modem_fw_version(const char* input_str, char* output_str) + { + // 输入参数校验 + if (input_str == NULL || strlen(input_str) == 0) { + printf("错误:输入字符串为空\n"); + return -1; + } + if (output_str == NULL) { + printf("错误:输出缓冲区为空\n"); + return -1; + } + + // 清空输出缓冲区 + memset(output_str, 0, strlen(output_str) > 0 ? strlen(output_str) : 16); + + // 1. 提取字符串最后4位 + char suffix_4[5] = {0}; // 存储最后4位(+1存结束符) + int input_len = strlen(input_str); + int suffix_start = (input_len >= 4) ? (input_len - 4) : 0; + strncpy(suffix_4, input_str + suffix_start, 4); + suffix_4[4] = '\0'; // 确保字符串结束 + + // 2. 判断前缀并拼接版本号 + if (strstr(input_str, "EG800AK") != NULL) { + // 包含EG800AK → 前缀EG8AK + 最后4位 + strcpy(output_str, "EG8AK"); + strcat(output_str, suffix_4); + } else if (strstr(input_str, "EG810") != NULL) { + // 包含EG810 → 前缀EG810 + 最后4位 + strcpy(output_str, "EG810"); + strcat(output_str, suffix_4); + } else { + // 无匹配前缀 + printf("错误:输入字符串无匹配前缀(EG800AK/EG810)\n"); + return -1; } + return 0; } - /** - * @brief cat1模组升级函数 - */ - void ThunderBirdModel::Cat1OtaUpgrade() + extern uint8_t g_py_ver; + bool ThunderBirdModel::is_Cat1_OtaUpgrade() { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "cat1模组升级"); - LOS_Msleep(1000); uint32_t ret = 0; - const char * text1 = "EG8AK1022V27_1"; - ret = ln_ota_get_task_http_CAT1(uapi_ln_get_device_id(), uapi_ln_get_device_token(), text1, g_ln_last_package_url_new1); + char * text = cat1_api_runtime_get_cat1_modemver(); + char version[16] = {0}; + if (get_modem_fw_version(text, version) == 0) + { + printf("输入1:%s\n", text); + printf("Modem固件版本1:%s\n", version); // 预期输出:EG8AK1022 + } + string version1_str = std::string(version) + "V"+ std::to_string(g_py_ver) + "_1"; + ret = ln_ota_get_task_http_CAT1(uapi_ln_get_device_id(), uapi_ln_get_device_token(), version1_str.c_str(), g_ln_last_package_url_new1); if(ERRCODE_SUCC != ret) { - ln_ota_get_task_http_CAT1(uapi_ln_get_device_id(), uapi_ln_get_device_token(), text1, g_ln_last_package_url_new1); + ln_ota_get_task_http_CAT1(uapi_ln_get_device_id(), uapi_ln_get_device_token(), version1_str.c_str(), g_ln_last_package_url_new1); } - const char * text2 = "EG8AK1022V27_2"; - ret = ln_ota_get_task_http_CAT1(uapi_ln_get_device_id(), uapi_ln_get_device_token(), text2, g_ln_last_package_url_new2); + + string version2_str = std::string(version) + "V"+ std::to_string(g_py_ver) + "_2"; + ret = ln_ota_get_task_http_CAT1(uapi_ln_get_device_id(), uapi_ln_get_device_token(), version2_str.c_str(), g_ln_last_package_url_new2); if(ERRCODE_SUCC != ret) { - ln_ota_get_task_http_CAT1(uapi_ln_get_device_id(), uapi_ln_get_device_token(), text2, g_ln_last_package_url_new2); + ln_ota_get_task_http_CAT1(uapi_ln_get_device_id(), uapi_ln_get_device_token(), version2_str.c_str(), g_ln_last_package_url_new2); } // 检查cat1模组升级url是否为空 if(strlen(g_ln_last_package_url_new1) == 0) { - ln_ota_get_task_http_CAT1(uapi_ln_get_device_id(), uapi_ln_get_device_token(), text1, g_ln_last_package_url_new1); + ln_ota_get_task_http_CAT1(uapi_ln_get_device_id(), uapi_ln_get_device_token(), version1_str.c_str(), g_ln_last_package_url_new1); } if(strlen(g_ln_last_package_url_new2) == 0) { - ln_ota_get_task_http_CAT1(uapi_ln_get_device_id(), uapi_ln_get_device_token(), text2, g_ln_last_package_url_new2); + ln_ota_get_task_http_CAT1(uapi_ln_get_device_id(), uapi_ln_get_device_token(), version2_str.c_str(), g_ln_last_package_url_new2); + } + // 检查cat1模组升级url是否为空 + if(strlen(g_ln_last_package_url_new1) == 0 || strlen(g_ln_last_package_url_new2) == 0) + { + return false; } + return true; + } + + /** + * @brief cat1模组升级函数 + */ + void ThunderBirdModel::Cat1OtaUpgrade() + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "cat1模组升级"); + // LOS_Msleep(1000); + // uint32_t ret = 0; + // const char * text1 = "EG8AK1022V27_1"; + // ret = ln_ota_get_task_http_CAT1(uapi_ln_get_device_id(), uapi_ln_get_device_token(), text1, g_ln_last_package_url_new1); + // if(ERRCODE_SUCC != ret) + // { + // ln_ota_get_task_http_CAT1(uapi_ln_get_device_id(), uapi_ln_get_device_token(), text1, g_ln_last_package_url_new1); + // } + // const char * text2 = "EG8AK1022V27_2"; + // ret = ln_ota_get_task_http_CAT1(uapi_ln_get_device_id(), uapi_ln_get_device_token(), text2, g_ln_last_package_url_new2); + // if(ERRCODE_SUCC != ret) + // { + // ln_ota_get_task_http_CAT1(uapi_ln_get_device_id(), uapi_ln_get_device_token(), text2, g_ln_last_package_url_new2); + // } + + // // 检查cat1模组升级url是否为空 + // if(strlen(g_ln_last_package_url_new1) == 0) + // { + // ln_ota_get_task_http_CAT1(uapi_ln_get_device_id(), uapi_ln_get_device_token(), text1, g_ln_last_package_url_new1); + // } + // if(strlen(g_ln_last_package_url_new2) == 0) + // { + // ln_ota_get_task_http_CAT1(uapi_ln_get_device_id(), uapi_ln_get_device_token(), text2, g_ln_last_package_url_new2); + // } #ifdef SUPPORT_CAT1_SERVICE - star_http_ota_updata(g_ln_last_package_url_new1,g_ln_last_package_url_new2,27); + star_http_ota_updata(g_ln_last_package_url_new1,g_ln_last_package_url_new2,g_py_ver); #endif // push_ota_status(OTA_UI_STATUS_FORCE_START); } -- 2.17.1