BLE Mesh蓝牙组网技术详细解析之Foundation Model Layer基础模型层(七)

目录

一、什么是BLE Mesh Foundation Model Layer基础模型层?

二、模型

2.1 配置模型

2.2 健康模型

三、状态

3.1 Composition Data

四、资料获取


一、什么是BLE Mesh Foundation Model Layer基础模型层?

BLE Mesh Foundation model Layer是蓝牙Mesh协议栈中的一个层,它定义了配置和管理蓝牙Mesh网络所需的状态、消息和模型。它确保从下层接收到的数据是正确的并传输到更高层的应用。

基础模型层(Foundation Model Layer)负责定义了状态, 消息, 模型等, 实现mesh网络的配置。

二、模型

Foundation model Layer包括两种模型:配置模型和健康模型

  • 配置模型(Configuration Model)用于设置和获取节点的各种参数,如发布地址、订阅地址、AppKey、NetKey、Relay、Proxy、Friend、Low Power等。配置模型分为配置服务端模型(Configuration Server Model)和配置客户端模型(Configuration Client Model)。配置服务端模型是每个节点都必须实现的模型,配置客户端模型是用于向配置服务端模型发送配置消息的模型
  • 健康模型(Health Model)用于检测和报告节点的故障状态,如网络拥塞、内存不足、电池低电量等。健康模型也分为健康服务端模型(Health Server Model)和健康客户端模型(Health Client Model)。健康服务端模型是每个节点都必须实现的模型,健康客户端模型是用于向健康服务端模型发送健康消息的模型

2.1 配置模型

基础模型层(Foundation Model Layer)的配置主要是通过配置服务端模型和配置客户端模型来实现的。配置服务端模型是每个节点都必须实现的模型,它包含了一系列与配置相关的状态和消息,用于设置和获取节点的各种参数,如发布地址、订阅地址、AppKey、NetKey、Relay、Proxy、Friend、Low Power等。

配置客户端模型是用于向配置服务端模型发送配置消息的模型,它可以运行在任何支持MESH协议的设备上,如智能手机APP

配置客户端模型和配置服务端模型之间的通信是通过配置消息来进行的,配置消息是一种特殊的上层传输层消息,它使用DevKey来加密和解密,而不是AppKey

配置客户端模型和配置服务端模型之间的通信流程一般是这样的:

  1. 配置客户端模型发送一个配置消息给配置服务端模型,指定目标节点的单播地址和DevKey。
  2. 配置服务端模型收到配置消息后,根据Opcode和Parameters执行相应的操作,如添加AppKey、删除订阅地址等,并更新自己的状态。
  3. 配置服务端模型发送一个配置状态消息给配置客户端模型,指示操作的结果,如成功或失败,以及相关的状态值。
  4. 配置客户端模型收到配置状态消息后,根据状态值判断操作是否成功,并显示给用户。

2.2 健康模型

健康模型(Health Model)是基础模型层(Foundation Model Layer)的一种模型,它用于检测和报告节点的故障状态,如网络拥塞、内存不足、电池低电量等。健康模型也分为健康服务端模型(Health Server Model)和健康客户端模型(Health Client Model)

健康服务端模型是每个节点都必须实现的模型,它包含了以下的状态和消息

  • 健康故障状态(Health Fault State):用于记录节点的当前故障代码,可以有多个故障代码,每个故障代码占用一个字节。
  • 健康测试状态(Health Test State):用于记录节点的当前测试模式,可以有多种测试模式,每种测试模式占用一个字节。
  • 健康期望注意状态(Health Attention State):用于记录节点的当前注意模式,可以有多种注意模式,每种注意模式占用一个字节。
  • 健康期望注意消息(Health Attention Message):用于设置或获取节点的健康期望注意状态。
  • 健康故障消息(Health Fault Message):用于设置或获取节点的健康故障状态和健康测试状态。
  • 健康期望注意状态消息(Health Attention Status Message):用于响应健康期望注意消息,返回节点的健康期望注意状态。
  • 健康故障状态消息(Health Fault Status Message):用于响应健康故障消息,返回节点的健康故障状态和健康测试状态。

