#include "system/includes.h" #include "media/includes.h" #include "app_config.h" #include "tone_player.h" #include "asm/charge.h" #include "app_charge.h" #include "app_main.h" #include "ui_manage.h" #include "vm.h" #include "app_chargestore.h" #include "user_cfg.h" #include "ui/ui_api.h" #include "app_task.h" #include "key_event_deal.h" #define LOG_TAG_CONST APP_IDLE #define LOG_TAG "[APP_IDLE]" #define LOG_ERROR_ENABLE #define LOG_DEBUG_ENABLE #define LOG_INFO_ENABLE /* #define LOG_DUMP_ENABLE */ #define LOG_CLI_ENABLE #include "debug.h" static void lcd_ui_power_on_timeout(void *p) { #if (TCFG_SPI_LCD_ENABLE) /* sys_key_event_enable(); */ /* logo_time = timer_get_ms(); */ /* while (timer_get_ms() - logo_time <= 2 * 1000) { //显示开机logo */ /* os_time_dly(10); */ /* } */ UI_HIDE_WINDOW(ID_WINDOW_POWER_ON); UI_SHOW_WINDOW(ID_WINDOW_MAIN); #if TCFG_APP_BT_EN app_task_switch_to(APP_BT_TASK); #else app_task_switch_to(APP_MUSIC_TASK); #endif #endif } static void lcd_ui_power_on() { #if (TCFG_SPI_LCD_ENABLE) int logo_time = 0; UI_SHOW_WINDOW(ID_WINDOW_POWER_ON); sys_timeout_add(NULL, lcd_ui_power_on_timeout, 1000); #endif } static int power_on_init(void) { ///有些需要在开机提示完成之后再初始化的东西, 可以在这里初始化 #if (TCFG_SPI_LCD_ENABLE) lcd_ui_power_on();//由ui决定切换的模式 return 0; #endif #if TCFG_APP_BT_EN app_task_switch_to(APP_BT_TASK); #else #if TCFG_USB_APPLE_DOCK_EN //苹果iap协议使用pc模式 app_task_switch_to(APP_PC_TASK); #else app_task_switch_to(APP_SLEEP_TASK); /* app_task_switch_to(APP_PC_TASK); */ /* app_task_switch_to(APP_MUSIC_TASK); */ /* app_task_switch_to(APP_IDLE_TASK); */ /* app_task_switch_to(APP_LINEIN_TASK);//如果带检测,设备不在线,则不跳转 */ #endif #endif return 0; } static int power_on_unint(void) { tone_play_stop(); UI_HIDE_CURR_WINDOW(); return 0; } static int poweron_sys_event_handler(struct sys_event *event) { switch (event->type) { case SYS_KEY_EVENT: break; case SYS_BT_EVENT: break; case SYS_DEVICE_EVENT: break; default: return false; } return false; } static void tone_play_end_callback(void *priv, int flag) { int index = (int)priv; if (APP_POWERON_TASK != app_get_curr_task()) { log_error("tone callback task out \n"); return; } switch (index) { case IDEX_TONE_POWER_ON: power_on_init(); break; } } void app_poweron_task() { int msg[32]; UI_SHOW_MENU(MENU_POWER_UP, 0, 0, NULL); //int err = tone_play_with_callback_by_name(tone_table[IDEX_TONE_POWER_ON], 1, tone_play_end_callback, (void *)IDEX_TONE_POWER_ON); /* if (err) { //提示音没有,播放失败,直接init流程 */ power_on_init(); /* */ /* } */ while (1) { app_task_get_msg(msg, ARRAY_SIZE(msg), 1); switch (msg[0]) { case APP_MSG_SYS_EVENT: if (poweron_sys_event_handler((struct sys_event *)(msg + 1)) == false) { app_default_event_deal((struct sys_event *)(&msg[1])); //由common统一处理 } break; default: break; } if (app_task_exitting()) { power_on_unint(); return; } } }