我有一个问题要问你。我想禁用rpl-mrhof.c文件中的滴流计时器。我定义了一个标志名为Trickle_flag。当Trickle_flag等于1时,并且DIO传输将被抑制时,我想在程序中禁用滴流计时器。当Trickle_flag等于0时,DIO传输将继续进行。我要停止所有节点的DIO传输。知道如何改变滴流函数吗?
发布于 2022-01-05 10:46:53
禁用滴流计时器的正确方法是调用trickle_timer_stop(tt)宏,其中tt是要停止的计时器。请参阅此宏的文献资料。
但是,阻止DIO传输是一个不同的问题。Contiki实现是在滴流计时器库存在之前开发的,因此它不使用滴流计时器API,而是通过回调计时器(struct ctimer)在内部实现滴流计时器。也不要为此使用ctimer_stop(&instance->dio_timer),它不会提供可靠的结果,因为某些事件可能会调用rpl_reset_dio_timer函数,这将重新启动计时器。最好的方法是在DIO消息发送之前过滤掉它们,而不是以代码开发人员不期望的方式干扰滴流计时器。例如,您可以根据标志值向dio_output添加一个if语句,以便在设置DIO抑制标志时立即返回。
https://stackoverflow.com/questions/70423262
复制相似问题