Merge #82 into xts_origin from refs/changes/82/head 83/target/1
authorsnickersun@163.com <accounts_62b90f7fcf51ade33b6f628e@mail.teambition.com>
Thu, 25 Apr 2024 09:36:57 +0000 (09:36 +0000)
committersnickersun@163.com <accounts_62b90f7fcf51ade33b6f628e@mail.teambition.com>
Thu, 25 Apr 2024 09:36:57 +0000 (09:36 +0000)
添加OTA升级UI提示,recovery里还只能是白屏。

* refs/changes/82/head: (1 commits squashed)

  - 添加OTA升级UI提示,recovery里还只能是白屏。

Signed-off-by: snickersun@163.com <accounts_62b90f7fcf51ade33b6f628e@mail.teambition.com>
Reviewed-by: snickersun@163.com <accounts_62b90f7fcf51ade33b6f628e@mail.teambition.com>
Merged-by: snickersun@163.com <accounts_62b90f7fcf51ade33b6f628e@mail.teambition.com>
link: https://codeup.aliyun.com/64191456b9581d62e8f81ac0/FD230/change/82
code/sdk/application/brandy/brandy_recovery/app_os_init.c
code/sdk/application/brandy/brandy_recovery/recovery_display.c
code/sdk/application/brandy/brandy_standard/thread_init.c
code/sdk/application/wearable/nativeabilityfwk/src/StartNative.cpp
code/sdk/application/wearable/ohos_startup/ohosfwk_startup.c
code/sdk/application/wstp/at_service/app/app_at_process.c
code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/system/OTAUpdata.bin [new file with mode: 0644]
code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/system/logo.bin [deleted file]
code/sdk/middleware/services/gui/uikit/proprietary/include/service/graphic_service_wrapper.h
code/sdk/middleware/services/gui/uikit/proprietary/src/service/src/graphic_service_wrapper.cpp

index a6bff4c..70c7606 100755 (executable)
@@ -184,7 +184,7 @@ static void app_main(const void *unused)
     recovery_display_init();
 #endif
     printf("fs init success.\r\n");
-    // recovery_display_sample();
+    recovery_display_sample();
 #ifdef CFG_DRIVERS_NANDFLASH
     //为了加速启动,把最耗时的mount_user_res_partition分区放到显示log之后
     mount_user_res_partition();
index 207742d..2062f01 100644 (file)
@@ -87,6 +87,7 @@ static errcode_t recovery_dispay_layer_and_surface_init(ext_dpu_surface *surface
     surface->update_rect = update_rect;
     surface->color_fmt = layer_info->layer_fmt;
     surface->compress_mode = EXT_GFX_COMPRESS_NONE;
+    
 
     return ERRCODE_SUCC;
 }
@@ -98,11 +99,11 @@ void recovery_display_sample(void)
     ext_dpu_surface surface = {0};
     ext_dpu_layer_info layer_info = {0};
     ext_rect update_rect = {0, 0, 466, 466}; // 定义一个局部区域
-    // ext_rect update_rect = {0, 133, 454, 200}; // 定义一个局部区域
+    // ext_rect update_rect = {223, 223, 20, 20}; // 定义一个局部区域
 
     recovery_dispay_layer_and_surface_init(&surface, &layer_info, &update_rect);
     // 设置layer全白色, 也可以使用接口 recovery_dispay_read_image_and_savein_surface 实现从文件系统读图片
-    memset_s((void *)surface.phy_addr, surface.size, 0xff, surface.size);
+    memset_s((void *)surface.phy_addr, surface.size, 0xFF, surface.size);
     //recovery_dispay_read_image_and_savein_surface("/user/dpu_screen_cap.bin",&surface);
     ret = uapi_dpu_create_layer(&layer_info, &dpu_handle);
     if (ret != ERRCODE_SUCC) {
index 39a9ce5..69dfca7 100755 (executable)
 #ifdef SUPPORT_MEDIA_AUDIO_MANAGER
 #include "audio_manager_c_wrapper.h"
 #endif
+
+#ifdef CONFIG_OTA_UPDATE_SUPPORT
+#include "graphic_service_wrapper.h"
+#endif
 #include "clocks_config.h"
 #include "sys/time.h"
 #include "time.h"
@@ -243,18 +247,20 @@ static void print_system_sleep_info(void)
 }
 
 #ifdef CONFIG_OTA_UPDATE_SUPPORT
