//尽早显示启动logo ,需要 lcd 驱动,mount file system , power_display 线程管理 lcd背光\r
ohos_show_bootup_logo(); \r
\r
- button_app_init();\r
- \r
#ifdef SUPPORT_AT_VIBRATOR\r
uapi_vibrator_service_init();\r
#endif\r
\r
+#ifdef SUPPORT_OHOSFWK\r
+ // 提前启动开机动画和OHOS框架,避免被后续服务初始化延后\r
+ ohos_startup();\r
+#endif\r
+ \r
+ button_app_init();\r
+ \r
+\r
#ifdef CONFIG_SYSTEM_VIEW\r
SEGGER_SYSVIEW_Conf();\r
// 请在抓取systemview开始的地方调用SEGGER_SYSVIEW_Start接口\r
// uapi_gnss_http_server_init();\r
#endif\r
\r
-#ifdef SUPPORT_OHOSFWK\r
- //开始播放开机动画,并启动ohos系统\r
- ohos_startup();\r
-#endif\r
-\r
#ifdef SUPPORT_PPG_SERVICE\r
uapi_ppg_service_init();\r
#endif\r
#ifdef ENABLE_HP4570\r
#include "hp4570.h"\r
#endif\r
+#include "vibrator_service.h"\r
+\r
+#define POWER_ON_VOLTAGE_STABILIZE_MS 1000\r
+#define BOOT_FLOW_PREFIX "[BOOT_FLOW][开机流程] "\r
\r
// int32_t user_get_random_bytes(uint32_t size, uint8_t *randnum)\r
// {\r
{\r
float batV = 0.0f;\r
disable_charge();\r
- uapi_tcxo_delay_ms(1000);\r
+ uapi_tcxo_delay_ms(POWER_ON_VOLTAGE_STABILIZE_MS);\r
batteryservice_get_voltage_by_channel(&batV,ADC_CHANNEL_BAT_VOLTAGE);\r
enable_charge();\r
\r
\r
//#ifdef BOARD_LEINIAO\r
#ifdef ENABLE_UIKIT\r
+ PRINT(BOOT_FLOW_PREFIX "启动阶段:开机动画初始化开始\n");\r
boot_animation_init();\r
+ wait_animation_stop();\r
+ PRINT(BOOT_FLOW_PREFIX "启动阶段:开机动画播放结束\n");\r
+ boot_animation_init_deinit();\r
#endif\r
-wait_animation_stop();\r
-boot_animation_init_deinit();\r
//#endif\r
#if defined(CONFIG_OTA_UPDATE_SUPPORT) && defined(ENABLE_UIKIT)\r
//如果在升级状态,则不进入系统\r
OHOS::RootView::GetInstance()->Add(boot_group);
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, BOOT_FLOW_PREFIX "开机动画任务:开机动画开始播放");
ReBootImageAnimatorView->Start();
- },
- false);
+ });
}
void wait_animation_stop(void)
{
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, BOOT_FLOW_PREFIX "开机动画等待:开始等待动画结束");
+ uint32_t wait_seconds = 0;
+ static constexpr uint32_t BOOT_ANIM_WAIT_TIMEOUT_S = 15;
while (boot_animation_flag == false)
{
LOS_Msleep(1000);
+ wait_seconds++;
+ if (wait_seconds >= BOOT_ANIM_WAIT_TIMEOUT_S) {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,
+ BOOT_FLOW_PREFIX "开机动画等待:超过%u秒仍未结束,超时继续启动",
+ BOOT_ANIM_WAIT_TIMEOUT_S);
+ break;
+ }
}
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, BOOT_FLOW_PREFIX "开机动画等待:动画已结束");
}