2012年1月16日 星期一

Link layer簡化BT LM及LC –(2)

LL

由於Link layer在4.0是一全新的架構,其實就是簡化LM及LC,並包成LL啦。先說LC(Link Controller),他也可以稱為Baseband基頻,這個很基本也是最先要認識的階層,比如要了解BT設備如何運作、如何連接其他的BT設備、BT設備有哪些工作模式等。有一句話說明了LL的工作:Packets and radio control。這一階層要做的事情很基本又很多,一個一個慢慢來吧。

下面的physical layer只是很單純的傳送與接收,channel分成40個然後呢?以前每個channel的功能都一樣,現在BLE 40個channle中,3個固定的channels是專門拿來Advertising用,用來廣播(broadcast)資料,discoverability及connectability的;其他37個才是傳data用,且也會利用AFH來降傳同頻段(wifi)的干擾,提升與wifi的並存性,這樣分adv與data不同的channel來做不同的事比較有效率吧。

coexistence

綠色的channel就是用來advertise的

那Advertising跟data的封包長什麼樣子?既然有分advertising及傳data,總要有流程步驟吧,所以當兩端傳送資料時每一個流程應該在每一步會定義不一樣的state狀態。

所以LL基本的工作就是要控制裝置的RF狀態,每一個狀態的工作皆不同,共有5種狀態:standby、advertising、scanning、initiating及connected。假設有一個host及一個device,host要與device做連線,也就是都會進入connected狀態,流程是這樣的;device會先advertising廣播告訴大家,我在這邊,我可以被連,我有哪些service,我的tx power是多少,只有扮演scanner的host才會知道有人在advertise,這就是host接下來要進入的狀態,host當找到確定的device時,就會停止scanning轉換到initiating來對device提出連線要求,當device接受連線邀請時,就會進入connected,同時host也會進入connected,這時候原本是initiating的是Master,而原本是advertising的則是slave。同時間Master可以建立多條LL連線,但Slave僅能有一個LL連線,既然Mater可以連好多的slave,所以已經連線後變Master,再次要連接另一device時,又同時可身兼Scanner及Initiator,甚至可以去advertise,但是只能送non-connected advertising event,而slave的角色是connected,但還是可以advertise,也是只能送non-connected advertising event。

 LL_State

Link layer state machine

針對Advertisr及Scanner,還有不同的定義:

  • Non-connectable advertising events
    用在裝置只想要固定時間的廣播資料,並不會構成連線的結果。
  • Connectable undirected advertising events
    用在裝置要邀請其他的裝置來連接。
  • Connectable directed advertising events
    用在裝置只允許特定裝置來連接。
  • Passive Scanning
    只有在等待advertising packets,不會要求advertiser提供額外的資訊。
  • Active Scanning
    不僅是在等待advertising packets,也會要求advertiser提供額外的資訊。

Advertising取代了傳統BT的Discovery(Inquiry Scan)及Connection(Page Scan),這樣一來一往最多可省掉20x power。
LL層所管理的封包也比以簡化很多,只有一個封包格式,當中Access Address參數的不同來決定是Advertising還是Data packets,以下圖是封包格式(Packet Format)。

packet

Link layer packets

2 則留言:

  1. 請問你的藍芽資訊是從哪裡來的,好豐富喔
    感謝對我幫助很大

    回覆刪除
    回覆
    1. 主要是CSR及藍牙協會的簡報,自己匯整編輯的,但現在沒在作了,感謝捧場!

      刪除