初版
This commit is contained in:
@@ -0,0 +1,160 @@
|
||||
#ifdef SUPPORT_MS_EXTENSIONS
|
||||
#pragma bss_seg(".bt_app_msg_handler.data.bss")
|
||||
#pragma data_seg(".bt_app_msg_handler.data")
|
||||
#pragma const_seg(".bt_app_msg_handler.text.const")
|
||||
#pragma code_seg(".bt_app_msg_handler.text")
|
||||
#endif
|
||||
#include "key_driver.h"
|
||||
#include "app_main.h"
|
||||
#include "init.h"
|
||||
#include "bt_key_func.h"
|
||||
#include "low_latency.h"
|
||||
#include "a2dp_player.h"
|
||||
#include "linein_player.h"
|
||||
#include "app_tone.h"
|
||||
#include "audio_config.h"
|
||||
#include "vol_sync.h"
|
||||
#include "bt.h"
|
||||
#include "classic/tws_api.h"
|
||||
|
||||
#if TCFG_APP_BT_EN
|
||||
|
||||
int bt_app_msg_handler(int *msg)
|
||||
{
|
||||
if (false == app_in_mode(APP_MODE_BT)) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
u8 msg_type = msg[0];
|
||||
|
||||
printf("bt_app_msg type:0x%x", msg[0]);
|
||||
switch (msg_type) {
|
||||
case APP_MSG_CHANGE_MODE:
|
||||
puts("app msg key change mode\n");
|
||||
/*一些情况不希望退出蓝牙模式*/
|
||||
if (bt_app_exit_check() == 0) {
|
||||
puts("bt_background can not enter\n");
|
||||
return 0;
|
||||
}
|
||||
#if TCFG_USER_TWS_ENABLE && !TCFG_BT_BACKGROUND_ENABLE
|
||||
#if CONFIG_TWS_USE_COMMMON_ADDR == 0
|
||||
if (tws_api_get_role() == TWS_ROLE_SLAVE) {
|
||||
tws_api_detach(TWS_DETACH_BY_POWEROFF, 5000); //这里从机用TWS_DETACH_BY_POWEROFF断开不会进行主从切换
|
||||
g_bt_hdl.ignore_discon_tone = 1;
|
||||
}
|
||||
#endif
|
||||
if (msg[1] == APP_KEY_MSG_FROM_TWS) { //非后台不响应来自tws的切换模式消息
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
app_send_message(APP_MSG_GOTO_NEXT_MODE, 0);
|
||||
break;
|
||||
case APP_MSG_MUSIC_PP:
|
||||
puts("app msg music pp\n");
|
||||
bt_key_music_pp();
|
||||
break;
|
||||
case APP_MSG_MUSIC_NEXT:
|
||||
puts("app msg music next\n");
|
||||
bt_key_music_next();
|
||||
break;
|
||||
case APP_MSG_MUSIC_PREV:
|
||||
puts("app msg music prev\n");
|
||||
bt_key_music_prev();
|
||||
break;
|
||||
case APP_MSG_VOL_UP:
|
||||
puts("app msg vol up\n");
|
||||
bt_key_vol_up();
|
||||
break;
|
||||
case APP_MSG_VOL_DOWN:
|
||||
puts("app msg vol down\n");
|
||||
bt_key_vol_down();
|
||||
break;
|
||||
case APP_MSG_CALL_HANGUP:
|
||||
puts("app msg call HangUp\n");
|
||||
bt_key_call_hang_up();
|
||||
break;
|
||||
case APP_MSG_CALL_LAST_NO:
|
||||
puts("app msg call last on\n");
|
||||
bt_key_call_last_on();
|
||||
break;
|
||||
case APP_MSG_OPEN_SIRI:
|
||||
puts("app msg open siri\n");
|
||||
bt_key_call_siri();
|
||||
break;
|
||||
case APP_MSG_HID_CONTROL:
|
||||
puts("app msg hid control\n");
|
||||
bt_key_hid_control();
|
||||
break;
|
||||
case APP_MSG_LOW_LANTECY:
|
||||
puts("app msg low lantecy\n");
|
||||
int state = bt_get_low_latency_mode();
|
||||
bt_set_low_latency_mode(!state);
|
||||
break;
|
||||
case APP_MSG_ADD_LINEIN_STREAM:
|
||||
#if TCFG_APP_LINEIN_EN
|
||||
//工具的蓝牙流程图需要添加对应的linein数据流!!
|
||||
puts("app msg add linein stream\n");
|
||||
if (linein_player_runing()) {
|
||||
linein_player_close();
|
||||
} else {
|
||||
linein_player_open();
|
||||
}
|
||||
#endif
|
||||
break;
|
||||
case APP_MSG_BT_A2DP_START:
|
||||
#if TCFG_BT_BACKGROUND_ENABLE
|
||||
/*这里处理有些设备切到后台一直不推a2dp stop,手动切到蓝牙模式后能量检测还在跑,这时候点击设备播放按钮之后,
|
||||
能量检测有数据之后结束推APP_MSG_BT_A2DP_START,这种情况需要在这里打开解码*/
|
||||
u8 *bt_addr = (u8 *)&msg[1];
|
||||
ASSERT(bt_addr);
|
||||
u8 dev_vol = bt_get_music_volume(bt_addr);
|
||||
app_audio_state_switch(APP_AUDIO_STATE_MUSIC, app_audio_volume_max_query(AppVol_BT_MUSIC), NULL);
|
||||
if (dev_vol > 127) {
|
||||
dev_vol = app_audio_bt_volume_update(bt_addr, APP_AUDIO_STATE_MUSIC);
|
||||
}
|
||||
set_music_device_volume(dev_vol);
|
||||
int err = a2dp_player_open(bt_addr);
|
||||
if (err == -EBUSY) {
|
||||
printf("bt_app_msg_handler open a2dp_player failed\n");
|
||||
}
|
||||
#endif
|
||||
break;
|
||||
|
||||
case APP_MSG_CALL_THREE_WAY_ANSWER1:
|
||||
bt_key_call_three_way_answer1();
|
||||
break;
|
||||
|
||||
case APP_MSG_CALL_THREE_WAY_ANSWER2:
|
||||
bt_key_call_three_way_answer2();
|
||||
break;
|
||||
|
||||
case APP_MSG_CALL_SWITCH:
|
||||
bt_key_call_switch();
|
||||
break;
|
||||
|
||||
case APP_MSG_PITCH_UP:
|
||||
#if TCFG_PITCH_SPEED_NODE_ENABLE
|
||||
printf("app msg a2dp pitch up\n");
|
||||
if (a2dp_player_runing()) {
|
||||
app_var.pitch_mode = a2dp_file_pitch_up(); //返回当前变调模式
|
||||
}
|
||||
#endif
|
||||
break;
|
||||
case APP_MSG_PITCH_DOWN:
|
||||
#if TCFG_PITCH_SPEED_NODE_ENABLE
|
||||
printf("app msg a2dp pitch down\n");
|
||||
if (a2dp_player_runing()) {
|
||||
app_var.pitch_mode = a2dp_file_pitch_down();
|
||||
}
|
||||
#endif
|
||||
break;
|
||||
default:
|
||||
app_common_key_msg_handler(msg);
|
||||
printf("unknow msg type:%d", msg_type);
|
||||
break;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
#endif /* #if TCFG_APP_BT_EN */
|
||||
Reference in New Issue
Block a user