1

我有一个问题要问你。我想禁用rpl-mrhof.c文件中的涓流计时器。我将一个标志名称定义为Trickle_flag. Trickle_flag当等于 1 并且 DIO 传输将被抑制时,我想在我的程序中禁用涓流计时器。当Trickle_flag等于 0 时,DIO 传输将继续。我想停止所有节点的 DIO 传输。知道如何改变涓流功能吗?

4

1 回答 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 回答