更改 Veins 中的 WSM(WAVE 短消息)数据包大小

Changing WSM(WAVE Short Message) packet size in Veins

通过 setWsmLength 设置 WSM 的长度或通过 setWsmData 添加大负载在模拟过程中有什么不同吗?我正在尝试模拟一个频繁使用的网络,但更改这两个值中的任何一个似乎都没有任何区别。我找到 this,但想确认这一点。如果我想更改 WSM 的大小,我是否必须实施它?

您可以在 .msg 文件中为您的应用程序实现数据包,如下所示:

cplusplus {{
#include "veins/modules/messages/WaveShortMessage_m.h"
}}

class WaveShortMessage;

message MyAppsPacket extends WaveShortMessage {
    string sourceAddress;           
    string destinationAddress;      
    simtime_t sendingTime;
}

然后在你的代码中你可以使用内置的setByteLength()。为您的消息使用 cPacket 子类,因为:

(cPacket is) A subclass of cMessage that can be used to represent packets (frames, * datagrams, application messages, etc). cPacket adds length (measured in * bits or bytes), bit error flag, and encapsulation capability to cMessage. * Length and bit error flag are significant when the packet travels through * a cDatarateChannel or another channel that supports data rate and/or * error modelling. *

相关 Q&A 显示了从 cMessagecPacket 的转换。

我知道这是几十年后的事了,但也许它可以帮助像我这样的新 vanets 爱好者。

在 omnet++5.4.1 和 Veins 4.7.1 中,在函数

populateWSM()

在BaseWaveApplLayer.cc(veins/modules/application/ieee80211p)中定义,可以用

设置位长

wsm->setBitLength()

方法,它改变了 wsm 数据包的大小。默认情况下,它的长度为 header

wsm->setBitLength(headerLength)

我玩过这个并且可以获得不同的数据包大小。

希望这有用。