我试图用PW-MAC协议在contiki中编写我自己的RDC层。 我想知道如何在这一层发送广播,因为没有网络,也没有传输层。 我必须使用该功能将是:如何在Contiki的RDC层中发送广播数据包?
NETSTACK_RDC.send(mac_callback_t sent, void *ptr)
但我真的不知道该怎么mac_callback_t和PTR是...在源的例子使用UDP广播所以这将是很烦人的,如果我有实现传输层。
谢谢您的回答
我试图用PW-MAC协议在contiki中编写我自己的RDC层。 我想知道如何在这一层发送广播,因为没有网络,也没有传输层。 我必须使用该功能将是:如何在Contiki的RDC层中发送广播数据包?
NETSTACK_RDC.send(mac_callback_t sent, void *ptr)
但我真的不知道该怎么mac_callback_t和PTR是...在源的例子使用UDP广播所以这将是很烦人的,如果我有实现传输层。
谢谢您的回答
您应该检查了一下文档和代码,可以帮助你很多。 ptr
是数据指针(void*)
。所以你的数据发送。 mac_call_back_t
很清楚:触发到mac层的回调。 (函数指针)
要发送广播,只需发送到FFF地址。 (你必须改变与packetbuf地址,检查packetbuf的文档(一个很好的链接packet_buf:。http://anrg.usc.edu/contiki/index.php/Packetbuffer_Basics)
检查雾凇的broadcast_conn
了解广播是如何完成的,并有一个例子
RDC代表“无线电负载循环”的RDC层直接使用无线电功能,所以发送报文可能是一样简单主叫NETSTACK_RADIO.send(packetbuf_hdrptr(), packetbuf_totlen())
的半自助旅游旅行社网络堆栈具有此分层结构:
NETWORK layer -> MAC layer -> RDC layer -> RADIO layer.
(在RECE nt版本在NETWORK和MAC层之间存在额外的LLSEC层)。
因此RDC层API的实现使用RADIO层API,并由/报告给MAC层API调用。您可以查看core/net/mac/nullrdc.c
以了解如何实现简单的RDC驱动程序。
如您所述,NETSTACK_RDC.send(mac_callback_t sent, void *ptr)
需要两个参数。第一种是在完成发送后需要调用的回调类型,第二种是需要传递给回调的用户数据。
回调是在的typedef为net/mac/mac.h
:
typedef void (* mac_callback_t)(void *ptr, int status, int transmissions);
ptr
是传递给NETSTACK_RDC.send
用户数据指针;status
是MAC状态码,例如MAC_TX_OK
-传输的结果 ;transmissions
是传输次数。
你听起来很困惑。你知道如何发送单播数据包,并想修改你的代码来发送广播数据包,或者你只是想发送任何数据包?对于具有广播与单播数据包的RDC层,可能没有太大的差别。 – kfx