更改

跳转至: 导航搜索

NRF52832DK-Mesh组网实验

添加723字节2020年3月24日 (二) 17:26
PB-GATT
[[文件:PB-ADV-04.png|边框|居中|无框|1200x1200像素]]
send_unprov_beacon()函数是用于发送Unprov Beacon数据的函数,在这个函数中我们调用prov_beacon_unprov_build函数去创建用于广播的Unprov Beacon数据包,然后调用advertiser_interval_set函数去设置广播的间隔,最后调用advertiser_packet_send函数去将我们的数据包发送出去。
[[文件:PB-ADV-05.png|边框|居中|无框|1200x1200像素]]这里我们再最后看一下prov_beacon_unprov_build()函数,这个函数是生成我们的Unprov Beacon的数据包,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算法计算出来的值。[[文件:PB-GATT-11.png|边框|居中|无框|1200x1200像素]][[文件:PB-GATT-12.png|边框|居中|无框]]
=== PB-GATT ===
[[文件:PB-GATT-07.png|边框|居中|无框|1200x1200像素]]
[[文件:PB-GATT-08.png|边框|居中|无框|1200x1200像素]]
然后我们继续追踪a_listen_start(),可以看到其中调用了mesh_adv_params_set函数设置了我们广播的超时时间MESH_ADV_TIMEOUT_INFINITE以及广播间隔NRF_MESH_PROV_BEARER_GATT_UNPROV_BEACON_INTERVAL_MS,调用mesh_adv_data_set函数设置了我们的广播数据内容,最后调用mesh_adv_start函数启动广播。这部分函数的源码在mesh_adv.c下面,都是具体的代码处理,没有逻辑的引用,相对是比较容易的,大家可以自行查阅源码内容。,可以看到其中调用了mesh_adv_params_set函数设置了我们广播的超时时间MESH_ADV_TIMEOUT_INFINITE以及广播间隔NRF_MESH_PROV_BEARER_GATT_UNPROV_BEACON_INTERVAL_MS,调用mesh_adv_data_set函数设置了我们的广播数据内容,最后调用mesh_adv_start函数启动广播。[[文件:PB-GATT-09.png|边框|居中|无框|1200x1200像素]]最后我们同样的看一下mesh_adv_data_set()函数最终配置生成的广播数据,可以看到广播数据的flag是0x06,服务的UUID就是我们上面提到的PB-GATT服务的UUID,接下来16字节UUID是和PB-ADV一样的FICR寄存器的device id值,最后的扫描回调数据携带的是设备的全名“nRF5x Mesh Light”。[[文件:PB-GATT-1013.png|边框|居中|无框|1200x1200像素]][[文件:PB-GATT-14.png|边框|居中|无框]]
== ②扫描 ==
[[分类:NRF52832DK]]
[[分类:实验手册]]
510
个编辑

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

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

导航菜单