ota下载相关代码提交,雷鸟上验证下载经常失败
authorcheng <chengyf@zhihuishixun.com>
Sun, 21 Sep 2025 13:56:20 +0000 (21:56 +0800)
committercheng <chengyf@zhihuishixun.com>
Sun, 21 Sep 2025 13:56:20 +0000 (21:56 +0800)
code/sdk/application/wearable/ln/nativeapp/nativeui/include/uiservice/ui_service.h
code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdModel.cpp
code/sdk/application/wearable/ln/nativeapp/nativeui/uiservice/src/ui_service.cpp
code/sdk/zhihui/leiniao/imsl_ln/ln_api.c
code/sdk/zhihui/leiniao/ln_api_cpp/ln_api_interface.cpp

index c4a0410..d5a13b1 100644 (file)
@@ -49,6 +49,9 @@ typedef enum {
     UI_UPDATE_LANGUAGE,
     CONNECT_NEW_PHONE,
     UI_OTA_UPDATE,
+    /* -------------------------------------------------------------------------- */
+    HANDLE_JUMP_OTA_VIEW, //处理跳转ota界面
+    MAX_NUM_HANDLER, 
 } UiServiceMsgId;
 
 #define BUNDLE_NAME_LEN 128
index a94fec2..a3a446e 100644 (file)
      /*************************OTA升级状态*************************/
      void ThunderBirdModel::UpdateOtaStatus(int status)
      {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ThunderBirdModel::UpdateOtaStatus: %d", status);
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdModel::UpdateOtaStatus: %d", status);
         m_otaStatus = status;
+        // 更新状态检查
+        if(status == 1)//强制OTA升级
+        {
+            ThunderBirdMainView::GetInstance()->ChangeView(MAXVIEW, THUNDERBIRD_OTAVIEW, ThunderBirdOtaView::THUNDERBIRD_OTAVIEW_UPDATE_NOW);
+        }
+        else if(status == 0)//可选OTA升级
+        {
+            ThunderBirdMainView::GetInstance()->ChangeView(MAXVIEW, THUNDERBIRD_OTAVIEW, ThunderBirdOtaView::THUNDERBIRD_OTAVIEW_NORMAL);
+        }
      }
      /*************************获取OTA升级状态*************************/
      int ThunderBirdModel::GetOtaStatus()
              //存储kv
              (void)UtilsSetValue("bind_status", "1");
              WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdModel::CheckBindingStatus: 已绑定");
