Compound Module TTEAVBPHYPort

Package: core4inet.linklayer.port
File: src/core4inet/linklayer/port/TTEAVBPHYPort.ned

The TTEAVBPHYPort is a compund module that contains the input Shaper, output Shaper and MAC (EtherMACFullDuplex) It represents a physical port for a real-time Ethernet device (Switch or Host)

See also: ~IPort, ~EtherMACFullDuplex, ~TTEInput, ~TT_AVBClassA_PCF_RC_BE_Shaper, ~TT_PCF_RC_BE_Shaper, ~PCF_RC_BE_Shaper, ~BE_Shaper

Author: Philipp Meyer

TT_AVBClassA_AVBClassB_PCF_RC_8021Q_Shaper CT_AVB_8021Q_InControl EtherMACFullDuplex

Usage diagram:

The following diagram shows usage relationships between types. Unresolved types are missing from the diagram. Click here to see the full picture.

Inheritance diagram:

The following diagram shows inheritance relationships for this type. Unresolved types are missing from the diagram. Click here to see the full picture.

Used in compound modules:

Name Type Description
TTEAVBEtherHost compound module

Module for a TTEAVBEthernet Host. Contains handler for TT, AVB, RC and BE Messages.

TTEAVBEtherSwitch compound module

Module for a TTEAVBEthernet Switch. Contains handler for TT, AVB, RC and BE Messages.

Parameters:

Name Type Default value Description
promiscuous bool false

if true, all packets are received, otherwise only the ones with matching destination MAC address (This does not affect CT-Frames)

interfaceTableModule string

Module holds Interfacenames

untaggedVID int 0

Untagged VLAN. Untagged incoming frames get tagged with this VLAN. Outgoing frames with this VLAN get untagged

taggedVIDs string "0"

Interface allows frames with this VLAN to enter and leave the port

Properties:

Name Value Description
display bgb=188,180;i=device/port

Gates:

Name Direction Size Description
upperLayerIn input

Input from the upper layer for best-effort Traffic

upperLayerOut output

Output to the upper layer for best-effort Traffic

phys inout

Connection to the physical layer

TTin input

Input from the upper layer for time-triggered traffic

RCin input

Input from the upper layer for rate-constrained traffic

PCFin input

Input from the upper layer for rate-constrained traffic

AVBAin input
AVBBin input

Input from the upper layer for audio-video bridging SR-Class B traffic

Unassigned submodule parameters:

Name Type Default value Description
shaper.numRCpriority int 10
shaper.tt_buffers string ""

Comma seperated list of TTBuffers that send messages to this port

shaper.safety_margin int 5

Safety margin for TT-Messages in ticks (musst be set according to maximum clock correction!)

shaper.oscillator string "^.^.scheduler.oscillator"

Oscillator of the timed module (must be set to the name of an oscillator module in the Node) when left empty: oscillator

shaper.timer string "^.^.scheduler.timer"

Timer of the timed module (must be set to the name of an timer module in the Node) when left empty: timer

shaper.AVBHigherPriorityBandwidth int 0bps

Bandwidth of the TT bandwith on this port

inControl.oscillator string "oscillator"

Oscillator of the timed module (must be set to the name of an oscillator module in the Node) when left empty: oscillator

inControl.timer string "timer"

Timer of the timed module (must be set to the name of an timer module in the Node) when left empty: timer

inControl.ct_marker int
inControl.ct_mask int

Critical traffic mask of the buffer

inControl.ct_incomings string ""

Comma seperated list of ctc modules the input uses

mac.interfaceTableModule string

The path to the InterfaceTable module

mac.address string "auto"

MAC address as hex string (12 hex digits), or "auto". "auto" values will be replaced by a generated MAC address in init stage 0.

mac.duplexMode bool true

must be set to "true", as EtherMACFullDuplex does not support half-duplex operation (parameter is present to reduce the risk of accidental misconfiguration)

mac.txQueueLimit int 1000

maximum number of frames queued up for transmission in the internal queue (only used if queueModule==""); additional frames cause a runtime error

mac.mtu int 1500B
mac.connectionColoring bool true

colors the connection when transmitting

Source code:

//
// The TTEAVBPHYPort is a compund module that contains the input Shaper, output Shaper and MAC (EtherMACFullDuplex)
// It represents a physical port for a real-time Ethernet device (Switch or Host)
//
// @see ~IPort, ~EtherMACFullDuplex, ~TTEInput, ~TT_AVBClassA_PCF_RC_BE_Shaper, ~TT_PCF_RC_BE_Shaper, ~PCF_RC_BE_Shaper, ~BE_Shaper
//
// @author Philipp Meyer
//
module TTEAVBPHYPort like IPort
{
    parameters:
        @display("bgb=188,180;i=device/port");

        // if true, all packets are received, otherwise only the ones with matching destination MAC address (This does not affect CT-Frames)
        bool promiscuous = default(false);
        //Module holds Interfacenames
        string interfaceTableModule;
        //Untagged VLAN. Untagged incoming frames get tagged with this VLAN. Outgoing frames with this VLAN get untagged
        int untaggedVID = default(0);
        //Interface allows frames with this VLAN to enter and leave the port
        string taggedVIDs = default("0");

        *.interfaceTableModule = default(absPath(interfaceTableModule));

    gates:
        //Input from the upper layer for best-effort Traffic
        input upperLayerIn @loose @labels(EtherFrame);
        //Output to the upper layer for best-effort Traffic
        output upperLayerOut @loose @labels(EtherFrame);
        //Connection to the physical layer
        inout phys @labels(EtherFrame);
        //Input from the upper layer for time-triggered traffic
        input TTin @directIn @labels(TTFrame);
        //Input from the upper layer for rate-constrained traffic
        input RCin @directIn @labels(RCFrame);
        //Input from the upper layer for rate-constrained traffic
        input PCFin @directIn @labels(PCFrame);
		//Input from the upper layer for audio-video bridging SR-Class A traffic
        input AVBAin @directIn @labels(AVBFrame);
        //Input from the upper layer for audio-video bridging SR-Class B traffic
        input AVBBin @directIn @labels(AVBFrame);

    submodules:
        shaper: TT_AVBClassA_AVBClassB_PCF_RC_8021Q_Shaper {
            @display("p=48,45");
        }

        inControl: CT_AVB_8021Q_InControl {
            parameters:
                @display("p=142,45");
                promiscuous = promiscuous;
                untaggedVID = untaggedVID;
                taggedVIDs = taggedVIDs;
        }

        mac: EtherMACFullDuplex {
            parameters:
                promiscuous = true;
                queueModule = "^.shaper";
                @display("p=87,139");
        }

    connections:
        upperLayerIn --> shaper.in;
        upperLayerOut <-- inControl.out;
        shaper.out --> mac.upperLayerIn;
        inControl.in <-- mac.upperLayerOut;
        phys <--> mac.phys;

        TTin --> shaper.TTin;
        RCin --> shaper.RCin;
        PCFin --> shaper.PCFin;
        AVBAin --> shaper.AVBAin;
        AVBBin --> shaper.AVBBin;
}