NrNicUeD2D.ned

NED File src/simu5g/stack/d2d/NrNicUeD2D.ned

Name Type Description
NrNicUeD2D compound module

Device-to-Device (D2D) capable NR User Equipment network interface. It extends NrNicUe by swapping in the D2D-capable NR MAC/PHY leaves and enabling the D2D mode controller, allowing direct UE-to-UE communication without routing traffic through the gNodeB. It is the NR counterpart of LteNicUeD2D.

Source code

//
//                  Simu5G
//
// Copyright (C) 2019-2021 Giovanni Nardini, Giovanni Stea, Antonio Virdis et al. (University of Pisa)
// Copyright (C) 2022-2026 Giovanni Nardini, Giovanni Stea et al. (University of Pisa)
//
// This file is part of a software released under the license included in file
// "license.pdf". Please read LICENSE and README files before using it.
// The above files and the present reference are part of the software itself,
// and cannot be removed from it.
//

package simu5g.stack.d2d;

import simu5g.stack.NrNicUe;

//
// Device-to-Device (D2D) capable NR User Equipment network interface. It extends
// ~NrNicUe by swapping in the D2D-capable NR MAC/PHY leaves and enabling the D2D
// mode controller, allowing direct UE-to-UE communication without routing traffic
// through the gNodeB. It is the NR counterpart of ~LteNicUeD2D.
//
// The PDCP and RLC entities are missing from the submodules on purpose: the RRC
// layer's ~BearerManagement creates them per bearer at run time.
//
module NrNicUeD2D extends NrNicUe
{
    parameters:
        // NR stack: use the D2D-capable MAC/PHY leaves
        nrMac.typename = default("NrMacUeD2D");
        nrPhy.typename = default("PhyUeD2D");

        // LTE leg: also runs the D2D-capable MAC/PHY leaves (the PHY carries
        // the averageCqiD2D statistic)
        mac.typename = default("LteMacUeD2D");
        phy.typename = default("PhyUeD2D");
        ip2nic.typename = default("Ip2NicD2D");

        // Both legs previously ran with the NIC-wide D2D support enabled
        rlcMux.typename = default("RlcMuxD2D");
        rrc.bearerManagement.lteRlcUmEntityModuleType = default("simu5g.stack.d2d.rlc.LteRlcUmEntityD2D");
        rrc.bearerManagement.nrRlcUmEntityModuleType = default("simu5g.stack.d2d.rlc.NrRlcUmEntityD2D");
        nrRlcMux.typename = default("RlcMuxD2D");

        // Use the D2D-capable channel model on both legs (matching the
        // pre-separation defaults: TR 36.814 on the LTE leg, TR 38.901 on the NR leg)
        channelModelType = default("D2dChannelModel");
        nrChannelModelType = default("D2dChannelModel");
        nrChannelModel[*].pathLossType = default("Tr38901");

        rrc.typename = default("RrcD2D");
        rrc.handoverController.typename = default("HandoverControllerD2D");
        rrc.nrHandoverController.typename = default("HandoverControllerD2D");
        bool d2dInitialMode = default(false);
}