EthernetPreemptingMacLayer¶
Package: inet.linklayer.ethernet.modular
compound module EthernetPreemptingMacLayer
(no description)
Usage diagram¶
Inheritance diagram¶
Parameters¶
Name |
Type |
Default value |
Description |
|---|---|---|---|
bitrate |
double |
Properties¶
Name |
Value |
Description |
|---|---|---|
display |
i=block/layer |
Gates¶
Name |
Direction |
Size |
Description |
|---|---|---|---|
upperLayerIn |
input |
||
upperLayerOut |
output |
||
lowerLayerIn |
input |
||
lowerLayerOut |
output |
Unassigned submodule parameters¶
Name |
Type |
Default value |
Description |
|---|---|---|---|
outboundClassifier.displayStringTextFormat |
string |
“classified %p pk (%l)” |
Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information |
outboundClassifier.reverseOrder |
bool |
false |
|
outboundClassifier.classifierClass |
string |
“inet::PacketVlanReqClassifier” |
Determines the output queue of packets, the parameter must be the name of a C++ class which implements the IPacketClassifierFunction interface and is registered via Register_Class |
expressMacLayer.queue.displayStringTextFormat |
string |
“contains %p pk (%l) pushed %u\npulled %o removed %r dropped %d” |
Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information |
expressMacLayer.queue.packetCapacity |
int |
-1 |
Maximum number of packets in the queue, no limit by default |
expressMacLayer.queue.dataCapacity |
int |
-1b |
Maximum total length of packets in the queue, no limit by default |
expressMacLayer.queue.dropperClass |
string |
“” |
Determines which packets are dropped when the queue is overloaded, packets are not dropped by default; the parameter must be the name of a C++ class which implements the IPacketDropperFunction C++ interface and is registered via Register_Class |
expressMacLayer.queue.comparatorClass |
string |
“” |
Determines the order of packets in the queue, insertion order by default; the parameter must be the name of a C++ class which implements the IPacketComparatorFunction C++ interface and is registered via Register_Class |
expressMacLayer.queue.bufferModule |
string |
“” |
Relative module path to the IPacketBuffer module used by this queue, implicit buffer by default |
expressMacLayer.streamer.displayStringTextFormat |
string |
“processed {numProcessedPackets} pk ({processedTotalLength})” |
Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information |
expressMacLayer.streamer.clockModule |
string |
“” |
Relative path of a module that implements IClock(1,:ref:2 <neddoc-msg-inet-iclock>); optional |
expressMacLayer.streamer.datarate |
double |
nan bps |
|
expressMacLayer.outboundEmitter.displayStringTextFormat |
string |
“processed {numProcessedPackets} pk ({processedTotalLength})” |
Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information |
expressMacLayer.outboundEmitter.packetFilter |
object |
“*” |
Which packets are considered, matches all packets by default |
expressMacLayer.outboundEmitter.direction |
string |
“undefined” |
|
expressMacLayer.outboundEmitter.signalName |
string |
||
expressMacLayer.fcsChecker.displayStringTextFormat |
string |
“dropped {numDroppedPackets}/{numProcessedPackets} pk ({droppedTotalLength}/{processedTotalLength})” |
Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information |
expressMacLayer.fcsChecker.backpressure |
bool |
false |
|
expressMacLayer.fcsChecker.popFcs |
bool |
false |
|
expressMacLayer.inboundEmitter.displayStringTextFormat |
string |
“processed {numProcessedPackets} pk ({processedTotalLength})” |
Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information |
expressMacLayer.inboundEmitter.packetFilter |
object |
“*” |
Which packets are considered, matches all packets by default |
expressMacLayer.inboundEmitter.direction |
string |
“undefined” |
|
expressMacLayer.inboundEmitter.signalName |
string |
||
preemptableMacLayer.queue.displayStringTextFormat |
string |
“contains %p pk (%l) pushed %u\npulled %o removed %r dropped %d” |
Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information |
preemptableMacLayer.queue.packetCapacity |
int |
-1 |
Maximum number of packets in the queue, no limit by default |
preemptableMacLayer.queue.dataCapacity |
int |
-1b |
Maximum total length of packets in the queue, no limit by default |
preemptableMacLayer.queue.dropperClass |
string |
“” |
Determines which packets are dropped when the queue is overloaded, packets are not dropped by default; the parameter must be the name of a C++ class which implements the IPacketDropperFunction C++ interface and is registered via Register_Class |
preemptableMacLayer.queue.comparatorClass |
string |
“” |
Determines the order of packets in the queue, insertion order by default; the parameter must be the name of a C++ class which implements the IPacketComparatorFunction C++ interface and is registered via Register_Class |
preemptableMacLayer.queue.bufferModule |
string |
“” |
Relative module path to the IPacketBuffer module used by this queue, implicit buffer by default |
preemptableMacLayer.fcsRemover.displayStringTextFormat |
string |
“dropped {numDroppedPackets}/{numProcessedPackets} pk ({droppedTotalLength}/{processedTotalLength})” |
Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information |
preemptableMacLayer.fcsRemover.backpressure |
bool |
false |
|
preemptableMacLayer.fcsRemover.popFcs |
bool |
true |
|
preemptableMacLayer.streamer.displayStringTextFormat |
string |
“processed {numProcessedPackets} pk ({processedTotalLength})” |
Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information |
preemptableMacLayer.streamer.clockModule |
string |
“” |
Relative path of a module that implements IClock(1,:ref:2 <neddoc-msg-inet-iclock>); optional |
preemptableMacLayer.streamer.datarate |
double |
nan bps |
|
preemptableMacLayer.streamer.minPacketLength |
int |
||
preemptableMacLayer.streamer.roundingLength |
int |
1B |
|
preemptableMacLayer.fragmentFcsInserter.displayStringTextFormat |
string |
“processed {numProcessedPackets} pk ({processedTotalLength})” |
Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information |
string |
“declared” |
||
preemptableMacLayer.outboundEmitter.displayStringTextFormat |
string |
“processed {numProcessedPackets} pk ({processedTotalLength})” |
Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information |
preemptableMacLayer.outboundEmitter.packetFilter |
object |
“*” |
Which packets are considered, matches all packets by default |
preemptableMacLayer.outboundEmitter.direction |
string |
“undefined” |
|
preemptableMacLayer.outboundEmitter.signalName |
string |
||
preemptableMacLayer.fcsInserter.displayStringTextFormat |
string |
“processed {numProcessedPackets} pk ({processedTotalLength})” |
Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information |
preemptableMacLayer.fcsInserter.fcsMode |
string |
“declared” |
|
preemptableMacLayer.defragmenter.displayStringTextFormat |
string |
“processed {numProcessedPackets} pk ({processedTotalLength})” |
Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information |
preemptableMacLayer.defragmenter.deleteSelf |
bool |
false |
|
preemptableMacLayer.fragmentFcsChecker.displayStringTextFormat |
string |
“dropped {numDroppedPackets}/{numProcessedPackets} pk ({droppedTotalLength}/{processedTotalLength})” |
Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information |
preemptableMacLayer.fragmentFcsChecker.backpressure |
bool |
false |
|
preemptableMacLayer.inboundEmitter.displayStringTextFormat |
string |
“processed {numProcessedPackets} pk ({processedTotalLength})” |
Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information |
preemptableMacLayer.inboundEmitter.packetFilter |
object |
“*” |
Which packets are considered, matches all packets by default |
preemptableMacLayer.inboundEmitter.direction |
string |
“undefined” |
|
preemptableMacLayer.inboundEmitter.signalName |
string |
||
scheduler.displayStringTextFormat |
string |
“scheduled %p pk (%l)” |
Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information |
scheduler.reverseOrder |
bool |
false |
|
preemptingServer.displayStringTextFormat |
string |
“served %p pk (%l)” |
Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information |
preemptingServer.clockModule |
string |
“” |
Relative path of a module that implements IClock(1,:ref:2 <neddoc-msg-inet-iclock>); optional |
preemptingServer.datarate |
double |
parent.bitrate |
|
inboundClassifier.displayStringTextFormat |
string |
“classified %p pk (%l)” |
Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information |
inboundClassifier.reverseOrder |
bool |
false |
|
inboundClassifier.classifierClass |
string |
“inet::PacketFragmentTagClassifier” |
Determines the output queue of packets, the parameter must be the name of a C++ class which implements the IPacketClassifierFunction interface and is registered via Register_Class |
multiplexer.displayStringTextFormat |
string |
“passed %p pk (%l)” |
Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information |
multiplexer.forwardServiceRegistration |
bool |
true |
|
multiplexer.forwardProtocolRegistration |
bool |
true |
Source code¶
module EthernetPreemptingMacLayer like IEthernetMacLayer
{
parameters:
volatile double bitrate @unit(bps);
*.bitrate = default(this.bitrate);
lifetimer.collectionModule = default("^.queue");
@display("i=block/layer");
gates:
input upperLayerIn;
output upperLayerOut;
input lowerLayerIn;
output lowerLayerOut;
submodules:
lifetimer: <default("")> like IPacketLifeTimer if typename != "" {
@display("p=100,100;is=s");
}
queue: <default("")> like IPacketQueue {
@display("p=200,100");
}
outboundClassifier: <default("PacketClassifier")> like IPacketClassifier {
classifierClass = default("inet::PacketVlanReqClassifier");
@display("p=200,200");
}
expressMacLayer: <default("EthernetStreamingMacLayer")> like IEthernetMacLayer {
@display("p=300,300");
}
preemptableMacLayer: <default("EthernetFragmentingMacLayer")> like IEthernetMacLayer {
@display("p=500,300");
}
scheduler: PriorityScheduler {
@display("p=200,400");
}
preemptingServer: PreemptingServer {
datarate = default(parent.bitrate);
@display("p=200,500");
}
inboundClassifier: <default("PacketClassifier")> like IPacketClassifier {
classifierClass = default("inet::PacketFragmentTagClassifier");
@display("p=600,400");
}
multiplexer: PacketMultiplexer {
@display("p=600,200");
}
connections:
upperLayerIn --> { @display("m=n"); } --> queue.in;
queue.out --> outboundClassifier.in;
outboundClassifier.out++ --> expressMacLayer.upperLayerIn;
outboundClassifier.out++ --> preemptableMacLayer.upperLayerIn;
expressMacLayer.lowerLayerOut --> scheduler.in++;
preemptableMacLayer.lowerLayerOut --> scheduler.in++;
scheduler.out --> preemptingServer.in;
preemptingServer.out --> { @display("m=s"); } --> lowerLayerOut;
lowerLayerIn --> { @display("m=s"); } --> inboundClassifier.in;
inboundClassifier.out++ --> expressMacLayer.lowerLayerIn;
inboundClassifier.out++ --> preemptableMacLayer.lowerLayerIn;
expressMacLayer.upperLayerOut --> multiplexer.in++;
preemptableMacLayer.upperLayerOut --> multiplexer.in++;
multiplexer.out --> { @display("m=n"); } --> upperLayerOut;
}
File: src/inet/linklayer/ethernet/modular/EthernetPreemptingMacLayer.ned