KT24-1110_65E-HA-651B/apps/soundbox/task_manager/power_on/power_on.c
2024-11-10 21:14:01 +08:00

161 lines
3.4 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 "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;
}
}
}