MixedMultidropNetwork.ned

NED File examples/ethernet/TenBaseT1S/MixedMultidropNetwork.ned

Name Type Description
MixedMultidropNetwork network

This module contains an ~EthernetSwitch connected to a ~StandardHost and a 10BASE-T1S multidrop link with a configurable number of nodes. The switch port acts as the controller of the multidrop link. The network node type can be configured for all the nodes on the multidrop link.

Source code

//
// Copyright (C) 2023 OpenSim Ltd.
//
// SPDX-License-Identifier: LGPL-3.0-or-later
//

package inet.examples.ethernet.TenBaseT1S;

import inet.node.contract.IEthernetNetworkNode;
import inet.node.ethernet.EthernetMultidropLink;
import inet.node.ethernet.EthernetLink;
import inet.node.ethernet.EthernetSwitch;
import inet.node.inet.StandardHost;
import inet.physicallayer.wired.common.WireJunction;
import inet.visualizer.canvas.integrated.IntegratedCanvasVisualizer;

//
// This module contains an ~EthernetSwitch connected to a ~StandardHost and a
// 10BASE-T1S multidrop link with a configurable number of nodes. The switch
// port acts as the controller of the multidrop link. The network node type can
// be configured for all the nodes on the multidrop link.
//
network MixedMultidropNetwork
{
    parameters:
        int numNodes;
    submodules:
        switch: EthernetSwitch {
            parameters:
                eth[0].plca.plca_node_count = default(parent.numNodes + 1);
                eth[0].plca.local_nodeID = default(0);
                @display("p=150,150");
        }
        host: StandardHost {
            parameters:
                @display("p=150,300;i=device/device");
        }
        node[numNodes]: <> like IEthernetNetworkNode {
            parameters:
                eth[*].plca.plca_node_count = default(parent.numNodes + 1);
                eth[*].plca.local_nodeID = default(this.index + 1);
                @display("p=300,300,row,150;i=device/card");
        }
        j[numNodes]: WireJunction {
            parameters:
                @display("p=300,150,row,150");
        }
        visualizer: IntegratedCanvasVisualizer {
            parameters:
                @display("p=100,400;is=s");
        }
    connections:
        switch.ethg++ <--> EthernetMultidropLink { length = 100cm; } <--> j[0].port++;
        switch.ethg++ <--> EthernetLink { length = 50cm; datarate = 100Mbps; } <--> host.ethg++;
        for i=0..numNodes-1 {
            j[i].port++ <--> EthernetMultidropLink { length = 100cm; } <--> j[i + 1].port++ if i < numNodes - 1;
            j[i].port++ <--> EthernetMultidropLink { length = 50cm; } <--> node[i].ethg++;
        }
}