5G-LENA nr-v4.0
The 5G/NR module for the ns-3 simulator
Loading...
Searching...
No Matches

Interface between the physical layer and the channel. More...

#include "nr-spectrum-phy.h"

+ Inheritance diagram for ns3::NrSpectrumPhy:
+ Collaboration diagram for ns3::NrSpectrumPhy:

Public Types

typedef void(* DataSnrTracedCallback) (const SfnSf &sfnSf, const uint16_t cellId, const uint8_t bwpId, const uint64_t imsi, const double snr)
 
typedef Callback< void, const DlHarqInfo & > NrPhyDlHarqFeedbackCallback
 
typedef std::function< void(const std::list< Ptr< NrControlMessage > > &, uint8_t)> NrPhyRxCtrlEndOkCallback
 This callback method type is used to notify that CTRL is received.
 
typedef Callback< void, const Ptr< Packet > & > NrPhyRxDataEndOkCallback
 This callback method type is used to notify that DATA is received.
 
typedef Callback< void, uint16_t, const Ptr< SpectrumValue > & > NrPhyRxPssCallback
 
typedef Callback< void, const UlHarqInfo & > NrPhyUlHarqFeedbackCallback
 
typedef void(* RxDataTracedCallback) (const SfnSf &sfnSf, Ptr< const SpectrumValue > v, const Time &t, uint16_t bwpId, uint16_t cellId)
 TracedCallback signature for RB statistics.
 
typedef Callback< void, uint16_t, uint16_t, double > SrsSinrReportCallback
 
typedef Callback< void, uint16_t, uint16_t, double > SrsSnrReportCallback
 
enum  State {
  IDLE = 0 , TX , RX_DATA , RX_DL_CTRL ,
  RX_UL_CTRL , RX_UL_SRS , CCA_BUSY
}
 Enum that defines possible states of the spectrum phy. More...
 

Public Member Functions

 NrSpectrumPhy ()
 NrSpectrumPhy constructor.
 
 ~NrSpectrumPhy () override
 ~NrSpectrumPhy
 
void AddBeamManager (Ptr< BeamManager > b)
 Adds the beam manager of corresponds spectrum phy of antenna panel, and that beam manager is responsible of the antenna array of this spectrum phy.
 
void AddCsiImMimoChunkProcessor (const Ptr< NrMimoChunkProcessor > &p)
 Connect CSI-IM chunk processor with the corresponding CSI-IM interference object.
 
void AddCsiRsMimoChunkProcessor (const Ptr< NrMimoChunkProcessor > &p)
 Connect CSI-RS chunk processor with the corresponding CSI-RS interference object.
 
void AddDataMimoChunkProcessor (const Ptr< NrMimoChunkProcessor > &p)
 Connect DATA chunk processor with the corresponding DATA interference object.
 
void AddDataPowerChunkProcessor (const Ptr< NrChunkProcessor > &p)
 Adds the chunk processor that will process the power for the data.
 
void AddDataSinrChunkProcessor (const Ptr< NrChunkProcessor > &p)
 Adds the chunk processor that will process the interference.
 
void AddDlCtrlSinrChunkProcessor (const Ptr< NrChunkProcessor > &p)
 Adds the chunk processor that will process the received power.
 
void AddExpectedDlCtrlEnd (Time ctrlEndTime)
 Keeps track of when DL CTRL should finish. Needed for CSI-RS and CSI-IM implementation to be able to schedule CSI-IM just at the beginning of the PDSCH.
 
void AddExpectedSrsRnti (uint16_t rnti)
 
void AddExpectedTb (ExpectedTb expectedTb)
 Instruct the Spectrum Model of a incoming transmission.
 
void AddPanel (const Ptr< Object > antenna)
 Add the antenna panel to this NrSpectrumPhy, currently in NR module it is expected to be of type UniformPlannarArray.
 
void AddRsPowerChunkProcessor (const Ptr< NrChunkProcessor > &p)
 Adds the chunk processor that will process the received power.
 
void AddSrsSinrChunkProcessor (const Ptr< NrChunkProcessor > &p)
 
void AddSrsSinrReportCallback (SrsSinrReportCallback callback)
 It adds callback to the list of callbacks that will be notified once SRS is being received.
 
void AddSrsSnrReportCallback (SrsSnrReportCallback callback)
 It adds callback to the list of callbacks that will be notified once SRS is being received.
 
int64_t AssignStreams (int64_t stream)
 
double CircularBearingAnglesForPanels (double firstPanelBearingAngleRad, uint8_t panelIndex) const
 initialize the bearing angles of panels in to cover 360 Degree
 
void ConfigPanelsBearingAngles ()
 Either initialize the bearing angles of panels in install step or update all bearing angles based on proper method, if no parameter pass it would get first antenna bearing angle and set other panels based on proper approach.
 
void ConfigPanelsBearingAngles (double firstPanelBearingAngleRad)
 Either initialize the bearing angles of panels in install step or update all bearing angles based on proper method, if no parameter pass it would get first antenna bearing angle and set other panels based on proper approach.
 
void EnableDlCtrlPathlossTrace ()
 
void EnableDlDataPathlossTrace ()
 
Ptr< Object > GetAntenna () const override
 Inherited from SpectrumPhy Note: Implements GetRxAntenna function from SpectrumPhy.
 
Ptr< BeamManagerGetBeamManager ()
 
uint16_t GetBwpId () const
 
double GetCcaMode1Threshold () const
 
uint16_t GetCellId () const
 
Ptr< NetDevice > GetDevice () const override
 
Ptr< NrErrorModelGetErrorModel () const
 
Time GetFirstRxDuration () const
 
Time GetFirstRxStart () const
 
Ptr< MobilityModel > GetMobility () const override
 
Ptr< NrInterferenceGetNrInterference () const
 
Ptr< NrPhyGetNrPhy () const
 
uint8_t GetNumPanels () const
 Get the number of panels in this NrSpectrumPhy.
 
Ptr< Object > GetPanelByIndex (const uint8_t index) const
 Interface enable to access all panels using proper index.
 
Ptr< NrPhyGetPhy () const
 
uint16_t GetRnti () const
 
Ptr< const SpectrumModel > GetRxSpectrumModel () const override
 
Ptr< SpectrumChannel > GetSpectrumChannel () const
 Returns spectrum channel object to which is attached this spectrum phy instance.
 
