【藍牙mesh】藍牙mesh開發簡介

一個智能設備在未加入藍牙Mesh網絡之前稱爲Device,加入Mesh網絡(Porvisioning過程)後,稱爲Node(節點)。每個Node可以包含多個Element(比如智能插排,每一個插孔都是一個Element),一個Element對應一個Unicast address(16bits,32767個地址,bit15=0);每個Element可以包含多個Model(用來發送、接收和處理Message),每個Model對應一個Model ID(可以分SIG ModelID和Vendor Model ID),類似這個Model的地址。其中,SIG Model ID是16bits的,SIG組織定義的專用Model ID,SIG Model ID參考例子如下圖所示,而Vendor Model ID是32bits的,由16bits的Company ID和16bits的Vendor-assigned Model ID組成。

下圖是Mesh網絡分層結構,工程師Coding的時候,一般操作其中的Access Layer,也就是打包Access Payload。Access Payload的包結構分爲兩個字段:Opcode+Parameter。每個Access Payload可以最多是32個Segment(12字節),也即最多384個字節(包含TransMIC),如果TransMIC是4字節,則有效載荷是380字節,可以有3種組合:1字節的Opcode(For Special Message)+379字節的Parametes;2字節的Opcode(For Standard Message)+378字節的Parameters;3字節的Opcode(For Vendor-Specific Message)+377字節的Parameters。當然,如果Unsegment,則Access Payload最多可以有11字節。

 

Mesh網絡是消息驅動的架構,每個Model處理一類Messages,消息分ACK和非ACK消息,比如對應上述的Generic OnOff Server的Model,需要處理以下圖所示的Messages。

 

另外Messages可以支持Transactions(通過Transaction Identifier識別),在一個Transaction裏面支持一系列Messages,比如Set,Recall和Clear等。Transaction Identifier可以識別這個消息是個新消息還是一個重發的之前的舊消息。

Generic OnOff Set這個消息的包結構如下圖所示:

一個Messages只能對應一個Model,如果需要處理兩個相同的Message,則需要設置兩個不同的Element和Model來處理。如下圖所示,這個智能插排設備需要同時控制兩個插座的開和關,因此需要處理兩個相同的Generic OnOff Set的Message,當該設備加入Mesh網絡成爲一個Node後,該Node需要設置兩個Element,獲得兩個unicast address,並配置兩個Generic OnOff Server的Model,分別處理Generic OnOff Set的Message(通過Unicast address區別)

關於所有Messages的Opcode定義,可以參考文檔《Bluetooth Mesh Profile specification》的4.3.4和文檔《Bluetooth Mesh Model specification》的7.1。



 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章