健康客户端模型是用于向健康服务端模型发送健康消息的模型,它可以运行在任何支持MESH协议的设备上,如智能手机APP。健康客户端模型可以发送以下的消息

  • 健康期望注意获取消息(Health Attention Get Message):用于获取节点的健康期望注意状态。
  • 健康期望注意设置消息(Health Attention Set Message):用于设置节点的健康期望注意状态。
  • 健康期望注意设置无应答消息(Health Attention Set Unacknowledged Message):用于设置节点的健康期望注意状态,不需要应答。
  • 健康故障清除消息(Health Fault Clear Message):用于清除节点的健康故障状态。
  • 健康故障清除无应答消息(Health Fault Clear Unacknowledged Message):用于清除节点的健康故障状态,不需要应答。
  • 健康故障获取消息(Health Fault Get Message):用于获取节点的健康故障状态和健康测试状态。
  • 健康故障测试消息(Health Fault Test Message):用于设置节点的健康测试状态。
  • 健康故障测试无应答消息(Health Fault Test Unacknowledged Message):用于设置节点的健康测试状态,不需要应答。
  • 健康期望注意确认消息(Health Attention Confirm Message):用于确认收到健康期望注意状态消息。
  • 健康故障确认消息(Health Fault Confirm Message):用于确认收到健康故障状态消息。

三、状态

基础模型层定义了以下的状态

  • 成分数据状态(Composition Data State):描述了节点包含的元素信息,以及各元素内支持的模型信息。
  • 模型发布状态(Model Publication State):维护了模型发布消息中的各个参数,如发布地址、发布周期、发布消息用到的AppKey索引、朋友关系的证书标记、发布TTL、重传计数、重传间隔等步骤。
  • 订阅列表状态(Subscription List State):维护了一组订阅的组播地址或者UUID,节点中每个元素都有一个订阅列表实例。
  • NetKey列表状态(NetKey List State):维护了一个NetKey列表,每个长度为128bit的NetKey都有一个16bit的NetKey索引与之对应,一个NetKey列表至少包含一个NetKey。
  • AppKey列表状态(AppKey List State):维护了一个AppKey列表,每个长度为128bit的AppKey都有一个16bit的AppKey索引与之对应,一个AppKey列表至少包含一个AppKey。
  • 网络传输状态(Network Transmit State):用于控制节点发出网络层PDU重传的次数和时间点,有Network Transmit Count 和 Network Transmit Interval Steps两个参数,每个节点只有一个网络传输状态实例。
  • 网络中继重传状态(Relay Retransmit State):用于控制网络层收到消息后的中继行为,有Relay Re-transmit Count 和 Relay Re-transmit Interval Steps两个参数。
  • 健康故障状态(Health Fault State):用于记录节点的当前故障代码,可以有多个故障代码,每个故障代码占用一个字节。
  • 健康测试状态(Health Test State):用于记录节点的当前测试模式,可以有多种测试模式,每种测试模式占用一个字节。
  • 健康期望注意状态(Health Attention State):用于记录节点的当前注意模式,可以有多种注意模式,每种注意模式占用一个字节。

3.1 Composition Data

Field

Size (octets)

Notes

CID

2

公司ID,由SIG组织分配。

PID

2

产品ID,由厂商自定义。

VID

2

产品版本ID,由厂商自定义。

CRPL

2

重放攻击列表项最小数目,表示节点能够防止重放攻击的最小序列号个数。

Features

2

特性,表示节点支持的Mesh功能,如Relay、Proxy、Friend、Low Power等。

Elements

variable

包含元素描述的序列。

在蓝牙Mesh中,Feature字段的长度为16Bit,其中已经使用了4个Bit来表示四个特性的支持情况。具体情况如下:

* Bit 0:Relay功能,1表示支持,0表示不支持

* Bit 1:Proxy功能,1表示支持,0表示不支持

* Bit 2:Friend功能,1表示支持,0表示不支持

* Bit 3:Low Power功能,1表示支持,0表示不支持

*Bit 4~15预留

Field

Size (octets)

Notes

Loc

2

位置描述,由SIG组织在GATT蓝牙名字空间描述符中定义。

NumS

1

SIG模型的数量,表示元素支持的SIG模型的个数。

NumV

1

Vendor模型的数量,表示元素支持的Vendor模型的个数。

SIG Models

variable

SIG模型的ID列表,每个ID占用2字节。

Vendor Models

variable

Vendor模型的ID列表,每个ID占用4字节,前两字节是公司ID,后两字节是模型ID。

四、资料获取

通过点击以下链接,您可以获取BLE Mesh模块原理图、源代码以及开发资料。链接地址将为您提供详细的文件资料,以供您进行参考和使用。

如果您在使用过程中遇到任何问题或疑虑,欢迎加我QQ ,一起探讨技术问题,我的QQ号是986571840,加的时候请注明CSDN。

BLE Mesh蓝牙组网模块 - 硬创社 (jlc.com)icon-default.png?t=N7T8https://x.jlc.com/platform/detail/001d23cba7b64b0d9df5b9b69720fadb