+             bind_status = true;
              return BindingStatus::BOUND;
          }
          else if(uapi_ln_is_device_bound() == 2)//认证失败
                 {
                     // 网络连接成功,调用HTTP服务获取设备Token
                     // 获取一下OTA 是否有最新版本
-                    ota_update_boot();
+                    int ota = ota_update_boot();
+                    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ota_update_boot:%d",ota);
                     WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Network connected, calling HTTP service");
                     #if JUHEPINGTAI
                     uapi_init_all_websocket_servers();
index ef81ce7..8496ed3 100644 (file)
@@ -40,6 +40,8 @@
 #include "NativeAbility.h"
 #include "TransitionType.h"
 
+#include "thunderbird/include/ThunderBirdModel.h"
+
 extern "C" errcode_t uapi_pm_add_sleep_veto(pm_id_t veto_id);
 extern "C" errcode_t uapi_pm_remove_sleep_veto(pm_id_t veto_id);
 
@@ -70,6 +72,25 @@ const int DATA_DIST_MAIL_LENGTH = 10;
 const int BYTE_OFFSET = 8;
 static uint32_t g_interval = 5;
 
+/* -------------------------------------------------------------------------- */
+// 消息处理程序的函数指针类型
+typedef void (*MsgHandlerFunc)(Request *);
+// 定义一个结构来保存消息处理程序
+typedef struct
+{
+    int msgId;
+    MsgHandlerFunc handler;
+} MsgHandlerEntry;
+
+// 消息处理程序的函数原型
+static void HandleJumpOtaView(Request *request);
+
+
+// 消息处理程序项数组(每个消息类型对应一个处理函数,函数名以 Handle 开头)
+MsgHandlerEntry msgHandlers[] = {
+    {HANDLE_JUMP_OTA_VIEW, HandleJumpOtaView},
+};
+/* -------------------------------------------------------------------------- */
 void ScreenTurnOn(int32_t timeout)
 {
     if (OHOS::HealthModel::GetInstance()->GetBriScrStatus() == 1) {
@@ -174,40 +195,17 @@ BOOL ServiceInitialize(Service *service, Identity identity)
 
 void ServiceMsgProcess(Request *request)
 {
-    switch (request->msgId) {
-        case JS_INSTALL_SUCESS_TO_UI:
-        case JS_UNINSTALL_SUCESS_TO_UI:
-            WEARABLE_LOGI(WEARABLE_LOG_MODULE_UI_SERVICE, "bms msg_id = %d bundleName = %s",
-                          request->msgId, ((BundleData *)request->data)->bundleName);
-            GraphicService::GetInstance()->PostGraphicEvent(
-                std::bind(&OHOS::ApplistModel::ApplistUpdate, &OHOS::ApplistModel::GetInstance()));
-            break;
-        case BT_CONNECTED_TO_UI:
-            GraphicService::GetInstance()->PostGraphicEvent(
-                std::bind(&OHOS::SettingModel::UpdateBlueToothConnectStatus, &OHOS::SettingModel::GetInstance(), true));
-            break;
-        case BT_DISCONNECTED_TO_UI:
-            GraphicService::GetInstance()->PostGraphicEvent(
-                std::bind(&OHOS::SettingModel::UpdateBlueToothConnectStatus, &OHOS::SettingModel::GetInstance(), false));
-            break;
-        case UI_ADD_SLEEP_VETO:
-            uapi_pm_add_sleep_veto(PM_ID_SCREEN);
-            break;
-        case UI_RM_SLEEP_VETO:
-            uapi_pm_remove_sleep_veto(PM_ID_SCREEN);
-            break;
-        case CONNECT_NEW_PHONE:
-            ConnectNewPhone();
-            break;
-        case UI_UPDATE_LANGUAGE:
-            OHOS::UILanguage::UpdateLanguage();
-            break;
-        case UI_OTA_UPDATE:
-            power_display_svr_get_api()->turn_on_screen();
-            OHOS::NativeAbility::GetInstance().ChangeSlice(VIEW_SET_OTA,
-                OHOS::TransitionType::TRANSITION_INVALID, OHOS::gSliceDefaultPriority, true);
-            break;
-    }
+        /* -------------------------------------------------------------------------- */
+        WEARABLE_LOGI(WEARABLE_LOG_MODULE_UI_SERVICE, "UiServiceMsgId = %d", request->msgId);
+        for (int i = 0; i < MAX_NUM_HANDLER; ++i)
+        {
+            if (msgHandlers[i].msgId == request->msgId)
+            {
+                msgHandlers[i].handler(request);
+                break;
+            }
+        }
+        /* -------------------------------------------------------------------------- */
 }
 
 BOOL ServiceMessageHandle(Service *service, Request *request)
@@ -281,6 +279,16 @@ void SendMsgToUIService(int32_t msgId, uint32_t msgValue, void *data, int32_t da
     comApi->Release((IUnknown *)comApi);
 }
 
+/* -------------------------------------------------------------------------- */
+void HandleJumpOtaView(Request *request)
+{
+    WEARABLE_LOGI(WEARABLE_LOG_MODULE_UI_SERVICE, "HandleJumpOtaView msg_id = %d",request->msgId);
+    // OHOS::ThunderBirdModel::GetInstance()->UpdateOtaStatus(status);
+    int status = *(int *)request->data;
+    GraphicService::GetInstance()->PostGraphicEvent(
+        std::bind(&OHOS::ThunderBirdModel::UpdateOtaStatus,OHOS::ThunderBirdModel::GetInstance(), status));
+}
+/* -------------------------------------------------------------------------- */
 #ifdef __cplusplus
 }
 #endif
index b265f17..a42e262 100644 (file)
@@ -1134,6 +1134,11 @@ static void ln_http_server_send_task(void const *arg)
         }
         if (mail.cmd == LN_HTTP_SERVICE_CMD_GET_DEVICE_TOKEN)
         {
+            if(get_is_ln_get_device_token_success() == 1)
+            {
+                printf("设备Token已经获取\n");
+                continue;
+            }
             printf("LN_HTTP_SERVICE_CMD_GET_DEVICE_TOKEN:获取雷鸟设备Token\n");
             uint32_t ret = ln_get_device_token_http(uapi_ln_get_device_id(), uapi_ln_get_device_iccid(), uapi_ln_get_device_model(), uapi_ln_get_device_version());
             if (ret == ERRCODE_SUCC) 
index 2cc4de9..575e40c 100644 (file)
@@ -1,5 +1,6 @@
 #include "ln_api_interface.h"
 #include "thunderbird/include/ThunderBirdModel.h"
+#include "uiservice/ui_service.h"
 
 #ifdef __cplusplus
 extern "C"
@@ -40,7 +41,8 @@ int get_is_ln_get_device_token_success(void)
 // 获取OTA升级完状态
 void push_ota_status(int status)
 {
-    OHOS::ThunderBirdModel::GetInstance()->UpdateOtaStatus(status);
+    int data = status;
+    SendMsgToUIService(HANDLE_JUMP_OTA_VIEW, status, &data, sizeof(data));
 }
 
 // 获取OTA升级进度