首页 > 其他分享 >蓝牙Sig Mesh 概念入门③——分层结构Layered architecture

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

时间:2023-04-21 16:38:02浏览次数:46  
标签:layer get 命令 Mesh Sig architecture model 节点 onoff



文章目录

  • 一、Model layer
  • 二、Foundation Model layer
  • 三、Access layer
  • 四、Transport layer
  • 五、Network layer
  • 六、Bearer layer



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


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

一、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网络中。


标签:layer,get,命令,Mesh,Sig,architecture,model,节点,onoff
From: https://blog.51cto.com/u_16081772/6213475

相关文章

  • 蓝牙Sig Mesh 概念入门②——网络角色
    文章目录一、前言二、Provisioner(配置节点)三、Proxy(代理节点)四、Node(普通节点)一、前言SigMesh组成了一个大网,里面有很多设备。包括协助设备入网的网关,终端的执行者节点,实际的控制者手机App等。他们分别作为什么角色,有着什么关系?二、Provisioner(配置节点)将未入网的设备引导入网的......
  • 文章推荐---ChatGPT踩坑(too many signups from the same IP)
    http://681314.com/A/S1A6pDeCNF这个文章里关于注册写得不错,需要注意的地方有两点。第一,最好在港澳台地区或类型的地方访问提供的网站,不然无法登录第二,虚拟短信号码,最好选大国的,小国的我没收到......
  • nafxcw.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new(unsigned in
    在封装非MFC环境的静态库时调用了依赖MFC环境的静态库时编译测试程序报错如下:nafxcw.lib(afxmem.obj):errorLNK2005:"void*__cdecloperatornew(unsignedint)"(??2@YAPAXI@Z)已经在LIBCMT.lib(new.obj)中定义nafxcw.lib(afxmem.obj):errorLNK2005:"void*__cde......
  • 1、题目:Engineering Design Thinking, Teaching, and Learning
    期刊信息 (1)作者:Dym,CliveL.,Agogino,AliceM.,Eris,Ozgur,Frey,DanielD.,Leifer,LarryJ. (2)期刊:JournalofEngineeringEducation:94-1-103-120,01/2005 (3)DOI:10.1002/j.2168-9830.2005.tb00832.x (4)ISSN:10694730 (5)IF:3.288(SQ2)......
  • MySQL InnoDB Architecture 简要介绍
    MySQLInnoDB存储引擎整体架构图:一、内存存储结构 1、BufferPoolbufferpool是主内存中的一块儿存储区域,用于存储访问的表及索引数据。这样从内存中直接访问获取使用的数据可以极大的提升访问效率。在一些特殊专用的服务里,几乎80%的内存区域都被赋于bufferpool。为了......
  • 低功耗蓝牙MESH芯片PHY6222/PHY6252 适用于无线耳麦
    旅游带团专用无线耳麦讲解器 无线讲解器已经成为讲解场所的主要设备。该装置分为发射器和接收器。讲师会用发射器说话,听者会戴上接收器听讲话。 产品功能及适用场合:1. 可实现讲解员用正常音量讲解,配接听耳机的客人无论距离讲解员远近(200米内)可听清讲解员的讲解。讲解比较......
  • React+hook+ts+ant design封装一个具有编辑和新增功能的页面
    前言我是歌谣我有个兄弟巅峰的时候排名c站总榜19叫前端小歌谣曾经我花了三年的时间创作了他现在我要用五年的时间超越他今天又是接近兄弟的一天人生难免坎坷大不了从头再来歌谣的意志是永恒的放弃很容易但是坚持一定很酷微信公众号前端小歌谣需求分析在前端项目中最常......
  • ant-design select宽度异常
    异常现象:层级下拉框宽度过窄 解决方法:在src目录下找到style.less添加.ant-select的属性 修复后: ......
  • mvc5中使用autofac注册SignalR
    1.引用autofac.SignalR 2.Startup publicvoidConfiguration(IAppBuilderapp){DependencyConfig.RegisterDependencies(app);}3.RegisterDependencies//RegisteryourSignalRhubs.builder.RegisterHubs(Assembly.GetExecutingAssembly());var......
  • asp.net signalR 专题—— 第三篇 如何从外部线程访问 PersistentConnection
       在前面的两篇文章中,我们讲到的都是如何将消息从server推向client,又或者是client再推向server,貌似这样的逻辑没什么异常,但是放在真实的环境中,你会很快发现有一个新需求,如何根据第三方系统的数据变化来即时的将新数据推送到各个客户端,比如下面这样:ok,原理就是上面的这......