<!--

前言

继前面的一序列多篇幅的理论基础讲解,我估计读者们都磨刀霍霍想要狠狠地 “撸一发代码”;你们所想的,小编我已经Get到了,这不,这篇章就让大家结合之前诸多篇章所学到的知识,融会贯通到代码中来。

Role

我不知道读者们对小编之前的SIG MESH各个角色的功能简介中的内容还有没有印象,我在该篇文章提到,Mesh网络有以下几个角色:

但是,前四个角色中的一个或者多个并不是必须要存在于一个设备中;换句话说就是:一个想要加入Mesh网络的设备仅仅是普通节点也是可以的

上述的Mesh网络拓扑图再次证实了普通节点也是可以加入SIG Mesh网络,那么这个时候可能会有读者会问:“普通节点是如何加入SIG MESH网络的?”;这样的问题又间接地引出了另外的知识点即:

除了PB-GATT的Provisioner之外,但凡是SIG Mesh网络的节点,那么其必须支持ADV Bearer;这个也就是说除了Provisioner与Proxy节点通过GATT Bearer进行通讯之外,所有的Mesh数据都是通过ADV Bearer来交互的;

既然讲到多角色,那么是不是一个设备可以同时做为上述的所有角色,显然这是不行的!!!它们的组合关系如下所示:

上述就是当前设备能同时共存的角色的两种组合,其中重点说一下Normal节点,即普通节点;小编在之前的篇章不止说过一次,Proxy、Relay、Friend、Low Power这些特征是可以除能的,什么意思呢? 举个例子:“如果一个Proxy节点,把其Proxy特性关掉,那么其就暂时失去Proxy的特性变成了一个普通的节点,但是此时它仍然是Mesh网络中的一员,后继可以再次将该特性打开,其就又变为Proxy节点”;如果还是有读者不明白,那小编再举一个例子 “如今人手都有一部智能手机,而智能手机的蓝牙功能是可以开关的,开表示手机有了蓝牙功能,关了蓝牙功能就消失了”

Multi Role的实现

有了Role的理论知识铺垫,那么读者就知道目前只有两种组合,那么小编就带大家如果在源码中实现组合一:

Proxy、Relay、Friend、Normal

这里小编就以Nordic52840 SDK为蓝本,展开接下来一序列的探讨;如果想购买相对应的开发板,可以在我们红旭无线的淘宝中找到它;

Proxy、Low Power、Normal

至于该组合的节点,Proxy和Normal则同上述,这里仅介绍Low Power特性的使能;这里可能有读者会有疑问 “为什么Proxy特性和Low Power特性可以共存”,其实这个很好解释,当LPN还没有入网之前,其不见得能处于低功耗模式,如果它要加入现有的Mesh网络,其可以通过PB-GATT或者PB-ADV,又或者相要通过GATT Bearer配置LPN都是允许的;同理,想要实现该特性则使能下述的宏:

最后

基本上Multi Role的实现相对比较简单,因为Mesh协议栈基本上帮你做完了,而用户只需要将相对应的宏打开即可;至于,打开了某个特性,协议栈做了什么操作,我们不必在这方面深究,因为这个因不同的芯片厂商而不同;但是,大体的操作基本上如Proxy、Relay、Friend、NormalProxy、Low Power、Normal所述。