GeekTrack/2.Firmware/components/GeekOS/System/GeekOS.cpp

91 lines
2.5 KiB
C++

#include "GeekOS.h"
#include "stdio.h"
#include "Pages/AppFactory.h"
#include "System/PageManager/PageManager.h"
#include "Resource/ResourcePool.h"
#include "Pages/SystemInfos/SystemInfos.h"
static AppFactory factory;
static PageManager manager(&factory);
#define ACCOUNT_SEND_CMD(ACT, CMD)\
do{\
DataProc::ACT##_Info_t info;\
memset(&info, 0, sizeof(info));\
info.cmd = DataProc::CMD;\
DataProc::Center()->AccountMain.Notify(#ACT, &info, sizeof(info));\
}while(0)
/**
* @brief print the usage of memory infomation for lvgl.
* @param void
* @date 2022-08-12
* @retval void
*/
void GeekOSMemMonitor() {
lv_mem_monitor_t monitor;
lv_mem_monitor(&monitor);
printf("used: %6d (%3d %%), frag: %3d %%, biggest free: %6d\n",
(int)monitor.total_size - monitor.free_size,
monitor.used_pct,
monitor.frag_pct,
(int)monitor.free_biggest_size);
}
/**
* @brief Initialize the GeekOS page and lvgl config mode.
* @param void
* @date 2022-08-12
* @retval void
*/
void GeekOS_Init() {
/* Make sure the default group exists */
if (!lv_group_get_default())
{
lv_group_t* group = lv_group_create();
lv_group_set_default(group);
}
/* Initialize the data processing node */
DataProc_Init();
/* Set screen style */
lv_obj_t* scr = lv_scr_act();
lv_obj_remove_style_all(scr);
lv_obj_set_style_bg_opa(lv_scr_act(), LV_OPA_COVER, 0);
lv_obj_set_style_bg_color(lv_scr_act(), lv_color_black(), 0);
lv_obj_clear_flag(scr, LV_OBJ_FLAG_SCROLLABLE);
lv_disp_set_bg_color(lv_disp_get_default(), lv_color_black());
/* Set root default style */
static lv_style_t rootStyle;
lv_style_init(&rootStyle);
lv_style_set_width(&rootStyle, LV_HOR_RES);
lv_style_set_height(&rootStyle, LV_VER_RES);
lv_style_set_bg_opa(&rootStyle, LV_OPA_COVER);
lv_style_set_bg_color(&rootStyle, lv_color_black());
manager.SetRootDefaultStyle(&rootStyle);
/* Initialize resource pool */
ResourcePool::Init();
manager.Install("Launcher", "Pages/Launcher");
manager.Install("Template", "Pages/_Template");
manager.Install("Startup", "Pages/Startup");
manager.Install("SystemInfos", "Pages/SystemInfos");
/* Setting global lvgl load animation type */
manager.SetGlobalLoadAnimType(PageManager::LOAD_ANIM_OVER_TOP, 500);
/* launch the Startup Page. */
manager.Push("Pages/Startup");
/* show the current lvgl memory usage */
GeekOSMemMonitor();
}
void GeekOS_Uninit(){
}