KT24-1110_65E-HA-651B/apps/soundbox/ui/lcd/ui_sys_param_api.c

297 lines
8.2 KiB
C
Raw Permalink Normal View History

2024-11-10 10:44:17 +00:00
#include "ui/ui.h"
#include "app_config.h"
#include "ui/ui_style.h"
#include "ui/ui_api.h"
#include "app_action.h"
#include "system/timer.h"
#include "font/language_list.h"
#include "res/resfile.h"
#include "syscfg_id.h"
#if (TCFG_UI_ENABLE && TCFG_SPI_LCD_ENABLE)
#include "ui/ui_sys_param.h"
struct SYS_INFO {
u32 version_log; //版本日期
u32 space_log; //内存大小
};
struct UI_DISPLAY {
u16 backlight_time; //背光时间
u16 backlight_brightness; //背光亮度
};
typedef struct _UI_SYS_PARAM {
u16 cur_auto_close_time; //当前设置的关机时间
struct SYS_INFO sys_infomation; //系统信息
struct UI_DISPLAY display; //显示信息
} UI_SYS_PARAM;
//背光亮度
static const char table_system_lcd_value[] = {
100,
60,
30,
};
//背光时间
static const u16 table_system_lcd_protect[] = {
0,
10,
15,
30,
60,
};
//自动关机时间
static const u16 table_system_auto_close[] = {
0,
15 * 60,
30 * 60,
60 * 60,
120 * 60,
180 * 60,
};
static UI_SYS_PARAM sys_param;
volatile static int system_auto_close_timer; //自动关机定时器
volatile static int system_backlight_timer; //背光时间
#define __this (&sys_param)
extern void sys_enter_soft_poweroff(void *priv);
void auto_power_off_timer_close(void);
//*********************************************************************************//
// 配置开始 //
//*********************************************************************************//
static void sys_ui_backlight_close()
{
printf("\n<<<<%s >>>>> \n", __FUNCTION__);
system_backlight_timer = 0;
ui_backlight_close();
}
void set_sys_param_default(void)
{
__this->display.backlight_time = 0;
__this->display.backlight_brightness = 0;
__this->cur_auto_close_time = 0;
auto_power_off_timer_close();
}
void sys_param_write2vm(void)
{
syscfg_write(CFG_UI_SYS_INFO, __this, sizeof(UI_SYS_PARAM));
}
void sys_param_init(void)
{
int ret = 0;
r_printf("sys_param_init\n");
ret = syscfg_read(CFG_UI_SYS_INFO, __this, sizeof(UI_SYS_PARAM));
if (ret != sizeof(UI_SYS_PARAM)) {
r_printf("sys_param read err\n");
memset(__this, 0, sizeof(UI_SYS_PARAM)); //暂时默认都为0
set_sys_param_default();
sys_param_write2vm();
} else {
__this->display.backlight_brightness = 0;//屏幕亮度重新开机不设置,默认高亮
sys_param_write2vm();
}
if (__this->cur_auto_close_time && (!system_auto_close_timer)) {
//每次重新开机把上次设置的自动关机时间设置进去
system_auto_close_timer = sys_s_hi_timerout_add(NULL, sys_enter_soft_poweroff, (table_system_auto_close[__this->cur_auto_close_time ] * 1000));
}
if (__this->display.backlight_time && (!system_backlight_timer)) {
system_backlight_timer = sys_s_hi_timerout_add(NULL, sys_ui_backlight_close, (table_system_lcd_protect[ __this->display.backlight_time] * 1000));
}
}
//*********************************************************************************//
// 系统信息配置 //
//*********************************************************************************//
void set_version_log(u32 log)
{
__this->sys_infomation.version_log = log;
}
u32 get_version_log(void)
{
return __this->sys_infomation.version_log;
}
void set_space_log(u32 log)
{
__this->sys_infomation.space_log = log;
}
u32 get_space_log(void)
{
return __this->sys_infomation.space_log;
}
//*********************************************************************************//
// 自动关机配置 //
//*********************************************************************************//
void set_auto_poweroff_timer(int sel_item)
{
int time = table_system_auto_close[sel_item];
__this->cur_auto_close_time = sel_item;
if (time == 0) {
auto_power_off_timer_close();
sys_param_write2vm();
return;
}
if (system_auto_close_timer) {
sys_s_hi_timer_modify(system_auto_close_timer, time * 1000);
} else {
system_auto_close_timer = sys_s_hi_timerout_add(NULL, sys_enter_soft_poweroff, (time * 1000));
}
sys_param_write2vm();
}
void auto_power_off_timer_close(void)
{
if (system_auto_close_timer) {
sys_s_hi_timeout_del(system_auto_close_timer);
system_auto_close_timer = 0;
}
}
u16 get_cur_auto_power_time(void)
{
return __this->cur_auto_close_time;
}
//*********************************************************************************//
// 背光配置 //
//*********************************************************************************//
void set_backlight_time(u16 time)
{
/* __this->display.backlight_time = table_system_lcd_protect[time]; */
if (time >= sizeof(table_system_lcd_protect) / sizeof(table_system_lcd_protect[0])) {
return;
}
__this->display.backlight_time = time;
if (system_backlight_timer) {
time = table_system_lcd_protect[__this->display.backlight_time];
sys_s_hi_timer_modify(system_backlight_timer, time * 1000);
}
if (__this->display.backlight_time && (!system_backlight_timer)) {
system_backlight_timer = sys_s_hi_timerout_add(NULL, sys_ui_backlight_close, (table_system_lcd_protect[ __this->display.backlight_time] * 1000));
}
if (!__this->display.backlight_time && system_backlight_timer) {
sys_s_hi_timeout_del(system_backlight_timer);
system_backlight_timer = 0;
}
sys_param_write2vm();
}
u16 get_backlight_time_item(void)
{
return __this->display.backlight_time;
}
u16 get_backlight_time(void)
{
return table_system_lcd_protect[__this->display.backlight_time];
}
__attribute__((weak))
void LCD_Set_Brightness(u16 percentage)
{
}
void set_backlight_brightness(u16 brightness)
{
/* __this->display.backlight_brightness = table_system_lcd_value[brightness]; */
if (brightness >= sizeof(table_system_lcd_value) / sizeof(table_system_lcd_value[0])) {
return;
}
__this->display.backlight_brightness = brightness;
brightness = table_system_lcd_value[brightness];
if (brightness) {
#if (TCFG_LCD_OLED_ENABLE && TCFG_SPI_LCD_ENABLE)
extern void OLED_Set_Brightness(u8 percentage);
OLED_Set_Brightness(brightness);
#else
LCD_Set_Brightness(brightness);
#endif
}
sys_param_write2vm();
}
u16 get_backlight_brightness_item(void)
{
return __this->display.backlight_brightness;
}
u16 get_backlight_brightness(void)
{
return table_system_lcd_value[__this->display.backlight_brightness];
}
//*********************************************************************************//
// 其他配置 //
//*********************************************************************************//
void set_sys_info_reset(void)
{
set_sys_param_default();
sys_param_write2vm();
}
extern int lcd_backlight_status();
static int app_key_event(struct sys_event *e)
{
struct key_event *key = &e->u.key;
int time;
if (system_auto_close_timer) {
time = table_system_auto_close[__this->cur_auto_close_time ];
sys_s_hi_timer_modify(system_auto_close_timer, time * 1000);
}
if (system_backlight_timer) {
time = table_system_lcd_protect[__this->display.backlight_time];
sys_s_hi_timer_modify(system_backlight_timer, time * 1000);
}
if (!lcd_backlight_status()) {
e->consumed = 1;//接管按键消息,app应用不会收到消息
if (__this->display.backlight_time && (!system_backlight_timer)) {
system_backlight_timer = sys_s_hi_timerout_add(NULL, sys_ui_backlight_close, (table_system_lcd_protect[ __this->display.backlight_time] * 1000));
ui_backlight_open();
}
return TRUE;
}
return FALSE;
}
SYS_EVENT_HANDLER(SYS_KEY_EVENT, app_key_event, 2);
#endif //TCFG_SPI_LCD_ENABLE