杰理-一拖二播歌抢占log分析1

杰理之一拖二配对流程

原创内容来自:

杰理之一拖二配对流程【篇】_杰理一拖二-优快云博客

杰理之一拖二播歌抢占流程log分析

场景:设备A先播歌,设备B抢占设备A播歌,设备A再次抢占设备B播歌。

以下是正常抢占的log,跟踪调试流程可以参考核对。

播歌抢占流程:

设备A先播歌:

Received AVDTP_START //收到远程命令,还未执行命令动作

BT_STATUS_AVDTP_START //远程设备地址

“(设备A)发送命令的远端设备地址”

dual_conn_btstack_event_handler:0x38 //BT_STATUS_AVDTP_START播歌

BT_STATUS_A2DP_MEDIA_START        //开始执行命令动作
“(设备A)发送命令的远端设备地址”
dual_conn_btstack_event_handler:0x36 //BT_STATUS_A2DP_MEDIA_START播歌

BT_STATUS_AVRCP_VOL_CHANGE

dual_conn_btstack_event_handler:0x29 //BT_STATUS_AVRCP_VOL_CHANGE协议栈更新音量值出来

[EARPHONE]BT_STATUS_AVRCP_INCOME_OPID:68 //AVC_PLAY播歌

BT_STATUS_AVRCP_INCOME_OPID: 44

“(设备A)要播歌的远端设备地址”

dual_conn_btstack_event_handler:0x28 //收到远端设备发过来的AVRCP命令

app_msg_bt_a2dp_play

“(设备A)要播歌的远端设备地址”

conn->core.a2dp_mute=0 //有设备要播歌

(设备A)创建解码流

[handshake] : 1, 2 //等待握手ack

[handshake] : 1, 1 //握手request

[handshake] : 1, 4 //握手成功

>>>>handshake time 80 ms //握手时间???

设备B抢占设备A播歌:

Received AVDTP_START / /收到远程命令,还未执行命令动作

BT_STATUS_AVDTP_START //远程设备地址

“(设备B)发送命令的远端设备地址”

dual_conn_btstack_event_handler:0x38 //BT_STATUS_AVDTP_START播歌
BT_STATUS_A2DP_MEDIA_START        //开始执行命令动作
“(设备B)发送命令的远端设备地址”

dual_conn_btstack_event_handler:0x36 //BT_STATUS_A2DP_MEDIA_START播歌

BT_STATUS_AVRCP_VOL_CHANGE

dual_conn_btstack_event_handler:0x29 //BT_STATUS_AVRCP_VOL_CHANGE协议栈更新音量值出来

CMD_A2DP_SLIENCT_DETECE //能量检测

“(设备B)要播歌的远端设备地址”

bt_start_a2dp_slience_detect

“(设备B)要播歌的远端设备地址”

bt_start_a2dp_slience_detect, 297 g_dual_detect->is_receive_avrcp_play_cmd = 0 //是否收到avrcp的播放命令

[EARPHONE]BT_STATUS_AVRCP_INCOME_OPID:68 //AVC_PLAY播歌

BT_STATUS_AVRCP_INCOME_OPID: 44

“(设备B)要播歌的远端设备地址”

dual_conn_btstack_event_handler:0x28 //收到远端设备发过来的AVRCP命令

a2dp_slience_detect, 188 g_dual_detect->is_receive_avrcp_play_cmd = 1 //是否收到avrcp的播放命令

CMD_A2DP_MUTE //抢占,把正在播歌的设备mute住

“(设备A)被抢占的设备地址”

(设备A)释放解码流

conn->core.a2dp_mute=1 //释放解码流,没设备播歌

bt_start_a2dp_slience_detect: //能量检测

“(设备A)被抢占的设备地址”

bt_start_a2dp_slience_detect, 297 g_dual_detect->is_receive_avrcp_play_cmd = 0 //是否收到avrcp的播放命令

app_msg_bt_a2dp_play

“(设备B)要播歌的远端设备地址”

conn->core.a2dp_mute=0 //有设备要播歌

(设备B)创建解码流

[handshake] : 1, 2 //等待握手ack

[handshake] : 1, 4 //握手成功

>>>>handshake time 80 ms

[EARPHONE]BT_STATUS_AVRCP_INCOME_OPID:70 //AVC_PAUSE

