161 lines
3.4 KiB
C
161 lines
3.4 KiB
C
#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;
|
||
}
|
||
}
|
||
|
||
}
|
||
|