Files
Power-Pico/Power_Pico/User/GUI/ui.c

147 lines
3.9 KiB
C
Raw Normal View History

2025-08-05 16:06:46 +08:00
// LVGL version: 9.2
// Project name: PowerPico
2025-10-18 19:23:22 +08:00
#include "BL24C02.h" // system settings
2025-11-26 19:16:32 +08:00
#include "rtc.h" // elapsed time
2025-09-22 21:45:02 +08:00
#include "./ui.h"
2025-11-26 19:16:32 +08:00
#include "./screens/ui_StartPage.h"
2025-09-22 21:45:02 +08:00
#include "./screens/ui_mainPage.h"
#include "./screens/ui_chartPage.h"
2025-10-09 19:54:56 +08:00
#include "./screens/ui_SetPage.h"
2025-08-05 16:06:46 +08:00
2025-11-26 19:16:32 +08:00
//////////// interface for system hw settings ///////////
// get functions
void ui_GetElapsedTime_HMS(uint8_t *hours, uint8_t *minutes, uint8_t *seconds) {
GetElapsedTime_HMS(hours, minutes, seconds);
}
uint8_t ui_get_back_light_level(void) {
return Sys_Get_BacklightLevel();
}
bool ui_get_key_sound_enable(void) {
return Sys_Get_KeySoundEnable();
}
uint16_t ui_get_display_rotation(void) {
return Sys_Get_Rotation();
}
// set functions
void ui_set_back_light_level(uint8_t level) {
Sys_Set_BacklightLevel(level);
}
void ui_set_key_sound_enable(bool enable) {
Sys_Set_KeySoundEnable(enable);
}
void ui_set_display_rotation(uint16_t rotation) {
Sys_Set_Rotation(rotation);
}
// sys save function
void ui_system_settings_save(void) {
EEPROM_SysSetting_Save();
}
2025-08-05 16:06:46 +08:00
///////////////////// VARIABLES ////////////////////
2025-08-12 18:43:38 +08:00
// pages
2025-09-22 21:45:02 +08:00
Page_t pages[] = {
{
.init = ui_main_screen_init,
.deinit = ui_main_screen_destroy,
.page_obj = &ui_HomeScreen,
2025-09-27 10:51:54 +08:00
.key_event_handler = ui_main_page_key_handler,
2025-09-22 21:45:02 +08:00
.name = "Main Page"
},
2025-11-25 19:53:37 +08:00
// {
// .init = ui_ChartPage_screen_init,
// .deinit = ui_ChartPage_screen_destroy,
// .page_obj = &ui_ChartPage,
// .key_event_handler = ui_chart_page_key_handler,
// .name = "Chart Page"
// },
{
2025-10-09 19:54:56 +08:00
.init = ui_SetPage_screen_init,
.deinit = ui_SetPage_screen_destroy,
.page_obj = &ui_SetPage,
.key_event_handler = ui_set_page_key_handler,
.name = "Set Page"
},
2025-09-22 21:45:02 +08:00
// 可以在这里添加更多页面
};
2025-08-05 16:06:46 +08:00
///////////////////// TEST LVGL SETTINGS ////////////////////
#if LV_COLOR_DEPTH != 16
#error "LV_COLOR_DEPTH should be 16bit to match SquareLine Studio's settings"
#endif
2025-10-19 11:59:09 +08:00
///////////////////// help funtions ////////////////////
void ui_full_screen_refresh(lv_obj_t * screen) {
// 标记整个屏幕为脏区域
lv_obj_invalidate(screen);
// 或者立即刷新整个屏幕
lv_refr_now(NULL);
}
2025-08-05 16:06:46 +08:00
/////////////////////// Timer //////////////////////
2025-11-26 19:16:32 +08:00
2025-08-05 16:06:46 +08:00
/**
* Main timer for Refreshing the screens
*/
static void main_timer(lv_timer_t * timer)
{
2025-11-26 19:16:32 +08:00
static uint8_t first_time_in = 0;
static uint8_t count = 0;
static uint8_t backlight_level = 0; // 初始亮度为 0%
static uint8_t target_backlight_level = 0; // 目标亮度
if (first_time_in == 0) {
// 获取目标亮度
target_backlight_level = ui_get_back_light_level();
first_time_in = 1;
}
// 调整背光亮度
if (backlight_level < target_backlight_level) {
backlight_level++;
ui_set_back_light_level(backlight_level); // 设置当前亮度
} else {
// 初始化页面并加载主要界面
PageManager_init();
for (uint8_t i = 0; i < sizeof(pages) / sizeof(pages[0]); i++) {
PageManager_register(&pages[i]);
}
PageManager_load_init_screen();
// 停止定时器,避免重复初始化
lv_timer_del(timer);
}
2025-08-05 16:06:46 +08:00
}
/////////////////////// ui_initialize //////////////////////
void ui_init(void)
{
lv_disp_t * dispp = lv_display_get_default();
lv_theme_t * theme = lv_theme_default_init(dispp, lv_palette_main(LV_PALETTE_BLUE), lv_palette_main(LV_PALETTE_RED),
true, LV_FONT_DEFAULT);
lv_disp_set_theme(dispp, theme);
2025-08-12 18:43:38 +08:00
2025-11-26 19:16:32 +08:00
// set system settings
ui_set_display_rotation(ui_get_display_rotation());
// timer
lv_timer_t * ui_MainTimer = lv_timer_create(main_timer, 50, NULL);
// start up, just load one time only
ui_StartPage_screen_init();
lv_scr_load(ui_StartPage);
2025-08-05 16:06:46 +08:00
}