<!--

前言

众所周知,SIG Mesh网络中的数据交互是通过元素和模型来实现的;而元素又是模型的集合,即元素更多的是提供一个单播地址即一个入口点,然后进行入口点进行数据流的交互则是在模型中实现;更多元素和模型的内容请参考什么是Element和Model;除了 《Mesh_Model_Specification》 之外,SIG还需要Vendor Model的存在,即自定义模型;这也是本篇章的主题。

Vendor Model

在开始讲解Vendor Model之前,我们先看看Model在整个节点是如何存在的;

从上图中,我们可以再次验证小编在前言所说,模型是依附在元素之下的;换一句话就是说,想要与某个模型进行交互,就务必先找到元素;但是,有一点需要强调的是:同一个元素下不能有两种相同的模型存在,如果有相同的模型,必须将其中一个模型依附到另外一个元素下;那么,模型又到底是由哪几部分组成的呢?老规定:上图!!!

Model ID

每个模型都有唯一一个模型ID,模型又分SIG Model和Vendor Model;因此也就有SIG Model ID和Vendor Model ID之分:

Opcode

同理,操作码也分SIG操作码和Vendor操作码,它们的区别如下表所示:

Opcode FormatNotes
0xxxxxxx (excluding 01111111)0x0000
01111111Reserved for Future Use
10xxxxxx xxxxxxxx2-octet Opcodes
11xxxxxx zzzzzzzz3-octet Opcodes

由上表可知:

其中,1个字节和2个字节的Opcode则已经被Bluetooth SIG占用并 “安排” 的明明白白了,给Vendor Opcode用的仅剩下3个字节类型的Opcode了;例如:“company identifier为0x0059,而manufacturer-specific opcode为0x65,那么Vendor Opcode就为0xE5 0x59 0x00”

Message

何为消息呢?即Mesh网络中用于通讯时的数据帧;不同的模型就有不同的消息,但其基本的数据帧格式是基本一致的,即Opcode + Parameters + additional features;,这也认为Opcode也是Message中一部分;

至于,具体有哪些消息,不管是什么模型,基本上分为以下几种:

至此,Vendor Model的相关内容就讲解完毕,相对来说比较简单;后面小编会结合该篇章的内容和大家最喜欢的代码,创建一个红旭的Vendor Model