乐鑫技术交流
直播中

李燕

7年用户 1529经验值
私信 关注
[问答]

如何在真正收到数据包的时刻进行操作而非利用接收回调函数?

我才用的开发板模组为ESP32系列的ESP-WROVER-KIT,IDF版本为master4.4.1

用两块开发板并采用了ESP_NOW协议收发数据包,在接收端注册接收回调函数wifi_csi_rx_cb,并在接收回调函数中读取结构体wifi_pkt_rx_ctrl_t中的timestamp值,请问这个时间戳是否是真实的收到数据包的系统时刻(官方技术文档说是收到包的时刻)?

由于我在csi的接收回调函数也加入了读取系统时间的代码,发现它总是比timestamp的值大,这证明了CSI回调函数是在接收到数据后延时一段时间才启用的,那我怎么才能让接收到包后立马通知我?或者说有没有一个标签值代表着接收是否完成,然后监听它的值就能判断是否接收到包从而进行其他操作?

另外,混杂模式下的回调函数wifi_promiscuous_rx_cb,我测试发现这个函数调用的时间比CSI回调函数的时间要早,且我在官网代码注释中发现混杂模式回调函数的说明是收到data后调用,而CSI回调函数说明是收到CSI data后调用,两者的区别在哪儿?这是否代表混杂模式回调函数启用的时刻和time_stamp一致?

更多回帖

发帖
×
20
完善资料,
赚取积分