我有一个问题要问你。我想禁用rpl-mrhof.c
文件中的涓流计时器。我将一个标志名称定义为Trickle_flag
. Trickle_flag
当等于 1 并且 DIO 传输将被抑制时,我想在我的程序中禁用涓流计时器。当Trickle_flag
等于 0 时,DIO 传输将继续。我想停止所有节点的 DIO 传输。知道如何改变涓流功能吗?
问问题
50 次
1 回答
0
如何禁用涓流计时器的正确方法是调用trickle_timer_stop(tt)
宏,tt
计时器在哪里停止。请参阅此宏的文档。
不过,停止 DIO 传输是一个不同的问题。Contiki RPL 实现是在 Trickle 计时器库出现之前开发的,因此它不使用 Trickle 计时器 API,而是通过回调计时器 ( struct ctimer
) 在内部实现 Trickle 计时器。也不要用ctimer_stop(&instance->dio_timer)
于此,它不会给出可靠的结果,因为该rpl_reset_dio_timer
函数可能被某些事件调用,这将重新启动计时器。您最好的方法是在发送 DIO 消息之前过滤掉它们,而不是以代码开发人员不期望的方式弄乱 Trickle 计时器。您可以dio_output
根据标志值添加 if 语句,例如,如果设置了 DIO 抑制标志,则立即返回。
于 2022-01-05T10:46:53.913 回答