Ptr< const SpectrumValue > GetTxPowerSpectralDensity ()
 
void InstallPhy (const Ptr< NrPhy > &phyModel)
 Set NrPhy of this spectrum phy in order to be able to obtain information such as cellId, bwpId, etc.
 
bool IsGnb () const
 
bool IsTransmitting ()
 Return true if the current Phy State is TX.
 
void ReportDlCtrlSinr (const SpectrumValue &sinr)
 Called when DlCtrlSinr is fired.
 
void ReportWbDlDataSnrPerceived (const double dlDataSnr)
 Report wideband perceived downlink data SNR.
 
void SetActivePanel (const uint8_t panelIndex)
 Set the active antenna panel to this NrSpectrumPhy,.
 
void SetAntenna (Ptr< Object > antenna)
 Sets the antenna of this NrSpectrumPhy instance, currently in NR module it is expected to be of type UniformPlannarArray.
 
void SetBeamManager (Ptr< BeamManager > b)
 
void SetCcaMode1Threshold (double thresholdDBm)
 Set clear channel assessment (CCA) threshold.
 
void SetChannel (Ptr< SpectrumChannel > c) override
 
void SetDataErrorModelEnabled (bool dataErrorModelEnabled)
 Enables or disabled data error model.
 
void SetDevice (Ptr< NetDevice > d) override
 
void SetErrorModel (Ptr< NrErrorModel > em)
 
void SetErrorModelType (TypeId errorModelType)
 Sets the error model type.
 
void SetFirstRxDuration (Time duration)
 
void SetFirstRxStart (Time startTime)
 
void SetIsGnb (bool isGnb)
 Set whether this spectrum PHY belongs to Gnb or UE TODO NrHelper should be declared as friend and this function should be private.
 
void SetMobility (Ptr< MobilityModel > m) override
 
virtual void SetNoisePowerSpectralDensity (const Ptr< const SpectrumValue > &noisePsd)
 Sets noise power spectral density to be used by this device.
 
void SetNumPanels (const uint8_t numPanel)
 Set the number of panels in this NrSpectrumPhy.
 
void SetPhyDlHarqFeedbackCallback (const NrPhyDlHarqFeedbackCallback &c)
 Sets the callback to be called when DL HARQ feedback is generated.
 
void SetPhyRxCtrlEndOkCallback (const NrPhyRxCtrlEndOkCallback &c)
 Sets the callback to be called when CTRL is received successfully.
 
void SetPhyRxDataEndOkCallback (const NrPhyRxDataEndOkCallback &c)
 Sets the callback to be called when DATA is received successfully.
 
void SetPhyRxPssCallback (const NrPhyRxPssCallback &c)
 
void SetPhyUlHarqFeedbackCallback (const NrPhyUlHarqFeedbackCallback &c)
 Sets the callback to be called when UL HARQ feedback is generated.
 
void SetRnti (uint16_t rnti)
 
void SetTxPowerSpectralDensity (const Ptr< SpectrumValue > &txPsd)
 Sets transmit power spectral density.
 
void SetUnlicensedMode (bool unlicensedMode)
 Sets whether to perform in unlicensed mode in which the channel monitoring is enabled.
 
void StartRx (Ptr< SpectrumSignalParameters > params) override
 Inherited from SpectrumPhy. When this function is called this spectrum phy starts receiving a signal from its spectrum channel.
 
void StartTxCsiRs (uint16_t rnti, uint16_t beamId)
 
void StartTxDataFrames (const Ptr< PacketBurst > &pb, const std::list< Ptr< NrControlMessage > > &ctrlMsgList, const std::shared_ptr< DciInfoElementTdma > dci, const Time &duration)
 Starts transmission of data frames on connected spectrum channel object.
 
void StartTxDlControlFrames (const std::list< Ptr< NrControlMessage > > &ctrlMsgList, const Time &duration)
 Starts transmission of DL CTRL.
 
void StartTxUlControlFrames (const std::list< Ptr< NrControlMessage > > &ctrlMsgList, const Time &duration)
 Start transmission of UL CTRL.
 
void UpdateMimoSinrPerceived (const std::vector< MimoSinrChunk > &sinr)
 Store the SINR chunks for all received signals at end of interference calculations.
 
void UpdateSinrPerceived (const SpectrumValue &sinr)
 SpectrumPhy that will be called when the SINR for the received DATA is being calculated by the interference object over DATA chunk processor.
 
void UpdateSrsSinrPerceived (const SpectrumValue &srsSinr)
 SpectrumPhy that will be called when the SINR for the received SRS at gNB is being calculated by the interference object over SRS chunk processor.
 
void UpdateSrsSnrPerceived (const double srsSnr)
 SpectrumPhy that will be called when the SNR for the received SRS at gNB is being calculated.
 

Static Public Member Functions

static TypeId GetTypeId ()
 Get the object TypeId.
 

Protected Member Functions

void ChangeState (State newState, Time duration)
 Update the state of the spectrum phy. The states are: IDLE, TX, RX_DATA, RX_DL_CTRL, RX_UL_CTRL, CCA_BUSY.
 
void DoDispose () override
 DoDispose method inherited from Object.
 
void EndTx ()
 Function that is called when the transmission has ended. It is used to update spectrum phy state.
 
Ptr< SpectrumChannel > GetChannel () const
 Get pointer to SpectrumChannel.
 
Ptr< UniformRandomVariable > GetErrorModelRv () const
 Get pointer to error model random variable.
 
State GetState () const
 Get current state.
 
void IncrementActiveTransmissions ()
 Increase the counter of active transmissions.
 
void NotifyRxDataTrace (const SfnSf &sfn, Ptr< const SpectrumValue > spectrumValue, const Time &duration, uint16_t bwpId, uint16_t cellId) const
 call RxDataTrace from subclass
 
void NotifyTxCtrlTrace (Time duration) const
 call TxCtrlTrace from subclass
 
void NotifyTxDataTrace (Time duration) const
 call TxDataTrace from subclass
 

Detailed Description

Interface between the physical layer and the channel.

General information

NrSpectrumPhy models some of the basic physical layer functionalities such as transmitting CTRL or DATA, receiving the signals, decoding them, and distinguishing whether the signal is useful (CTRL, DATA), i.e. sent to this NR device NrPhy instance, or it should be considered as interference. It is also responsible for obtaining measurements, and for HARQ feedback generation by leveraging HARQ module.

