MultidropNetwork.ned

NED File examples/ethernet/TenBaseT1S/MultidropNetwork.ned

Name Type Description
MultidropNetwork network

This module contains a single 10BASE-T1S multidrop link with a separate controller node and a configurable number of additional nodes. The network node type can be configured for all network 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.physicallayer.wired.common.WireJunction;
import inet.visualizer.canvas.integrated.IntegratedCanvasVisualizer;

//
// This module contains a single 10BASE-T1S multidrop link with a separate
// controller node and a configurable number of additional nodes. The network
// node type can be configured for all network nodes on the multidrop link.
//
network MultidropNetwork
{
    parameters:
        int numNodes;
    submodules:
        controller: <> like IEthernetNetworkNode {
            parameters:
                eth[*].plca.plca_node_count = default(parent.numNodes + 1);
                eth[*].plca.local_nodeID = default(0);
                @display("p=150,150;i=device/card");
        }
        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,300;is=s");
        }
    connections:
        controller.ethg++ <--> EthernetMultidropLink { length = 100cm; } <--> j[0].port++;
        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++;
        }
}