Contiki ctimer时钟不会更新

时间:2016-04-22 06:34:53

标签: c timer embedded contiki

我正在努力在contiki 2.7上实现一个新的路由协议,我只是重写了core / net / rpl中的rpl文件。我使用example / ipv6 / rpl-udp / udp-server和udp-client来测试我在使用Sky mote的cooja上的路由协议。但是,当我使用ctimer_set函数时,它永远不会进入回调函数。代码如下所示:

void *dis_timer_init_ptr;
void rpl_init(void){

  clock_time_t waiting;           
    srand((unsigned)clock_time());
    waiting =  (uint32_t)random_rand() % 60;   //waiting for 1-60 s randomly    
    PRINTF("rpl_init, waiting  %d\n",(unsigned long)clock_time());
    dis_timer_init_ptr = &dis_timer_init;
    ctimer_set(&dis_timer_init, CLOCK_SECOND,
           handle_dis_timer,dis_timer_init_ptr);
}

static void
handle_dis_timer(void *ptr){            
  struct ctimer* ct_ptr = ptr;
  clock_time_t waiting;
      dis_output(NULL);
      srand((unsigned long)clock_time());
      waiting =random_rand() % 60;   //waiting for 1-60 s randomly
      PRINTF("handle_dis_time, waiting  %d\n",(unsigned long)waiting);
      if(has_prefix == RPL_NO_PREFIX)
             ctimer_reset(ct_ptr);

}

这里rpl_init的使用位置与原来在tcpip.c第823行中的位置完全相同。使用Cooja的Variable Watcher,我发现模拟开始后的秒数为0。如果我使用原始RPL文件,时钟更新正确。那么有谁知道发生了什么?或者有没有人有类似的经历?非常感谢。

0 个答案:

没有答案