From: snickersun@163.com Date: Thu, 25 Apr 2024 09:36:57 +0000 (+0000) Subject: Merge #82 into xts_origin from refs/changes/82/head X-Git-Tag: release_V1.2.70_20241020_135402~1128^2 X-Git-Url: http://git.snicker.com.cn/Users/apple/Desktop/static/gitweb.css?a=commitdiff_plain;h=65066bc9b0d8f7b4da408fcdf4e82b978cf96a35;p=mirrors%2FFD230.git Merge #82 into xts_origin from refs/changes/82/head 添加OTA升级UI提示,recovery里还只能是白屏。 * refs/changes/82/head: (1 commits squashed) - 添加OTA升级UI提示,recovery里还只能是白屏。 Signed-off-by: snickersun@163.com Reviewed-by: snickersun@163.com Merged-by: snickersun@163.com CR-link: https://codeup.aliyun.com/64191456b9581d62e8f81ac0/FD230/change/82 --- diff --git a/code/sdk/application/brandy/brandy_recovery/app_os_init.c b/code/sdk/application/brandy/brandy_recovery/app_os_init.c index a6bff4cbb..70c760679 100755 --- a/code/sdk/application/brandy/brandy_recovery/app_os_init.c +++ b/code/sdk/application/brandy/brandy_recovery/app_os_init.c @@ -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(); diff --git a/code/sdk/application/brandy/brandy_recovery/recovery_display.c b/code/sdk/application/brandy/brandy_recovery/recovery_display.c index 207742dc2..2062f013a 100644 --- a/code/sdk/application/brandy/brandy_recovery/recovery_display.c +++ b/code/sdk/application/brandy/brandy_recovery/recovery_display.c @@ -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) { diff --git a/code/sdk/application/brandy/brandy_standard/thread_init.c b/code/sdk/application/brandy/brandy_standard/thread_init.c index 39a9ce575..69dfca780 100755 --- a/code/sdk/application/brandy/brandy_standard/thread_init.c +++ b/code/sdk/application/brandy/brandy_standard/thread_init.c @@ -73,6 +73,10 @@ #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) { diff --git a/code/sdk/application/wearable/nativeabilityfwk/src/StartNative.cpp b/code/sdk/application/wearable/nativeabilityfwk/src/StartNative.cpp index 11b005f5c..d25d83e53 100755 --- a/code/sdk/application/wearable/nativeabilityfwk/src/StartNative.cpp +++ b/code/sdk/application/wearable/nativeabilityfwk/src/StartNative.cpp @@ -7,6 +7,7 @@ void StartNative() { OHOS::NativeLauncher::GetInstance().InitNativeLauncher(); HideGraphicLogo(); + HideGraphicOtaLogo(); Want *info = static_cast(AdapterMalloc(sizeof(Want))); OHOS::NativeAbility::GetInstance().OnActive(*info); AdapterFree(info); diff --git a/code/sdk/application/wearable/ohos_startup/ohosfwk_startup.c b/code/sdk/application/wearable/ohos_startup/ohosfwk_startup.c index 01279dd76..6ccddede2 100755 --- a/code/sdk/application/wearable/ohos_startup/ohosfwk_startup.c +++ b/code/sdk/application/wearable/ohos_startup/ohosfwk_startup.c @@ -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(); diff --git a/code/sdk/application/wstp/at_service/app/app_at_process.c b/code/sdk/application/wstp/at_service/app/app_at_process.c index 136ea7faa..963d19f66 100755 --- a/code/sdk/application/wstp/at_service/app/app_at_process.c +++ b/code/sdk/application/wstp/at_service/app/app_at_process.c @@ -1934,8 +1934,8 @@ uint32_t lcd_fill(uint8_t *data, uint32_t data_len) td_handle vau_handle; ext_vau_surface src_surface = {0}; - src_surface.width = 454; // 454 screen width - src_surface.height = 454; // 454 screen height + src_surface.width = 466; // 454 screen width + src_surface.height = 466; // 454 screen height src_surface.phy_addr = LCD_FILL_COLOR_ADDR; src_surface.vir_addr = (td_uchar *)src_surface.phy_addr; src_surface.color_fmt = EXT_GFX_FMT_ARGB8888; @@ -1945,7 +1945,7 @@ uint32_t lcd_fill(uint8_t *data, uint32_t data_len) src_surface.rect.y = 0; src_surface.rect.width = src_surface.width; src_surface.rect.height = src_surface.height; - src_surface.stride = 1824; /* 454 * 32 / 8 = 1816 16字节对齐得1824 */ + src_surface.stride = 1872; /* 454 * 32 / 8 = 1816 16字节对齐得1824 | 466 * 32 / 8 = 1864 16字节对齐得1872*/ src_surface.is_color_surface = TD_TRUE; src_surface.color = color_input; 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 index 000000000..f7689f22c 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 index 48c0d8f34..000000000 Binary files a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/system/logo.bin and /dev/null differ diff --git a/code/sdk/middleware/services/gui/uikit/proprietary/include/service/graphic_service_wrapper.h b/code/sdk/middleware/services/gui/uikit/proprietary/include/service/graphic_service_wrapper.h index d7f3dd6b9..ca6945dd6 100755 --- a/code/sdk/middleware/services/gui/uikit/proprietary/include/service/graphic_service_wrapper.h +++ b/code/sdk/middleware/services/gui/uikit/proprietary/include/service/graphic_service_wrapper.h @@ -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 diff --git a/code/sdk/middleware/services/gui/uikit/proprietary/src/service/src/graphic_service_wrapper.cpp b/code/sdk/middleware/services/gui/uikit/proprietary/src/service/src/graphic_service_wrapper.cpp index 67eb5defe..dbff032f3 100755 --- a/code/sdk/middleware/services/gui/uikit/proprietary/src/service/src/graphic_service_wrapper.cpp +++ b/code/sdk/middleware/services/gui/uikit/proprietary/src/service/src/graphic_service_wrapper.cpp @@ -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