沁恒·蓝牙Mesh之中心节点

1. 中心节点示例代码解读

void App_Init(void)

image

vendor_model_cli_init(vnd_models)

传入参数vnd_models的来源及其数据类型
image
模型初始化需要传入一个蓝牙mesh模型实例
vendor_model_cli_init(vnd_models);
image
vendor_model_cli是自定义模型数据类型

blemesh_on_sync()

主要是对Mesh参数配置进行同步,传递给下面的协议栈。重点关注
image
之后就会调用各种配网回调函数

配网回调

image
调用的顺序如下:
1.prov_complete()使能配网者角色
image
2.unprov_recv()开启配网者功能后,会解析未配网节点发送的广播,并发送配网请求
3.link_open()当调用发起配网请求函数后,如果正确接收到未配网设备的应答,将会进入此回调
4.link_close()当 link 连接关闭时会进入 link_close 回调,同时通过参数获取关闭的原因。出现以
下情况时会关闭 link:配网成功、储存空间不足、配网数据交互错误、接收超时(60s)、
用户主动取消。
5.node_added()远端节点配网成功,添加到本地节点管理,并开始远端节点配置流程,即中心节点通过CONFIG模型向网络中的节点发送配置命令
image

配网者对新入网设备的配置流程

每一个命令都会通过 CONFIG 客户端模型回调(cfg_cli_rsp_handler)上报该配置命令执
行的状态,同时只能执行一条命令,只有上一条成功后,才会执行下一条。
主要执行以下三个命令:添加应用密钥、绑定应用密钥到指定模型、添加订阅地址到指定模型

node_stage()

image
image
操作的对象是node_t类型
image

cfg_cli_rsp_handler()

每一命令成功后会进入cfg_cli_rsp_handler,因为前面说过,入网配置是通过CONFIG模型来实现的
image

node_rsp()

image

配网者自配网后对自身模型的配置流程

配网者自配网后,会执行下述代码流程。

local_stage()

操作的对象同样是node_t类型,只不过stage对应的是local。同时还不需要配置订阅地址。(没有设置发布地址,那么node订阅的地址有什么用?)
image
类似远端节点配置,操作完成后进入cfg_cli_rsp_handler,然后进入local_rsp

2.总结

本次解读主要分析了中心节点(配网者)实现远端配置和本地配置的方式。
在配网之前,中心节点还需要初始化自己的模型,实现模型事件处理任务,没发现有接受数据的函数?
之后就是添加自身到网络中,再将自身模型进行配置(对于配置参数中的密钥如何使用,还没弄清楚,疑惑在于
通信双方需要约定相同密钥么,然后就是序号,一般是序号与密钥一一对应

解惑



两个模型间通信,需要相同的self_prov_net_idx, self_prov_app_idx, self_prov_app_key


再添加扫描到的未配网设备.

posted @ 2023-09-30 20:20  哈啰世界  阅读(214)  评论(0编辑  收藏  举报