contiki - 如何从 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);
}
解决方案
我认为,首先你需要在 main 之前声明一个延迟变量,然后在你的 csma.c 中创建一个这样的函数:
Clock_time_t get_delay(void)
{
return delay;
}
然后在路由源文件中调用get_delay()函数。
推荐阅读
- python-3.x - 无法从 OpenGL_accelerate 加载 numpy_formathandler 加速器
- spring - 值对象为 @AggregateIdentifier 和 @TargetAggregateIdentifier
- spring - Spring Cloud Contract - 字符串数组作为查询参数
- xamarin.forms - 从视图模型到另一个视图的方向
- laravel - Laravel/php 应用程序不执行更改
- angular - 如何提供资产文件夹之外的图像?
- android - BottomSheetFragment 是否需要 ViewModel?
- github - 来自分叉的拉取请求不会触发 travis ci
- c# - 计算有多少用户添加到数据库
- java - 使用 api 提供的签名哈希对 PDF 进行签名