首页 > 解决方案 > 如何从 csma.c 文件访问变量?- 康蒂基

问题描述

我正在研究一种路由机制,该机制使用来自 Contiki 中 MAC 层的信息。因此,我需要读取 csma.c 文件中的变量。所以,我的问题是如何访问这个文件中的变量的最佳方式?

例如,我想在调度传输时统计平均延迟。为此,我必须阅读函数schedule_transmission中的可变延迟。具体来说,如何从我的路由源文件中读取可变延迟。

static void
schedule_transmission(struct neighbor_queue *n)
{
  clock_time_t delay;
  int backoff_exponent; /* BE in IEEE 802.15.4 */

  backoff_exponent = MIN(n->collisions, CSMA_MAX_BE);

  /* Compute max delay as per IEEE 802.15.4: 2^BE-1 backoff periods  */
  delay = ((1 << backoff_exponent) - 1) * backoff_period();
  if(delay > 0) {
    /* Pick a time for next transmission */
    delay = random_rand() % delay;
  }

  PRINTF("csma: scheduling transmission in %u ticks, NB=%u, BE=%u\n",
      (unsigned)delay, n->collisions, backoff_exponent);
  ctimer_set(&n->transmit_timer, delay, transmit_packet_list, n);
}

标签: contiki

解决方案


我认为,首先你需要在 main 之前声明一个延迟变量,然后在你的 csma.c 中创建一个这样的函数:

Clock_time_t get_delay(void)
{
return delay;
}

然后在路由源文件中调用get_delay()函数。


推荐阅读