This class implements the interface between the NrPhy and the spectrum channel, and provides to NrPhy aforementioned functionalities. Each NR device's NrPhy has its own NrSpectrumPhy that is in charge of providing these basic phy layer functionalities. In order to be able to receive signals from the channel, each NrSpectrumPhy should be registered to listen events from its channel. To achieve that, during the configuration of NR device's NrPhy at some point should be called AddRx function of the spectrum channel to register the NrSpectrumPhy instance as a receiver on that channel.

This class also has the interface with NrInterference class to pass the necessary information for the interference calculation and to obtain the interference calculation results.

Also it has interface with HARQ module, to which it passes necessary information for the HARQ feedback generation, which is then forwarded to NrPhy.

Configuration

The user can configure the class using the method NrHelper::SetGnbSpectrumAttribute(), or NrHelper::SetUeSpectrumAttribute(), depending on the type of user you want to configure, or by directly calling SetAttribute on the pointer. The list of attributes is reported below, in the Attributes section.

Config Paths

ns3::NrSpectrumPhy is accessible through the following paths with Config::Set and Config::Connect:

Attributes

  • DataErrorModelEnabled: Activate/Deactivate the error model of data (TBs of PDSCH and PUSCH) [by default is active].
    • Set with class: ns3::BooleanValue
    • Underlying type: bool
    • Initial value: true
    • Flags: construct write
  • ErrorModelType: Default type of the Error Model to apply to TBs of PDSCH and PUSCH
    • Set with class: ns3::TypeIdValue
    • Underlying type: TypeId
    • Initial value: ns3::NrLteMiErrorModel
    • Flags: construct write
  • UnlicensedMode: Activate/Deactivate unlicensed mode in which energy detection is performed and PHY state machine has an additional state CCA_BUSY.
    • Set with class: ns3::BooleanValue
    • Underlying type: bool
    • Initial value: false
    • Flags: construct write
  • CcaMode1Threshold: The energy of a received signal should be higher than this threshold (dbm) to allow the PHY layer to declare CCA BUSY state.
    • Set with class: ns3::DoubleValue
    • Underlying type: double -1.79769e+308:1.79769e+308
    • Initial value: -62
    • Flags: construct write read
  • NumAntennaPanel: number of panels to install on UE/ gNB device
    • Set with class: ns3::UintegerValue
    • Underlying type: uint8_t 0:255
    • Initial value: 1
    • Flags: construct write read

TraceSources

  • RxPacketTraceGnb: The no. of packets received and transmitted by the Base Station
    Callback signature: ns3::RxPacketTraceParams::TracedCallback
  • TxPacketTraceGnb: Traces when the packet is being transmitted by the Base Station
    Callback signature: ns3::GnbPhyPacketCountParameter::TracedCallback
  • RxPacketTraceUe: The no. of packets received and transmitted by the User Device
    Callback signature: ns3::RxPacketTraceParams::TracedCallback
  • ChannelOccupied: This traced callback is triggered every time that the channel is occupied
    Callback signature: ns3::Time::TracedCallback
  • TxDataTrace: Indicates when the channel is being occupied by a data transmission
    Callback signature: ns3::Time::TracedCallback
  • TxCtrlTrace: Indicates when the channel is being occupied by a ctrl transmission
    Callback signature: ns3::Time::TracedCallback
  • RxDataTrace: Indicates the reception of data from this cell (reporting the rxPsd without interferences)
    Callback signature: ns3::RxDataTracedCallback::TracedCallback
  • DlDataSnrTrace: Report the SNR computed for each TB in DL
    Callback signature: ns3::NrSpectrumPhy::DataSnrTracedCallback
  • DlCtrlPathloss: Pathloss calculated for CTRL
    Callback signature: ns3::NrSpectrumPhy::DlPathlossTrace
  • DlDataPathloss: Pathloss calculated for CTRL
    Callback signature: ns3::NrSpectrumPhy::DlPathlossTrace

Size of this type is 976 bytes (on a 64-bit architecture).

Definition at line 71 of file nr-spectrum-phy.h.

Member Typedef Documentation

◆ DataSnrTracedCallback

typedef void(* ns3::NrSpectrumPhy::DataSnrTracedCallback) (const SfnSf &sfnSf, const uint16_t cellId, const uint8_t bwpId, const uint64_t imsi, const double snr)
Parameters
[in]sfnSfSfnSf
[in]cellId
[in]bwpId
[in]imsi
[in]snr

Definition at line 545 of file nr-spectrum-phy.h.

◆ NrPhyDlHarqFeedbackCallback

This callback method type is used by the NrSpectrumPhy to notify the PHY about the status of a DL HARQ feedback

Definition at line 125 of file nr-spectrum-phy.h.

◆ NrPhyRxCtrlEndOkCallback

typedef std::function<void(const std::list<Ptr<NrControlMessage>>&, uint8_t)> ns3::NrSpectrumPhy::NrPhyRxCtrlEndOkCallback

This callback method type is used to notify that CTRL is received.

Definition at line 113 of file nr-spectrum-phy.h.

◆ NrPhyRxDataEndOkCallback

typedef Callback<void, const Ptr<Packet>&> ns3::NrSpectrumPhy::NrPhyRxDataEndOkCallback

This callback method type is used to notify that DATA is received.

Definition at line 108 of file nr-spectrum-phy.h.

◆ NrPhyRxPssCallback

typedef Callback<void, uint16_t, const Ptr<SpectrumValue>&> ns3::NrSpectrumPhy::NrPhyRxPssCallback

This method is used by the NrSpectrumPhy to notify the UE PHY that a PSS has been received

Definition at line 119 of file nr-spectrum-phy.h.

◆ NrPhyUlHarqFeedbackCallback

This callback method type is used by the NrSpectrumPhy to notify the PHY about the status of a UL HARQ feedback

Definition at line 130 of file nr-spectrum-phy.h.

◆ RxDataTracedCallback

typedef void(* ns3::NrSpectrumPhy::RxDataTracedCallback) (const SfnSf &sfnSf, Ptr< const SpectrumValue > v, const Time &t, uint16_t bwpId, uint16_t cellId)

TracedCallback signature for RB statistics.

