如何在BaseWaveApplLayer类静脉中获取Frame Id

时间:2017-04-19 16:03:34

标签: omnet++ veins

我正在实施由RSU发送的ACK功能,我试图在frameID类中获得BaseWaveApplLayer。它有cMessage个对象,但我无法获得正确的freamID 我尝试使用messageId,但它与从节点发送的不同。还对getEncapsulationId()进行了测试,但这也是不同的。如何让发件人发送frameId

void BaseWaveApplLayer::handleLowerMsg(cMessage* msg) {
    WaveShortMessage* wsm = dynamic_cast<WaveShortMessage*>(msg);
    ASSERT(wsm);
    if (BasicSafetyMessage* bsm = dynamic_cast<BasicSafetyMessage*>(wsm)) {
        receivedBSMs++;
        onBSM(bsm);
    }
}

1 个答案:

答案 0 :(得分:1)

首先,您必须在发送方设置ID,然后您才能访问接收方的ID。为此,您必须在*.msg文件中扩展消息定义,以便有一个新字段来存储应用程序的ID。例如,可以将其称为myAppsId

请注意this实施如何使用新字段扩展WaveShortMessage

您可以使用相同的方法扩展WaveShortMessage,并为您的应用程序创建具有所需字段的新消息类型。或者,您可以直接修改WaveShortMessage

的定义

然后基本上分别对发送方和接收方的新定义字段使用set()get()函数。

Here是一个用于不同目的的有用解决方案,但同样适用于您。