NED File src/linklayer/TTEPHYPort.ned

Name Type Description
TTEPHYPort compound module

The TTEPHYPort is a compund module that contains the TTEOutput, TTEInput and MAC (EtherMACFullDuplex) It represents a physical port for a TTEthernet device (Switch or Host)

Source code:

package ttethernet.linklayer;


import inet.linklayer.IEtherMAC;
import inet.linklayer.ethernet.EtherMACFullDuplex;

// The TTEPHYPort is a compund module that contains the TTEOutput, TTEInput and MAC (EtherMACFullDuplex)
// It represents a physical port for a TTEthernet device (Switch or Host)
//
// @see IPort, TTEOutput, TTEInput, EtherMACFullDuplex
//
// @author Till Steinbach
module TTEPHYPort 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);
        //Static propagation delay for the port
        double static_tx_delay @unit(s) = default(0ns);
    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);

    submodules:
        //Module for the organisation of outbound traffic
        tteOutput: TTEOutput {
            @display("p=48,45");
        }
        //Module for the organisation of inbound traffic
        tteInput: TTEInput {
			parameters:
            	@display("p=142,45");
            	promiscuous = promiscuous;
        }
        //MAC interface
        mac: EtherMACFullDuplex {
            parameters:
                promiscuous = true; //MAC must be set promiscuous to allow for CT receiption with all CT-Markers
                queueModule = "tteOutput";//The tteOutput-Module(TTEOutput) is used as external queue for the interface
                @display("p=87,139");
        }
    connections:
        upperLayerIn --> tteOutput.in;
        upperLayerOut <-- tteInput.out;
        tteOutput.out --> mac.upperLayerIn;
        tteInput.in <-- mac.upperLayerOut;
        phys <--> mac.phys;
        
        TTin --> tteOutput.TTin;
        RCin --> tteOutput.RCin;
        PCFin --> tteOutput.PCFin;
}