目錄:
概述
物理信道
物理連接
邏輯傳輸
邏輯連接
數據包
比特流加工
鏈路控制器
音頻處理
一、概念描述
藍牙時鐘: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