return ERRCODE_SUCC;
}
+/* 提取modem固件版本号(前缀+最后4位) */
+static int get_modem_fw_version_c(const char* input_str, char* output_str)
+{
+ if (input_str == NULL || strlen(input_str) == 0 || output_str == NULL) {
+ return -1;
+ }
+
+ memset(output_str, 0, 16);
+
+ // 提取字符串最后4位
+ char suffix_4[5] = {0};
+ 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';
+
+ // 判断前缀并拼接版本号
+ if (strstr(input_str, "EG800AK") != NULL) {
+ strcpy(output_str, "EG8AK");
+ strcat(output_str, suffix_4);
+ } else if (strstr(input_str, "EG810") != NULL) {
+ strcpy(output_str, "EG810");
+ strcat(output_str, suffix_4);
+ } else {
+ return -1;
+ }
+ return 0;
+}
+static uint32_t ln_otca_cat1_at(uint8_t *para, uint32_t paraLen, char *strCommonCmd)
+{
+ LN_UNUSED(para);
+ LN_UNUSED(paraLen);
+ LN_UNUSED(strCommonCmd);
+ printf("[LN][OTA_GET_TASK_NEW]\n");
+
+ const char *dfota_url_format = "http://snicker.com.cn:8089/leiniao/%s/dfota_%d.bin";
+ char dfota1_url[128] = {0};
+ char dfota2_url[128] = {0};
+ // 直接获取CAT1 modem版本(如果版本还未获取,会在后续处理中处理)
+ char *text = cat1_api_runtime_get_cat1_modemver();
+ if (!text || strlen(text) == 0) {
+ printf("[OTA] cat1 modem版本为空,执行普通OTA升级\n");
+ }
+
+ char version[16] = {0};
+ if (get_modem_fw_version_c(text, version) != 0) {
+ printf("[OTA] 无法解析modem版本,执行普通OTA升级\n");
+ }
+
+ printf("[OTA] Modem固件版本: %s\n", version);
+
+ // 构建版本字符串
+ char version1_str[64] = {0};
+ uint8_t ver = uapi_get_py_ver();
+ snprintf(version1_str, sizeof(version1_str), "%sV%d", version, ver);
+ snprintf(dfota1_url, sizeof(dfota1_url), dfota_url_format, version1_str, 1);
+ snprintf(dfota2_url, sizeof(dfota2_url), dfota_url_format, version1_str, 2);
+ printf("[OTA] url1: %s , url2: %s\n", dfota1_url, dfota2_url);
+
+ star_http_ota_updata(dfota1_url, dfota2_url, ver);
+ return ERRCODE_SUCC;
+}
+
/*
* 职责单一:仅触发"根据最近一次getTask结果下载并校验MD5"的动作
//心跳间隔设置
{(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"},
+ {(char *)"AT^LN_START_OTA_CAT1", ln_otca_cat1_at, (char *)"开始CAT1 OTA升级: AT^LN_START_OTA_CAT1"},
+
};