首页 > 其他分享 >沁恒·蓝牙Mesh之中心节点

沁恒·蓝牙Mesh之中心节点

时间:2023-09-30 20:22:28浏览次数:37  
标签:cli 模型 配置 蓝牙 沁恒 配网 Mesh rsp 节点

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


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

标签:cli,模型,配置,蓝牙,沁恒,配网,Mesh,rsp,节点
From: https://www.cnblogs.com/hk-to-try/p/17738152.html

相关文章

  • 【WCH蓝牙系列芯片】-基于CH582开发板—BLE从机开启HAL Sleep模式
    ---------------------------------------------------------------------------------------------------------------------在WCH沁恒官方提供的CH583的EVT资源包中,找到BLE文件中找到【Peripheral:外设从机角色例程】这个工程文件,在这个工程文件中,添加HALSleep模式,开启低功耗模......
  • CH573 CH579 CH582 蓝牙断开连接原因分析
    下面列举几个常见的蓝牙断开连接原因:1.reason8:连接超时,根本原因:底层在设置的超时时间内,没有成功通信过,下面这几种情况可能发生:1.程序中有比较耗时的处理,导致主循环一直没有查询,2.32k晶振误差很大导致。2.reason13:对方远程主动断开连接。3.reason16:本地主动断开连接。4.reason......
  • 一文读懂:下一代微服务技术Service Mesh
    相信提到微服务大家一定不会陌生,但是说起服务网格,即ServiceMesh,很多同学可能就会画大大的问号了!话不多说先给结论:我们可以简单的把ServiceMesh理解为网络代理,它可以解决传统微服务中的痛点,把服务通信及相关管控功能从业务中分离!网络代理网络代理可以简单类比成现实生活中的中......
  • CH573 CH582 CH579蓝牙从机(Peripheral)/主机(Central)例程讲解一(蓝牙主从机收发数据
    原文链接:https://www.cnblogs.com/risc5-ble/p/15994545.html前言:蓝牙从机,顾名思义,就是一个蓝牙从设备,可以不断发送广播等待与主机建立连接进行通信,建立连接后,可以通知主机,也可以收到主机发的信息,一般使用BLE调试助手(安卓应用市场可下载),ios可使用Lightblue来进行调试通信等......
  • Service mesh 学习03 Istio安装
    一、Kubernetes环境......
  • 蓝牙风扇CE证书FCC证书EN60335报告
    风扇CE证书风扇LVD证书风扇EMC证书风扇FCC证书风扇ROHS证书风扇REACH证书风扇SAA证书风扇ETL证书风扇能效报告,能效证书风扇RCM证书风扇KC证书风扇PSE证书风扇TUV证书风扇CB证书风扇SGS证书风扇METI证书风扇辐射测试风扇传导测试风扇静电测试风扇BQB证书风扇3C......
  • Service mesh 学习02 Istio基础
    一、Istio架构概述1.Pilot提供服务发现和路由规则2.Mixer策略控制:服务调用限流3.citadel安全作用,可以保证服务间的通信安全4.Enovy代理:处理服务的流量二、自动注入sidecar-injector:会修改应用程序的描述信息,注入sidecar描述信息:创建pod的yaml文件三、流量拦截根据iptables路由规......
  • 服务网格化Service mesh 学习01 架构发展历史
    一、架构发展历史......
  • 蓝牙mesh1.1更新尝鲜
    蓝牙mesh协议1.1前言万众期待的蓝牙mesh协议版本时隔4年之久,在2023年9月终于迎来一轮新的版本更新,从2017年7月1.0初版协议发布,再到2019年1月1.0.1小版本更新。算起来整个蓝牙mesh协议已经很久没有更新了,那么这次蓝牙联盟更新的这个大版本协议有什么令人期待的呢?又有什么大招被蓝......
  • Three.js中实现对InstanceMesh的碰撞检测
    1.概述之前的文章提到,在Three.js中使用InstanceMesh来实现性能优化,可以实现单个Mesh的拾取功能那,能不能实现碰撞检测呢?肯定是可以的,不过Three.js中并没有直接的API可以实现对InstanceMesh的碰撞检测,需要手动实现回顾本文的描述的Three.js的场景前提:使用InstanceMesh来构建数......