更改

跳转至: 导航搜索

NRF52832DK-Mesh组网实验

添加194字节2020年3月26日 (四) 15:51
PB-GATT
默认的Unprov Beacon广播间隔是NRF_MESH_PROV_BEARER_ADV_UNPROV_BEACON_INTERVAL_MS 2000。
 最终调用的是advertiser_packet_send(0函数去将广播数据发送出去的。[[文件:PB-ADV-05.png|边框|居中|无框|1200x1200像素]][[文件:Publish-12.png|边框|居中|无框|1200x1200像素]] 这里我们再最后看一下prov_beacon_unprov_build()函数,这个函数是生成我们的Unprov Beacon的数据包。
其中标识位是0x2B,这个flag是beacon的意思。data的第一个字节0x00代表是我们的BEACON_TYPE_UNPROV(未配置的节点设备),接下来的16个字节是device uuid(这个是寄存器FICR中的device id生成的),接下来2字节是oob info(这里是00 00,代表没有使能OOB),最后的4个字节是URI通过AES-CMAC算法计算出来的值。
== ②扫描(通信RX) ==
 
=== 标准BLE SCAN ===
看过了我们的广播功能之后,我们来看下扫描的部分。在ble mesh中,我们的扫描功能scan,就是用于获取数据的,类似于数据通信的RX。
最后我们来看一下scanner_packet_process_cb()回调函数,其中我们可以直接拿到的扫描的数据包是rx_data,包含了数据的类型、数据内容以及数据长度等等信息。到这边我们的扫描功能是已经完成的,但是我们还需要再看下下面一部分的ad_listener的流程。
订阅Subscription=== Subscription(模型订阅) ===
我们需要注意下ad_listener_process()函数,这个函数是将我们扫描到的订阅数据(不符合标准的BLE广播数据,则认为是侦听到的订阅数据)传递到订阅者进行处理(订阅者指的是带订阅功能的模型)。这个是和我们上方说的关注点二ad_listener_subscribe()函数是一脉相承的。
[[文件:SCAN-06.png|边框|居中|无框|1200x1200像素]]然后我们来对照着看一下ad_listener_subscribe()函数以及ad_listener_process()函数。这两个函数一个是定义了侦听订阅,一个是将扫描获取到的数据传递给订阅者。这两者间的运作关系,大家有兴趣的可以继续查阅他的底层代码逻辑处理,一个是向list中添加订阅者信息,一个是将数据通过p_listener->handler()将数据传递给订阅者处理。
510
个编辑

本PDF由谷雨文档中心自动生成,点击下方链接阅读最新内容。

取自“http://doc.iotxx.com/特殊:移动版差异/2733

导航菜单