#include "include.h" #include "func.h" #include "app_variable.h" #if TRACE_EN #define TRACE(...) printf(__VA_ARGS__) #else #define TRACE(...) #endif //组件ID enum { //按键 COMPO_ID_BTN_FLASHON = 1, COMPO_ID_BTN_FLASHOFF, COMPO_ID_PIC_FLASHON, COMPO_ID_PIC_FLASHOFF, }; typedef struct f_flashlight_t_ { u8 flashlight_flag; u8 light_level_temp; u32 light_sleep_temp; } f_flashlight_t; //创建手电筒窗体 compo_form_t *func_flashlight_form_create(void) { //新建窗体 compo_form_t *frm = compo_form_create(true); //创建遮罩层 compo_shape_t *masklayer = compo_radius_shape_create(frm, COMPO_SHAPE_TYPE_ROUNDED_RECTANGLE, 56); compo_shape_set_color(masklayer, COLOR_WHITE); compo_shape_set_location(masklayer, GUI_SCREEN_CENTER_X, GUI_SCREEN_CENTER_Y, GUI_SCREEN_WIDTH, GUI_SCREEN_HEIGHT); compo_picturebox_t * flash = compo_picturebox_create(frm, UI_BUF_FLASH_FLASHLIGHT_BIN); compo_picturebox_set_pos(flash, GUI_SCREEN_CENTER_X, GUI_SCREEN_CENTER_Y); return frm; } //手电筒功能事件处理 static void func_flashlight_process(void) { // if(!tick_check_expire(func_cb.enter_tick, 25000)) { reset_sleep_delay_all(); // } func_process(); } //手电筒功能消息处理 static void func_flashlight_message(size_msg_t msg) { switch (msg) { case MSG_CTP_CLICK: break; case MSG_CTP_SHORT_UP: break; case MSG_CTP_SHORT_DOWN: break; case MSG_CTP_LONG: break; default: func_message(msg); break; } } //进入手电筒控制功能 static void func_flashlight_enter(void) { func_cb.f_cb = func_zalloc(sizeof(f_flashlight_t)); f_flashlight_t *f_flashlight = (f_flashlight_t *)func_cb.f_cb; func_cb.frm_main = func_flashlight_form_create(); f_flashlight->light_level_temp = SysVariable.light_level; f_flashlight->light_sleep_temp = SysVariable.sleep_time; SysVariable.light_level = 5; SysVariable.sleep_time = -1; SysVariable.sleep_delay = SysVariable.sleep_time; SysVariable.guioff_delay = SysVariable.sleep_time; tft_bglight_set_level(SysVariable.light_level,false); func_cb.enter_tick = tick_get(); } //退出手电筒功能 static void func_flashlight_exit(void) { f_flashlight_t *f_flashlight = (f_flashlight_t *)func_cb.f_cb; SysVariable.light_level = f_flashlight->light_level_temp; SysVariable.sleep_time = f_flashlight->light_sleep_temp; SysVariable.guioff_delay = SysVariable.sleep_time; SysVariable.sleep_delay = SysVariable.sleep_time; tft_bglight_set_level(SysVariable.light_level,false); func_cb.last = FUNC_FLASHLIGHT; } //手电筒功能 void func_flashlight(void) { printf("%s\n", __func__); func_flashlight_enter(); while (func_cb.sta == FUNC_FLASHLIGHT) { func_flashlight_process(); func_flashlight_message(msg_dequeue()); } func_flashlight_exit(); }