BLE Mesh蓝牙组网技术详细解析之Foundation Model Layer基础模型层(七)
目录
一、什么是BLE Mesh?Foundation Model?Layer基础模型层?
一、什么是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。
配置客户端模型和配置服务端模型之间的通信流程一般是这样的:
- 配置客户端模型发送一个配置消息给配置服务端模型,指定目标节点的单播地址和DevKey。
- 配置服务端模型收到配置消息后,根据Opcode和Parameters执行相应的操作,如添加AppKey、删除订阅地址等,并更新自己的状态。
- 配置服务端模型发送一个配置状态消息给配置客户端模型,指示操作的结果,如成功或失败,以及相关的状态值。
- 配置客户端模型收到配置状态消息后,根据状态值判断操作是否成功,并显示给用户。
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)https://x.jlc.com/platform/detail/001d23cba7b64b0d9df5b9b69720fadb
感谢各位用户点赞、分享、在看,这些行为让知识得以更加广泛地传播,从而让更多人受益。
请在转载作品时注明出处,严禁抄袭行为。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!