我使用的是Contiki以及udp-server和udp-client的例子。我想做几件事: 1-我希望客户端节点嗅探数据包,然后在它发出数据包后发送到服务器。我成功地做到了这一点,但是有一些事情我不明白:当我在udp-客户机中开始嗅探时,将这一点添加到代码中:
radio_value_t radio_rx_mode;
NETSTACK_RADIO.get_value(RADIO_PARAM_RX_MODE, &radio_rx_mode);
NETSTACK_RADIO.set_value(RADIO_PARAM_RX_MODE, radio_rx_mode & (~RADIO_RX_MODE_ADDRESS_FILTER));这似乎只捕获udp客户端应用程序级别上的数据包,当我增加QUEUEBUF_CONF_NUM以允许服务器接收这些数据包时,它只捕获节点自己的数据包。知道为什么会这样吗?
b-当我在input_packet函数中的csma.c文件中执行同样的操作时,它确实捕获了所有的数据包,但是,我不知道如何设置,以便一旦在csma级别捕获数据包,节点就可以从应用程序级别发送数据包?
2-一个简单的问题来确认我所做的是否正确,我想在本例中启用ReTx,所以我将其添加到project文件中:
#define CSMA_MAX_FRAME_RETRIES 7这会使数据包重传吗?还是在做其他的事?
在这方面的任何帮助都将受到赞赏。谢谢。
发布于 2020-12-28 18:10:13
process_post()作为第一个参数调用PROCESS_BROADCAST。这将将事件广播到所有活动进程,包括应用程序的进程。#define CSMA_CONF_MAX_FRAME_RETRIES转换为project-conf.h文件中的某个非默认值。请注意这个预处理器指令的名称中的CONF。https://stackoverflow.com/questions/65481685
复制相似问题