小白学习蓝牙第四章——传统蓝牙host介绍
1. 主机控制器接口层(HCI)
简单来说,HCI层的全程叫做Host Controller Interface,也就是说,HCI层定义了特定的格式由蓝牙协议栈来控制蓝牙芯片来做出相应的动作(比如说inquiry、connect、disconnect等一些操作)。并且蓝牙芯片回应蓝牙协议栈状态以及事件消息。蓝牙HCI在整个蓝牙中的架构图如下图所示:
HCI芯片中能够识别并且执行相应动作的原因在于在蓝牙芯片中同样存在HCI的协议代码,被烧到了蓝牙芯片中,因此所发送的数据可以被正确地解析出来,执行相应的动作之后再准确地回送给response中。
HCI的章节划分:
如上图所示:
1)contents->整个HCI章节的介绍
2)HCI层的总体介绍
3)Transport层介绍
4)总体汇总了HCI 的command以及event。
对于各自的核心配置,字母“M”表示必须声明支持,“O”表示可以选择声明支持,“P”表示可以选择仅声明核心配置的部分支持,“I”表示核心配置固有地包含在组合核心配置中,“E”表示不应声明对核心配置的支持
5)HCI FLOW CONTROL,主要讲解HCI流控。
6)HCI DATA FORMATS,HCI数据格式,
HCI command(蓝牙协议栈–>蓝牙芯片)
HCI event(蓝牙协议栈->蓝牙芯片)
HCI acl(蓝牙协议栈–>蓝牙芯片)
HCI sco(蓝牙协议栈–>蓝牙芯片)
HCI iso(蓝牙协议栈–>蓝牙芯片)
7)HCI CONFIGURATION PARAMETERS,HCI data的参数
8)HCI COMMANDS AND EVENTS
9)APPENDIX A:DEPRECATED COMMANDS, EVENTS, AND CONFIGURATION PARAMETERS
->被抛弃的command/event/数据参数
2. 逻辑链路控制和适配(L2CAP)
3. 服务发现协议(SDP)
4. 串口仿真协议(RFCOMM)
18. 蓝牙音乐协议(A2DP)
概念介绍
A2DP(Advanced Audio Distribution Profile)是蓝牙高音质音频传输协议,用于传输单声道,双声道音乐(一般在A2DP中用于stereo双声道),典型应用为蓝牙耳机。A2DP不包括远程控制的功能,远程控制的功能参考协议AVRCP。
架构如下:
协议栈的位置如图:
角色定义
source 发送音频数据的一方(手机)
sink 接收音频数据的一方(蓝牙耳机)
音频发送的整体流程
1)A2DP source的发送流程
UL收集到PCM数据,然后发送到A2DP,A2DP经过codec PCM lib(SBC,MPEG-1,2 AudioMPEG-2, 4 AACATRAC family或者自定义encoder pcm lib)压缩成特定的音频格式,然后交给AVDTP,AVDTP转交给L2CAP,L2CAP通过ACL格式转交给HCI,然后到达BT chip,通过RF射频出去。
2)A2DP sink的接收流程
BT chip通过RF接收进来数据,然后通过ACL交给HCI,然后交给L2CAP,L2CAP交给AVDTP,AVDTP交给A2DP,A2DP收到的是remote经过压缩的数据,此时通过codec pcm lib(SBC,MPEG-1,2 AudioMPEG-2, 4 AACATRAC family或者自定义encoder pcm lib)解压成PCM数据,然后交于声卡播放
codec
SBC是蓝牙强制规定支持的协议。
Channel Mode:通道数
Sink要求全支持,而Source只强制要求支持Mono,其他可选
Block Length:块长度
Subbands:次频带
参数 | 取值 | 释义 |
---|---|---|
Sampling Frequency | Sampling Frequency:这部分是采样频率,Source端强制要求44.1KHz,48KHz支持一种,Sink要求44.1KHz,48Khz都支持 | |
Channel Mode | ||