714 lines
22 KiB
C
714 lines
22 KiB
C
#include "key_event_deal.h"
|
||
#include "btstack/avctp_user.h"
|
||
#include "event.h"
|
||
#include "app_power_manage.h"
|
||
#include "app_main.h"
|
||
#include "app_task.h"
|
||
#include "tone_player.h"
|
||
#include "audio_config.h"
|
||
#include "user_cfg.h"
|
||
#include "system/timer.h"
|
||
#include "vol_sync.h"
|
||
#include "media/includes.h"
|
||
#include "pbg_user.h"
|
||
#include "key_driver.h"
|
||
#if TCFG_EQ_ENABLE
|
||
#include "application/eq_config.h"
|
||
#endif/*TCFG_EQ_ENABLE*/
|
||
|
||
#if TCFG_USER_TWS_ENABLE
|
||
#include "bt_tws.h"
|
||
#endif
|
||
#if TCFG_AUDIO_ANC_ENABLE
|
||
#include "audio_anc.h"
|
||
#endif/*TCFG_AUDIO_ANC_ENABLE*/
|
||
#if TCFG_AUDIO_ANC_ACOUSTIC_DETECTOR_EN
|
||
#include "icsd_adt_app.h"
|
||
#endif /*TCFG_AUDIO_ANC_ACOUSTIC_DETECTOR_EN*/
|
||
|
||
#define LOG_TAG_CONST KEY_EVENT_DEAL
|
||
#define LOG_TAG "[KEY_EVENT_DEAL]"
|
||
#define LOG_ERROR_ENABLE
|
||
#define LOG_DEBUG_ENABLE
|
||
#define LOG_INFO_ENABLE
|
||
/* #define LOG_DUMP_ENABLE */
|
||
#define LOG_CLI_ENABLE
|
||
#include "debug.h"
|
||
|
||
#define POWER_OFF_CNT 6
|
||
|
||
static u8 goto_poweroff_cnt = 0;
|
||
static u8 goto_poweroff_flag = 0;
|
||
extern u8 key_table[KEY_NUM_MAX][KEY_EVENT_MAX];
|
||
extern u8 get_max_sys_vol(void);
|
||
extern void sys_enter_soft_poweroff(void *priv);
|
||
extern bool get_tws_sibling_connect_state(void);
|
||
extern int bt_get_low_latency_mode();
|
||
extern void bt_set_low_latency_mode(int enable);
|
||
|
||
u8 poweroff_sametime_flag = 0;
|
||
|
||
#if CONFIG_TWS_POWEROFF_SAME_TIME
|
||
enum {
|
||
FROM_HOST_POWEROFF_CNT_ENOUGH = 1,
|
||
FROM_TWS_POWEROFF_CNT_ENOUGH,
|
||
POWEROFF_CNT_ENOUGH,
|
||
};
|
||
|
||
static u16 poweroff_sametime_timer_id = 0;
|
||
static void poweroff_sametime_timer(void *priv)
|
||
{
|
||
log_info("poweroff_sametime_timer\n");
|
||
int state = tws_api_get_tws_state();
|
||
if (!(state & TWS_STA_SIBLING_CONNECTED)) {
|
||
sys_enter_soft_poweroff(NULL);
|
||
return;
|
||
}
|
||
if (priv == NULL || poweroff_sametime_flag == POWEROFF_CNT_ENOUGH) {
|
||
poweroff_sametime_timer_id = sys_timeout_add((void *)1, poweroff_sametime_timer, 500);
|
||
} else {
|
||
poweroff_sametime_timer_id = 0;
|
||
}
|
||
}
|
||
|
||
static void poweroff_sametime_timer_init(void)
|
||
{
|
||
if (poweroff_sametime_timer_id) {
|
||
return;
|
||
}
|
||
|
||
poweroff_sametime_timer_id = sys_timeout_add(NULL, poweroff_sametime_timer, 500);
|
||
}
|
||
#endif
|
||
|
||
void volume_up_down_direct(s8 value);
|
||
|
||
#if TCFG_USER_TWS_ENABLE
|
||
u8 replay_tone_flag = 1;
|
||
int max_tone_timer_hdl = 0;
|
||
static void max_tone_timer(void *priv)
|
||
{
|
||
if (!tone_get_status()) {
|
||
max_tone_timer_hdl = 0;
|
||
replay_tone_flag = 1;
|
||
} else {
|
||
max_tone_timer_hdl = sys_timeout_add(NULL, max_tone_timer, TWS_SYNC_TIME_DO + 100);
|
||
}
|
||
}
|
||
#endif
|
||
|
||
static u8 volume_flag = 1;
|
||
void volume_up(u8 inc)
|
||
{
|
||
u8 test_box_vol_up = 0x41;
|
||
s8 cur_vol = 0;
|
||
u8 call_status = get_call_status();
|
||
|
||
if (tone_get_status() && volume_flag) {
|
||
if (get_call_status() == BT_CALL_INCOMING) {
|
||
volume_up_down_direct(1);
|
||
}
|
||
return;
|
||
}
|
||
|
||
/*打电话出去彩铃要可以调音量大小*/
|
||
if ((call_status == BT_CALL_ACTIVE) || (call_status == BT_CALL_OUTGOING)) {
|
||
cur_vol = app_audio_get_volume(APP_AUDIO_STATE_CALL);
|
||
} else {
|
||
cur_vol = app_audio_get_volume(APP_AUDIO_STATE_MUSIC);
|
||
}
|
||
if (get_remote_test_flag()) {
|
||
user_send_cmd_prepare(USER_CTRL_TEST_KEY, 1, &test_box_vol_up); //音量加
|
||
}
|
||
|
||
if (cur_vol >= app_audio_get_max_volume()) {
|
||
#if TCFG_USER_TWS_ENABLE
|
||
if (get_tws_sibling_connect_state()) {
|
||
if (tws_api_get_role() == TWS_ROLE_MASTER && replay_tone_flag) {
|
||
replay_tone_flag = 0; //防止提示音被打断标志
|
||
bt_tws_play_tone_at_same_time(SYNC_TONE_MAX_VOL, 400);
|
||
max_tone_timer_hdl = sys_timeout_add(NULL, max_tone_timer, TWS_SYNC_TIME_DO + 100); //同步在TWS_SYNC_TIME_DO之后才会播放提示音,所以timer需要在这个时间之后才去检测提示音状态
|
||
}
|
||
} else
|
||
#endif
|
||
{
|
||
#if TCFG_MAX_VOL_PROMPT
|
||
STATUS *p_tone = get_tone_config();
|
||
tone_play_index(p_tone->max_vol, 0);
|
||
#endif
|
||
}
|
||
|
||
if (get_call_status() != BT_CALL_HANGUP) {
|
||
/*本地音量最大,如果手机音量还没最大,继续加,以防显示不同步*/
|
||
if (bt_user_priv_var.phone_vol < 15) {
|
||
if (get_curr_channel_state() & HID_CH) {
|
||
user_send_cmd_prepare(USER_CTRL_HID_VOL_UP, 0, NULL);
|
||
} else {
|
||
user_send_cmd_prepare(USER_CTRL_HFP_CALL_VOLUME_UP, 0, NULL);
|
||
}
|
||
}
|
||
return;
|
||
}
|
||
#if BT_SUPPORT_MUSIC_VOL_SYNC
|
||
opid_play_vol_sync_fun(&app_var.music_volume, 1);
|
||
user_send_cmd_prepare(USER_CTRL_CMD_SYNC_VOL_INC, 0, NULL);
|
||
#endif/*BT_SUPPORT_MUSIC_VOL_SYNC*/
|
||
return;
|
||
}
|
||
|
||
#if BT_SUPPORT_MUSIC_VOL_SYNC
|
||
opid_play_vol_sync_fun(&app_var.music_volume, 1);
|
||
app_audio_set_volume(APP_AUDIO_STATE_MUSIC, app_var.music_volume, 1);
|
||
#else
|
||
app_audio_volume_up(inc);
|
||
#endif/*BT_SUPPORT_MUSIC_VOL_SYNC*/
|
||
log_info("vol+: %d", app_audio_get_volume(APP_AUDIO_CURRENT_STATE));
|
||
if (get_call_status() != BT_CALL_HANGUP) {
|
||
if (get_curr_channel_state() & HID_CH) {
|
||
user_send_cmd_prepare(USER_CTRL_HID_VOL_UP, 0, NULL);
|
||
} else {
|
||
user_send_cmd_prepare(USER_CTRL_HFP_CALL_VOLUME_UP, 0, NULL);
|
||
}
|
||
} else {
|
||
#if BT_SUPPORT_MUSIC_VOL_SYNC
|
||
/* opid_play_vol_sync_fun(&app_var.music_volume, 1); */
|
||
|
||
#if TCFG_USER_TWS_ENABLE
|
||
user_send_cmd_prepare(USER_CTRL_CMD_SYNC_VOL_INC, 0, NULL); //使用HID调音量
|
||
//user_send_cmd_prepare(USER_CTRL_AVCTP_OPID_SEND_VOL, 0, NULL);
|
||
#else
|
||
user_send_cmd_prepare(USER_CTRL_CMD_SYNC_VOL_INC, 0, NULL);
|
||
#endif/*TCFG_USER_TWS_ENABLE*/
|
||
#endif/*BT_SUPPORT_MUSIC_VOL_SYNC*/
|
||
}
|
||
}
|
||
void volume_down(u8 dec)
|
||
{
|
||
u8 test_box_vol_down = 0x42;
|
||
if (tone_get_status() && volume_flag) {
|
||
if (get_call_status() == BT_CALL_INCOMING) {
|
||
volume_up_down_direct(-1);
|
||
}
|
||
return;
|
||
}
|
||
if (get_remote_test_flag()) {
|
||
user_send_cmd_prepare(USER_CTRL_TEST_KEY, 1, &test_box_vol_down); //音量减
|
||
}
|
||
|
||
if (app_audio_get_volume(APP_AUDIO_CURRENT_STATE) <= 0) {
|
||
if (get_call_status() != BT_CALL_HANGUP) {
|
||
/*
|
||
*本地音量最小,如果手机音量还没最小,继续减
|
||
*注意:有些手机通话最小音量是1(GREE G0245D)
|
||
*/
|
||
if (bt_user_priv_var.phone_vol > 1) {
|
||
if (get_curr_channel_state() & HID_CH) {
|
||
user_send_cmd_prepare(USER_CTRL_HID_VOL_DOWN, 0, NULL);
|
||
} else {
|
||
user_send_cmd_prepare(USER_CTRL_HFP_CALL_VOLUME_DOWN, 0, NULL);
|
||
|
||
}
|
||
}
|
||
return;
|
||
}
|
||
#if BT_SUPPORT_MUSIC_VOL_SYNC
|
||
opid_play_vol_sync_fun(&app_var.music_volume, 0);
|
||
user_send_cmd_prepare(USER_CTRL_CMD_SYNC_VOL_DEC, 0, NULL);
|
||
#endif
|
||
return;
|
||
}
|
||
|
||
#if BT_SUPPORT_MUSIC_VOL_SYNC
|
||
opid_play_vol_sync_fun(&app_var.music_volume, 0);
|
||
app_audio_set_volume(APP_AUDIO_STATE_MUSIC, app_var.music_volume, 1);
|
||
#else
|
||
app_audio_volume_down(dec);
|
||
#endif/*BT_SUPPORT_MUSIC_VOL_SYNC*/
|
||
log_info("vol-: %d", app_audio_get_volume(APP_AUDIO_CURRENT_STATE));
|
||
if (get_call_status() != BT_CALL_HANGUP) {
|
||
if (get_curr_channel_state() & HID_CH) {
|
||
user_send_cmd_prepare(USER_CTRL_HID_VOL_DOWN, 0, NULL);
|
||
} else {
|
||
user_send_cmd_prepare(USER_CTRL_HFP_CALL_VOLUME_DOWN, 0, NULL);
|
||
}
|
||
} else {
|
||
#if BT_SUPPORT_MUSIC_VOL_SYNC
|
||
/* opid_play_vol_sync_fun(&app_var.music_volume, 0); */
|
||
if (app_audio_get_volume(APP_AUDIO_CURRENT_STATE) == 0) {
|
||
app_audio_volume_down(0);
|
||
}
|
||
|
||
#if TCFG_USER_TWS_ENABLE
|
||
user_send_cmd_prepare(USER_CTRL_CMD_SYNC_VOL_DEC, 0, NULL);
|
||
//user_send_cmd_prepare(USER_CTRL_AVCTP_OPID_SEND_VOL, 0, NULL);
|
||
#else
|
||
user_send_cmd_prepare(USER_CTRL_CMD_SYNC_VOL_DEC, 0, NULL);
|
||
#endif
|
||
|
||
#endif
|
||
}
|
||
}
|
||
|
||
|
||
|
||
#if ONE_KEY_CTL_DIFF_FUNC
|
||
static void lr_diff_otp_deal(u8 opt, char channel)
|
||
{
|
||
log_info("lr_diff_otp_deal:%d", opt);
|
||
switch (opt) {
|
||
case ONE_KEY_CTL_NEXT_PREV:
|
||
if (channel == 'L') {
|
||
user_send_cmd_prepare(USER_CTRL_AVCTP_OPID_NEXT, 0, NULL);
|
||
} else if (channel == 'R') {
|
||
user_send_cmd_prepare(USER_CTRL_AVCTP_OPID_PREV, 0, NULL);
|
||
} else {
|
||
user_send_cmd_prepare(USER_CTRL_AVCTP_OPID_NEXT, 0, NULL);
|
||
}
|
||
break;
|
||
case ONE_KEY_CTL_VOL_UP_DOWN:
|
||
if (channel == 'L') {
|
||
volume_up(1);
|
||
} else if (channel == 'R') {
|
||
volume_down(1);
|
||
}
|
||
break;
|
||
default:
|
||
break;
|
||
}
|
||
}
|
||
|
||
void key_tws_lr_diff_deal(struct sys_event *event, u8 opt)
|
||
{
|
||
u8 channel = 'U';
|
||
if (get_bt_tws_connect_status()) {
|
||
channel = tws_api_get_local_channel();
|
||
if ('L' == channel) {
|
||
channel = (u32)event->arg == KEY_EVENT_FROM_TWS ? 'R' : 'L';
|
||
} else {
|
||
channel = (u32)event->arg == KEY_EVENT_FROM_TWS ? 'L' : 'R';
|
||
}
|
||
}
|
||
lr_diff_otp_deal(opt, channel);
|
||
}
|
||
#else
|
||
void key_tws_lr_diff_deal(struct sys_event *event, u8 opt)
|
||
{
|
||
}
|
||
#endif
|
||
|
||
|
||
void audio_aec_pitch_change_ctrl();
|
||
void audio_surround_voice_ctrl();
|
||
extern void start_streamer_test(void);
|
||
extern int jl_kws_voice_event_handle(struct key_event *key);
|
||
int app_earphone_key_event_handler(struct sys_event *event)
|
||
{
|
||
int ret = false;
|
||
struct key_event *key = &event->u.key;
|
||
|
||
u8 key_event;
|
||
|
||
if (key->type == KEY_DRIVER_TYPE_VOICE) {
|
||
/* 语音消息 */
|
||
ret = jl_kws_voice_event_handle(event);
|
||
if (ret == true) {
|
||
return ret;
|
||
}
|
||
}
|
||
|
||
#if TCFG_APP_MUSIC_EN
|
||
if (event->arg == DEVICE_EVENT_FROM_CUSTOM) {
|
||
log_e("is music mode msg\n");
|
||
return false;
|
||
}
|
||
#endif
|
||
|
||
#if (TCFG_EAR_DETECT_ENABLE && TCFG_EAR_DETECT_CTL_KEY)
|
||
extern int cmd_key_msg_handle(struct sys_event * event);
|
||
if (key->event == KEY_EVENT_USER) {
|
||
cmd_key_msg_handle(event);
|
||
return ret;
|
||
}
|
||
#endif
|
||
|
||
#if TCFG_USER_TWS_ENABLE
|
||
if (pbg_user_key_vaild(&key_event, event)) {
|
||
;
|
||
} else
|
||
#endif
|
||
{
|
||
key_event = key_table[key->value][key->event];
|
||
}
|
||
|
||
void bt_sniff_ready_clean(void);
|
||
bt_sniff_ready_clean();
|
||
|
||
#if RCSP_ADV_EN
|
||
extern void set_key_event_by_rcsp_info(struct sys_event * event, u8 * key_event);
|
||
set_key_event_by_rcsp_info(event, &key_event);
|
||
#endif
|
||
|
||
log_info("key_event:%d %d %d\n", key_event, key->value, key->event);
|
||
|
||
#if LL_SYNC_EN
|
||
extern void ll_sync_led_switch(void);
|
||
if (key->value == 0 && key->event == KEY_EVENT_CLICK) {
|
||
log_info("ll_sync_led_switch\n");
|
||
ll_sync_led_switch();
|
||
return 0;
|
||
}
|
||
#endif
|
||
|
||
#if TCFG_AUDIO_WIDE_AREA_TAP_ENABLE
|
||
audio_wide_area_tap_ignore_flag_set(1, 1000);
|
||
#endif
|
||
|
||
switch (key_event) {
|
||
case KEY_MUSIC_PP:
|
||
/* tone_play_index(IDEX_TONE_NORMAL,1);
|
||
break; */
|
||
|
||
/*start_streamer_test();
|
||
break;*/
|
||
#if TCFG_AUDIO_BASS_BOOST_TEST
|
||
if ((u32)event->arg == KEY_EVENT_FROM_TWS) {
|
||
//log_info("from tws\n");
|
||
break;
|
||
} else {
|
||
//log_info("from key\n");
|
||
}
|
||
extern void audio_bass_ctrl();
|
||
audio_bass_ctrl();
|
||
break;
|
||
#endif/*TCFG_AUDIO_BASS_BOOST_TEST*/
|
||
|
||
if ((get_call_status() == BT_CALL_OUTGOING) ||
|
||
(get_call_status() == BT_CALL_ALERT)) {
|
||
user_send_cmd_prepare(USER_CTRL_HFP_CALL_HANGUP, 0, NULL);
|
||
} else if (get_call_status() == BT_CALL_INCOMING) {
|
||
user_send_cmd_prepare(USER_CTRL_HFP_CALL_ANSWER, 0, NULL);
|
||
} else if (get_call_status() == BT_CALL_ACTIVE) {
|
||
user_send_cmd_prepare(USER_CTRL_HFP_CALL_HANGUP, 0, NULL);
|
||
} else {
|
||
user_send_cmd_prepare(USER_CTRL_AVCTP_OPID_PLAY, 0, NULL);
|
||
}
|
||
break;
|
||
|
||
case KEY_POWEROFF:
|
||
goto_poweroff_cnt = 0;
|
||
poweroff_sametime_flag = 0;
|
||
goto_poweroff_flag = 0;
|
||
|
||
if ((BT_STATUS_CONNECTING == get_bt_connect_status()) ||
|
||
(BT_STATUS_TAKEING_PHONE == get_bt_connect_status()) ||
|
||
(BT_STATUS_PLAYING_MUSIC == get_bt_connect_status())) {
|
||
/* if (get_call_status() != BT_CALL_HANGUP) {
|
||
log_info("call hangup\n");
|
||
user_send_cmd_prepare(USER_CTRL_HFP_CALL_HANGUP, 0, NULL);
|
||
goto_poweroff_flag = 0;
|
||
break;
|
||
} */
|
||
if ((get_call_status() == BT_CALL_INCOMING) ||
|
||
(get_call_status() == BT_CALL_OUTGOING)) {
|
||
log_info("key call reject\n");
|
||
user_send_cmd_prepare(USER_CTRL_HFP_CALL_HANGUP, 0, NULL);
|
||
goto_poweroff_flag = 0;
|
||
break;
|
||
} else if (get_call_status() == BT_CALL_ACTIVE) {
|
||
log_info("key call hangup\n");
|
||
user_send_cmd_prepare(USER_CTRL_HFP_CALL_HANGUP, 0, NULL);
|
||
goto_poweroff_flag = 0;
|
||
break;
|
||
}
|
||
}
|
||
|
||
#if (TCFG_USER_TWS_ENABLE && CONFIG_TWS_POWEROFF_SAME_TIME == 0)
|
||
if ((u32)event->arg == KEY_EVENT_FROM_TWS) {
|
||
break;
|
||
}
|
||
#endif
|
||
#if TCFG_WIRELESS_MIC_ENABLE
|
||
extern void wireless_mic_change_mode(u8 mode);
|
||
wireless_mic_change_mode(0);
|
||
#endif
|
||
goto_poweroff_flag = 1;
|
||
user_send_cmd_prepare(USER_CTRL_ALL_SNIFF_EXIT, 0, NULL);
|
||
break;
|
||
case KEY_POWEROFF_HOLD:
|
||
#if (TCFG_USER_TWS_ENABLE && CONFIG_TWS_POWEROFF_SAME_TIME == 0)
|
||
if ((u32)event->arg == KEY_EVENT_FROM_TWS) {
|
||
break;
|
||
}
|
||
#endif
|
||
log_info("poweroff flag:%d cnt:%d\n", goto_poweroff_flag, goto_poweroff_cnt);
|
||
|
||
if (goto_poweroff_flag) {
|
||
goto_poweroff_cnt++;
|
||
|
||
#if CONFIG_TWS_POWEROFF_SAME_TIME
|
||
if (goto_poweroff_cnt == POWER_OFF_CNT) {
|
||
if (get_tws_sibling_connect_state()) {
|
||
if ((u32)event->arg != KEY_EVENT_FROM_TWS) {
|
||
tws_api_sync_call_by_uuid('T', SYNC_CMD_POWER_OFF_TOGETHER, TWS_SYNC_TIME_DO);
|
||
} else {
|
||
goto_poweroff_cnt--;
|
||
}
|
||
} else {
|
||
sys_enter_soft_poweroff(NULL);
|
||
}
|
||
}
|
||
#else
|
||
if (goto_poweroff_cnt >= POWER_OFF_CNT) {
|
||
goto_poweroff_cnt = 0;
|
||
sys_enter_soft_poweroff(NULL);
|
||
}
|
||
#endif //CONFIG_TWS_POWEROFF_SAME_TIME
|
||
|
||
}
|
||
break;
|
||
case KEY_MUSIC_PREV:
|
||
//user_send_cmd_prepare(USER_CTRL_AVCTP_OPID_PREV, 0, NULL);
|
||
//============ for test ==============//
|
||
#if TCFG_AUDIO_ANC_ENABLE
|
||
if (get_bt_connect_status() == BT_STATUS_TAKEING_PHONE) {
|
||
user_send_cmd_prepare(USER_CTRL_HFP_CALL_HANGUP, 0, NULL);
|
||
} else {
|
||
if (a2dp_get_status() != BT_MUSIC_STATUS_STARTING) {
|
||
user_send_cmd_prepare(USER_CTRL_AVCTP_OPID_PLAY, 0, NULL);
|
||
} else {
|
||
user_send_cmd_prepare(USER_CTRL_AVCTP_OPID_PREV, 0, NULL);
|
||
}
|
||
}
|
||
#else
|
||
if (a2dp_get_status() != BT_MUSIC_STATUS_STARTING) {
|
||
user_send_cmd_prepare(USER_CTRL_AVCTP_OPID_PLAY, 0, NULL);
|
||
} else {
|
||
user_send_cmd_prepare(USER_CTRL_AVCTP_OPID_PREV, 0, NULL);
|
||
}
|
||
#endif/*TCFG_AUDIO_ANC_ENABLE*/
|
||
//====================================//
|
||
break;
|
||
case KEY_MUSIC_NEXT:
|
||
#if ( (defined CONFIG_BOARD_AC6933B_LIGHTING) || (defined CONFIG_BOARD_AC6953B_LIGHTING))
|
||
if (get_call_status() == BT_CALL_INCOMING) {
|
||
user_send_cmd_prepare(USER_CTRL_HFP_CALL_HANGUP, 0, NULL);
|
||
break;
|
||
}
|
||
#endif
|
||
//user_send_cmd_prepare(USER_CTRL_AVCTP_OPID_NEXT, 0, NULL);
|
||
|
||
//============ for test ==============//
|
||
#if TCFG_AUDIO_ANC_ENABLE
|
||
if (get_bt_connect_status() == BT_STATUS_TAKEING_PHONE) {
|
||
user_send_cmd_prepare(USER_CTRL_HFP_CALL_HANGUP, 0, NULL);
|
||
} else {
|
||
if (a2dp_get_status() != BT_MUSIC_STATUS_STARTING) {
|
||
user_send_cmd_prepare(USER_CTRL_AVCTP_OPID_PLAY, 0, NULL);
|
||
} else {
|
||
user_send_cmd_prepare(USER_CTRL_AVCTP_OPID_NEXT, 0, NULL);
|
||
}
|
||
}
|
||
#else
|
||
if (a2dp_get_status() != BT_MUSIC_STATUS_STARTING) {
|
||
user_send_cmd_prepare(USER_CTRL_AVCTP_OPID_PLAY, 0, NULL);
|
||
} else {
|
||
user_send_cmd_prepare(USER_CTRL_AVCTP_OPID_NEXT, 0, NULL);
|
||
}
|
||
#endif
|
||
//====================================//
|
||
break;
|
||
case KEY_VOL_UP:
|
||
volume_up(1);
|
||
break;
|
||
case KEY_VOL_DOWN:
|
||
volume_down(1);
|
||
break;
|
||
case KEY_CALL_LAST_NO:
|
||
if (bt_user_priv_var.last_call_type == BT_STATUS_PHONE_INCOME) {
|
||
user_send_cmd_prepare(USER_CTRL_DIAL_NUMBER, bt_user_priv_var.income_phone_len,
|
||
bt_user_priv_var.income_phone_num);
|
||
} else {
|
||
user_send_cmd_prepare(USER_CTRL_HFP_CALL_LAST_NO, 0, NULL);
|
||
}
|
||
break;
|
||
case KEY_CALL_HANG_UP:
|
||
|
||
break;
|
||
case KEY_CALL_ANSWER:
|
||
/* sys_enter_soft_poweroff(NULL); */
|
||
break;
|
||
case KEY_OPEN_SIRI:
|
||
user_send_cmd_prepare(USER_CTRL_HFP_GET_SIRI_OPEN, 0, NULL);
|
||
break;
|
||
case KEY_EQ_MODE:
|
||
#if(TCFG_EQ_ENABLE == 1)
|
||
eq_mode_sw();
|
||
#endif
|
||
break;
|
||
case KEY_HID_CONTROL:
|
||
log_info("get_curr_channel_state:%x\n", get_curr_channel_state());
|
||
if (get_curr_channel_state() & HID_CH) {
|
||
log_info("KEY_HID_CONTROL\n");
|
||
user_send_cmd_prepare(USER_CTRL_HID_IOS, 0, NULL);
|
||
}
|
||
break;
|
||
case KEY_THIRD_CLICK:
|
||
log_info("KEY_THIRD_CLICK");
|
||
key_tws_lr_diff_deal(event, ONE_KEY_CTL_NEXT_PREV);
|
||
break;
|
||
case KEY_LOW_LANTECY:
|
||
bt_set_low_latency_mode(!bt_get_low_latency_mode());
|
||
break;
|
||
#if TCFG_EARTCH_EVENT_HANDLE_ENABLE
|
||
extern void eartch_event_deal_enable_cfg_save(u8 en);
|
||
case KEY_EARTCH_ENABLE:
|
||
eartch_event_deal_enable_cfg_save(1);
|
||
break;
|
||
case KEY_EARTCH_DISABLE:
|
||
eartch_event_deal_enable_cfg_save(0);
|
||
break;
|
||
#endif /* #if TCFG_EARTCH_EVENT_HANDLE_ENABLE */
|
||
|
||
#if TCFG_AUDIO_ANC_ENABLE
|
||
case KEY_ANC_SWITCH:
|
||
//来电不切模式
|
||
if ((BT_STATUS_CONNECTING == get_bt_connect_status()) ||
|
||
(BT_STATUS_TAKEING_PHONE == get_bt_connect_status()) ||
|
||
(BT_STATUS_PLAYING_MUSIC == get_bt_connect_status())) {
|
||
/* if (get_call_status() != BT_CALL_HANGUP) {
|
||
log_info("call hangup\n");
|
||
user_send_cmd_prepare(USER_CTRL_HFP_CALL_HANGUP, 0, NULL);
|
||
goto_poweroff_flag = 0;
|
||
break;
|
||
} */
|
||
if ((get_call_status() == BT_CALL_INCOMING)) {
|
||
log_info("key call reject\n");
|
||
user_send_cmd_prepare(USER_CTRL_HFP_CALL_HANGUP, 0, NULL);
|
||
break;
|
||
}
|
||
}
|
||
#if RCSP_ADV_EN
|
||
update_anc_voice_key_opt();
|
||
#else
|
||
anc_mode_next();
|
||
#endif
|
||
break;
|
||
#if ANC_EAR_ADAPTIVE_EN
|
||
case KEY_ANC_EAR_ADAPTIVE:
|
||
audio_anc_mode_ear_adaptive(1);
|
||
break;
|
||
case KEY_ANC_COEFF_SWITCH:
|
||
audio_anc_coeff_adaptive_switch();
|
||
break;
|
||
#endif/*ANC_EAR_ADAPTIVE_EN*/
|
||
#endif/*TCFG_AUDIO_ANC_ENABLE*/
|
||
case KEY_NULL:
|
||
#if TCFG_USER_TWS_ENABLE
|
||
if ((u32)event->arg == KEY_EVENT_FROM_TWS) {
|
||
break;
|
||
}
|
||
#endif
|
||
/* goto_poweroff_cnt = 0; */
|
||
/* goto_poweroff_flag = 0; */
|
||
break;
|
||
case KEY_MUSIC_EFF:
|
||
#if TCFG_USER_TWS_ENABLE
|
||
#if AUDIO_SURROUND_CONFIG
|
||
if ((u32)event->arg == KEY_EVENT_FROM_TWS) {
|
||
//log_info("from tws\n");
|
||
break;
|
||
} else {
|
||
//log_info("from key\n");
|
||
}
|
||
audio_surround_voice_ctrl();
|
||
#endif /* AUDIO_SURROUND_CONFIG */
|
||
#endif /*TCFG_USER_TWS_ENABLE*/
|
||
break;
|
||
|
||
case KEY_PHONE_PITCH:
|
||
#if TCFG_USER_TWS_ENABLE
|
||
#if AEC_PITCHSHIFTER_CONFIG
|
||
if ((u32)event->arg == KEY_EVENT_FROM_TWS) {
|
||
//log_info("from tws\n");
|
||
break;
|
||
} else {
|
||
//log_info("from key\n");
|
||
}
|
||
audio_aec_pitch_change_ctrl();
|
||
#endif /* AEC_PITCHSHIFTER_CONFIG */
|
||
#endif /* TCFG_USER_TWS_ENABLE */
|
||
break;
|
||
|
||
#if TCFG_AUDIO_HEARING_AID_ENABLE
|
||
/*辅听功能测试demo开关*/
|
||
case KEY_HEARING_AID_TOGGLE:
|
||
printf("KEY_HEARING_AID_TOGGLE\n");
|
||
extern void audio_hearing_aid_demo(void);
|
||
audio_hearing_aid_demo();
|
||
break;
|
||
#endif/*TCFG_AUDIO_HEARING_AID_ENABLE*/
|
||
|
||
#if TCFG_APP_AUX_EN
|
||
case KEY_MODE_SWITCH:
|
||
log_info("KEY_MODE_SWITCH");
|
||
app_task_switch_next();
|
||
break;
|
||
#endif /*TCFG_AUDIO_SPATIAL_EFFECT_ENABLE*/
|
||
#if TCFG_AUDIO_SPATIAL_EFFECT_ENABLE
|
||
case KEY_SPATIAL_EFFECT_MODE_SWITCH:
|
||
extern void audio_spatial_effects_mode_switch(u8 mode, u8 tone_play);
|
||
#if TCFG_USER_TWS_ENABLE
|
||
if (tws_api_get_tws_state() & TWS_STA_SIBLING_CONNECTED)
|
||
#endif /*TCFG_USER_TWS_ENABLE*/
|
||
{
|
||
static u8 mode = 0;
|
||
audio_spatial_effects_mode_switch(mode++, 0);
|
||
if (mode > 2) {
|
||
mode = 0;
|
||
}
|
||
|
||
}
|
||
break;
|
||
#endif /*TCFG_AUDIO_SPATIAL_EFFECT_ENABLE*/
|
||
#if TCFG_AUDIO_SPEAK_TO_CHAT_ENABLE
|
||
case KEY_SPEAK_TO_CHAT_SWITCH:
|
||
/*智能免摘测试demo开关*/
|
||
audio_speak_to_chat_demo();
|
||
break;
|
||
#endif /*TCFG_AUDIO_SPEAK_TO_CHAT_ENABLE*/
|
||
#if TCFG_AUDIO_ANC_WIND_NOISE_DET_ENABLE
|
||
case KEY_WIND_NOISE_DET_SWITCH:
|
||
/*风噪检测demo开关*/
|
||
audio_icsd_wind_detect_demo();
|
||
break;
|
||
#endif /*TCFG_AUDIO_ANC_WIND_NOISE_DET_ENABLE*/
|
||
#if TCFG_AUDIO_WIDE_AREA_TAP_ENABLE
|
||
case KEY_WIDE_AREA_TAP_SWITCH:
|
||
/*广域点击测试demo开关*/
|
||
audio_wat_click_demo();
|
||
break;
|
||
#endif /*TCFG_AUDIO_WIDE_AREA_TAP_ENABLE*/
|
||
#if ANC_MULT_ORDER_ENABLE
|
||
case KEY_ANC_MULT_SCENE_SWITCH:
|
||
audio_anc_mult_scene_switch(1);
|
||
break;
|
||
#endif/*ANC_MULT_ORDER_ENABLE*/
|
||
}
|
||
return ret;
|
||
}
|
||
|
||
void adsp_volume_up(void)
|
||
{
|
||
volume_flag = 0;
|
||
volume_up(1);
|
||
volume_flag = 1;
|
||
}
|
||
|
||
void adsp_volume_down(void)
|
||
{
|
||
volume_flag = 0;
|
||
volume_down(1);
|
||
volume_flag = 1;
|
||
}
|
||
|