HandoverController.ned

NED File src/simu5g/stack/rrc/HandoverController.ned

Name Type Description
HandoverController simple module

UE-side component that manages handover decisions and procedures. Receives RSSI measurements from the PHY layer based on broadcast frames, and triggers handover when a better serving cell is detected.

Source code

//
//                  Simu5G
//
// Authors: Andras Varga (OpenSim Ltd)
//
// 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.rrc;

//
// UE-side component that manages handover decisions and procedures.
// Receives RSSI measurements from the PHY layer based on broadcast frames,
// and triggers handover when a better serving cell is detected.
//
simple HandoverController like IHandoverController
{
    parameters:
        @display("i=block/control");
        @class(HandoverController);

        bool dynamicCellAssociation = default(false);

        // Allows handovers in the UE
        bool enableHandover = default(false);

        // Whether this instance is associated with the NR or the LTE stack
        bool isNr;

        // MacNodeId of the stack leg this controller belongs to (set by the NIC)
        int macNodeId;

        // Handover duration
        double handoverLatency @unit(s) = default(50ms);
        double handoverDetachmentTime @unit(s) = default(handoverLatency > 0s ? handoverLatency/2 : 25ms);
        double handoverAttachmentTime @unit(s) = default(handoverLatency > 0s ? handoverLatency-handoverDetachmentTime : handoverDetachmentTime);

        // Whether minRssi is taken from PhyPisaData instead of the minRssi parameter
        bool minRssiDefault = default(true);

        // Configurable minimum threshold RSSI for attaching to an eNB (meaningful only if minRssiDefault==false)
        double minRssi @unit("dB") = default(-99.0dB);

        double hysteresisFactor = default(10);

        string binderModule = default("binder");
        string macModule = default("^.^.mac");
        string bearerManagementModule = default("^.bearerManagement");
        string handoverPacketHolderModule = default("^.^.handoverPacketHolder");
        string feedbackGeneratorModule = default("^.^.dlFbGen"); // TODO or "^.^.nrDlFbGen"
        string otherHandoverControllerModule = default("");

        bool hasCollector = default(false); // True when node has a collector module (ueCollector/nrUeCollector) for this PHY module

        @signal[servingCell];
        @statistic[servingCell](title="ID of the serving cell for the UE"; unit=""; source="servingCell"; record=vector);

}