基于Android P版本分析
通话过程协议分析
拒接电话
从AG端接听Incoming call的流程比较简单,其中包括了几个动作:来电、响铃和拒接,AG只是会通过+CIEV、RING和AT+CLCC等指令进行交互,其中通过+CIEV指令更新callsetup和call状态;
这个过程和接听来电的过程非常相似,他们之间唯一的差别在与:接听和拒接的区别,对应了两个AT+指令;
AG侧拒接和HF侧拒接基本相同;
中间和接听电话的逻辑一致,不做分析;
拒接
AT+CHUP
标准挂起AT命令,执行命令使AG终止当前活动的调用;
yaml
Bluetooth HFP Profile
[Role: HS - Headset (2)]
AT Stream: AT+CHUP\r
Command 0: +CHUP
Command Line Prefix: AT
Command: +CHUP (Call Hang-up)
Type: Action Command (0x000d)
Parameters: No
对应返回OK Response;
+CIEV: 2,0
yaml
Bluetooth HFP Profile
[Role: AG - Audio Gate (1)]
AT Stream: \r\n+CIEV: 2,0\r\n
Command 0: +CIEV
Command: +CIEV (Indicator Events Reporting)
Type: Response (0x003a)
Parameters
Indicator Index: 2
Indicator 2: 0
- callsetup = 0:代表了当前没在呼叫中,callsetup 状态从 1 -> 0,代表了从呼叫状态到结束呼叫状态的变化;