#endif
#include <input_app.h>
#include "broadcast_feature.h"
+ #include <cat1_runtime.h>
int32_t AudioCaptureSample(int32_t argc, const char *argv[]);
}
/* -------------------------------------------------------------------------- */
-
- 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);
}