Package: simu5g.stack.rrc
HandoverController
simple moduleUE-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