From 5acc3e395a54be277768d4260958a973f1555e18 Mon Sep 17 00:00:00 2001 From: xue <2144439972@qq.com> Date: Wed, 29 Apr 2026 21:45:30 +0800 Subject: [PATCH] =?utf8?q?=E5=8D=87=E7=BA=A7=E4=B8=80=E6=AC=A1=E5=90=8E?= =?utf8?q?=E4=B8=8D=E8=B7=B3=E8=BD=AC=E7=BB=93=E6=9E=9C=EF=BC=8C=E7=BB=A7?= =?utf8?q?=E7=BB=AD=E5=81=9C=E7=95=99=E5=9C=A8=E5=8D=87=E7=BA=A7=E4=B8=AD?= =?utf8?q?=E7=95=8C=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../nativeapp/nativeui/ota/src/OtaModel.cpp | 19 +++++++++++++++++++ .../thunderbird/include/ThunderBirdModel.h | 2 ++ .../thunderbird/src/ThunderBirdModel.cpp | 14 ++++++++++++++ 3 files changed, 35 insertions(+) diff --git a/code/sdk/application/wearable/ln/nativeapp/nativeui/ota/src/OtaModel.cpp b/code/sdk/application/wearable/ln/nativeapp/nativeui/ota/src/OtaModel.cpp index f146a37ca..b84cc7873 100644 --- a/code/sdk/application/wearable/ln/nativeapp/nativeui/ota/src/OtaModel.cpp +++ b/code/sdk/application/wearable/ln/nativeapp/nativeui/ota/src/OtaModel.cpp @@ -301,6 +301,25 @@ namespace OHOS OtaSuccessView::GetInstance()->UpdateDownloadSuccess("模组升级失败"); } } else if (status == 4) { +#ifdef SUPPORT_CAT1_SERVICE + uint8_t maj = 0; + uint8_t mid = 0; + uint8_t min = 0; + const bool still_1047 = (uapi_get_fw_version(&maj, &mid, &min) == ERRCODE_SUCC && maj == 1 && mid == 0 && + min == 47); + const bool py_not_34 = (uapi_get_py_ver() != 34); + if (still_1047 && py_not_34) { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, + "CheckOtaResult: Cat1 ok, sw still 1.0.47 py=%u(!=34), stay updating for next round", + (unsigned)uapi_get_py_ver()); + SetOtaStatus(OTA_UI_STATUS_CAT1_START); + ThunderBirdModel::GetInstance()->PrepareCat1NextRoundAfterSuccess(); + if (OtaUpdatingView::GetInstance()) { + OtaUpdatingView::GetInstance()->UpdateProgress(0); + } + return; + } +#endif if (OtaView::GetInstance()) { OtaView::GetInstance()->ChangeView(OtaView::OTA_VIEW_UPDATING, OtaView::OTA_VIEW_UPDATE_SUCCESS); } diff --git a/code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/include/ThunderBirdModel.h b/code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/include/ThunderBirdModel.h index ef9a9096d..6599c6c13 100644 --- a/code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/include/ThunderBirdModel.h +++ b/code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/include/ThunderBirdModel.h @@ -97,6 +97,8 @@ namespace OHOS void UpdateOtaStatus(int status); int GetOtaStatus(); void ResetOtaStatus(); + /** Cat1 一轮成功但仍为 sw1.0.47 且 py!=34:留在升级中,拉下一轮 IS_CAT1 并轮询 URL */ + void PrepareCat1NextRoundAfterSuccess(); // 新手引导相关函数 enum class BindingStatus { BOUND = 0, // 已绑定 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 e12c095d5..e1a4ba546 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 @@ -845,6 +845,20 @@ static bool IsSoftwareVersion_1_0_47(void) m_bootCat1OtaAwaitNetwork = false; m_bootCat1OtaUrlsPending = false; } + + void ThunderBirdModel::PrepareCat1NextRoundAfterSuccess() + { +#ifdef SUPPORT_CAT1_SERVICE + m_otaStatus = OTA_UI_STATUS_CAT1_START; + m_bootCat1OtaUrlsPending = true; + (void)memset(g_ln_last_package_url_new1, 0, sizeof(g_ln_last_package_url_new1)); + (void)memset(g_ln_last_package_url_new2, 0, sizeof(g_ln_last_package_url_new2)); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, + "PrepareCat1NextRoundAfterSuccess: re-query Cat1 task, poll URLs then upgrade"); + do_ln_http_server_send_data(LN_HTTP_SERVICE_CMD_IS_CAT1_OTA_UPGRADE, NULL, 0); + StartStatusTimer(); +#endif + } // ==================== 恢复出厂设置相关函数 ==================== -- 2.17.1