更改

跳转至: 导航搜索

NRF52832DK-Mesh组网实验

添加973字节2020年3月26日 (四) 15:48
②扫描(通信RX)
默认的PB-GATT的广播数据的Unprov Beacon的广播周期是NRF_MESH_PROV_BEARER_GATT_UNPROV_BEACON_INTERVAL_MS 200。
[[文件:PB-GATT-09.png|边框|居中|无框|1200x1200像素]]最后我们同样的看一下mesh_adv_data_set我们同样的看一下mesh_adv_data_set()函数最终配置生成的广播数据,可以看到广播数据的flag是0x06,服务的UUID就是我们上面提到的PB-GATT服务的UUID,接下来16字节UUID是和PB-ADV一样的FICR寄存器的device id值,最后的扫描回调数据携带的是设备的全名“nRF5x Mesh Light”。
[[文件:PB-GATT-13.png|边框|居中|无框|1200x1200像素]]
[[文件:PB-GATT-14.png|边框|居中|无框]]最后是我们的mesh_adv_start()函数去启动广播,可以看到调用是我们ble stack sotfdevice当中的API函数sd_ble_gap_adv_start()去启动的。[[文件:PB-GATT-15.png|边框|居中|无框|1200x1200像素]]
=== Publish(模型发布) ===
[[文件:Publish-14.png|边框|居中|无框|1200x1200像素]]继续追踪我们的network_packet_send()函数,可以看到我们的net_packet_encrypt()加密函数,这个是将我们的明文数据,做好加密工作。
然后调用core_tx_packet_send()函数发送出去。[[文件:Publish-15.png|边框|居中|无框|1200x1200像素]]最后我们追踪到core_tx_packet_send()函数,可以看到调用的是p_bearer->p_interface->packet_send()函数去发送的。所以接下来我们要找到我们的packet_send()功能是在哪边实现的。[[文件:Publish-07.png|边框|居中|无框|1200x1200像素]]可以看到我们是在可以看到我们是在core_tx_bearer_add函数中去获得的p_interface这个功能。[[文件:Publish-08.png|边框|居中|无框|1200x1200像素]]我们追踪core_tx_bearer_add()函数的引用路径,可以看到是在core_tx_adv_init()当中。(除了此处,还有另一处地方也有引用,功能是类似的,大家可以自行了解)。 我们看下参数m_interface,可以看到m_interface->packet_send功能,就是对应我们在core_tx_packet_send()函数调用的p_bearer->p_interface->packet_send()。[[文件:Publish-09.png|边框|居中|无框|1200x1200像素]][[文件:Publish-10.png|边框|居中|无框|1200x1200像素]]所以我们接下来来看下m_interface结构体当中的packet_send()函数实现的是什么功能,可以看到最终调用的是advertiser_packet_send()函数将数据发送出去。看到这边我们就很熟悉了,和上面的几个广播功能,最后调用的都是相同的广播包发送函数。[[文件:Publish-11.png|边框|居中|无框|1200x1200像素]]
[[文件:Publish-12.png|边框|居中|无框|1200x1200像素]]
510
个编辑

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

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

导航菜单