Parameters
[in]sfnSfSfnSf
[in]vrxPsd values
[in]tduration of the reception
[in]bwpIdBWP ID
[in]cellIdCell ID

Definition at line 492 of file nr-spectrum-phy.h.

◆ SrsSinrReportCallback

typedef Callback<void, uint16_t, uint16_t, double> ns3::NrSpectrumPhy::SrsSinrReportCallback

Definition at line 509 of file nr-spectrum-phy.h.

◆ SrsSnrReportCallback

typedef Callback<void, uint16_t, uint16_t, double> ns3::NrSpectrumPhy::SrsSnrReportCallback

Definition at line 510 of file nr-spectrum-phy.h.

Member Enumeration Documentation

◆ State

Enum that defines possible states of the spectrum phy.

Enumerator
IDLE 

IDLE state (no action in progress)

TX 

Transmitting state (data or ctrl)

RX_DATA 

Receiving data.

RX_DL_CTRL 

Receiving DL CTRL.

RX_UL_CTRL 

Receiving UL CTRL.

RX_UL_SRS 

Receiving SRS.

CCA_BUSY 

BUSY state (channel occupied by another entity)

Definition at line 93 of file nr-spectrum-phy.h.

Constructor & Destructor Documentation

◆ NrSpectrumPhy()

ns3::NrSpectrumPhy::NrSpectrumPhy ( )

NrSpectrumPhy constructor.

Definition at line 61 of file nr-spectrum-phy.cc.

◆ ~NrSpectrumPhy()

ns3::NrSpectrumPhy::~NrSpectrumPhy ( )
override

~NrSpectrumPhy

Definition at line 72 of file nr-spectrum-phy.cc.

Member Function Documentation

◆ AddBeamManager()

void ns3::NrSpectrumPhy::AddBeamManager ( Ptr< BeamManager b)

Adds the beam manager of corresponds spectrum phy of antenna panel, and that beam manager is responsible of the antenna array of this spectrum phy.

Parameters
bBeam manager

Definition at line 430 of file nr-spectrum-phy.cc.

◆ AddCsiImMimoChunkProcessor()

void ns3::NrSpectrumPhy::AddCsiImMimoChunkProcessor ( const Ptr< NrMimoChunkProcessor > &  p)

Connect CSI-IM chunk processor with the corresponding CSI-IM interference object.

Parameters
pthe CSI-IM chunk processor

Definition at line 2027 of file nr-spectrum-phy.cc.

◆ AddCsiRsMimoChunkProcessor()

void ns3::NrSpectrumPhy::AddCsiRsMimoChunkProcessor ( const Ptr< NrMimoChunkProcessor > &  p)

Connect CSI-RS chunk processor with the corresponding CSI-RS interference object.

Parameters
pthe CSI-RS chunk processor

Definition at line 2020 of file nr-spectrum-phy.cc.

◆ AddDataMimoChunkProcessor()

void ns3::NrSpectrumPhy::AddDataMimoChunkProcessor ( const Ptr< NrMimoChunkProcessor > &  p)

Connect DATA chunk processor with the corresponding DATA interference object.

Parameters
pthe DATA chunk processor

Definition at line 2013 of file nr-spectrum-phy.cc.

◆ AddDataPowerChunkProcessor()

void ns3::NrSpectrumPhy::AddDataPowerChunkProcessor ( const Ptr< NrChunkProcessor > &  p)

Adds the chunk processor that will process the power for the data.

Parameters
pthe chunk processor

Definition at line 1038 of file nr-spectrum-phy.cc.

◆ AddDataSinrChunkProcessor()

void ns3::NrSpectrumPhy::AddDataSinrChunkProcessor ( const Ptr< NrChunkProcessor > &  p)

Adds the chunk processor that will process the interference.

Parameters
pthe chunk processor

Definition at line 1045 of file nr-spectrum-phy.cc.

◆ AddDlCtrlSinrChunkProcessor()

void ns3::NrSpectrumPhy::AddDlCtrlSinrChunkProcessor ( const Ptr< NrChunkProcessor > &  p)

Adds the chunk processor that will process the received power.

Parameters
pthe chunk processor

Definition at line 1106 of file nr-spectrum-phy.cc.

◆ AddExpectedDlCtrlEnd()

void ns3::NrSpectrumPhy::AddExpectedDlCtrlEnd ( Time  ctrlEndTime)

Keeps track of when DL CTRL should finish. Needed for CSI-RS and CSI-IM implementation to be able to schedule CSI-IM just at the beginning of the PDSCH.

Parameters
ctrlEndTimeExpected time when DL CTRL will end

Definition at line 2108 of file nr-spectrum-phy.cc.

◆ AddExpectedSrsRnti()

void ns3::NrSpectrumPhy::AddExpectedSrsRnti ( uint16_t  rnti)

Definition at line 1192 of file nr-spectrum-phy.cc.

◆ AddExpectedTb()

void ns3::NrSpectrumPhy::AddExpectedTb ( ExpectedTb  expectedTb)

Instruct the Spectrum Model of a incoming transmission.

Parameters
expectedTbExpected transport block

Definition at line 1165 of file nr-spectrum-phy.cc.

References IsGnb(), ns3::ExpectedTb::m_mcs, ns3::ExpectedTb::m_numSym, ns3::ExpectedTb::m_rnti, ns3::ExpectedTb::m_symStart, and ns3::ExpectedTb::m_tbSize.

+ Here is the call graph for this function:

◆ AddPanel()

void ns3::NrSpectrumPhy::AddPanel ( const Ptr< Object >  antenna)

Add the antenna panel to this NrSpectrumPhy, currently in NR module it is expected to be of type UniformPlannarArray.

Parameters
antennathe antenna panel to be add to this NrSpectrumPhy instance

Definition at line 1140 of file nr-spectrum-phy.cc.

◆ AddRsPowerChunkProcessor()

void ns3::NrSpectrumPhy::AddRsPowerChunkProcessor ( const Ptr< NrChunkProcessor > &  p)

Adds the chunk processor that will process the received power.

Parameters
pthe chunk processor

Definition at line 1099 of file nr-spectrum-phy.cc.

◆ AddSrsSinrChunkProcessor()

void ns3::NrSpectrumPhy::AddSrsSinrChunkProcessor ( const Ptr< NrChunkProcessor > &  p)

Definition at line 1052 of file nr-spectrum-phy.cc.

