蓝牙 Mesh 私有 Model 开发指南 | 《无需从0开发 平头哥教你1天上手蓝牙Mesh应用解决方案》第四章-阿里云开发者社区

开发者社区> 平头哥芯片开放社区> 正文

蓝牙 Mesh 私有 Model 开发指南 | 《无需从0开发 平头哥教你1天上手蓝牙Mesh应用解决方案》第四章

简介: 本节重点介绍蓝牙 Mesh 私有 Model 开发指南

上一篇:蓝牙 Mesh SDK 快速上手 | 《无需从0开发 平头哥教你1天上手蓝牙Mesh应用解决方案》第三章>>>
下一篇:蓝牙 Mesh 开关开发实例 | 《无需从0开发 平头哥教你1天上手蓝牙Mesh应用解决方案》第五章>>>

点击免费下载
《无需从0开发 平头哥教你1天上手蓝牙Mesh应用解决方案》>>>

test

1.1目的

这里以Mesh Model组件里已有的vendor model为例,介绍如何开发自己私有的Mesh model

1.2 基本概念

开发Mesh Model前先了解一些基本的概念:
元素:元素(Element)是节点中可寻址的最小单元,分为主要元素和次要元素,简单的节点通常只包含一个主要元素,元素通常由一个或者多个模型(model)组成
模型:Mesh model是蓝牙 Mesh 协议中基础业务单元,一个或者多个模型对应特定的业务,模型又分为服务模型(Server Model)以及终端模型(Client Model);mesh 模型可分为基础模型(Foundation Model)、通用模型(Generic Model)、以及厂家自定义模型(Vendor Model),用户使用基础模型和通用模型通常能组合出大部分应用,也可以开发私有Mesh Model实现自定义的服务
状态:state描述的模型的属性,给其它模型提供属性进行操作的的是Server Model;对其它模型状态进行操作的模型是Client Model
消息:蓝牙Mesh网络中所有的交互都是通过消息(message)完成的,定义消息的目的是为了完成对状态的操作

1.3 vendor model 设计

这里以Mesh组件已有vendor model中自动配网属性设计为例,介绍vendor model开发流程.vendor model设计主要包含消息回调函数设计以及消息api设计

1.3.1 消息回调函数实现

Mesh model消息回调函数的设计主要基于btmeshmodel_op(结构体),该结构体定义如下
image.png

以下为 Mesh 组件已有 vendor srv model 部分消息回调函数实现
image.png

1.3.2 消息 api 实现

对于 Mesh srv/cli 模型,大多数情况下是通过 cli 模型主动操作,srv model 通过消息回调函数被动响应的模式,因此设计主要是 cli model 的 api, 这里涉及 VENDOROPATTRMESHAUTOCONFIG 以 及VENDOROPATTRMESHAUTOCONFIG_GET 两条 api, 该类 api 的设计方法如下:

image.png
image.png

1.3.3 model 结构体实现

实现消息回调函数及mesh api设计后,将消息回调函数结构体填充到BTMesh MODEL_VND( 结构体 ),参见该结构体定义。

image.png

以下为 Mesh 组件已有 vendor srv model pub 实现。

struct bt_mesh_model_pub g_vendor_srv_model_alibaba_pub = {
.msg = NET_BUF_SIMPLE(3 + 377 + 4), // 这里只定义了 pub 消息所使用的地址 };

如下为 Mesh 组件已有 vendor srv model 实现,至此就完成了一个私有Mesh
model 的设计。

#define MESH_MODEL_VENDOR_SRV(_user_data) BT_MESH_MODEL_VND(BT_MESH_MODEL_ VND_COMPANY_ID, 
BT_MESH_MODEL_VND_MODEL_SRV,g_vendor_srv_model_alibaba_op,&g_ 
vendor_srv_model_alibaba_pub, _user_data)

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
平头哥芯片开放社区
使用钉钉扫一扫加入圈子
+ 订阅

芯片开放社区(Open Chip Community 简称OCC),是平头哥芯片基础设施的云端载体,提供开发中心、创芯空间、技术部落等互动版块,汇聚海量应用资源,助力芯片合作伙伴构建软硬融合的芯片生态。面向芯片企业,OCC以应用驱动芯片精准定义、以全栈技术支撑芯片敏捷开发;面向开发者,OCC以芯片生态降低IoT开发门槛、以1520体系加速IoT产品落地。

官方博客
官网链接