KT24-1110_65E-HA-651B/apps/soundbox/task_manager/power_on/power_on.c

161 lines
3.4 KiB
C
Raw Normal View History

2024-11-10 10:44:17 +00:00
#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;
}
}
}