BT_STATUS_AVRCP_INCOME_OPID: 46

“(设备A)被抢占的设备地址”

dual_conn_btstack_event_handler:0x28 //收到远端设备发过来的AVRCP命令

BT_STATUS_AVDTP_SUSPEND //抢占,挂起被抢占的设备

“(设备A)被抢占的设备地址”

conn->core.a2dp_mute=0 //有设备播歌

dual_conn_btstack_event_handler:0x39 //BT_STATUS_AVDTP_SUSPEND

BT_STATUS_A2DP_MEDIA_STOP //暂停被抢占的设备

tws_a2dp_player_close

“(设备A)被抢占的设备地址”

bt_stop_a2dp_slience_detect

conn->core.a2dp_mute=0 //有设备播歌

设备B抢占设备A播歌:

Received AVDTP_START / /收到远程命令,还未执行命令动作

BT_STATUS_AVDTP_START //远程设备地址

“(设备A)发送命令的远端设备地址”

dual_conn_btstack_event_handler:0x38 //BT_STATUS_AVDTP_START播歌
BT_STATUS_A2DP_MEDIA_START        //开始执行命令动作
“(设备A)发送命令的远端设备地址”

dual_conn_btstack_event_handler:0x36 //BT_STATUS_A2DP_MEDIA_START播歌

BT_STATUS_AVRCP_VOL_CHANGE

dual_conn_btstack_event_handler:0x29 //BT_STATUS_AVRCP_VOL_CHANGE协议栈更新音量值出来

CMD_A2DP_SLIENCT_DETECE //能量检测

“(设备A)要播歌的远端设备地址”

bt_start_a2dp_slience_detect

“(设备A)要播歌的远端设备地址”

bt_start_a2dp_slience_detect, 297 g_dual_detect->is_receive_avrcp_play_cmd = 0 //是否收到avrcp的播放命令

[EARPHONE]BT_STATUS_AVRCP_INCOME_OPID:68 //AVC_PLAY播歌

BT_STATUS_AVRCP_INCOME_OPID: 44

“(设备A)要播歌的远端设备地址”

dual_conn_btstack_event_handler:0x28 //收到远端设备发过来的AVRCP命令

a2dp_slience_detect, 188 g_dual_detect->is_receive_avrcp_play_cmd = 1 //是否收到avrcp的播放命令

CMD_A2DP_MUTE //抢占,把正在播歌的设备mute住

“(设备B)被抢占的设备地址”

(设备B)释放解码流

conn->core.a2dp_mute=1 //释放解码流,没设备播歌

bt_start_a2dp_slience_detect: //能量检测

“(设备B)被抢占的设备地址”

bt_start_a2dp_slience_detect, 297 g_dual_detect->is_receive_avrcp_play_cmd = 0 //是否收到avrcp的播放命令

app_msg_bt_a2dp_play

“(设备A)要播歌的远端设备地址”

conn->core.a2dp_mute=0 //有设备要播歌

(设备A)创建解码流

[handshake] : 1, 2 //等待握手ack

[handshake] : 1, 4 //握手成功

>>>>handshake time 80 ms

 以下是log没有的(关机早了),猜测继续运行应该会有:

[EARPHONE]BT_STATUS_AVRCP_INCOME_OPID:70 //AVC_PAUSE

BT_STATUS_AVRCP_INCOME_OPID: 46

“(设备B)被抢占的设备地址”

dual_conn_btstack_event_handler:0x28 //收到远端设备发过来的AVRCP命令

BT_STATUS_AVDTP_SUSPEND //抢占,挂起被抢占的设备

“(设备B)被抢占的设备地址”

conn->core.a2dp_mute=0 //有设备播歌

dual_conn_btstack_event_handler:0x39 //BT_STATUS_AVDTP_SUSPEND

BT_STATUS_A2DP_MEDIA_STOP //暂停被抢占的设备

tws_a2dp_player_close

“(设备B)被抢占的设备地址”

bt_stop_a2dp_slience_detect

conn->core.a2dp_mute=0 //有设备播歌

tip

当有设备播歌时,conn->core.a2dp_mute=0

当没有设备播歌时,conn->core.a2dp_mute=1

当A设备被抢占时,会有 CMD_A2DP_MUTE  + “被mute住的设备地址”

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值