电压过低增加充电显示 3314/1 3314/head 3315/target/1
authorxue <2144439972@qq.com>
Fri, 27 Mar 2026 01:52:21 +0000 (09:52 +0800)
committerxue <2144439972@qq.com>
Fri, 27 Mar 2026 01:52:21 +0000 (09:52 +0800)
code/sdk/application/wearable/ohos_startup/ohosfwk_startup.c
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 4bb906c..2001387 100644 (file)
 #include "battery_service.h"\r
 #endif\r
 \r
+#ifdef ENABLE_HP4570\r
+#include "hp4570.h"\r
+#endif\r
+\r
 // int32_t user_get_random_bytes(uint32_t size, uint8_t *randnum)\r
 // {\r
 //     return uapi_drv_cipher_trng_get_random_bytes(randnum, size);\r
@@ -142,10 +146,33 @@ void ohos_show_bootup_logo(void)
 \r
     if(check_power_on_voltage())\r
     {\r
+        #if defined(SUPPORT_BATTERY_SERVICE)\r
+\r
+        extern uint8_t get_charge_stat(void);\r
+        if(!get_charge_stat())\r
+        {\r
+            PRINT("low power, need charge\n");\r
+            uapi_tcxo_delay_ms(1000);\r
+            mcu_poweroff();\r
+            return;\r
+        }\r
+\r
+        #ifdef ENABLE_HP4570\r
+    hp4570n_init(HP4570N);\r
+        #endif\r
         //显示充电图片\r
+            ShowGraphicChargingLogo();\r
+\r
 \r
         while(1)\r
         {\r
+            if(!get_charge_stat())\r
+        {\r
+            PRINT("low power, need charge\n");\r
+            uapi_tcxo_delay_ms(1000);\r
+            mcu_poweroff();\r
+            return;\r
+        }\r
             #ifdef SUPPORT_POWER_MANAGER\r
                 const power_display_svr_api_t *display_api = power_display_svr_get_api();\r
                 display_api->turn_on_screen();\r
@@ -159,6 +186,7 @@ void ohos_show_bootup_logo(void)
             else\r
                 mcu_reset();\r
         }\r
+        #endif\r
     }\r
 \r
 \r
index 002cc4b..056f8c9 100644 (file)
@@ -93,6 +93,9 @@ void GpuResetEnd(void);
 void ShowGraphicOTALogo(void);
 void HideGraphicOtaLogo(void);
 /* -------------------------------------------------------------------------- */
+void ShowGraphicChargingLogo(void);
+void HideGraphicChargingLogo(void);
+/* -------------------------------------------------------------------------- */
 
 #ifdef __cplusplus
 };
index 5438c52..3ca5587 100644 (file)
@@ -54,6 +54,10 @@ extern "C"
     static OHOS::UIImageView *g_ota_logo = nullptr;
     static OHOS::ImageInfo *g_ota_imgInfo = nullptr;
 
+    static bool g_showChargingLogo = false;
+    static OHOS::UIImageView *g_charging_logo = nullptr;
+    static OHOS::ImageInfo *g_charging_imgInfo = nullptr;
+
     static uint32_t *g_boot_animation_task_handle = NULL;
 
     static OHOS::UIViewGroup *group = nullptr;
@@ -144,6 +148,12 @@ extern "C"
     #else
         #define IMAGE_OPEN_LOGO_PATH "/system/FOOING_LOGO.bin"
     #endif
+
+    #ifdef SINGLE_USER_PARTITION
+        #define IMAGE_CHARGING_LOGO_PATH "/user/res/charge/20.bin"
+    #else
+        #define IMAGE_CHARGING_LOGO_PATH "/res/charge/20.bin"
+    #endif
     
 #else
     // 默认通用Logo
@@ -502,6 +512,25 @@ extern "C"
             });
     }
 
+    void HideGraphicChargingLogo(void)
+    {
+        if (!g_showChargingLogo) {
+            return;
+        }
+        g_showChargingLogo = false;
+        GraphicService::GetInstance()->PostGraphicEvent(
+            []
+            {
+                if (g_charging_logo != nullptr) {
+                    OHOS::RootView::GetInstance()->Remove(g_charging_logo);
+                    delete g_charging_logo;
+                    g_charging_logo = nullptr;
+                    OHOS::ImageCacheManager::GetInstance().UnloadSingleRes(IMAGE_CHARGING_LOGO_PATH);
+                    g_charging_imgInfo = nullptr;
+                }
+            });
+    }
+
     static void boot_animation_task(void *arg)
     {
         unused(arg);
@@ -514,6 +543,7 @@ extern "C"
         }
         HideGraphicLogo();
         HideGraphicOtaLogo();
+        HideGraphicChargingLogo();
         OHOS::GraphicEventHandler::GetInstance()->PostGraphicEvent(
             []
             {
@@ -576,6 +606,27 @@ extern "C"
         LOS_Msleep(500);
     }
 
+    void ShowGraphicChargingLogo(void)
+    {
+        if (g_showChargingLogo) {
+            return;
+        }
+        g_showChargingLogo = true;
+        g_charging_logo = new OHOS::UIImageView();
+        g_charging_logo->SetPosition(0, 0, OHOS::Screen::GetInstance().GetWidth(), OHOS::Screen::GetInstance().GetHeight());
+        g_charging_logo->SetAutoEnable(false);
+        g_charging_logo->SetResizeMode(OHOS::UIImageView::CENTER);
+        g_charging_imgInfo = OHOS::ImageCacheManager::GetInstance().LoadSingleRes(IMAGE_CHARGING_LOGO_PATH);
+        g_charging_logo->SetSrc(g_charging_imgInfo);
+        GraphicService::GetInstance()->PostGraphicEvent(
+            []
+            {
+                OHOS::RootView::GetInstance()->Add(g_charging_logo);
+                OHOS::RootView::GetInstance()->Invalidate();
+            });
+        LOS_Msleep(500);
+    }
+
     //开机动画初始化
     void boot_animation_init_deinit(void)
     {