static void lwip_main(void)
{
PRINT("lwip_main run start."NEWLINE);
- tcpip_init(NULL, NULL);
+ // tcpip_init(NULL, NULL);
}
#endif
* \r
*/\r
// #ifdef CUSTOM_UTILS\r
- ConfigModelInit();\r
// uapi_runtime_log_service_init();\r
init_btaddr_btname();\r
uapi_calendar_init();\r
button_app_init();\r
\r
#ifdef SUPPORT_AT_VIBRATOR\r
- uapi_vibrator_service_init();\r
+ // uapi_vibrator_service_init();\r
#endif\r
\r
#ifdef CONFIG_SYSTEM_VIEW\r
\r
\r
#ifdef SUPPORT_CAT1_SERVICE\r
- cat1_server_init();\r
+ // cat1_server_init();\r
#endif\r
\r
#ifdef SUPPORT_BLE_SERVICE\r
custom_i2c_init(I2C_BUS_2);\r
\r
#ifdef SUPPORT_CYWEE_SERVICE\r
- uapi_cywee_service_init();\r
+ // uapi_cywee_service_init();\r
#endif \r
\r
#ifdef ROTARYENCODER_MIXO\r
- uapi_mixo_service_init();\r
+ // uapi_mixo_service_init();\r
#endif\r
#ifdef SUPORT_MAG_SERVICE\r
- uapi_mag_service_init();\r
+ // uapi_mag_service_init();\r
#endif\r
\r
#ifdef ENABLE_LQBP002TA\r
- uapi_lqbp_service_init();\r
+ // uapi_lqbp_service_init();\r
#endif \r
\r
#ifdef ENABLE_BN02\r
- uapi_bp_service_init();\r
+ // uapi_bp_service_init();\r
#endif\r
\r
#ifdef SUPPORT_GYRO_SERVICE\r
- uapi_gyro_service_init();\r
+ // uapi_gyro_service_init();\r
#endif\r
\r
#endif\r
#endif\r
\r
#ifdef SUPPORT_GNSS\r
- gnss_uart_init();\r
+ // gnss_uart_init();\r
// uapi_gnss_http_server_init();\r
#endif\r
\r
#endif\r
\r
#ifdef SUPPORT_PPG_SERVICE\r
- uapi_ppg_service_init();\r
+ // uapi_ppg_service_init();\r
#endif\r
\r
#ifdef CUSTOM_UTILS\r
- startup_post_init();\r
+ // startup_post_init();\r
#endif\r
\r
set_startup_finish_flag();\r
#include "RecentManager.h"
#include "PageTransitionMgr.h"
#include <ConfigModelC.h>
+#include "components/root_view.h"
+#include "components/ui_view_group.h"
+#include "gfx_utils/color.h"
+#include "common/screen.h"
namespace OHOS {
return instance;
}
+// 静态变量:保存蓝色窗口的指针
+static OHOS::UIViewGroup *g_simple_blue_window = nullptr;
+
void NativeLauncher::InitNativeLauncher()
{
- //设置字体
- GraphicStartUp::InitFontEngine(MEM_POOL_UI_FONT, MEM_POOL_UI_FONT_SIZE,
- OHOS::VECTOR_FONT_DIR, DEFAULT_VECTOR_FONT_FILENAME);
-
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_LAUNCHER_FWK, "NativeLauncher::InitNativeLauncher");
-
- //初始化slice
- NativeRegisterManager::GetInstance().InitAllNativesSlices();
-
- //初始化屏幕亮度
- cm_initScreenBrightness();
-
- //设置默认首页
- NativeAbility::GetInstance().SetDefaultSliceId(VIEW_THUNDER_BIRD);
+ WEARABLE_LOGI(WEARABLE_LOG_MODULE_LAUNCHER_FWK, "InitNativeLauncher: Minimal startup - Blue window only");
+
+ // 获取根视图并清除所有现有视图
+ OHOS::RootView* rootView = OHOS::RootView::GetInstance();
+ if (rootView != nullptr) {
+ rootView->RemoveAll();
+ WEARABLE_LOGI(WEARABLE_LOG_MODULE_LAUNCHER_FWK, "Cleared all existing views from RootView");
+ }
+
+ // 如果蓝色窗口已存在,先删除
+ if (g_simple_blue_window != nullptr) {
+ if (rootView != nullptr) {
+ rootView->Remove(g_simple_blue_window);
+ }
+ delete g_simple_blue_window;
+ g_simple_blue_window = nullptr;
+ }
+
+ // 获取屏幕尺寸
+ int16_t width = OHOS::Screen::GetInstance().GetWidth();
+ int16_t height = OHOS::Screen::GetInstance().GetHeight();
+
+ // 创建简单的蓝色窗口
+ g_simple_blue_window = new OHOS::UIViewGroup();
+ if (g_simple_blue_window == nullptr) {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Failed to create blue window");
+ return;
+ }
+
+ // 设置窗口位置和大小(全屏)
+ g_simple_blue_window->SetPosition(0, 0, width, height);
+
+ // 设置蓝色背景 (ARGB格式: 0xFF0000FF = 蓝色,完全不透明)
+ g_simple_blue_window->SetStyle(OHOS::STYLE_BACKGROUND_COLOR, OHOS::Color::Blue().full);
+ g_simple_blue_window->SetStyle(OHOS::STYLE_BACKGROUND_OPA, 0xFF);
+
+ // 添加到根视图并刷新显示
+ if (rootView != nullptr) {
+ rootView->Add(g_simple_blue_window);
+ rootView->Invalidate();
+ WEARABLE_LOGI(WEARABLE_LOG_MODULE_LAUNCHER_FWK, "Blue window created and displayed: %dx%d", width, height);
+ }
}
}
-/*\r
- * Copyright (c) CompanyNameMagicTag Technologies Co., Ltd. 2023-2023. All rights reserved.\r
- * Description: The application core startup logo display.\r
- * Author: CompanyName\r
- * Create: 2022-02-19\r
- */\r
-\r
-#include "common_def.h"\r
-#include "debug_print.h"\r
-#include "system_init.h"\r
-#include "ohosfwk_startup.h"\r
-#ifdef ENABLE_UIKIT\r
-#include "graphic_service_wrapper.h"\r
-#endif\r
-#ifdef SUPPORT_POWER_MANAGER\r
-#include "power_display_service.h"\r
-#endif\r
-\r
-#if defined(CUSTOM_UTILS) && defined(BOARD_LEINIAO)\r
-#include "custom_utils.h"\r
-#endif\r
-\r
-#include "soc_lcd_api.h"\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
-// }\r
-\r
-// int32_t user_get_random(uint32_t *randnum)\r
-// {\r
-// return uapi_drv_cipher_trng_get_random(randnum);\r
-// }\r
-\r
-// int32_t mbedtls_adapt_register(void)\r
-// {\r
-// mbedtls_harden_cipher_func harden_cipher_func = { 0 };\r
-// harden_cipher_func.harden_trng_get_random = user_get_random,\r
-// harden_cipher_func.harden_trng_get_multi_random = user_get_random_bytes,\r
-\r
-// mbedtls_cipher_adapt_register_func(&harden_cipher_func);\r
-// return 0;\r
-// }\r
-\r
-void ohos_show_bootup_logo(void)\r
-{\r
- /* 未接lcd时不能调用图形相关类的实例 */\r
- if (!uapi_is_lcd_connect()) {\r
- return;\r
- }\r
-\r
-#if defined(CUSTOM_UTILS) && defined(BOARD_LEINIAO)\r
- PRINT("Turning on LCD backlight...\n");\r
- uapi_lcd_backlight_on();\r
- PRINT("LCD backlight turned on (CUSTOM_UTILS + BOARD_LEINIAO)\n");\r
-#endif\r
-\r
-#ifdef ENABLE_UIKIT\r
- InitGraphicService();\r
-#endif\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
-#if defined(A5133_DEMO_SERVER) || defined(A5133_DEMO_CLIENT)\r
- display_api->set_screen_set_keepon_timeout(-1);\r
-#else\r
- display_api->set_screen_set_keepon_timeout(25000);\r
-#endif\r
-#endif\r
-\r
-\r
-#if defined(CONFIG_OTA_UPDATE_SUPPORT) && defined(ENABLE_UIKIT)\r
- if (upg_check_upgrade_need_upgrade())\r
- { \r
- ShowGraphicOTALogo();\r
- }else{\r
- \r
- ShowGraphicLogo();\r
- }\r
-#else\r
-\r
-#ifdef ENABLE_UIKIT\r
- ShowGraphicLogo();\r
-#endif\r
-\r
-#endif\r
-}\r
-\r
-\r
-void ohos_startup()\r
-{\r
- // mbedtls_adapt_register();\r
- /* 未接lcd时不能调用图形相关类的实例 */\r
- if (!uapi_is_lcd_connect()) {\r
- return;\r
- }\r
- \r
-//#ifdef BOARD_LEINIAO\r
-#ifdef ENABLE_UIKIT\r
- boot_animation_init();\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
- if (upg_check_upgrade_need_upgrade()) return ;\r
-#endif\r
- OHOS_SystemInit();\r
-\r
-#ifdef PUBLISH_TEST_DATA\r
- PublishTestData();\r
-#endif\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
-#if !defined(A5133_DEMO_SERVER) && !defined(A5133_DEMO_CLIENT)\r
- display_api->set_screen_set_keepon_timeout(0);\r
-#endif\r
- // display_api->set_screen_set_keepon_timeout(5000);\r
-#endif\r
-}\r
+/*
+ * Copyright (c) CompanyNameMagicTag Technologies Co., Ltd. 2023-2023. All rights reserved.
+ * Description: The application core startup logo display.
+ * Author: CompanyName
+ * Create: 2022-02-19
+ */
+
+#include "common_def.h"
+#include "debug_print.h"
+#include "system_init.h"
+#include "ohosfwk_startup.h"
+#ifdef ENABLE_UIKIT
+#include "graphic_service_wrapper.h"
+#endif
+#ifdef SUPPORT_POWER_MANAGER
+#include "power_display_service.h"
+#endif
+
+#if defined(CUSTOM_UTILS) && defined(BOARD_LEINIAO)
+#include "custom_utils.h"
+#endif
+
+#include "soc_lcd_api.h"
+
+// int32_t user_get_random_bytes(uint32_t size, uint8_t *randnum)
+// {
+// return uapi_drv_cipher_trng_get_random_bytes(randnum, size);
+// }
+
+// int32_t user_get_random(uint32_t *randnum)
+// {
+// return uapi_drv_cipher_trng_get_random(randnum);
+// }
+
+// int32_t mbedtls_adapt_register(void)
+// {
+// mbedtls_harden_cipher_func harden_cipher_func = { 0 };
+// harden_cipher_func.harden_trng_get_random = user_get_random,
+// harden_cipher_func.harden_trng_get_multi_random = user_get_random_bytes,
+
+// mbedtls_cipher_adapt_register_func(&harden_cipher_func);
+// return 0;
+// }
+
+void ohos_show_bootup_logo(void)
+{
+ /* 未接lcd时不能调用图形相关类的实例 */
+ if (!uapi_is_lcd_connect()) {
+ return;
+ }
+
+#if defined(CUSTOM_UTILS) && defined(BOARD_LEINIAO)
+ PRINT("Turning on LCD backlight...\n");
+ uapi_lcd_backlight_on();
+ PRINT("LCD backlight turned on (CUSTOM_UTILS + BOARD_LEINIAO)\n");
+#endif
+
+#ifdef ENABLE_UIKIT
+ InitGraphicService();
+#endif
+#ifdef SUPPORT_POWER_MANAGER
+ const power_display_svr_api_t *display_api = power_display_svr_get_api();
+ display_api->turn_on_screen();
+#if defined(A5133_DEMO_SERVER) || defined(A5133_DEMO_CLIENT)
+ display_api->set_screen_set_keepon_timeout(-1);
+#else
+ display_api->set_screen_set_keepon_timeout(25000);
+#endif
+#endif
+
+
+#if defined(CONFIG_OTA_UPDATE_SUPPORT) && defined(ENABLE_UIKIT)
+ if (upg_check_upgrade_need_upgrade())
+ {
+ ShowGraphicOTALogo();
+ }else{
+
+ ShowGraphicLogoRed();
+ }
+#else
+
+#ifdef ENABLE_UIKIT
+ ShowGraphicLogoRed();
+#endif
+
+#endif
+}
+
+
+void ohos_startup()
+{
+ // mbedtls_adapt_register();
+ /* 未接lcd时不能调用图形相关类的实例 */
+ if (!uapi_is_lcd_connect()) {
+ return;
+ }
+
+//#ifdef BOARD_LEINIAO
+// #ifdef ENABLE_UIKIT
+// boot_animation_init();
+// #endif
+// wait_animation_stop();
+// boot_animation_init_deinit();
+//#endif
+#if defined(CONFIG_OTA_UPDATE_SUPPORT) && defined(ENABLE_UIKIT)
+ //如果在升级状态,则不进入系统
+ if (upg_check_upgrade_need_upgrade()) return ;
+#endif
+ OHOS_SystemInit();
+
+#ifdef PUBLISH_TEST_DATA
+ PublishTestData();
+#endif
+
+#ifdef SUPPORT_POWER_MANAGER
+ const power_display_svr_api_t *display_api = power_display_svr_get_api();
+ // display_api->turn_on_screen();
+#if !defined(A5133_DEMO_SERVER) && !defined(A5133_DEMO_CLIENT)
+ display_api->set_screen_set_keepon_timeout(0);
+#endif
+ // display_api->set_screen_set_keepon_timeout(5000);
+#endif
+}
}\r
return ret;\r
}\r
-\r
+static void nandflash_yaffs_mount(void)\r
+{\r
+ if (has_nandflash_init != 1) {\r
+ PRINT("\r\nnandflash not init skip mount.\r\n");\r
+ return ;\r
+ }\r
+ struct nand_driver_struct *freertos_nandflash_driver = get_nand_flash();\r
+ \r
+ PRINT("yaffs filesystem init start!\n");\r
+ int ret = formate_filesystem(freertos_nandflash_driver->total_block);\r
+ PRINT("yaffs filesystem init end!\n");\r
+#ifdef CUSTOM_ZHIHUI\r
+ ConfigModelInit();\r
+#endif\r
+}\r
/* 使用约束:中断和异常中,禁止sync操作 */\r
void nandflash_yaffs_sync(void)\r
{\r
if (get_mtd_info("nand") != 0) {\r
PRINT("get_mtd_info faild!\n");\r
}\r
- PRINT("yaffs filesystem init start!\n");\r
- int ret = formate_filesystem(freertos_nandflash_driver->total_block);\r
- PRINT("yaffs filesystem init end!\n");\r
+ // INSERT_YOUR_CODE\r
+ pthread_t yaffs_mount_thread;\r
+ pthread_create(&yaffs_mount_thread, NULL, nandflash_yaffs_mount, NULL);\r
has_nandflash_init = 1;\r
- return ret;\r
+ return 0;\r
}\r
\r
void nandflash_qspi_resume(void)\r
*/
void ShowGraphicLogo(void);
+/**
+ * @brief show red graphic logo (created directly in memory), for c language.
+ */
+void ShowGraphicLogoRed(void);
+
/**
* @brief hide graphic logo, for c language.
*/
#include "components/ui_image_animator.h"
#include "wearable_log.h"
#include "UiConfig.h"
+#include "gfx_utils/mem_api.h"
+#include "gfx_utils/graphic_types.h"
+#include <cstring>
#ifdef SUPPORT_CUSTOM_UI_COMPONENT
#include "uicomponents/UIComponents.h"
#endif
OHOS::RootView::GetInstance()->Remove(g_logo);
delete g_logo;
g_logo = nullptr;
- OHOS::ImageCacheManager::GetInstance().UnloadSingleRes(IMAGE_OPEN_LOGO_PATH);
- g_imgInfo = nullptr;
+ // 如果是直接创建的 ImageInfo(红色图片),需要释放内存
+ if (g_imgInfo != nullptr) {
+ if (g_imgInfo->data != nullptr) {
+ OHOS::UIFree(const_cast<uint8_t*>(g_imgInfo->data));
+ }
+ OHOS::UIFree(g_imgInfo);
+ g_imgInfo = nullptr;
+ } else {
+ // 如果是从文件加载的,使用原来的方式释放
+ OHOS::ImageCacheManager::GetInstance().UnloadSingleRes(IMAGE_OPEN_LOGO_PATH);
+ }
}
});
}
LOS_Msleep(500);
}
+ void ShowGraphicLogoRed(void)
+ {
+ if (g_showLogo)
+ {
+ return;
+ }
+ g_showLogo = true;
+
+ // 获取屏幕尺寸
+ int16_t width = OHOS::Screen::GetInstance().GetWidth();
+ int16_t height = OHOS::Screen::GetInstance().GetHeight();
+
+ // ARGB8888 格式,每个像素4字节
+ const uint16_t pixelByteSize = 4;
+ uint32_t dataSize = width * height * pixelByteSize;
+
+ // 分配像素数据内存
+ uint8_t *srcData = static_cast<uint8_t *>(OHOS::UIMalloc(dataSize));
+ if (srcData == nullptr) {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ShowGraphicLogoRed: failed to allocate pixel data");
+ g_showLogo = false;
+ return;
+ }
+
+ // 填充红色像素数据 (ARGB格式: A-R-G-B)
+ // 红色: R=255, G=0, B=0, A=255
+ for (uint32_t i = 0; i < dataSize; i += pixelByteSize) {
+ srcData[i] = 0; // B (Blue)
+ srcData[i + 1] = 0; // G (Green)
+ srcData[i + 2] = 255; // R (Red)
+ srcData[i + 3] = 255; // A (Alpha)
+ }
+
+ // 分配 ImageInfo 结构体内存
+ g_imgInfo = static_cast<OHOS::ImageInfo *>(OHOS::UIMalloc(sizeof(OHOS::ImageInfo)));
+ if (g_imgInfo == nullptr) {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ShowGraphicLogoRed: failed to allocate ImageInfo");
+ OHOS::UIFree(srcData);
+ g_showLogo = false;
+ return;
+ }
+
+ // 初始化 ImageInfo 结构体
+ memset(g_imgInfo, 0, sizeof(OHOS::ImageInfo));
+ g_imgInfo->header.width = width;
+ g_imgInfo->header.height = height;
+ g_imgInfo->header.colorMode = OHOS::ColorMode::ARGB8888;
+ g_imgInfo->dataSize = dataSize;
+ g_imgInfo->data = srcData;
+
+ // 创建 UIImageView 并设置
+ g_logo = new OHOS::UIImageView();
+ if (g_logo == nullptr) {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ShowGraphicLogoRed: failed to create UIImageView");
+ OHOS::UIFree(g_imgInfo);
+ OHOS::UIFree(srcData);
+ g_imgInfo = nullptr;
+ g_showLogo = false;
+ return;
+ }
+
+ g_logo->SetPosition(0, 0, width, height);
+ g_logo->SetAutoEnable(false);
+ g_logo->SetResizeMode(OHOS::UIImageView::CENTER);
+ g_logo->SetSrc(g_imgInfo);
+
+ GraphicService::GetInstance()->PostGraphicEvent(
+ []
+ {
+ OHOS::RootView::GetInstance()->Add(g_logo);
+ OHOS::RootView::GetInstance()->Invalidate();
+ });
+ LOS_Msleep(500);
+ }
+
void ShowGraphicOTALogo(void)
{