-static void upg_check_upgrade(void)
+
+bool upg_check_upgrade_need_upgrade(void)
 {
+
     uint32_t fota_address = 0;
     errcode_t ret_val = (errcode_t)upg_get_upgrade_flag_flash_start_addr(&fota_address);
     if (ret_val != ERRCODE_SUCC) {
-        return;
+        return false;
     }
 
     fota_upgrade_flag_area_t upg_flag_info;
     ret_val = (errcode_t)upg_flash_read(fota_address, sizeof(fota_upgrade_flag_area_t), (uint8_t *)(&upg_flag_info));
     if (ret_val != ERRCODE_SUCC) {
-        return;
+        return false;
     }
 
     if (!(upg_flag_info.head_magic == UPG_HEAD_MAGIC &&
@@ -262,9 +268,18 @@ static void upg_check_upgrade(void)
           upg_flag_info.complete_flag == UPG_FLAG_MAGIC)) {
         /* 不需要升级直接返回 */
         PRINT("No need to upgrade...\r\n");
-        return;
+        return false;
     }
-
+    return true;
+}
+static void upg_check_upgrade(void)
+{
+    
+    errcode_t ret_val ;
+    if (upg_check_upgrade_need_upgrade() == false)
+    {
+        return ;
+    }    
     PRINT("upgrading.......\r\n");
     ret_val = uapi_upg_start();
     if (ret_val != ERRCODE_SUCC) {
index 11b005f..d25d83e 100755 (executable)
@@ -7,6 +7,7 @@
 void StartNative() {
     OHOS::NativeLauncher::GetInstance().InitNativeLauncher();
     HideGraphicLogo();
+    HideGraphicOtaLogo();
     Want *info = static_cast<Want *>(AdapterMalloc(sizeof(Want)));
     OHOS::NativeAbility::GetInstance().OnActive(*info);
     AdapterFree(info);
index 01279dd..6ccdded 100755 (executable)
@@ -57,11 +57,22 @@ void ohos_startup()
     display_api->set_screen_set_keepon_timeout(15000);
 #endif
 
-    
+
+#if defined(CONFIG_OTA_UPDATE_SUPPORT) && defined(ENABLE_UIKIT)
+ if  (upg_check_upgrade_need_upgrade())
+ {
+    ShowGraphicOTALogo();
+ }else{
+    ShowGraphicLogo();
+ }
+#else
+
 #ifdef ENABLE_UIKIT
     ShowGraphicLogo();
 #endif
 
+#endif
+
 #ifdef CFG_DRIVERS_NANDFLASH
     //为了加速启动,把最耗时的mount分区放到显示log之后
     mount_user_res_partition();
index 136ea7f..963d19f 100755 (executable)
@@ -1934,8 +1934,8 @@ uint32_t lcd_fill(uint8_t *data, uint32_t data_len)
     td_handle vau_handle;\r
     ext_vau_surface src_surface = {0};\r
 \r
-    src_surface.width            = 454; // 454 screen width\r
-    src_surface.height           = 454; // 454 screen height\r
+    src_surface.width            = 466; // 454 screen width\r
+    src_surface.height           = 466; // 454 screen height\r
     src_surface.phy_addr         = LCD_FILL_COLOR_ADDR;\r
     src_surface.vir_addr         = (td_uchar *)src_surface.phy_addr;\r
     src_surface.color_fmt        = EXT_GFX_FMT_ARGB8888;\r
@@ -1945,7 +1945,7 @@ uint32_t lcd_fill(uint8_t *data, uint32_t data_len)
     src_surface.rect.y           = 0;\r
     src_surface.rect.width       = src_surface.width;\r
     src_surface.rect.height      = src_surface.height;\r
-    src_surface.stride           = 1824; /* 454 * 32 / 8 = 1816 16字节对齐得1824 */\r
+    src_surface.stride           = 1872; /* 454 * 32 / 8 = 1816 16字节对齐得1824 | 466 * 32 / 8 = 1864 16字节对齐得1872*/\r
     src_surface.is_color_surface = TD_TRUE;\r
     src_surface.color            = color_input;\r
 \r
diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/system/OTAUpdata.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/system/OTAUpdata.bin
new file mode 100644 (file)
index 0000000..f7689f2
Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/system/OTAUpdata.bin differ
diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/system/logo.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/system/logo.bin
deleted file mode 100644 (file)
index 48c0d8f..0000000
Binary files a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/system/logo.bin and /dev/null differ
index d7f3dd6..ca6945d 100755 (executable)
@@ -53,12 +53,12 @@ void InitGraphicService(void);
  * @brief show graphic logo, for c language.
  */
 void ShowGraphicLogo(void);
-
+void ShowGraphicOTALogo(void);
 /**
  * @brief hide graphic logo, for c language.
  */
 void HideGraphicLogo(void);
-
+void HideGraphicOtaLogo(void);
 #ifdef __cplusplus
 };
 #endif
index 67eb5de..dbff032 100755 (executable)
@@ -38,10 +38,16 @@ static bool g_showLogo = false;
 static OHOS::UIImageView* g_logo = nullptr;
 static OHOS::ImageInfo* g_imgInfo = nullptr;
 
+static bool g_showOtaLogo = false;
+static OHOS::UIImageView* g_ota_logo = nullptr;
+static OHOS::ImageInfo* g_ota_imgInfo = nullptr;
+
 #ifdef QSPI_DISPLAY
 #define IMAGE_OPEN_LOGO_PATH "/user/res/OPEN_LOGO_QSPI.bin"
 #else
 #define IMAGE_OPEN_LOGO_PATH "/system/KUMI_LOGO.bin"
+#define IMAGE_OTA_LOGO_PATH "/system/OTAUpdata.bin"
+
 #endif
 
 static void UikitRTCCallBack(uintptr_t data)
@@ -134,7 +140,44 @@ void InitGraphicService(void)
     g_initialized = true;
 }
 
-void ShowGraphicLogo()
+void HideGraphicLogo()
+{
+    if (!g_showLogo) {
+        return;
+    }
+    g_showLogo = false;
+    OHOS::GraphicEventHandler::GetInstance()->PostGraphicEvent(
+        [] {
+            if (g_logo != nullptr) {
+                OHOS::RootView::GetInstance()->Remove(g_logo);
+                delete g_logo;
+                g_logo = nullptr;
+                OHOS::ImageCacheManager::GetInstance().UnloadSingleRes(IMAGE_OPEN_LOGO_PATH);
+                g_imgInfo = nullptr;
+            }
+        },
+        false);
+}
+
+void HideGraphicOtaLogo()
+{
+    if (!g_showOtaLogo) {
+        return;
+    }
+    g_showOtaLogo = false;
+    OHOS::GraphicEventHandler::GetInstance()->PostGraphicEvent(
+        [] {
+            if (g_ota_logo != nullptr) {
+                OHOS::RootView::GetInstance()->Remove(g_ota_logo);
+                delete g_ota_logo;
+                g_ota_logo = nullptr;
+                OHOS::ImageCacheManager::GetInstance().UnloadSingleRes(IMAGE_OTA_LOGO_PATH);
+                g_ota_imgInfo = nullptr;
+            }
+        },
+        false);
+}
+void ShowGraphicLogo(void)
 {
     if (g_showLogo) {
         return;
@@ -153,26 +196,25 @@ void ShowGraphicLogo()
         },
         false);
 }
