蓝牙Sig Mesh 概念入门③——分层结构Layered architecture


在这里插入图片描述

一、Model layer

model 定义了一个节点支持的功能特性,每一个 model 都定义了自己的 op codestatus

  • 比如 generic onoff model,定义了 Generic ON/OFF/GET/STATUS
  • 比如……

Provisioner 在组网的时候

  • 会通过 get composition data命令去获取节点支持的所有model id
  • 然后Provisioner 就能知道节点具体支持什么功能了
  • 然后Provisioner 才知道应该给该节点发送什么op code

Model 又分为 server model 和 client model。

  • server model:是一个被控制的角色,有自己的状态,可以被别的节点改变和获取
    • 比如一个Led设备,具备onoff server model
    • 可以接收 onoff set/get命令(App下发的控制开关命令)
    • 可以回复 onoff status命令(App查询Led状态的命令)
    • 但是LED不能自己对外发送 onoff set/get 命令onoff status命令
  • client model:是一个控制 server 节点的角色,没有自己的状态
    • 比如一个蓝牙遥控器,具备onoff client model
    • 可以发送 onoff set/get命令(遥控LED或者其他设备)
    • 可以发送 onoff status命令(查询LED或者其他设备的状态)
    • 但是不能回复收到的 onoff status命令,也不会处理收到的 onoff set/get命令

二、Foundation Model layer

Foundation Model 的模式和 model 基本一样,是基础 model,包含 Configuration Server modelConfiguration Client modelHealth Server modelHealth Client model

  • 被配网节点都必须包含Configuration Server model
  • provisioner 节点必须包含Configuration Client model

这两个 model 包含的常用 op code 是 subscription add/delete(即组号添加/删除)等,并且这两个 model 的 access layer 层的加密都使用 device key,所以一般来说只有 provisioner 节点才能发送 configuration model 的 set/get 命令。

三、Access layer

简单的来说,一句话

把 op code 和 parameter 按规定的格式组合在一起。

四、Transport layer

使用 app key 或者 device key(configuration model 使用)进行加解密。判断并确认是否需要执行分包和组包协议。

目前为了兼容 BLE4.2 等不支持长广播包的设备,所以都统一设定 adv 的最大 payload 为31byte。

五、Network layer

对于发送流程

  1. 对数据包添加 sequence number,等
  2. 并使用 network key,iv index 对数据进行加密
  3. 发送完成后 sequence number 会执行“加 1”的操作

对于接收流程

  1. 使用 network key,iv index 对数据进行解密
  2. 解密后判断sequence number 是否有效(即是否大于已经接收过的值)
  3. 如果无效则直接丢弃

六、Bearer layer

把已经执行过加密的数据包通过typeLL_TYPE_ADV_NONCONN_IND(0x02)的广播包发送到mesh网络中。

觉得好,就一键三连呗(点赞+收藏+关注)

猜你喜欢

转载自blog.csdn.net/kangweijian/article/details/115264253