2025-08-12 10:09:23 +00:00
|
|
|
|
#include "common/app_common.h"
|
|
|
|
|
#include "app_task.h"
|
|
|
|
|
#include "app_main.h"
|
|
|
|
|
#include "key_event_deal.h"
|
|
|
|
|
#include "music/music.h"
|
|
|
|
|
#include "pc/pc.h"
|
|
|
|
|
#include "record/record.h"
|
|
|
|
|
#include "linein/linein.h"
|
|
|
|
|
#include "fm/fm.h"
|
|
|
|
|
#include "btstack/avctp_user.h"
|
|
|
|
|
#include "app_power_manage.h"
|
|
|
|
|
#include "app_chargestore.h"
|
|
|
|
|
#include "usb/otg.h"
|
|
|
|
|
#include "usb/host/usb_host.h"
|
|
|
|
|
#include <stdlib.h>
|
|
|
|
|
#include "bt/bt_tws.h"
|
|
|
|
|
#include "audio_config.h"
|
|
|
|
|
#include "common/power_off.h"
|
|
|
|
|
#include "common/user_msg.h"
|
|
|
|
|
#include "audio_config.h"
|
|
|
|
|
#include "audio_enc.h"
|
|
|
|
|
#include "ui/ui_api.h"
|
|
|
|
|
#include "fm_emitter/fm_emitter_manage.h"
|
|
|
|
|
#include "common/fm_emitter_led7_ui.h"
|
|
|
|
|
#if TCFG_CHARGE_ENABLE
|
|
|
|
|
#include "app_charge.h"
|
|
|
|
|
#endif
|
|
|
|
|
#include "dev_multiplex_api.h"
|
|
|
|
|
#include "chgbox_ctrl.h"
|
|
|
|
|
#include "device/chargebox.h"
|
|
|
|
|
#include "app_online_cfg.h"
|
|
|
|
|
#include "soundcard/soundcard.h"
|
|
|
|
|
#include "smartbox_bt_manage.h"
|
|
|
|
|
#include "bt.h"
|
|
|
|
|
#include "common/dev_status.h"
|
|
|
|
|
#include "tone_player.h"
|
|
|
|
|
#include "ui_manage.h"
|
|
|
|
|
#include "soundbox.h"
|
|
|
|
|
#include "audio_recorder_mix.h"
|
|
|
|
|
#include "bt_emitter.h"
|
2025-08-21 08:15:01 +00:00
|
|
|
|
#include "kt.h"
|
2025-08-12 10:09:23 +00:00
|
|
|
|
|
2025-08-21 08:15:01 +00:00
|
|
|
|
#define LOG_TAG_CONST APP_ACTION
|
|
|
|
|
#define LOG_TAG "[APP_ACTION]"
|
2025-08-12 10:09:23 +00:00
|
|
|
|
#define LOG_ERROR_ENABLE
|
|
|
|
|
#define LOG_DEBUG_ENABLE
|
|
|
|
|
#define LOG_INFO_ENABLE
|
|
|
|
|
/* #define LOG_DUMP_ENABLE */
|
|
|
|
|
#define LOG_CLI_ENABLE
|
|
|
|
|
#include "debug.h"
|
|
|
|
|
|
|
|
|
|
int JL_rcsp_event_handler(struct rcsp_event *rcsp);
|
|
|
|
|
int bt_background_event_handler(struct sys_event *event);
|
|
|
|
|
extern u32 timer_get_ms(void);
|
|
|
|
|
extern int alarm_sys_event_handler(struct sys_event *event);
|
|
|
|
|
extern void bt_tws_sync_volume();
|
|
|
|
|
|
|
|
|
|
int app_common_key_msg_deal(struct sys_event *event)
|
|
|
|
|
{
|
|
|
|
|
int ret = false;
|
|
|
|
|
struct key_event *key = &event->u.key;
|
|
|
|
|
int key_event = event->u.key.event;
|
|
|
|
|
int key_value = event->u.key.value;
|
|
|
|
|
|
2025-08-21 08:15:01 +00:00
|
|
|
|
if (key_event == KEY_NULL)
|
|
|
|
|
{
|
2025-08-12 10:09:23 +00:00
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
2025-08-21 08:15:01 +00:00
|
|
|
|
if (key_is_ui_takeover())
|
|
|
|
|
{
|
2025-08-12 10:09:23 +00:00
|
|
|
|
ui_key_msg_post(key_event);
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#if (TCFG_UI_ENABLE && TCFG_APP_FM_EMITTER_EN)
|
2025-08-21 08:15:01 +00:00
|
|
|
|
if (!ui_fm_emitter_common_key_msg(key_event))
|
|
|
|
|
{
|
2025-08-12 10:09:23 +00:00
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
log_info("common_key_event:%d\n", key_event);
|
|
|
|
|
|
2025-08-21 08:15:01 +00:00
|
|
|
|
if ((key_event != KEY_POWEROFF) && (key_event != KEY_POWEROFF_HOLD))
|
|
|
|
|
{
|
2025-08-12 10:09:23 +00:00
|
|
|
|
extern u8 goto_poweroff_first_flag;
|
|
|
|
|
goto_poweroff_first_flag = 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#if (SMART_BOX_EN)
|
|
|
|
|
extern bool smartbox_key_event_filter_before(int key_event);
|
2025-08-21 08:15:01 +00:00
|
|
|
|
if (smartbox_key_event_filter_before(key_event))
|
|
|
|
|
{
|
2025-08-12 10:09:23 +00:00
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
|
2025-08-21 08:15:01 +00:00
|
|
|
|
switch (key_event)
|
|
|
|
|
{
|
2025-08-12 10:09:23 +00:00
|
|
|
|
#if TCFG_APP_BT_EN
|
|
|
|
|
|
|
|
|
|
#if TCFG_USER_TWS_ENABLE
|
|
|
|
|
case KEY_TWS_CONN:
|
|
|
|
|
log_info(" KEY_TWS_CONN \n");
|
|
|
|
|
bt_open_tws_conn(0);
|
|
|
|
|
break;
|
|
|
|
|
case KEY_TWS_DISCONN:
|
|
|
|
|
log_info(" KEY_TWS_DISCONN \n");
|
|
|
|
|
bt_disconnect_tws_conn();
|
|
|
|
|
break;
|
|
|
|
|
case KEY_TWS_REMOVE_PAIR:
|
|
|
|
|
log_info(" KEY_TWS_REMOVE_PAIR \n");
|
|
|
|
|
bt_tws_remove_tws_pair();
|
|
|
|
|
break;
|
|
|
|
|
case KEY_TWS_SEARCH_PAIR:
|
|
|
|
|
log_info(" KEY_TWS_SEARCH_PAIR \n");
|
|
|
|
|
bt_tws_start_search_and_pair();
|
|
|
|
|
break;
|
|
|
|
|
case KEY_TWS_SEARCH_REMOVE_PAIR:
|
|
|
|
|
log_info(" KEY_TWS_SEARCH_REMOVE_PAIR \n");
|
|
|
|
|
bt_tws_search_or_remove_pair();
|
|
|
|
|
break;
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
case KEY_BT_DIRECT_INIT:
|
|
|
|
|
bt_direct_init();
|
|
|
|
|
break;
|
|
|
|
|
case KEY_BT_DIRECT_CLOSE:
|
|
|
|
|
bt_direct_close();
|
|
|
|
|
break;
|
|
|
|
|
#endif
|
|
|
|
|
|
2025-08-21 08:15:01 +00:00
|
|
|
|
case KEY_POWEROFF:
|
|
|
|
|
case KEY_POWEROFF_HOLD:
|
2025-08-12 10:09:23 +00:00
|
|
|
|
power_off_deal(event, key_event - KEY_POWEROFF);
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case KEY_IR_NUM_0:
|
|
|
|
|
case KEY_IR_NUM_1:
|
|
|
|
|
case KEY_IR_NUM_2:
|
|
|
|
|
case KEY_IR_NUM_3:
|
|
|
|
|
case KEY_IR_NUM_4:
|
|
|
|
|
case KEY_IR_NUM_5:
|
|
|
|
|
case KEY_IR_NUM_6:
|
|
|
|
|
case KEY_IR_NUM_7:
|
|
|
|
|
case KEY_IR_NUM_8:
|
|
|
|
|
case KEY_IR_NUM_9:
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case KEY_CHANGE_MODE:
|
|
|
|
|
#if (TCFG_DEC2TWS_ENABLE)
|
2025-08-21 08:15:01 +00:00
|
|
|
|
if (!key->init)
|
|
|
|
|
{
|
2025-08-12 10:09:23 +00:00
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
#if TWFG_APP_POWERON_IGNORE_DEV
|
|
|
|
|
if ((timer_get_ms() - app_var.start_time) > TWFG_APP_POWERON_IGNORE_DEV)
|
2025-08-21 08:15:01 +00:00
|
|
|
|
#endif // TWFG_APP_POWERON_IGNORE_DEV
|
2025-08-12 10:09:23 +00:00
|
|
|
|
|
|
|
|
|
{
|
|
|
|
|
printf("KEY_CHANGE_MODE\n");
|
|
|
|
|
app_task_switch_next();
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case KEY_VOL_UP:
|
|
|
|
|
log_info("COMMON KEY_VOL_UP\n");
|
2025-08-21 08:15:01 +00:00
|
|
|
|
if (!tone_get_status())
|
|
|
|
|
{
|
2025-08-12 10:09:23 +00:00
|
|
|
|
app_audio_volume_up(1);
|
|
|
|
|
printf("common vol+: %d", app_audio_get_volume(APP_AUDIO_CURRENT_STATE));
|
|
|
|
|
}
|
2025-08-21 08:15:01 +00:00
|
|
|
|
if (app_audio_get_volume(APP_AUDIO_CURRENT_STATE) == app_audio_get_max_volume())
|
|
|
|
|
{
|
|
|
|
|
if (tone_get_status() == 0)
|
|
|
|
|
{
|
2025-08-12 10:09:23 +00:00
|
|
|
|
#if TCFG_MAX_VOL_PROMPT
|
|
|
|
|
tone_play_by_path(tone_table[IDEX_TONE_MAX_VOL], 0);
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#if (TCFG_DEC2TWS_ENABLE)
|
|
|
|
|
bt_tws_sync_volume();
|
|
|
|
|
#endif
|
|
|
|
|
UI_SHOW_MENU(MENU_MAIN_VOL, 1000, app_audio_get_volume(APP_AUDIO_CURRENT_STATE), NULL);
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case KEY_VOL_DOWN:
|
|
|
|
|
log_info("COMMON KEY_VOL_DOWN\n");
|
|
|
|
|
app_audio_volume_down(1);
|
|
|
|
|
printf("common vol-: %d", app_audio_get_volume(APP_AUDIO_CURRENT_STATE));
|
|
|
|
|
#if (TCFG_DEC2TWS_ENABLE)
|
|
|
|
|
bt_tws_sync_volume();
|
|
|
|
|
#endif
|
|
|
|
|
UI_SHOW_MENU(MENU_MAIN_VOL, 1000, app_audio_get_volume(APP_AUDIO_CURRENT_STATE), NULL);
|
|
|
|
|
break;
|
|
|
|
|
|
2025-08-21 08:15:01 +00:00
|
|
|
|
case KEY_EQ_MODE:
|
|
|
|
|
#if (TCFG_EQ_ENABLE == 1)
|
2025-08-12 10:09:23 +00:00
|
|
|
|
eq_mode_sw();
|
|
|
|
|
#endif
|
|
|
|
|
break;
|
|
|
|
|
#if (AUDIO_OUTPUT_WAY == AUDIO_OUTPUT_WAY_BT)
|
|
|
|
|
|
|
|
|
|
case KEY_BT_EMITTER_RECEIVER_SW:
|
|
|
|
|
printf(" KEY_BT_EMITTER_RECEIVER_SW\n");
|
|
|
|
|
bt_emitter_receiver_sw();
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case KEY_BT_EMITTER_PAUSE:
|
|
|
|
|
r_printf(" KEY_BT_EMITTER_PAUSE\n");
|
|
|
|
|
bt_emitter_pp(0);
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case KEY_BT_EMITTER_PLAY:
|
|
|
|
|
r_printf(" KEY_BT_EMITTER_PLAY\n");
|
|
|
|
|
bt_emitter_pp(1);
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case KEY_BT_EMITTER_SW:
|
|
|
|
|
r_printf("KEY_BT_EMITTER_SW\n");
|
|
|
|
|
{
|
|
|
|
|
extern u8 bt_emitter_stu_sw(void);
|
|
|
|
|
|
2025-08-21 08:15:01 +00:00
|
|
|
|
if (bt_emitter_stu_sw())
|
|
|
|
|
{
|
2025-08-12 10:09:23 +00:00
|
|
|
|
printf("bt emitter start \n");
|
2025-08-21 08:15:01 +00:00
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
2025-08-12 10:09:23 +00:00
|
|
|
|
printf("bt emitter stop \n");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#if (TCFG_CHARGE_BOX_ENABLE)
|
2025-08-21 08:15:01 +00:00
|
|
|
|
case KEY_BOX_POWER_CLICK:
|
|
|
|
|
case KEY_BOX_POWER_LONG:
|
|
|
|
|
case KEY_BOX_POWER_HOLD:
|
|
|
|
|
case KEY_BOX_POWER_UP:
|
|
|
|
|
case KEY_BOX_POWER_DOUBLE:
|
|
|
|
|
case KEY_BOX_POWER_THREE:
|
2025-08-12 10:09:23 +00:00
|
|
|
|
charge_box_key_event_handler(key_event);
|
|
|
|
|
break;
|
|
|
|
|
#endif
|
|
|
|
|
#if (TCFG_MIC_EFFECT_ENABLE)
|
|
|
|
|
case KEY_REVERB_OPEN:
|
|
|
|
|
#if TCFG_USER_TWS_ENABLE
|
2025-08-21 08:15:01 +00:00
|
|
|
|
if (!key->init)
|
|
|
|
|
{
|
2025-08-12 10:09:23 +00:00
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
|
2025-08-21 08:15:01 +00:00
|
|
|
|
if (mic_effect_get_status())
|
|
|
|
|
{
|
2025-08-12 10:09:23 +00:00
|
|
|
|
mic_effect_stop();
|
2025-08-21 08:15:01 +00:00
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
2025-08-12 10:09:23 +00:00
|
|
|
|
mic_effect_start();
|
|
|
|
|
}
|
|
|
|
|
ret = true;
|
|
|
|
|
break;
|
|
|
|
|
#endif
|
|
|
|
|
case KEY_ENC_START:
|
|
|
|
|
#if (RECORDER_MIX_EN)
|
2025-08-21 08:15:01 +00:00
|
|
|
|
if (recorder_mix_get_status())
|
|
|
|
|
{
|
2025-08-12 10:09:23 +00:00
|
|
|
|
printf("recorder_encode_stop\n");
|
|
|
|
|
recorder_mix_stop();
|
2025-08-21 08:15:01 +00:00
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
2025-08-12 10:09:23 +00:00
|
|
|
|
printf("recorder_encode_start\n");
|
|
|
|
|
recorder_mix_start();
|
|
|
|
|
}
|
2025-08-21 08:15:01 +00:00
|
|
|
|
#endif /*RECORDER_MIX_EN*/
|
2025-08-12 10:09:23 +00:00
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
ui_key_msg_post(key_event);
|
|
|
|
|
#if (SOUNDCARD_ENABLE)
|
|
|
|
|
soundcard_event_deal(event);
|
|
|
|
|
#endif
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
#if (SMART_BOX_EN)
|
|
|
|
|
extern int smartbox_common_key_event_deal(u8 key_event, int ret);
|
|
|
|
|
ret = smartbox_common_key_event_deal(key_event, ret);
|
|
|
|
|
#endif
|
|
|
|
|
return ret;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int app_power_user_event_handler(struct device_event *dev)
|
|
|
|
|
{
|
2025-08-21 08:15:01 +00:00
|
|
|
|
#if (TCFG_SYS_LVD_EN == 1)
|
|
|
|
|
switch (dev->event)
|
|
|
|
|
{
|
2025-08-12 10:09:23 +00:00
|
|
|
|
case POWER_EVENT_POWER_WARNING:
|
|
|
|
|
ui_update_status(STATUS_LOWPOWER);
|
|
|
|
|
tone_play_by_path(tone_table[IDEX_TONE_LOW_POWER], 1);
|
|
|
|
|
/* return 0; */
|
|
|
|
|
}
|
|
|
|
|
#if (SOUNDCARD_ENABLE)
|
|
|
|
|
soundcard_power_event(dev);
|
|
|
|
|
#endif
|
|
|
|
|
#endif
|
|
|
|
|
return app_power_event_handler(dev);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static void app_common_device_event_handler(struct sys_event *event)
|
|
|
|
|
{
|
|
|
|
|
int ret = 0;
|
|
|
|
|
const char *logo = NULL;
|
|
|
|
|
const char *usb_msg = NULL;
|
2025-08-21 08:15:01 +00:00
|
|
|
|
u8 app = 0xff;
|
2025-08-12 10:09:23 +00:00
|
|
|
|
u8 alarm_flag = 0;
|
2025-08-21 08:15:01 +00:00
|
|
|
|
switch ((u32)event->arg)
|
|
|
|
|
{
|
2025-08-12 10:09:23 +00:00
|
|
|
|
#if TCFG_CHARGE_ENABLE
|
|
|
|
|
case DEVICE_EVENT_FROM_CHARGE:
|
|
|
|
|
app_charge_event_handler(&event->u.dev);
|
|
|
|
|
break;
|
2025-08-21 08:15:01 +00:00
|
|
|
|
#endif // TCFG_CHARGE_ENABLE
|
2025-08-12 10:09:23 +00:00
|
|
|
|
|
|
|
|
|
#if TCFG_ONLINE_ENABLE
|
|
|
|
|
case DEVICE_EVENT_FROM_CI_UART:
|
|
|
|
|
ci_data_rx_handler(CI_UART);
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
#if TCFG_USER_TWS_ENABLE
|
|
|
|
|
case DEVICE_EVENT_FROM_CI_TWS:
|
|
|
|
|
ci_data_rx_handler(CI_TWS);
|
|
|
|
|
break;
|
2025-08-21 08:15:01 +00:00
|
|
|
|
#endif // TCFG_USER_TWS_ENABLE
|
|
|
|
|
#endif // TCFG_ONLINE_ENABLE
|
|
|
|
|
case DEVICE_EVENT_FROM_UART_RX_OVERFLOW:
|
|
|
|
|
{
|
|
|
|
|
kt_uart_event();
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case DEVICE_EVENT_FROM_UART_RX_OUTTIME:
|
|
|
|
|
{
|
|
|
|
|
kt_uart_event();
|
|
|
|
|
}
|
|
|
|
|
break;
|
2025-08-12 10:09:23 +00:00
|
|
|
|
|
|
|
|
|
case DEVICE_EVENT_FROM_POWER:
|
|
|
|
|
app_power_user_event_handler(&event->u.dev);
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
#if TCFG_CHARGESTORE_ENABLE || TCFG_TEST_BOX_ENABLE
|
|
|
|
|
case DEVICE_EVENT_CHARGE_STORE:
|
|
|
|
|
app_chargestore_event_handler(&event->u.chargestore);
|
|
|
|
|
break;
|
2025-08-21 08:15:01 +00:00
|
|
|
|
#endif // TCFG_CHARGESTORE_ENABLE || TCFG_TEST_BOX_ENABLE
|
2025-08-12 10:09:23 +00:00
|
|
|
|
|
2025-08-21 08:15:01 +00:00
|
|
|
|
#if (TCFG_CHARGE_BOX_ENABLE)
|
2025-08-12 10:09:23 +00:00
|
|
|
|
case DEVICE_EVENT_FROM_CHARGEBOX:
|
|
|
|
|
charge_box_ctrl_event_handler(&event->u.chargebox);
|
|
|
|
|
break;
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
case DEVICE_EVENT_FROM_OTG:
|
2025-08-21 08:15:01 +00:00
|
|
|
|
/// 先分析OTG设备类型
|
2025-08-12 10:09:23 +00:00
|
|
|
|
usb_msg = (const char *)event->u.dev.value;
|
2025-08-21 08:15:01 +00:00
|
|
|
|
if (usb_msg[0] == 's')
|
|
|
|
|
{
|
|
|
|
|
/// 是从机
|
2025-08-12 10:09:23 +00:00
|
|
|
|
#if TCFG_PC_ENABLE
|
|
|
|
|
ret = pc_device_event_handler(event);
|
2025-08-21 08:15:01 +00:00
|
|
|
|
if (ret == true)
|
|
|
|
|
{
|
2025-08-12 10:09:23 +00:00
|
|
|
|
app = APP_PC_TASK;
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
break;
|
2025-08-21 08:15:01 +00:00
|
|
|
|
}
|
|
|
|
|
else if (usb_msg[0] == 'h')
|
|
|
|
|
{
|
|
|
|
|
/// 是主机, 统一于SD卡等响应主机处理,这里不break
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
2025-08-12 10:09:23 +00:00
|
|
|
|
log_e("unknow otg devcie !!!\n");
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
case DRIVER_EVENT_FROM_SD0:
|
|
|
|
|
case DRIVER_EVENT_FROM_SD1:
|
|
|
|
|
case DRIVER_EVENT_FROM_SD2:
|
|
|
|
|
#if TCFG_APP_MUSIC_EN
|
2025-08-21 08:15:01 +00:00
|
|
|
|
ret = dev_status_event_filter(event); /// 解码设备上下线, 设备挂载等处理
|
|
|
|
|
if (ret == true)
|
|
|
|
|
{
|
|
|
|
|
if (event->u.dev.event == DEVICE_EVENT_IN)
|
|
|
|
|
{
|
|
|
|
|
/// 设备上线, 非解码模式切换到解码模式播放
|
|
|
|
|
if (app_get_curr_task() != APP_MUSIC_TASK)
|
|
|
|
|
{
|
2025-08-12 10:09:23 +00:00
|
|
|
|
app = APP_MUSIC_TASK;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
#if TCFG_APP_LINEIN_EN
|
|
|
|
|
case DEVICE_EVENT_FROM_LINEIN:
|
|
|
|
|
ret = linein_device_event_handler(event);
|
2025-08-21 08:15:01 +00:00
|
|
|
|
if (ret == true)
|
|
|
|
|
{
|
2025-08-12 10:09:23 +00:00
|
|
|
|
app = APP_LINEIN_TASK;
|
|
|
|
|
}
|
|
|
|
|
break;
|
2025-08-21 08:15:01 +00:00
|
|
|
|
#endif // TCFG_APP_LINEIN_EN
|
2025-08-12 10:09:23 +00:00
|
|
|
|
|
|
|
|
|
#if TCFG_APP_RTC_EN
|
|
|
|
|
case DEVICE_EVENT_FROM_ALM:
|
|
|
|
|
ret = alarm_sys_event_handler(event);
|
2025-08-21 08:15:01 +00:00
|
|
|
|
if (ret == true)
|
|
|
|
|
{
|
2025-08-12 10:09:23 +00:00
|
|
|
|
alarm_flag = 1;
|
|
|
|
|
app = APP_RTC_TASK;
|
|
|
|
|
}
|
|
|
|
|
break;
|
2025-08-21 08:15:01 +00:00
|
|
|
|
#endif // TCFG_APP_RTC_EN
|
2025-08-12 10:09:23 +00:00
|
|
|
|
|
|
|
|
|
default:
|
|
|
|
|
/* printf("unknow SYS_DEVICE_EVENT!!, %x\n", (u32)event->arg); */
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#if (SMART_BOX_EN)
|
|
|
|
|
extern void smartbox_update_dev_state(u32 event);
|
|
|
|
|
smartbox_update_dev_state((u32)event->arg);
|
|
|
|
|
#endif
|
|
|
|
|
|
2025-08-21 08:15:01 +00:00
|
|
|
|
if (app != 0xff)
|
|
|
|
|
{
|
|
|
|
|
if ((true != app_check_curr_task(APP_PC_TASK)) || alarm_flag)
|
|
|
|
|
{
|
2025-08-12 10:09:23 +00:00
|
|
|
|
|
2025-08-21 08:15:01 +00:00
|
|
|
|
// PC 不响应因为设备上线引发的模式切换
|
2025-08-12 10:09:23 +00:00
|
|
|
|
#if TWFG_APP_POWERON_IGNORE_DEV
|
|
|
|
|
if ((timer_get_ms() - app_var.start_time) > TWFG_APP_POWERON_IGNORE_DEV)
|
2025-08-21 08:15:01 +00:00
|
|
|
|
#endif // TWFG_APP_POWERON_IGNORE_DEV
|
2025-08-12 10:09:23 +00:00
|
|
|
|
{
|
|
|
|
|
#if (TCFG_CHARGE_ENABLE && (!TCFG_CHARGE_POWERON_ENABLE))
|
|
|
|
|
extern u8 get_charge_online_flag(void);
|
2025-08-21 08:15:01 +00:00
|
|
|
|
if (get_charge_online_flag())
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
else
|
2025-08-12 10:09:23 +00:00
|
|
|
|
#endif
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
printf(">>>>>>>>>>>>>%s %d \n", __FUNCTION__, __LINE__);
|
|
|
|
|
app_task_switch_to(app);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2025-08-21 08:15:01 +00:00
|
|
|
|
/// 公共事件处理, 各自模式没有处理的事件, 会统一在这里处理
|
2025-08-12 10:09:23 +00:00
|
|
|
|
void app_default_event_deal(struct sys_event *event)
|
|
|
|
|
{
|
|
|
|
|
int ret;
|
|
|
|
|
SYS_EVENT_HANDLER_SPECIFIC(event);
|
2025-08-21 08:15:01 +00:00
|
|
|
|
switch (event->type)
|
|
|
|
|
{
|
2025-08-12 10:09:23 +00:00
|
|
|
|
case SYS_DEVICE_EVENT:
|
|
|
|
|
/*默认公共设备事件处理*/
|
|
|
|
|
/* printf(">>>>>>>>>>>>>%s %d \n", __FUNCTION__, __LINE__); */
|
|
|
|
|
app_common_device_event_handler(event);
|
|
|
|
|
break;
|
|
|
|
|
#if TCFG_APP_BT_EN
|
|
|
|
|
case SYS_BT_EVENT:
|
2025-08-21 08:15:01 +00:00
|
|
|
|
if (true != app_check_curr_task(APP_BT_TASK))
|
|
|
|
|
{
|
2025-08-12 10:09:23 +00:00
|
|
|
|
/*默认公共BT事件处理*/
|
|
|
|
|
bt_background_event_handler(event);
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
#endif
|
|
|
|
|
case SYS_KEY_EVENT:
|
|
|
|
|
app_common_key_msg_deal(event);
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
printf("unknow event\n");
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#if 0
|
|
|
|
|
extern int key_event_remap(struct sys_event *e);
|
|
|
|
|
extern const u16 bt_key_ad_table[KEY_AD_NUM_MAX][KEY_EVENT_MAX];
|
|
|
|
|
u8 app_common_key_var_2_event(u32 key_var)
|
|
|
|
|
{
|
|
|
|
|
u8 key_event = 0;
|
|
|
|
|
u8 key_value = 0;
|
|
|
|
|
struct sys_event e = {0};
|
|
|
|
|
#if TCFG_ADKEY_ENABLE
|
|
|
|
|
for (; key_value < KEY_AD_NUM_MAX; key_value++) {
|
|
|
|
|
for (key_event = 0; key_event < KEY_EVENT_MAX; key_event++) {
|
|
|
|
|
if (bt_key_ad_table[key_value][key_event] == key_var) {
|
|
|
|
|
e.type = SYS_KEY_EVENT;
|
|
|
|
|
e.u.key.type = KEY_DRIVER_TYPE_AD;
|
|
|
|
|
e.u.key.event = key_event;
|
|
|
|
|
e.u.key.value = key_value;
|
|
|
|
|
/* e.u.key.tmr = timer_get_ms(); */
|
|
|
|
|
e.arg = (void *)DEVICE_EVENT_FROM_KEY;
|
|
|
|
|
/* printf("key2event:%d %d %d\n", key_var, key_value, key_event); */
|
|
|
|
|
if (key_event_remap(&e)) {
|
|
|
|
|
sys_event_notify(&e);
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#else
|
|
|
|
|
|
|
|
|
|
u8 app_common_key_var_2_event(u32 key_var)
|
|
|
|
|
{
|
|
|
|
|
struct sys_event e = {0};
|
|
|
|
|
e.type = SYS_KEY_EVENT;
|
|
|
|
|
e.u.key.type = KEY_DRIVER_TYPE_SOFTKEY;
|
|
|
|
|
e.u.key.event = key_var;
|
2025-08-21 08:15:01 +00:00
|
|
|
|
e.arg = (void *)DEVICE_EVENT_FROM_KEY;
|
2025-08-12 10:09:23 +00:00
|
|
|
|
sys_event_notify(&e);
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
#endif
|