◆ AddSrsSinrReportCallback()

void ns3::NrSpectrumPhy::AddSrsSinrReportCallback ( SrsSinrReportCallback  callback)

It adds callback to the list of callbacks that will be notified once SRS is being received.

Parameters
callbackcallback to be added to the list of callbacks

Definition at line 1198 of file nr-spectrum-phy.cc.

◆ AddSrsSnrReportCallback()

void ns3::NrSpectrumPhy::AddSrsSnrReportCallback ( SrsSnrReportCallback  callback)

It adds callback to the list of callbacks that will be notified once SRS is being received.

Parameters
callbackcallback to be added to the list of callbacks

Definition at line 1204 of file nr-spectrum-phy.cc.

◆ AssignStreams()

int64_t ns3::NrSpectrumPhy::AssignStreams ( int64_t  stream)

Assign a fixed random variable stream number to the random variables used by this model. Return the number of streams (possibly zero) that have been assigned.

Parameters
streamfirst stream index to use
Returns
the number of stream indices assigned by this model

Definition at line 1999 of file nr-spectrum-phy.cc.

◆ ChangeState()

void ns3::NrSpectrumPhy::ChangeState ( State  newState,
Time  duration 
)
protected

Update the state of the spectrum phy. The states are: IDLE, TX, RX_DATA, RX_DL_CTRL, RX_UL_CTRL, CCA_BUSY.

Parameters
newStatethe new state
durationhow much time the spectrum phy will be in the new state

Definition at line 1487 of file nr-spectrum-phy.cc.

References CCA_BUSY, RX_DATA, RX_DL_CTRL, RX_UL_CTRL, and TX.

Referenced by EndTx(), StartTxDataFrames(), StartTxDlControlFrames(), and StartTxUlControlFrames().

+ Here is the caller graph for this function:

◆ CircularBearingAnglesForPanels()

double ns3::NrSpectrumPhy::CircularBearingAnglesForPanels ( double  firstPanelBearingAngleRad,
uint8_t  panelIndex 
) const

initialize the bearing angles of panels in to cover 360 Degree

Parameters
firstPanelBearingAngleRadBearing angle of first panel
panelIndexIndex of corresponding panel
Returns
Bearing angle for corresponding set for panel

Definition at line 474 of file nr-spectrum-phy.cc.

Referenced by ConfigPanelsBearingAngles(), and ConfigPanelsBearingAngles().

+ Here is the caller graph for this function:

◆ ConfigPanelsBearingAngles() [1/2]

void ns3::NrSpectrumPhy::ConfigPanelsBearingAngles ( )

Either initialize the bearing angles of panels in install step or update all bearing angles based on proper method, if no parameter pass it would get first antenna bearing angle and set other panels based on proper approach.

Definition at line 445 of file nr-spectrum-phy.cc.

References CircularBearingAnglesForPanels().

+ Here is the call graph for this function:

◆ ConfigPanelsBearingAngles() [2/2]

void ns3::NrSpectrumPhy::ConfigPanelsBearingAngles ( double  firstPanelBearingAngleRad)

Either initialize the bearing angles of panels in install step or update all bearing angles based on proper method, if no parameter pass it would get first antenna bearing angle and set other panels based on proper approach.

Parameters
firstPanelBearingAngleRadBearing angle of first panel

Definition at line 461 of file nr-spectrum-phy.cc.

References CircularBearingAnglesForPanels().

+ Here is the call graph for this function:

◆ DoDispose()

void ns3::NrSpectrumPhy::DoDispose ( )
overrideprotected

DoDispose method inherited from Object.

Definition at line 77 of file nr-spectrum-phy.cc.

◆ EnableDlCtrlPathlossTrace()

void ns3::NrSpectrumPhy::EnableDlCtrlPathlossTrace ( )

Definition at line 502 of file nr-spectrum-phy.cc.

◆ EnableDlDataPathlossTrace()

void ns3::NrSpectrumPhy::EnableDlDataPathlossTrace ( )

Definition at line 495 of file nr-spectrum-phy.cc.

◆ EndTx()

void ns3::NrSpectrumPhy::EndTx ( )
protected

Function that is called when the transmission has ended. It is used to update spectrum phy state.

Definition at line 1500 of file nr-spectrum-phy.cc.

References ChangeState(), IDLE, and TX.

Referenced by StartTxDataFrames(), StartTxDlControlFrames(), and StartTxUlControlFrames().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ GetAntenna()

Ptr< Object > ns3::NrSpectrumPhy::GetAntenna ( ) const
override

Inherited from SpectrumPhy Note: Implements GetRxAntenna function from SpectrumPhy.

Returns
Active antenna panel of this NrSpectrumPhy

Definition at line 391 of file nr-spectrum-phy.cc.

Referenced by ns3::LenaV2Utils::SetLenaV2SimulatorParameters().

+ Here is the caller graph for this function:

◆ GetBeamManager()

Ptr< BeamManager > ns3::NrSpectrumPhy::GetBeamManager ( )

Definition at line 437 of file nr-spectrum-phy.cc.

◆ GetBwpId()

uint16_t ns3::NrSpectrumPhy::GetBwpId ( ) const
Returns
the bwp id

Definition at line 1469 of file nr-spectrum-phy.cc.

Referenced by StartRx().

+ Here is the caller graph for this function:

◆ GetCcaMode1Threshold()

double ns3::NrSpectrumPhy::GetCcaMode1Threshold ( ) const

Returns clear channel assessment (CCA) threshold

Returns
CCA threshold in dBms

Definition at line 531 of file nr-spectrum-phy.cc.

Referenced by GetTypeId().

+ Here is the caller graph for this function:

◆ GetCellId()

uint16_t ns3::NrSpectrumPhy::GetCellId ( ) const
Returns
the cell id

Definition at line 1463 of file nr-spectrum-phy.cc.

Referenced by StartRx(), StartTxCsiRs(), StartTxDataFrames(), StartTxDlControlFrames(), StartTxUlControlFrames(), UpdateSrsSinrPerceived(), and UpdateSrsSnrPerceived().

+ Here is the caller graph for this function:

◆ GetChannel()

Ptr< SpectrumChannel > ns3::NrSpectrumPhy::GetChannel ( ) const
protected

Get pointer to SpectrumChannel.

Returns
Pointer to spectrum channel