感谢各位用户点赞、分享、在看,这些行为让知识得以更加广泛地传播,从而让更多人受益。

请在转载作品时注明出处,严禁抄袭行为。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/321880.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

拼多多砍价群2024年最新二维码

随着移动互联网的快速发展,小程序成为了人们生活中不可或缺的一部分。它们轻便、快捷,无需下载安装,即可随时随地使用。在这个背景下,小程序互助群应运而生,成为了一种新型的社群形式,旨在帮助用户更好地利…

基于sy3130光感入耳检测功能成功实现

基于sy3130光感入耳检测功能成功实现 是否需要申请加入数字音频系统研究开发交流答疑群(课题组)?可加我微信hezkz17, 本群提供音频技术答疑服务,+群赠送语音信号处理降噪算法,蓝牙耳机音频,DSP音频项目核心开发资料, 1 芯片介绍 2 电路实现 3 寄存器列表

Linux习题1

解析:Tcsh是csh的增强版,并且完全兼容csh。它不但具有csh的全部功能,还具有命令行编辑、拼写校正、可编程字符集、历史记录、作业控制等功能。 AWK是一种优良的文本处理工具,Linux及Unix环境中现有的功能最强大的数据处理引擎之一…

60.网游逆向分析与插件开发-游戏增加自动化助手接口-游戏公告功能的逆向分析与测试

内容来源于:易道云信息技术研究院VIP课 上一个内容:文字资源读取类的C还原-CSDN博客 码云地址(master分支):https://gitee.com/dye_your_fingers/sro_-ex.git 码云版本号:878db7708de09b448010ef54526fe…

新手深入浅出理解PyTorch归一化层全解析

目录 torch.nn子模块normal层详解 nn.BatchNorm1d BatchNorm1d 函数简介 函数工作原理 参数详解 使用技巧与注意事项 示例代码 nn.BatchNorm2d BatchNorm2d 函数简介 函数工作原理 参数详解 使用技巧与注意事项 示例代码 nn.BatchNorm3d BatchNorm3d 函数简介 参…

Linux文件的扩展属性 attr cap

文件属性 Linux文件属性分为常规属性与扩展属性,其中扩展属性有两种:attr与xattr. 一般常规的文件属性由stat API 读取,一般是三种权限,ower, group,时间等。 扩展属性attr 用户态API ioctl(fd, FS_IOC32_SETFLAGS…

Windows中磁盘未知没有初始化怎么办?

当我们尝试在Windows11/10/8/7上使用外部硬盘驱动器时,在小概率情况下可能会遇到磁盘未知没有初始化情况,此时如果您进入磁盘管理工具中查看,将会发现您的外部硬盘驱动器显示为未知、未初始化、没有磁盘空间,或者在某些情况下它还…

二进制安装包安装Prometheus插件安装(mysql_exporter)

简介 mysql_exporter是用来收集MysQL或者Mariadb数据库相关指标的,mysql_exporter需要连接到数据库并有相关权限。既可以用二进制安装部署,也可以通过容器形式部署,但为了数据收集的准确性,推荐二进制安装。 一,下载安…

批量AI智剪方法:轻松学会视频剪辑,让你的视频更精彩

在数字媒体时代,视频剪辑已经成为一项重要的技能。对于许多初学者来说,视频剪辑可能是一项复杂且耗时的任务。那么如何解决这个问题呢?现在一起来看看云炫AI智剪如何批量剪辑的方法,轻松完成视频剪辑工作,让视频更加精…

学而时习之---状态模式

在软件系统中,有些对象也像水一样具有多种状态, 这些状态在某些情况下能够相互转换, 而且对象在不同的状态下具有不同的行为。 为了更好地对这些具有多种状态的对象进行设计。 使用一种被称为状态模式的设计模式。 状态模式用于解决系统中复…

web自动化测试详细流程和步骤

一、什么是web自动化测试 自动化(Automation)是指机器设备、系统或过程(生产、管理过程)在没有人或较少人的直接参与下,按照人的要求,经过自动检测、信息处理、分析判断、操纵控制,实现预期的目…

部署node.js+express+mongodb(更新中)

1-Linux服务器部署MongoDB 1.升级 yum -y update 2.下载MongoDB安装包 3.上传安装包 上传目录 : /usr/local/ 2-配置MongoDB环境变量并启动 1.配置环境变量全局启动 vi ~/.bash_profile 使用i命令进入编辑模式 添加: export PATH/usr/local/mongodb/bin:$P…