一拖二通话切换客户使用文档+三方通话
一拖二通话切换客户使用文档
目录
第 1章 配置功能...............................................................................................................................2
1.1 替换库文件............................................................................................................................... 2
1.2 修改文件................................................................................................................................... 2
第2章 接口使用...............................................................................................................................4
2.1 一拖二设备状态....................................................................................................................... 4
2. 1. 1.状态:.........................................................................................................................4
2. 1.2.接口:.........................................................................................................................4
2.2 一拖二设备命令....................................................................................................................... 4
2.2. 1.命令.............................................................................................................................4
2.2.2.接口.............................................................................................................................4
2.3 三方通话状态........................................................................................................................... 4
2.3. 1.参数.............................................................................................................................4
2.3.2.返回值.........................................................................................................................5
2.3.3.接口.............................................................................................................................5
2.4 三方通话命令........................................................................................................................... 5
2.4. 1.命令:.........................................................................................................................5
2.4.2.接口:.........................................................................................................................5
2.5 DEMO .........................................................................................................................................5
第1章 配置功能
第1章 配置功能
1.1 替换库文件
1.2 修改文件
修改:在earphone.c文件的void bt_function_select_init()函数中增加
- #if (TCFG_BD_NUM == 2 )

- set_auto_conn_device_num(2 ) ;
- set_hfp_switch (2 ) ; /* 通话是否支持抢断 */
- set_hfp_ restore(1 ) ;
- #endif
接口介绍:
set_hfp_switch (2 ) ;设置1拖2时电话是否抢断标识: 1 来电抢断2 接通抢断
set_hfp_restore(1 ) ;设置1拖2时电话是否恢复标识:0 不恢复 1恢复
修改:include_lib/ btstack/avctp_user. h
1 . USER_CTRL_CMD_SYNC_VOL_INC ,
2 . USER_CTRL_CMD_SYNC_VOL_DEC ,
3 . USER_CTRL_CMD_CHANGE_PROFILE_MODE, 4 . USER_CTRL_CMD_RESERVE_INDEX4 ,
5 . USER_CTRL_CMD_RESUME_STACK ,
6 . USER_CTRL_AVCTP_OPID_GET_MUSIC_INFO, 7. - // 一拖二通话操作
- USER_CTRL_MULTI_HFP_CMD_BEGIN,
- // 设备间通话切换
- USER_CTRL_MULTI_ESCO_SWITCH,
- // 挂断打断设备通话
- USER_CTRL_MULTI_HFP_CALL_HANGUP_BREAK,
- //前台设备三方通话,挂断当前并接听
15 .USER_CTRL_MULTI_HFP_THREE_WAY_ANSWER1 ,
16 ./前台设备三方通话,保留当前并接听 - USER_CTRL_MULTI_HFP_THREE_WAY_ANSWER2 ,
- // 打断设备三方通话,挂断当前接通来电
- USER_CTRL_MULTI_HFP_THREE_WAY_ANSWER1_BREAK ,
- // 打断设备三方通话,挂断当前接通来电并切换到耳机通话
- USER_CTRL_MULTI_HFP_THREE_WAY_ANSWER1_BREAK_SWITCH,
0
http://www.zh-jieli.com/ - // 打断设备三方通话,保留当前接通来电
- USER_CTRL_MULTI_HFP_THREE_WAY_ANSWER2_BREAK ,
- // 打断设备三方通话,保留当前接通来电并切换到耳机通话
- USER_CTRL_MULTI_HFP_THREE_WAY_ANSWER2_BREAK_SWITCH,
- // 打断设备三方通话,拒绝后台来电
- USER_CTRL_MULTI_HFP_THREE_WAY_ANSWER3_BREAK ,
- USER_CTRL_MULTI_HFP_CMD_END,
- enum {
| 2. | BD_ESCO_IDLE = 0 , | /当前没有设备通话中/ |
|---|---|---|
| 3. | BD_ESCO_BUSY_CURRENT, | /当前地址对应的设备通话中/ |
| 4. | BD_ESCO_BUSY_OTHER, | /通话中的设备非当前地址/ |
| 5. | } ; | |
| 6. | ![]() enum { | |
| 7. | BD GET SECOND ACTIVE = | 0 , /获取当前设备的三方通话状态/ |
| 8. | BD_GET_SECOND_BREAK, | ![]() /获取后台设备的三方通话状态/ |
| 9. | } ; |




第2章 接口使用
第2章 接口使用
2.1 一拖二设备状态
2.1.1.状态:

