经典蓝牙连接过程

ACL是连接基础,sco需要再ACL连接成功后建立连接。基本链接流程如下:

一、创建连接

从用户点击扫描到的蓝牙设备开始,发起连接的设备会发送create_connection给controller。controller会进行page过程。

 而后会底层链接完成,这个完成仅仅是确认两边连接请求的一次交换。

二、Feature交换

 连接完成后,进行两端的物理层功能交换。确定能力一致性。中间也会针对物理层策略进行配置:Master/slave switch; hold mode; sniffer mode ;Remote name、remote version等。

 

三、配对 

最早的配对是采用输入pin码的形式,但是手机上大多是采用simple pair的方法.对于非首次连接的设备,配对的过程,所谓交换安全密钥的过程就不再必要,可以直接跳过。

配对可以分为四个阶段:

1.配对信息交换:确认使用simple pair,pin或是其他方式进行认证

2.链路认证:这一过程在确认认证方式后,用户需要主动健全的操作,如点击接受配对请求、输入pin码等

3.密钥分配:基于随机数,pin码,mac等信息生成LTK。确认共同的密钥

4.绑定:双方保存了对方的密钥信息,类似wifi的保存AP形式

 

 simple pair

 

 这里发送的user confirmation也代表首次链接时,用户点击accpet对话框的一个标志。

 Simple pair以发起认证,link key互换,IO信息交换,用户点击接受连接位置,代表simple pair完成。

代码实现

有些类画的不是那么准确但是整体流程是通的,bonded之后就是各profile连接,而后settings上回显示已连接

四、Profile连接

说明几个主要profile的连接过程。对于手机而言,蓝牙连接成功标志为配对后某个profile连接完成,即便后续几个profile还在连接中。代码如下:CachedBluetoothDevice.java

    public boolean isConnected() {
        synchronized (mProfileLock) {
            for (LocalBluetoothProfile profile : mProfiles) {
                int status = getProfileConnectionState(profile);
                if (status == BluetoothProfile.STATE_CONNECTED) {
                    return true;
                }
            }

            return false;
        }
    }
  • HFP

HFP连接首先进行SDP服务发现过程,分配逻辑信道后开启连接。由于HFP基于Rfcomm实现,所以需要先行建立rfcomm连接.

 Rfcomm连接开启先基于sdp申请的CID在L2CAP进行连接和信息交换。

 由于Rfcomm不止围绕HFP一个profile服务(还有opp等),在rfcomm完成后,还需要进行HFP连接,这其中的部分连接过程如下所示:

 基于音频基础理论,两端是被进行音频传输前,需要统一支持的编码格式,采样率,控制语义等,在HFP中进行了这些信息的交换。

  • A2DP/AVRCP

A2DP作为重要的profile,基于的协议为AVDTP。在SDP发现后,同样进行L2CAP的连接后,才能进行上层profile的连接。

 同样需要进行音频信息的交换,HFP的音频参数不能和A2DP复用并且基于profile的独立规则,需要再进行一次音频信息交换.个人理解,HFP主要保证音频传输稳定性,A2DP则需要提升音频细节,需要采用不同的编码和采样率。

 

  • 7
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值