KT24-1110_65E-HA-651B/apps/soundbox/ui/lcd/ui_sys_param_api.c
2024-11-10 18:44:17 +08:00

297 lines
8.2 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#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