HandoverController

Package: simu5g.stack.rrc

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.

Inheritance diagram

The following diagram shows inheritance relationships for this type. Unresolved types are missing from the diagram.

Known subclasses

Name Type Description
HandoverControllerD2D simple module

D2D-capable variant of the HandoverController. It fills in the handover lifecycle hooks with D2D behavior: switching active D2D flows back to infrastructure mode before a handover, detaching/attaching the D2D AMC direction while executing it, and re-selecting the D2D mode once the handover has completed. Selected via 'handoverController.typename' / 'nrHandoverController.typename' by the D2D-capable UE NICs.

Parameters

Name Type Default value Description
dynamicCellAssociation bool false
enableHandover bool false

Allows handovers in the UE

isNr bool

Whether this instance is associated with the NR or the LTE stack

macNodeId int

MacNodeId of the stack leg this controller belongs to (set by the NIC)

handoverLatency double 50ms

Handover duration

handoverDetachmentTime double handoverLatency > 0s ? handoverLatency/2 : 25ms
handoverAttachmentTime double handoverLatency > 0s ? handoverLatency-handoverDetachmentTime : handoverDetachmentTime
minRssiDefault bool true

Whether minRssi is taken from PhyPisaData instead of the minRssi parameter

minRssi double -99.0dB

Configurable minimum threshold RSSI for attaching to an eNB (meaningful only if minRssiDefault==false)

hysteresisFactor double 10
binderModule string "binder"
macModule string "^.^.mac"
bearerManagementModule string "^.bearerManagement"
handoverPacketHolderModule string "^.^.handoverPacketHolder"
feedbackGeneratorModule string "^.^.dlFbGen"

TODO or "^.^.nrDlFbGen"

otherHandoverControllerModule string ""
hasCollector bool false

True when node has a collector module (ueCollector/nrUeCollector) for this PHY module

Properties

Name Value Description
display i=block/control
class HandoverController

Signals

Name Type Unit Description
servingCell

Statistics

Name Title Source Record Unit Interpolation Mode Description
servingCell ID of the serving cell for the UE servingCell vector

Source code

//
// 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);

}
File: src/simu5g/stack/rrc/HandoverController.ned