- #define MULTI_BD_CALL_INCOMING_ACTIVE 0X03 //一个设备接通,一个设备来电
- #define MULTI_BD_CALL_ACTIVE_ACTIVE 0X10 //两个设备接通状态
3 . #define MULTI_BD_CALL_INCOMING_INCOMING 0x08 //两个打入状态 - #define MULTI_BD_CALL_INCOMING_OUTGOING 0x06 //一个打出一个来电
- #define MULTI_BD_CALL_ACTIVE_OUTGOING 0x05 //一个通话一个打出
- #define MULTI_BD_CALL_OUTGOING_OUTGOING 0x20 //两个打出状态
7 . #define MULTI_BD_CALL_INCOMING 0x02 //一个来电
8 . #define MULTI_BD_CALL_ACTIVE 0x01 //一个通话 - #define MULTI_BD_CALL_INCOMING 0x04 //一个打出
2.1.2.接口:
- u8 multi_bd_get_call_inc。ming(v。id);
2.2 一拖二设备命令
2.2.1.命令
- // 设备间通话切换
- USER_CTRL_MULTI_ESCO_SWITCH,
- // 挂断打断设备通话
- USER_CTRL_MULTI_HFP_CALL_HANGUP_BREAK,
2.2.2.接口
- user_send_cmd_prepare(USER_CTRL_MULTI_ESCO_SWITCH, 0 , NULL) ;
2.3 三方通话状态
2.3.1.参数
- BD_GET_SECOND_ACTIVE /获取当前设备的三方通话状态/

- BD_GET_SECOND_BREAK /获取后台设备的三方通话状态/
2.3.2.返回值
| 1. | #define | SECOND CALL IN | 0x02//来电 |
|---|---|---|---|
| 2. | #define | SECOND CALL OUT | 0x04//去电 |
| 3. | #define | SECOND CALL HELD | 0x08//挂起 |
| 4. | #define | SECOND CALL HANGUP | 0x00//没有状态 |


2.3.3.接口
u8 get_second_break_call_status(u8 active_or_break); //用于获取当前设备三方通话状态和后台设备三方通话状态
2.4 三方通话命令
2.4.1.命令:
1 . //前台设备三方通话,挂断当前并接听
2 . USER_CTRL_MULTI_HFP_THREE_WAY_ANSWER1 ,
3 . /前台设备三方通话,保留当前并接听
4. USER_CTRL_MULTI_HFP_THREE_WAY_ANSWER2 ,
5. // 打断设备三方通话,挂断当前接通来电
6. USER_CTRL_MULTI_HFP_THREE_WAY_ANSWER1_BREAK ,
7. // 打断设备三方通话,挂断当前接通来电并切换到耳机通话
8. USER_CTRL_MULTI_HFP_THREE_WAY_ANSWER1_BREAK_SWITCH,
9. // 打断设备三方通话,保留当前接通来电
10. USER_CTRL_MULTI_HFP_THREE_WAY_ANSWER2_BREAK ,
11. // 打断设备三方通话,保留当前接通来电并切换到耳机通话
12. USER_CTRL_MULTI_HFP_THREE_WAY_ANSWER2_BREAK_SWITCH,
13. // 打断设备三方通话,拒绝后台来电
14. USER_CTRL_MULTI_HFP_THREE_WAY_ANSWER3_BREAK ,
2.4.2.接口:
- user_send_cmd_prepare(USER_CTRL_MULTI_HFP_THREE_WAY_ANSWER1_BREAK, 0 , NULL) ;
2.5 DEMO
这一段程序是用于判断当前是否有来电,并且判断来电时是否有电话在接通
(1)用于单击按键
- if (get_call_status() == BT_CALL_INCOMING ) {//判断是否有来电
| 2. if(multi_bd_get_call_incoming() == MULTI_BD_CALL_INCOMING_ACTIVE ) {//判断状态是否为一个接通一个来电 | ||
|---|---|---|
| 3. | 话设备 | user_send_cmd_prepare(USER_CTRL_HFP_CALL_HANGUP, 0 , NULL) ;//挂断当前通 |
| 4. | } | ![]() eıse { |
| 5. | user_send_cmd_prepare(USER_CTRL_HFP_CALL_ANSWER , 0 , NULL) ; | |
| 6. | } | ![]() |
| 7. | } |
(2)双击接通和切换接口:
- if (get_call_status() == BT_CALL_INCOMING ){ //在第一个电话来电时 调用也会接通 , 若 不 想 接 通 可 在 if 中 增加 && multi_bd_get_call_incoming() == MULTI_BD_CALL_INCOMING_ACTIVE
- user_send_cmd_prepare(USER_CTRL_HFP_CALL_ANSWER, 0 , NULL) ; //接通当前来电并挂起通话设备
- } eıse if (multi_bd_get_call_incoming() == MULTI_BD_CALL_ACTIVE_ACTIVE){ user_send_cmd_prepare(USER_CTRL_MULTI_ESCO_SWITCH, 0 , NULL) ; //切换设备接 口
- }
1.注:红色部分为增加代码。



