一個(gè)智能設(shè)備在未加入藍(lán)牙Mesh網(wǎng)絡(luò)之前稱為Device,加入Mesh網(wǎng)絡(luò)(Porvisioning過程)后卖丸,稱為Node(節(jié)點(diǎn))识椰。每個(gè)Node可以包含多個(gè)Element(比如智能插排,每一個(gè)插孔都是一個(gè)Element)带族,一個(gè)Element對(duì)應(yīng)一個(gè)Unicast address(16bits恃轩,32767個(gè)地址结洼,bit15=0);每個(gè)Element可以包含多個(gè)Model(用來發(fā)送详恼、接收和處理Message)补君,每個(gè)Model對(duì)應(yīng)一個(gè)Model ID(可以分SIG ModelID和Vendor Model ID),類似這個(gè)Model的地址昧互。其中挽铁,SIG Model ID是16bits的,SIG組織定義的專用Model ID敞掘,SIG Model ID參考例子如下圖所示叽掘,而Vendor Model ID是32bits的,由16bits的Company ID和16bits的Vendor-assigned Model ID組成玖雁。
下圖是Mesh網(wǎng)絡(luò)分層結(jié)構(gòu)更扁,工程師Coding的時(shí)候,一般操作其中的Access Layer,也就是打包Access Payload浓镜。Access Payload的包結(jié)構(gòu)分為兩個(gè)字段:Opcode+Parameter溃列。每個(gè)Access Payload可以最多是32個(gè)Segment(12字節(jié)),也即最多384個(gè)字節(jié)(包含TransMIC)膛薛,如果TransMIC是4字節(jié)听隐,則有效載荷是380字節(jié),可以有3種組合:1字節(jié)的Opcode(For Special Message)+379字節(jié)的Parametes哄啄;2字節(jié)的Opcode(For Standard Message)+378字節(jié)的Parameters雅任;3字節(jié)的Opcode(For Vendor-Specific Message)+377字節(jié)的Parameters。當(dāng)然咨跌,如果Unsegment沪么,則Access Payload最多可以有11字節(jié)。
Mesh網(wǎng)絡(luò)是消息驅(qū)動(dòng)的架構(gòu)锌半,每個(gè)Model處理一類Messages禽车,消息分ACK和非ACK消息,比如對(duì)應(yīng)上述的Generic OnOff Server的Model拳喻,需要處理以下圖所示的Messages哭当。
另外Messages可以支持Transactions(通過Transaction Identifier識(shí)別)猪腕,在一個(gè)Transaction里面支持一系列Messages冗澈,比如Set,Recall和Clear等陋葡。Transaction Identifier可以識(shí)別這個(gè)消息是個(gè)新消息還是一個(gè)重發(fā)的之前的舊消息亚亲。
Generic OnOff Set這個(gè)消息的包結(jié)構(gòu)如下圖所示:
一個(gè)Messages只能對(duì)應(yīng)一個(gè)Model,如果需要處理兩個(gè)相同的Message腐缤,則需要設(shè)置兩個(gè)不同的Element和Model來處理捌归。如下圖所示,這個(gè)智能插排設(shè)備需要同時(shí)控制兩個(gè)插座的開和關(guān)岭粤,因此需要處理兩個(gè)相同的Generic OnOff Set的Message惜索,當(dāng)該設(shè)備加入Mesh網(wǎng)絡(luò)成為一個(gè)Node后,該Node需要設(shè)置兩個(gè)Element剃浇,獲得兩個(gè)unicast address巾兆,并配置兩個(gè)Generic OnOff Server的Model,分別處理Generic OnOff Set的Message(通過Unicast address區(qū)別)
關(guān)于所有Messages的Opcode定義虎囚,可以參考文檔《Bluetooth Mesh Profile specification》的4.3.4和文檔《Bluetooth Mesh Model specification》的7.1角塑。