升级一次后不跳转结果,继续停留在升级中界面 3392/1 3392/head 3393/target/1 3394/target/1
authorxue <2144439972@qq.com>
Wed, 29 Apr 2026 13:45:30 +0000 (21:45 +0800)
committerxue <2144439972@qq.com>
Wed, 29 Apr 2026 13:45:30 +0000 (21:45 +0800)
code/sdk/application/wearable/ln/nativeapp/nativeui/ota/src/OtaModel.cpp
code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/include/ThunderBirdModel.h
code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdModel.cpp

index f146a37..b84cc78 100644 (file)
@@ -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);
             }
index ef9a909..6599c6c 100644 (file)
@@ -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,      // 已绑定
index e12c095..e1a4ba5 100644 (file)
@@ -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
+     }
      
 
      // ==================== 恢复出厂设置相关函数 ====================