如何在 BaseWaveApplLayer class 静脉中获取帧 ID

how to get Frame Id in BaseWaveApplLayer class veins

我正在实现由 RSU 发送的 ACK 功能,我正在尝试在 BaseWaveApplLayer class 中获取 frameID。它有 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);
    }
}

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

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

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

的定义

那么发送端和接收端基本上分别对新定义的字段使用set()get()函数

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