-
-void HideGraphicLogo()
+void ShowGraphicOTALogo(void)
 {
-    if (!g_showLogo) {
+    if (g_showOtaLogo) {
         return;
     }
-    g_showLogo = false;
+    g_showOtaLogo = true;
+    g_ota_logo = new OHOS::UIImageView();
+    g_ota_logo->SetPosition(0, 0, OHOS::Screen::GetInstance().GetWidth(), OHOS::Screen::GetInstance().GetHeight());
+    g_ota_logo->SetAutoEnable(false);
+    g_ota_logo->SetResizeMode(OHOS::UIImageView::CENTER);
+    g_ota_imgInfo = OHOS::ImageCacheManager::GetInstance().LoadSingleRes(IMAGE_OTA_LOGO_PATH);
+    g_ota_logo->SetSrc(g_ota_imgInfo);
     OHOS::GraphicEventHandler::GetInstance()->PostGraphicEvent(
         [] {
-            if (g_logo != nullptr) {
-                OHOS::RootView::GetInstance()->Remove(g_logo);
-                delete g_logo;
-                g_logo = nullptr;
-                OHOS::ImageCacheManager::GetInstance().UnloadSingleRes(IMAGE_OPEN_LOGO_PATH);
-                g_imgInfo = nullptr;
-            }
+            OHOS::RootView::GetInstance()->Add(g_ota_logo);
+            OHOS::RootView::GetInstance()->Invalidate();
         },
         false);
 }
-
 #ifdef __cplusplus
 };
 #endif