簡介
SCO具備雙向對稱性,可以看作電路型連線,通常用於支持語音等實時業務。主節點可與一個或多個從節點建立多達3個的SCO鏈路;一個從節點也與多個主節點建立SCO鏈路(最多3條)。SCO分組不採用重傳機制。SCO鏈路的建立通過主節點傳送LMP的SCOsetup訊息,該訊息中包含了TSCO和Dsco等參數。Dsco用於標識SCO開始的時隙相對數,而Tsco用於表示時隙的重複周期。
未被SCO占用的時隙可用於ACL,在一對主從節點之間只有一條ACL。ACL的分組傳送來用重傳機制以確保正確性。只有主節點在發往從節點的分組中以某種方式允許某從節點傳送數據時,該從節點才能在規定時隙傳送數據。ACL支持廣播。
每個分組由3部分組成,即接入碼(AccessCode)、頭(Header)、負載(Payload)。其中接入碼和頭欄位為固定長度,分別為72比特和54比特;負載是可變長度,從0~2745比特。一個分組可以僅包含接入碼欄位(此時為縮短的68比特),或者包含接入碼與頭欄位,或者包含全部3個欄位。
接入碼有三種類型:ChannelAccessCode(CAC)、DeviceAccessCode(DAC)和InquiryAccessCode(IAC)。CAC用於標識一個Piconet,所有在該Piconet中傳送的分組都包含CAC;DAC用於特殊的信令過程,如尋呼和回響尋呼;IAC又分為General(GIAC)和Dedicated(DIAC)兩類:GIAC對該區域內所有設備都是一樣的,用於發現其它的藍牙單元;DIAC用於根據某種特性劃分特定用戶群
分組頭包含鏈路控制信息,由6個欄位組成:3比特的AM-ADDR、4比特的TYPE、1比特的FLOW、1比特的ARQN、1比特的SEQN、8比特的HEC,一共18個比特;再加速率為1/3的FEC,編碼保護後一共是54比特。在主節點與從節點通信時,需要區分不同的從節點,用AM-ADDR來表示激活的從節點地址。全“0”地址用於廣播,顯然3比特的編碼最多可以支持的激活從節點數為7(扣除全0)。4比特的TYPE欄位可以區分16種不同類型的分組,詳細情況見本節第3點。FLOW欄位用於ACL鏈路上的流量控制:如果接收端快取滿,則FLOW=0指示發端停止傳送數據;如果快取清空,則FLOW=1指示發端繼續傳送。ARQN=0時表示NAK;ARQN=1時表示ACK,用於對負載傳送正確性的確認。SEQN比特在每傳送一個新的分組時翻轉一次,因為藍牙採用無編號ARQ機制,所以SEQN對於重傳是必需的,這樣可以避免由於ACK的去失而造成分組重複接收。分組頭用8比特的校驗碼以檢查分組頭的正確性。
分組
在16種分組中,有4種是公共的;另外12種根據SCO和ACL不同鏈路而不同。
ID分組:由DAC或IAC組成,長度固定為68比特,用於尋呼、探詢、回響。
NULL分組:僅包含CAC和分組頭,沒有負載,長度固定為126比特。NULL分組用於通過ARQN、FLOW等欄位將鏈路信息返回給傳送端。NULL分組無需確認。
POLL分組:POLL分組與NULL分組類似,也沒有負載欄位,但是需要接收端的確認。當從節點收到POLL分組後,必須回響,即使當時沒有數據信息需要傳送。
FHS分組:是一種特殊的控制分組,它宣告發端的設備地址和時鐘信息,以實現跳頻同步。負載欄位包含144個信息比特加16比特的CRC校驗碼,然後用速率為2/3的FEC保護,最終長度為240比特。