如何获取数据包的持续时间

How to get the duration of a packet

在 omnet++ 中,我使用以下命令创建了一个数据包,我需要查看数据包的持续时间(以秒和位为单位)。

void XMac::sendPreamble(MacAddress preamble_address)
{
    //~ diff with XMAC, @ in preamble!
    auto preamble = makeShared<XMacControlFrame>();
    preamble->setSrcAddr(interfaceEntry->getMacAddress());
    preamble->setDestAddr(preamble_address);
    preamble->setChunkLength(ctrlFrameLength);
    preamble->setType(XMAC_PREAMBLE);
    auto packet = new Packet("Preamble", preamble);
    packet->addTag<PacketProtocolTag>()->setProtocol(&Protocol::xmac);
    attachSignal(packet, simTime());
    sendDown(packet);
    nbTxPreambles++;
}

谁能告诉我如何查看 packet 持续时间的语法?

谢谢

每个数据包都有一个长度(以位或字节为单位)。持续时间(即通过通道发送数据包的时间)至少取决于两个因素:

  • 包的长度
  • 频道比特率

数据包的长度可以这样读取,例如:

auto len = packet->getTotalLength(); 
int lenBits = b(len).get();  // in bits

收到数据包后,可以通过以下方式获取传输时长:

simtime_t duration = packet->getDuration()