目录:
概述
物理信道
物理连接
逻辑传输
逻辑连接
数据包
比特流加工
链路控制器
音频处理
一、概念描述
蓝牙时钟:Bluetooth Clock
蓝牙设备地址:Bluetooth Device Addressing
这里需要介绍下蓝牙时钟:
二、物理信道
物理发射功率在2.402GHz到2.480GHz之间,有79个信道。在连接状态、同步扫描状态和同步队列状态最大调频速率为1600跳/S;在请求和寻呼状态中最大调频速率为3200跳/S。跳频序列是双方约定的一组伪随机数。
定义的5中信道:
• basic piconet physical channel 在连接状态默认使用
• adapted piconet physical channel 修改过的piconet连接使用
• page scan physical channel
• inquiry scan physical channel
• synchronization scan physical channel
第一 二种用于基础和改变后的piconet连接
第三种寻呼扫描信道用于扫描连接设备。
第四种请求扫描信道
使用Native时钟
第五种同步扫描信道用于设备接收同步队列包
主从设备的定义是在两个建立连接的设备之间有意义。
蓝牙管理中搜索周围设备(device discovery),会进行page scan;page scan其实是不停的进行多次inquiry scan,知道外部某个条件才中断。page scan中两次inquiry scan间隔一般是30S。
三、物理连接
一个物理连接代表设备间的基带连接。一个物理连接总是和一个确定的物理信道关联。物理连接用共同的属性:在物理连接上申请逻辑传输。
• Power control
• Link supervision
• Encryption
• Channel quality-driven data rate change
• Multi-slot packet control
四、逻辑传输
主从设备之间 不同的逻辑传输可能被确立,定义了六种逻辑传输
• Synchronous Connection-Oriented (SCO) logical transport
• Extended Synchronous Connection-Oriented (eSCO) logical transport
• Asynchronous Connection-Oriented (ACL) logical transport
• Active Slave Broadcast (ASB) logical transport
• Parked Slave Broadcast (PSB) logical transport
• Connectionless Slave Broadcast (CSB) logical transport.
SCO:用于有时限的信息例如声音或者一般的同步数据。使用保留时隙。
eSCO:可能有在保留时隙后一个重传窗口。
ACL:总是主从设备之间的一个点到点的逻辑传输。在非保留时隙中。
ASB:用于主设备和活动的从设备通信。
PSB:用于主设备和休眠的从设备通信。
CBS:用于主设备发送Profile广播。
LT_ADDR:逻辑传输地址
为一个处于活动状态的从设备都会被分配一个3bit的LT_ADDR。
全0的LT_ADDR保留给ASB和PSB广播消息。有一个非全0的地址留给CSB逻辑连接
SCO是对称的。一个主设备可以提供3个SCO连接和同一个从设备或者和不同的设备。一个从设备可以提供三个SCO连接和同一个主设备或者两个SCO连接和不同的主设备。而且SCO绝不重传。
eSCO窗口由保留时隙和重传窗口构成,是对称或者非对称的。
在一个主设备和一个从设备之间仅仅应该存在一个ACL逻辑传输,如果有更多的ACL数据包,用重传确保数据完整。如果ACL数据连接没有数据发送,不需要轮询,不需要传输请求。
发送接收过程!!
ASB逻辑传输被用于连接在匹克网中的设备的L2CAP传输,传输是单向的,没有确认。ASB逻辑传输只用于L2CAP群组传输,绝不用于L2CAP的面向连接信道、L2CAP控制信标和LMP的控制信标。ASB逻辑传输的不可靠的,为了增加可靠性,数据包会有一定数量的
重传,重传的数据包使用相同的序列号以便从设备过滤重传。
五、逻辑连接
蓝牙白皮书定义了6种逻辑连接
• Link Control (LC)
• ACL Control (ACL-C)
• User Asynchronous/Isochronous (ACL-U)
• User Synchronous (SCO-S)
• User Extended Synchronous (eSCO-S)
• Profile Broadcast Data (PBD)
LC携带底层的控制信息:ARQ、流控和有效数据描述。除了数据包没有包头,否则每个包都包含LC信息。
ACL-C:携带LM层交换的信息,用DM1或者DV数据包。ACL-C的的LLID为11b。
ACL-U:携带L2CAP的用户信息。这些信息可能有一个或者更多的基带数据包。开始数据包LLID是10b,如果是同一个数据包,则后续的数据包LLID为01b,否则LLID为10b。
SCO-S和eSCO-S:携带同步用户数据。
PBD:携带profile 广播数据。数据不应该被分片,应该重视用LLID 10b。
ACL-L最高的优先级,PBD优先级最低。
六、数据包
基础速率数据包
3中数据包:只有access code,只有access code与包头以及完整的数据包。
access code大小:72/68bits
header:54bits
payload:0~2790bits
增强数据速率数据包
bit 采用小端模式:先发送低位。
access code:
四种类型的access code:
CAC channel access code 三部分组成 72bits
DAC device access code
GIAC General inquiry access code
DIAC dedicated inquiry access code
DAC用于Page、Page Scan和Page Response状态
CAC用于connection状态,synchrontzation Train状态和Synchronization Scan状态
IAC用于Inquiry状态,包含一个GIAC和63个DIAC。
不同的access code类型用不同的LAPs构造sync word
短access code用于寻呼、查询和休眠。
如果如果数据包中有包头,access code是72bits。否则为68bits。
Preamble用两种1010/0101由sync word的LSB决定:
sync word:
CAC由master的LAP计算而来
DAC是由slave的LAP计算而来
IAC是由reserved/dedicated计算而来
trailer:
与preamble类似,trailer有两种:1010/0101,有sync word的MSB决定:
Packet header
包头中包含着Link control信息,有6部分组成(18bits):
• LT_ADDR: 3-bit logical transport address
• TYPE: 4-bit type code
• FLOW: 1-bit flow control
• ARQN: 1-bit acknowledge indication
• SEQN: 1-bit sequence number
• HEC: 8-bit header error check
流控在eSCO和ACL-C中不使用。
packet types被分为4段
第一段:控制包
第二段:a single time slot
第三段:three time slots
第四段:five time slots
包类型作用:确定是否用Enhanced data Rate;确定在哪一条logical transport上传输(sco,eSCO
ACL);确定数据包的类型(SCO,eSCO,ACL)。
普通包类型
5中普通包,在第一段中和ID包
ID包:由DAC和IAC组成,固定的长度68bits,它是非常健壮的包。
NULL包:没有payload,仅仅有CAC和包头。定长126bits。空包可能用于返回链路信息到源设备关于前一个传输的状和Rx buffer的状态。空数据包没有ACK。
POLL 包:被master用于poll the slaves;slaves不发送POLL包。没有payload但需要确认
FHS包:payload有11个部分组成,114信息bits和16bit CRC,采用2/3FEC,总长度(payload)为240bits。被用于page master response,inquiry response和角色切换中;在piconet channel确定前的调频同步。
SR:两个连续的page scan窗口的间隔。
DM1包:可以携带用户信息,也可以被当做一个ACL包。
SCO包
在SCO中有两种包,HV和DV包。HV没有CRC校验,并且没有重传;DV包含CRC在数据段,但是不在同步数据段,数据段可以重传。DV包是data-voice包,payload被分为80bit的voice和150bits的data。如果DV包中的数据data部分在SCO结束前没有收到ACK,则data将被以一个DM1数据包重传。
eSCO包
EV包被用在同步eSCO逻辑传输中。EV包包含CRC和重传。3个eSCO(EV3,EV4,EV5)被定义在基础速率(BR)中,4个其他的eSCO包(2-EV3,3-EV3,2-EV5,3-EV5)定义在增强数据速率(EDR)模式。
ACL包
ACL被用于异步逻辑传输,携带的信息是用户或者控制数据。为基础速率(BR)定义7中类型的包,为增强速率(EDR)定义了6种包。
异步数据段
LLID code为10时,L2cap消息的开始;为01时表示L2CAP消息后续包;为11时,表示LMP消息。
数据包概述
Acl、sco和esco链路的数据包类型。最左侧的一列1234代表时隙。
七、链路控制 LC
3个主要状态:standby,connection和park
7个次要状态:page,page scan,inquiry,inquiry scan,master response,slave response and inquiry
response
次要状态被用于确立一个连接和使能设备发现。从一个状态到两外一个,使用link manager命令或者使用link controller的内部信令(signals),例如触发器信令和超时信令。
在standby状态,设备处于低功耗模式,仅仅本地时钟运行。
The pagesubstate is used by the master (source) to activateand connect to a
slave (destination) in the page scansubstate.
参考 http://www.cnblogs.com/hzl6255/p/3840641.html