Definition at line 379 of file nr-spectrum-phy.cc.

◆ GetDevice()

Ptr< NetDevice > ns3::NrSpectrumPhy::GetDevice ( ) const
override

Definition at line 353 of file nr-spectrum-phy.cc.

◆ GetErrorModel()

Ptr< NrErrorModel > ns3::NrSpectrumPhy::GetErrorModel ( ) const

Definition at line 489 of file nr-spectrum-phy.cc.

◆ GetErrorModelRv()

Ptr< UniformRandomVariable > ns3::NrSpectrumPhy::GetErrorModelRv ( ) const
protected

Get pointer to error model random variable.

Returns
Pointer to error model random variable

Definition at line 220 of file nr-spectrum-phy.cc.

◆ GetFirstRxDuration()

Time ns3::NrSpectrumPhy::GetFirstRxDuration ( ) const

Definition at line 244 of file nr-spectrum-phy.cc.

◆ GetFirstRxStart()

Time ns3::NrSpectrumPhy::GetFirstRxStart ( ) const

Definition at line 232 of file nr-spectrum-phy.cc.

◆ GetMobility()

Ptr< MobilityModel > ns3::NrSpectrumPhy::GetMobility ( ) const
override

Definition at line 366 of file nr-spectrum-phy.cc.

◆ GetNrInterference()

Ptr< NrInterference > ns3::NrSpectrumPhy::GetNrInterference ( ) const
Returns
NrInterference instance of this spectrum phy

Definition at line 1158 of file nr-spectrum-phy.cc.

◆ GetNrPhy()

Ptr< NrPhy > ns3::NrSpectrumPhy::GetNrPhy ( ) const

Definition at line 226 of file nr-spectrum-phy.cc.

◆ GetNumPanels()

uint8_t ns3::NrSpectrumPhy::GetNumPanels ( ) const

Get the number of panels in this NrSpectrumPhy.

Returns
The number Antenna panel of this NrSpectrumPhy

Definition at line 414 of file nr-spectrum-phy.cc.

Referenced by GetTypeId().

+ Here is the caller graph for this function:

◆ GetPanelByIndex()

Ptr< Object > ns3::NrSpectrumPhy::GetPanelByIndex ( const uint8_t  index) const

Interface enable to access all panels using proper index.

Returns
index's Antenna panel of this NrSpectrumPhy

Definition at line 400 of file nr-spectrum-phy.cc.

◆ GetPhy()

Ptr< NrPhy > ns3::NrSpectrumPhy::GetPhy ( ) const

Definition at line 1127 of file nr-spectrum-phy.cc.

◆ GetRnti()

uint16_t ns3::NrSpectrumPhy::GetRnti ( ) const

Retrieve RNTI of this spectrum phy

Returns
RNTI

Definition at line 517 of file nr-spectrum-phy.cc.

◆ GetRxSpectrumModel()

Ptr< const SpectrumModel > ns3::NrSpectrumPhy::GetRxSpectrumModel ( ) const
override

Definition at line 385 of file nr-spectrum-phy.cc.

◆ GetSpectrumChannel()

Ptr< SpectrumChannel > ns3::NrSpectrumPhy::GetSpectrumChannel ( ) const

Returns spectrum channel object to which is attached this spectrum phy instance.

Definition at line 1152 of file nr-spectrum-phy.cc.

Referenced by StartRx().

+ Here is the caller graph for this function:

◆ GetState()

NrSpectrumPhy::State ns3::NrSpectrumPhy::GetState ( ) const
protected

Get current state.

Returns
current state

Definition at line 214 of file nr-spectrum-phy.cc.

◆ GetTxPowerSpectralDensity()

Ptr< const SpectrumValue > ns3::NrSpectrumPhy::GetTxPowerSpectralDensity ( )

Definition at line 587 of file nr-spectrum-phy.cc.

◆ GetTypeId()

TypeId ns3::NrSpectrumPhy::GetTypeId ( )
static

Get the object TypeId.

Returns
the object TypeId

Definition at line 131 of file nr-spectrum-phy.cc.

References GetCcaMode1Threshold(), GetNumPanels(), ns3::NrLteMiErrorModel::GetTypeId(), SetCcaMode1Threshold(), SetDataErrorModelEnabled(), SetErrorModelType(), SetNumPanels(), and SetUnlicensedMode().

Referenced by ns3::NrHelper::NrHelper().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ IncrementActiveTransmissions()

void ns3::NrSpectrumPhy::IncrementActiveTransmissions ( )
protected

Increase the counter of active transmissions.

Definition at line 256 of file nr-spectrum-phy.cc.

◆ InstallPhy()

void ns3::NrSpectrumPhy::InstallPhy ( const Ptr< NrPhy > &  phyModel)

Set NrPhy of this spectrum phy in order to be able to obtain information such as cellId, bwpId, etc.

Definition at line 1121 of file nr-spectrum-phy.cc.

◆ IsGnb()

bool ns3::NrSpectrumPhy::IsGnb ( ) const
Returns
true if this class is inside an enb/gnb

Definition at line 1475 of file nr-spectrum-phy.cc.

Referenced by AddExpectedTb().

+ Here is the caller graph for this function:

◆ IsTransmitting()

bool ns3::NrSpectrumPhy::IsTransmitting ( )

Return true if the current Phy State is TX.

Definition at line 881 of file nr-spectrum-phy.cc.

References TX.

◆ NotifyRxDataTrace()

void ns3::NrSpectrumPhy::NotifyRxDataTrace ( const SfnSf sfn,
Ptr< const SpectrumValue >  spectrumValue,
const Time &  duration,
uint16_t  bwpId,
uint16_t  cellId 
) const
protected

call RxDataTrace from subclass

Parameters
sfnSfSfnSf
spectrumValuerxPsd values
durationduration of the reception
bwpIdBWP ID
cellIdCell ID

Definition at line 262 of file nr-spectrum-phy.cc.

◆ NotifyTxCtrlTrace()

void ns3::NrSpectrumPhy::NotifyTxCtrlTrace ( Time  duration) const
protected

call TxCtrlTrace from subclass

Parameters
durationDuration that the transmitter will occupy channel with control transmission

Definition at line 272 of file nr-spectrum-phy.cc.

◆ NotifyTxDataTrace()

void ns3::NrSpectrumPhy::NotifyTxDataTrace ( Time  duration) const
protected

