\r
namespace OHOS {\r
\r
-//REGIST_SLICE(VIEW_SET_OTA, OTAView, OTAPresenter);\r
+REGIST_SLICE(VIEW_SET_OTA, OTAView, OTAPresenter);\r
\r
void OTAPresenter::OnStart()\r
{\r
namespace OHOS {\r
void OTAView::OnStart()\r
{\r
- InitMessageCtrl();\r
- InitProgressCtrl();\r
- InitUpdateCtrl();\r
- AddCtrlToView();\r
+ // InitMessageCtrl();\r
+ // InitProgressCtrl();\r
+ // InitUpdateCtrl();\r
+ // AddCtrlToView();\r
}\r
void OTAView::InitMessageCtrl()\r
{\r
#include "NativeRegisterManager.h"
namespace OHOS {
-//REGIST_MENU(VIEW_SETTING, SettingView, SettingPresenter, PNG_APPLIST_SETTING_IMAGE, PNG_APPLIST_DEFAULT_IMG, "设置");
+REGIST_MENU(VIEW_SETTING, SettingView, SettingPresenter, PNG_APPLIST_SETTING_IMAGE, PNG_APPLIST_DEFAULT_IMG, "设置");
}
#include "custom_runtime.h"
#include "ln_api.h"
#include "kv_store.h"
-
+#include "AppViewIDs.h"
+#include "NativeRegisterManager.h"
#define JUHEPINGTAI 1
#if JUHEPINGTAI
#include "websocket_server_manager.h"
// 更新状态检查
if(status == 1)//OTA升级
{
- ThunderBirdMainView::GetInstance()->ChangeView(current_view, THUNDERBIRD_OTAVIEW, ThunderBirdOtaView::THUNDERBIRD_OTAVIEW_UPDATE_NOW);
+ // ThunderBirdMainView::GetInstance()->ChangeView(current_view, THUNDERBIRD_OTAVIEW, ThunderBirdOtaView::THUNDERBIRD_OTAVIEW_UPDATE_NOW);
+ NativeAbility::GetInstance().ChangeSlice(VIEW_SETTING);
}
else if(status == 2)//OTA升级失败
{
- ThunderBirdMainView::GetInstance()->ChangeView(current_view, THUNDERBIRD_OTAVIEW, ThunderBirdOtaView::THUNDERBIRD_OTAVIEW_UPDATE_FAILED);
+ // ThunderBirdMainView::GetInstance()->ChangeView(current_view, THUNDERBIRD_OTAVIEW, ThunderBirdOtaView::THUNDERBIRD_OTAVIEW_UPDATE_FAILED);
+ NativeAbility::GetInstance().ChangeSlice(VIEW_THUNDER_BIRD);
}
else if(status == 3)//OTA升级成功
{
- ThunderBirdMainView::GetInstance()->ChangeView(current_view, THUNDERBIRD_OTAVIEW, ThunderBirdOtaView::THUNDERBIRD_OTAVIEW_UPDATE_SUCCESS);
+ // ThunderBirdMainView::GetInstance()->ChangeView(current_view, THUNDERBIRD_OTAVIEW, ThunderBirdOtaView::THUNDERBIRD_OTAVIEW_UPDATE_SUCCESS);
}
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "进入OTA界面");
}
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "init_all_callback\n");
// ws_register_chat_filter_callback(ws_register_chat_filter_cb);
// ws_register_ai_question_callback(ws_register_ai_question_cb);
- ws_register_ai_answer_callback(ws_register_ai_answer_cb);
+ // ws_register_ai_answer_callback(ws_register_ai_answer_cb);
}
}
if (ret != 0) {
// MEDIA_ERR_LOG("Failed to write audio data to output stream, ret=%d", ret);
// return -1;
- usleep(10000);
+ usleep(1000*500);
goto AI_WRITE;
}
}
// 添加payload字段
- if (cJSON_AddStringToObject(payload, "voice", "xiaoyun") == NULL) {
+ if (cJSON_AddStringToObject(payload, "voice", "sitong") == NULL) {
printf("Failed to add voice field\n");
goto cleanup;
}
/* 强制升级:直接触发下载 */
printf("[OTA] force upgrade: trigger download(强制升级:直接触发下载)\n");
push_ota_status(OTA_UI_STATUS_START);
+ do_ln_http_server_send_data(LN_HTTP_SERVICE_CMD_OTA_DOWNLOAD, NULL, 0);
}
else if (ut == 0)
{
printf("[OTA] optional upgrade: waiting for user confirmation(可选升级:等待用户确认)\n");
+ do_ln_http_server_send_data(LN_HTTP_SERVICE_CMD_OTA_DOWNLOAD, NULL, 0);
push_ota_status(OTA_UI_STATUS_START);
}
else
}
/* OTA下载消息处理(对接时序图中的后续流程)*/
+static int reset_cnt = 0;
static void handle_ota_download_msg(const OtaDownloadMsg *msg)
{
if (!msg) return;
break;
case OTA_DOWNLOAD_STATUS_FAILED:
printf("[OTA_DOWNLOAD] 下载失败: %s\n", msg->error_msg);
+ reset_cnt++;
+ if(reset_cnt < 3){
+ do_ln_http_server_send_data(LN_HTTP_SERVICE_CMD_OTA_DOWNLOAD, NULL, 0);
+ }
break;
default:
printf("[OTA_DOWNLOAD] 未知状态: %d\n", msg->status);
#define LN_DEVICE_GET_CHARACTER_URL LN_BASE_URL LN_DEVICE_GET_CHARACTER_PATH
#define LN_DEVICE_GET_USER_ID_URL LN_BASE_URL LN_DEVICE_GET_USER_ID_PATH
#define LN_OTA_GET_TASK_URL LN_BASE_URL LN_OTA_GET_TASK_PATH
+// #define LN_OTA_GET_TASK_URL "http://110.42.224.129:8089/leiniaoota.jsp"
#define LN_EMOJI_REPORT_URL LN_BASE_URL LN_EMOJI_REPORT_PATH
#define LN_EMOJI_REPORT_ALL_URL LN_BASE_URL LN_EMOJI_REPORT_ALL_PATH
#define LN_SIGN_SECRET "vDdXVXgPUEUM6_piUjz5AEhMvYTSFzQdPaN-ogKnSus="
printf("[OTA] download failed! response code: %d, ret=0x%x\n",
client.responseCode, ret);
}
+ printf("[OTA] received=%zu, expected=%d\n",
+ total_written, total_size);
// 资源清理(与http_download保持一致)
fclose(fd);
if (g_ln_last_saved_path)
strcpy(g_ln_last_saved_path, save_path);
- printf("[OTA] download only: version=%s, url=%s -> %s\n", g_ln_last_target_version, g_ln_last_package_url, save_path);
+ /* 规范化URL,修正可能的重复协议前缀 */
+ const char *raw_url = g_ln_last_package_url;
+ const char *fixed_url = raw_url;
+ if (raw_url) {
+ /* 修正常见错误:"http://http://" 或 "https://https://" */
+ if (strncasecmp(raw_url, "http://http://", 12) == 0) {
+ fixed_url = raw_url + 7; /* 跳过前一个 http:// */
+ } else if (strncasecmp(raw_url, "https://https://", 14) == 0) {
+ fixed_url = raw_url + 8; /* 跳过前一个 https:// */
+ }
+ }
+
+ printf("[OTA] download only: version=%s, url=%s -> %s\n", g_ln_last_target_version, fixed_url, save_path);
int dres;
if (g_ln_last_package_size > 0)
{
- dres = ln_download_file_to_path(g_ln_last_package_url, save_path, g_ln_last_package_size);
+ dres = ln_download_file_to_path(fixed_url, save_path, g_ln_last_package_size);
}
if (dres != 0)
{