Package: simu5g.stack.d2d.phy
PhyUeD2D
simple moduleExtends the PHY functionalities at the User Equipment side to support device-to-device (D2D) communications. Specifically, it customizes the PhyUe functionalities to support the transmission and reception of frames to another UE directly, without going through the serving eNodeB. It also supports one-to-many D2D transmission to UEs belonging to a multicast group. It is assumed that one-to-one D2D communication is only possible when both endpoints are served by the same eNodeB. When a handover is triggered, this module is responsible for initiating a mode switch from direct (D2D) mode to infrastructure mode.
Inheritance diagram
The following diagram shows inheritance relationships for this type. Unresolved types are missing from the diagram.
Extends
| Name | Type | Description |
|---|---|---|
| PhyUe | simple module |
Extends the PhyBase module by providing specific PHY functions on the User Equipment (UE) side. It ensures that frames received on the air interface are sourced from the serving eNodeB (eNB) and provides functions to manage the handover procedure, including periodic measurement of channel conditions to determine when a handover should occur. If enabled, the selection of the serving eNB at initialization is done dynamically based on radio conditions. |
Parameters
| Name | Type | Default value | Description |
|---|---|---|---|
| isNr | bool | false |
True for the NR leg (set by NrNicUe/NrNicEnb on their PHY submodule) |
| macNodeId | int |
MacNodeId of the stack leg this PHY belongs to (set by the NIC) |
|
| ueTxPower | double | 26dBm | |
| eNodeBTxPower | double | 46dBm | |
| microTxPower | double | 30dBm | |
| txDirection | string | "OMNI" | |
| txAngle | double | 0deg | |
| binderModule | string | "binder" | |
| channelModelModule | string | "^.channelModel[0]" |
Set to "^.nrChannelModel[0]" on an NR leg, see NrNicUe |
| handoverControllerModule | string | "^.rrc.handoverController" | |
| d2dTxPower | double | 26dBm | |
| d2dMulticastCaptureEffect | bool | true | |
| d2dMulticastCaptureEffectFactor | string | "RSRP" |
"RSRP", otherwise distance-based |
| enableMulticastD2DRangeCheck | bool | false | |
| multicastD2DRange | double | 1000m |
Properties
| Name | Value | Description |
|---|---|---|
| display | i=block/wrxtx | |
| class | PhyUeD2D |
Gates
| Name | Direction | Size | Description |
|---|---|---|---|
| upperGateIn | input |
From upper layer |
|
| upperGateOut | output |
To upper layer |
|
| radioIn | input |
Gate to receive message via sendDirect |
Signals
| Name | Type | Unit | Description |
|---|---|---|---|
| distance | |||
| averageCqiDl | |||
| averageCqiUl | |||
| averageCqiD2D |
Statistics
| Name | Title | Source | Record | Unit | Interpolation Mode | Description |
|---|---|---|---|---|---|---|
| distance | distance between UE and serving base station | distance | mean, vector | meters | ||
| averageCqiDl | Average Cqi reported in DL | averageCqiDl | mean, count, vector | cqi | ||
| averageCqiUl | Average Cqi reported in UL | averageCqiUl | mean, count, vector | cqi | ||
| averageCqiD2D | Average Cqi reported in D2D | averageCqiD2D | mean, vector | cqi |
Source code
// // Extends the PHY functionalities at the User Equipment side to support device-to-device (D2D) // communications. Specifically, it customizes the ~PhyUe functionalities to support the transmission and reception // of frames to another UE directly, without going through the serving eNodeB. It also supports one-to-many // D2D transmission to UEs belonging to a multicast group. It is assumed that one-to-one D2D communication is only possible // when both endpoints are served by the same eNodeB. When a handover is triggered, this module is responsible // for initiating a mode switch from direct (D2D) mode to infrastructure mode. // simple PhyUeD2D extends PhyUe { parameters: @class("PhyUeD2D"); double d2dTxPower @unit(dBm) = default(26dBm); bool d2dMulticastCaptureEffect = default(true); string d2dMulticastCaptureEffectFactor = default("RSRP"); // "RSRP", otherwise distance-based bool enableMulticastD2DRangeCheck = default(false); double multicastD2DRange @unit(m) = default(1000m); //# D2D CQI statistic @signal[averageCqiD2D]; @statistic[averageCqiD2D](title="Average Cqi reported in D2D"; unit="cqi"; source="averageCqiD2D"; record=mean,vector); }File: src/simu5g/stack/d2d/phy/PhyUeD2D.ned