打开主菜单

谷雨文档中心 β

更改

NRF52832DK-Mesh组网实验

添加1,415字节2020年3月26日 (四) 12:44
Publish(模型发布)
这里我们以access_model_publish函数为主,来看下发布数据的代码流程。
[[文件:Publish-01.png|边框|居中|无框|1200x1200像素]]查看一下access_model_publish()函数,我们可以看到packet_alloc_and_tx()函数,这个是我们继续发送数据的函数。下面还有一个蓝牙方框中的内容,是我们定义的重传机制(mesh数据为了保证传输的成功率,默认都是会重传数据包的,默认重传次数是4次)。[[文件:Publish-02.png|边框|居中|无框|1200x1200像素]]然后我们继续看一下packet_alloc_and_tx()函数,在这个函数中,我们最终会调用packet_tx()函数将数据发送出去。[[文件:Publish-03.png|边框|居中|无框|1200x1200像素]]继续追踪packet_tx()函数,这个函数的内容比较多,我们只截取了其中数据发送的部分,也就是我们的nrf_mesh_packet_send()函数,我们在他的tx_params中赋值好我们需要发送出去的数据内容。[[文件:Publish-04.png|边框|居中|无框|1199x1199像素]]nrf_mesh_packet_send()函数最终调用的是transport_tx()函数发送数据。而transport_tx()函数,最终是调用upper_transport_tx()函数进行的数据发送。[[文件:Publish-05.png|边框|居中|无框|1200x1200像素]][[文件:Publish-06.png|边框|居中|无框|1200x1200像素]]我们再继续追踪upper_transport_tx()函数,可以看到我们会根据p_metadata->segmented来判断数据是否要分包发送。[[文件:Publish-13.png|边框|居中|无框|1200x1200像素]]接下里我们以不分包发送函数unsegmented_packet_tx()为例,来继续说明数据传输流程。 我们可以看到我们的unsegmented_packet_tx()函数中,最终是调用的network_packet_send()函数[[文件:Publish-14.png|边框|居中|无框|1200x1200像素]][[文件:Publish-15.png|边框|居中|无框|1200x1200像素]]
[[文件:Publish-07.png|边框|居中|无框|1200x1200像素]]
[[文件:Publish-08.png|边框|居中|无框|1200x1200像素]]
510
个编辑