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();
surface->update_rect = update_rect;
surface->color_fmt = layer_info->layer_fmt;
surface->compress_mode = EXT_GFX_COMPRESS_NONE;
+
return ERRCODE_SUCC;
}
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) {
#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"
}
#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 &&
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) {
void StartNative() {
OHOS::NativeLauncher::GetInstance().InitNativeLauncher();
HideGraphicLogo();
+ HideGraphicOtaLogo();
Want *info = static_cast<Want *>(AdapterMalloc(sizeof(Want)));
OHOS::NativeAbility::GetInstance().OnActive(*info);
AdapterFree(info);
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();
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
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
* @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
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)
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;
},
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