call TxDataTrace from subclass

Parameters
durationDuration that the transmitter will occupy channel with data transmission

Definition at line 278 of file nr-spectrum-phy.cc.

◆ ReportDlCtrlSinr()

void ns3::NrSpectrumPhy::ReportDlCtrlSinr ( const SpectrumValue &  sinr)

Called when DlCtrlSinr is fired.

Parameters
sinrthe sinr PSD

Definition at line 1062 of file nr-spectrum-phy.cc.

◆ ReportWbDlDataSnrPerceived()

void ns3::NrSpectrumPhy::ReportWbDlDataSnrPerceived ( const double  dlDataSnr)

Report wideband perceived downlink data SNR.

Parameters
dlDataSnrthe downlink data SNR

Definition at line 1985 of file nr-spectrum-phy.cc.

◆ SetActivePanel()

void ns3::NrSpectrumPhy::SetActivePanel ( const uint8_t  panelIndex)

Set the active antenna panel to this NrSpectrumPhy,.

Parameters
panelIndexIndex of active panel of this NrSpectrumPhy

Definition at line 1146 of file nr-spectrum-phy.cc.

◆ SetAntenna()

void ns3::NrSpectrumPhy::SetAntenna ( Ptr< Object >  antenna)

Sets the antenna of this NrSpectrumPhy instance, currently in NR module it is expected to be of type UniformPlannarArray.

Parameters
antennathe antenna to be set to this NrSpectrumPhy instance

Definition at line 1133 of file nr-spectrum-phy.cc.

◆ SetBeamManager()

void ns3::NrSpectrumPhy::SetBeamManager ( Ptr< BeamManager b)

Definition at line 422 of file nr-spectrum-phy.cc.

◆ SetCcaMode1Threshold()

void ns3::NrSpectrumPhy::SetCcaMode1Threshold ( double  thresholdDBm)

Set clear channel assessment (CCA) threshold.

Parameters
thresholdDBm- CCA threshold in dBms

Definition at line 523 of file nr-spectrum-phy.cc.

Referenced by GetTypeId().

+ Here is the caller graph for this function:

◆ SetChannel()

void ns3::NrSpectrumPhy::SetChannel ( Ptr< SpectrumChannel >  c)
override

Definition at line 372 of file nr-spectrum-phy.cc.

◆ SetDataErrorModelEnabled()

void ns3::NrSpectrumPhy::SetDataErrorModelEnabled ( bool  dataErrorModelEnabled)

Enables or disabled data error model.

Parameters
dataErrorModelEnabledboolean saying whether the data error model should be enabled

Definition at line 545 of file nr-spectrum-phy.cc.

Referenced by GetTypeId().

+ Here is the caller graph for this function:

◆ SetDevice()

void ns3::NrSpectrumPhy::SetDevice ( Ptr< NetDevice >  d)
override

Definition at line 322 of file nr-spectrum-phy.cc.

◆ SetErrorModel()

void ns3::NrSpectrumPhy::SetErrorModel ( Ptr< NrErrorModel em)

Definition at line 482 of file nr-spectrum-phy.cc.

◆ SetErrorModelType()

void ns3::NrSpectrumPhy::SetErrorModelType ( TypeId  errorModelType)

Sets the error model type.

Definition at line 552 of file nr-spectrum-phy.cc.

Referenced by GetTypeId().

+ Here is the caller graph for this function:

◆ SetFirstRxDuration()

void ns3::NrSpectrumPhy::SetFirstRxDuration ( Time  duration)

Definition at line 250 of file nr-spectrum-phy.cc.

◆ SetFirstRxStart()

void ns3::NrSpectrumPhy::SetFirstRxStart ( Time  startTime)

Definition at line 238 of file nr-spectrum-phy.cc.

◆ SetIsGnb()

void ns3::NrSpectrumPhy::SetIsGnb ( bool  isGnb)

Set whether this spectrum PHY belongs to Gnb or UE TODO NrHelper should be declared as friend and this function should be private.

Parameters
isGnbwhether the spectrum PHY belongs to Gnb or UE

Definition at line 1481 of file nr-spectrum-phy.cc.

◆ SetMobility()

void ns3::NrSpectrumPhy::SetMobility ( Ptr< MobilityModel >  m)
override

Definition at line 359 of file nr-spectrum-phy.cc.

◆ SetNoisePowerSpectralDensity()

void ns3::NrSpectrumPhy::SetNoisePowerSpectralDensity ( const Ptr< const SpectrumValue > &  noisePsd)
virtual

Sets noise power spectral density to be used by this device.

Parameters
noisePsdSpectrumValue object holding noise PSD

Definition at line 561 of file nr-spectrum-phy.cc.

◆ SetNumPanels()

void ns3::NrSpectrumPhy::SetNumPanels ( const uint8_t  numPanel)

Set the number of panels in this NrSpectrumPhy.

Definition at line 408 of file nr-spectrum-phy.cc.

Referenced by GetTypeId().

+ Here is the caller graph for this function:

◆ SetPhyDlHarqFeedbackCallback()

void ns3::NrSpectrumPhy::SetPhyDlHarqFeedbackCallback ( const NrPhyDlHarqFeedbackCallback c)

Sets the callback to be called when DL HARQ feedback is generated.

Definition at line 307 of file nr-spectrum-phy.cc.

◆ SetPhyRxCtrlEndOkCallback()

void ns3::NrSpectrumPhy::SetPhyRxCtrlEndOkCallback ( const NrPhyRxCtrlEndOkCallback c)

Sets the callback to be called when CTRL is received successfully.

Parameters
cthe callback function

Definition at line 293 of file nr-spectrum-phy.cc.

◆ SetPhyRxDataEndOkCallback()

void ns3::NrSpectrumPhy::SetPhyRxDataEndOkCallback ( const NrPhyRxDataEndOkCallback c)

Sets the callback to be called when DATA is received successfully.

Parameters
cthe callback function

Definition at line 286 of file nr-spectrum-phy.cc.

◆ SetPhyRxPssCallback()

void ns3::NrSpectrumPhy::SetPhyRxPssCallback ( const NrPhyRxPssCallback c)

set the callback for the reception of the PSS as part of the interconnections between the NrSpectrumPhy and the UE PHY

Parameters
cthe callback

Definition at line 300 of file nr-spectrum-phy.cc.

