Skip to content

Commit 7644baf

Browse files
committed
L3NetworkConfiguratorBase: Fixed #913, copied frame creation code from "errorRate" to "delay" autoroute metric.
This fix is a temporary kludge but currently there's no other way to make this work.
1 parent a7f2f35 commit 7644baf

File tree

1 file changed

+9
-2
lines changed

1 file changed

+9
-2
lines changed

src/inet/networklayer/configurator/base/L3NetworkConfiguratorBase.cc

+9-2
Original file line numberDiff line numberDiff line change
@@ -383,7 +383,14 @@ double L3NetworkConfiguratorBase::computeWirelessLinkWeight(Link *link, const ch
383383
cModule *receiverInterfaceModule = receiverInterfaceInfo->networkInterface;
384384
const IRadio *transmitterRadio = check_and_cast<IRadio *>(transmitterInterfaceModule->getSubmodule("radio"));
385385
const IRadio *receiverRadio = check_and_cast<IRadio *>(receiverInterfaceModule->getSubmodule("radio"));
386-
const Packet *macFrame = new Packet();
386+
Packet *macFrame = new Packet();
387+
auto byteCountChunk = makeShared<ByteCountChunk>(B(transmitterInterfaceInfo->networkInterface->getMtu()));
388+
macFrame->insertAtBack(byteCountChunk);
389+
390+
// KLUDGE the frame must contain the PHY header to create a transmission
391+
macFrame->addTag<PacketProtocolTag>()->setProtocol(&Protocol::ackingMac);
392+
check_and_cast<const Radio *>(transmitterRadio)->encapsulate(macFrame);
393+
387394
const IRadioMedium *radioMedium = receiverRadio->getMedium();
388395
const ITransmission *transmission = transmitterRadio->getTransmitter()->createTransmission(transmitterRadio, macFrame, simTime());
389396
const IArrival *arrival = radioMedium->getPropagation()->computeArrival(transmission, receiverRadio->getAntenna()->getMobility());
@@ -409,7 +416,7 @@ double L3NetworkConfiguratorBase::computeWirelessLinkWeight(Link *link, const ch
409416
auto byteCountChunk = makeShared<ByteCountChunk>(B(transmitterInterfaceInfo->networkInterface->getMtu()));
410417
transmittedFrame->insertAtBack(byteCountChunk);
411418

412-
// KLUDGE
419+
// KLUDGE the frame must contain the PHY header to create a transmission
413420
transmittedFrame->addTag<PacketProtocolTag>()->setProtocol(&Protocol::ackingMac);
414421
check_and_cast<const Radio *>(transmitterRadio)->encapsulate(transmittedFrame);
415422

0 commit comments

Comments
 (0)