◆ SetPhyUlHarqFeedbackCallback()

void ns3::NrSpectrumPhy::SetPhyUlHarqFeedbackCallback ( const NrPhyUlHarqFeedbackCallback c)

Sets the callback to be called when UL HARQ feedback is generated.

Definition at line 314 of file nr-spectrum-phy.cc.

◆ SetRnti()

void ns3::NrSpectrumPhy::SetRnti ( uint16_t  rnti)

Set RNTI of this spectrum phy

Parameters
rntiRNTI to be set

Definition at line 509 of file nr-spectrum-phy.cc.

◆ SetTxPowerSpectralDensity()

void ns3::NrSpectrumPhy::SetTxPowerSpectralDensity ( const Ptr< SpectrumValue > &  txPsd)

Sets transmit power spectral density.

Parameters
txPsdtransmit power spectral density to be used for the upcoming transmissions by this spectrum phy

Definition at line 580 of file nr-spectrum-phy.cc.

◆ SetUnlicensedMode()

void ns3::NrSpectrumPhy::SetUnlicensedMode ( bool  unlicensedMode)

Sets whether to perform in unlicensed mode in which the channel monitoring is enabled.

Parameters
unlicensedModeif true the unlicensed mode is enabled

Definition at line 538 of file nr-spectrum-phy.cc.

Referenced by GetTypeId().

+ Here is the caller graph for this function:

◆ StartRx()

void ns3::NrSpectrumPhy::StartRx ( Ptr< SpectrumSignalParameters >  params)
override

Inherited from SpectrumPhy. When this function is called this spectrum phy starts receiving a signal from its spectrum channel.

Parameters
paramsSpectrumSignalParameters object that will be used to process this signal

Definition at line 634 of file nr-spectrum-phy.cc.

References GetBwpId(), GetCellId(), GetSpectrumChannel(), and IDLE.

+ Here is the call graph for this function:

◆ StartTxCsiRs()

void ns3::NrSpectrumPhy::StartTxCsiRs ( uint16_t  rnti,
uint16_t  beamId 
)

Start transmission of CSI-RS

Parameters
rntithe rnti of the user towards which is directed the CSI-RS
beamIdthe ID of the beam that is used to transmit this CSI-RS

Definition at line 939 of file nr-spectrum-phy.cc.

References CCA_BUSY, GetCellId(), IDLE, RX_DATA, RX_DL_CTRL, RX_UL_CTRL, RX_UL_SRS, and TX.

+ Here is the call graph for this function:

◆ StartTxDataFrames()

void ns3::NrSpectrumPhy::StartTxDataFrames ( const Ptr< PacketBurst > &  pb,
const std::list< Ptr< NrControlMessage > > &  ctrlMsgList,
const std::shared_ptr< DciInfoElementTdma dci,
const Time &  duration 
)

Starts transmission of data frames on connected spectrum channel object.

Parameters
pbpacket burst to be transmitted
ctrlMsgListcontrol message list
dcidownlink control information
durationthe duration of transmission

Definition at line 805 of file nr-spectrum-phy.cc.

References CCA_BUSY, ChangeState(), EndTx(), GetCellId(), IDLE, RX_DATA, RX_DL_CTRL, RX_UL_CTRL, RX_UL_SRS, and TX.

+ Here is the call graph for this function:

◆ StartTxDlControlFrames()

void ns3::NrSpectrumPhy::StartTxDlControlFrames ( const std::list< Ptr< NrControlMessage > > &  ctrlMsgList,
const Time &  duration 
)

Starts transmission of DL CTRL.

Parameters
durationthe duration of this transmission

Definition at line 887 of file nr-spectrum-phy.cc.

References CCA_BUSY, ChangeState(), EndTx(), GetCellId(), IDLE, RX_DATA, RX_DL_CTRL, RX_UL_CTRL, RX_UL_SRS, and TX.

+ Here is the call graph for this function:

◆ StartTxUlControlFrames()

void ns3::NrSpectrumPhy::StartTxUlControlFrames ( const std::list< Ptr< NrControlMessage > > &  ctrlMsgList,
const Time &  duration 
)

Start transmission of UL CTRL.

Parameters
ctrlMsgListthe list of control messages to be transmitted in UL
durationthe duration of the CTRL messages transmission

Definition at line 988 of file nr-spectrum-phy.cc.

References CCA_BUSY, ChangeState(), EndTx(), GetCellId(), IDLE, RX_DATA, RX_DL_CTRL, RX_UL_CTRL, RX_UL_SRS, and TX.

+ Here is the call graph for this function:

◆ UpdateMimoSinrPerceived()

void ns3::NrSpectrumPhy::UpdateMimoSinrPerceived ( const std::vector< MimoSinrChunk > &  sinr)

Store the SINR chunks for all received signals at end of interference calculations.

Parameters
sinrThe vector of all SINR values of receive signals. A new chunk is generated for each different receive signal (for example for each UL reception of a signal from a different UE) and at each time instant where the interference changes.

Definition at line 2007 of file nr-spectrum-phy.cc.

◆ UpdateSinrPerceived()

void ns3::NrSpectrumPhy::UpdateSinrPerceived ( const SpectrumValue &  sinr)

SpectrumPhy that will be called when the SINR for the received DATA is being calculated by the interference object over DATA chunk processor.

Parameters
sinrthe resulting SINR spectrum value

Definition at line 1113 of file nr-spectrum-phy.cc.

◆ UpdateSrsSinrPerceived()

void ns3::NrSpectrumPhy::UpdateSrsSinrPerceived ( const SpectrumValue &  srsSinr)

SpectrumPhy that will be called when the SINR for the received SRS at gNB is being calculated by the interference object over SRS chunk processor.

Parameters
srsSinrthe resulting SRS SINR spectrum value

Definition at line 1073 of file nr-spectrum-phy.cc.

References GetCellId().

+ Here is the call graph for this function:

◆ UpdateSrsSnrPerceived()

void ns3::NrSpectrumPhy::UpdateSrsSnrPerceived ( const double  srsSnr)

SpectrumPhy that will be called when the SNR for the received SRS at gNB is being calculated.

Parameters
srsSnrthe resulting SRS SNR

Definition at line 1087 of file nr-spectrum-phy.cc.

References GetCellId().

+ Here is the call graph for this function:

The documentation for this class was generated from the following files: