5G-LENA nr-v3.3-120-gdac69c56
The 5G/NR module for the ns-3 simulator
Loading...
Searching...
No Matches
ns3::NrMacSchedulerUeInfoRR Class Reference

UE representation for a round-robin scheduler. More...

#include "nr-mac-scheduler-ue-info-rr.h"

+ Inheritance diagram for ns3::NrMacSchedulerUeInfoRR:
+ Collaboration diagram for ns3::NrMacSchedulerUeInfoRR:

Public Member Functions

 NrMacSchedulerUeInfoRR (uint16_t rnti, BeamId beamId, const GetRbPerRbgFn &fn)
 NrMacSchedulerUeInfoRR constructor.
 
- Public Member Functions inherited from ns3::NrMacSchedulerUeInfo
 NrMacSchedulerUeInfo ()=delete
 Default Constructor (deleted)
 
 NrMacSchedulerUeInfo (uint16_t rnti, BeamId beamId, const GetRbPerRbgFn &fn)
 Create a new UE representation.
 
virtual ~NrMacSchedulerUeInfo ()
 ~NrMacSchedulerUeInfo deconstructor
 
uint8_t GetDlMcs () const
 Get the downlink MCS, given by the wideband CQI, or the sub-band CQIs of the currently allocated RBGs, if available.
 
uint32_t GetTotalDlBuffer () const
 
void ReleaseLC (uint8_t lcid)
 
virtual void ResetDlMetric ()
 ResetDlMetric.
 
virtual void ResetDlSchedInfo ()
 Reset DL information.
 
virtual void ResetUlMetric ()
 ResetUlMetric.
 
virtual void ResetUlSchedInfo ()
 Reset UL information.
 
virtual void UpdateDlMetric ()
 Update DL metrics after resources have been assigned.
 
virtual void UpdateUlMetric ()
 Update UL metrics after resources have been assigned.
 

Static Public Member Functions

static bool CompareUeWeightsDl (const NrMacSchedulerNs3::UePtrAndBufferReq &lue, const NrMacSchedulerNs3::UePtrAndBufferReq &rue)
 comparison function object (i.e. an object that satisfies the requirements of Compare) which returns true if the first argument is less than (i.e. is ordered before) the second.
 
static bool CompareUeWeightsUl (const NrMacSchedulerNs3::UePtrAndBufferReq &lue, const NrMacSchedulerNs3::UePtrAndBufferReq &rue)
 comparison function object (i.e. an object that satisfies the requirements of Compare) which returns true if the first argument is less than (i.e. is ordered before) the second.
 
- Static Public Member Functions inherited from ns3::NrMacSchedulerUeInfo
static NrMacHarqVectorGetDlHarqVector (const UePtr &ue)
 GetDlHarqVector.
 
static std::unordered_map< uint8_t, LCGPtr > & GetDlLCG (const UePtr &ue)
 GetDlLCG.
 
static uint8_t & GetDlMcs (const UePtr &ue)
 GetDlMcs.
 
static std::vector< uint16_t > & GetDlRBG (const UePtr &ue)
 GetDlRBG.
 
static std::vector< uint8_t > & GetDlSym (const UePtr &ue)
 GetDlSym.
 
static uint32_t & GetDlTBS (const UePtr &ue)
 GetDlTBS.
 
static NrMacHarqVectorGetUlHarqVector (const UePtr &ue)
 GetUlHarqVector.
 
static std::unordered_map< uint8_t, LCGPtr > & GetUlLCG (const UePtr &ue)
 GetUlLCG.
 
static uint8_t & GetUlMcs (const UePtr &ue)
 GetUlMcs.
 
static std::vector< uint16_t > & GetUlRBG (const UePtr &ue)
 GetUlRBG.
 
static std::vector< uint8_t > & GetUlSym (const UePtr &ue)
 GetUlSym.
 
static uint32_t & GetUlTBS (const UePtr &ue)
 GetUlTBS.
 
static void PrintLcInfo (uint16_t ue, uint8_t lcgId, uint8_t lcId, uint8_t cqi, uint8_t P, uint8_t minP)
 Prints information related to the QCI of a UEs LC.
 

Additional Inherited Members

- Public Types inherited from ns3::NrMacSchedulerUeInfo
typedef std::function< NrMacHarqVector &(const UePtr &ue)> GetHarqVectorFn
 
typedef std::function< std::unordered_map< uint8_t, LCGPtr > &(const UePtr &ue)> GetLCGFn
 
typedef std::function< uint32_t()> GetRbPerRbgFn
 
enum class  McsCsiSource { AVG_MCS , AVG_SPEC_EFF , AVG_SINR , WIDEBAND_MCS }
 
- Public Attributes inherited from ns3::NrMacSchedulerUeInfo
BeamId m_beamId
 Beam ID of the UE (kept updated as much as possible by MAC)
 
Ptr< NrAmcm_dlAmc
 AMC instance of scheduler associated with DL.
 
CqiInfo m_dlCqi
 DL CQI information.
 
NrMacHarqVector m_dlHarq
 HARQ process vector for DL.
 
std::unordered_map< uint8_t, LCGPtrm_dlLCG
 DL LCG.
 
uint8_t m_dlMcs {0}
 DL MCS.
 
uint32_t m_dlMRBRetx {0}
 
Ptr< const ComplexMatrixArray > m_dlPrecMats {nullptr}
 DL Precoding matrices.
 
uint8_t m_dlRank {1}
 DL rank (number of MIMO layers)
 
std::vector< uint16_t > m_dlRBG
 DL Resource Block Group assigned in this slot.
 
std::vector< SbMcsInfom_dlSbMcsInfo
 
std::vector< uint8_t > m_dlSym
 Corresponding symbol of m_dlRBG in this slot.
 
uint32_t m_dlTbSize {0}
 
std::optional< uint8_t > m_fhMaxMcsAssignable
 Maximum DL MCS assignable due to FH limitations.
 
McsCsiSource m_mcsCsiSource
 Source of MCS computation based on CSI feedback.
 
std::vector< uint8_t > m_rbgToSb
 Precomputed RBG to SB mapping.
 
uint16_t m_rnti {0}
 RNTI of the UE.
 
uint32_t m_srsOffset {0}
 SRS offset.
 
uint32_t m_srsPeriodicity {0}
 SRS periodicity.
 
uint8_t m_startMcsDlUe {0}
 Starting DL MCS to be used.
 
Ptr< NrAmcm_ulAmc
 AMC instance of scheduler associated with UL.
 
CqiInfo m_ulCqi
 UL CQI information.
 
NrMacHarqVector m_ulHarq
 HARQ process vector for UL.
 
std::unordered_map< uint8_t, LCGPtrm_ulLCG
 UL LCG.
 
uint8_t m_ulMcs {0}
 UL MCS.
 
uint32_t m_ulMRBRetx {0}
 
Ptr< const ComplexMatrixArray > m_ulPrecMats {nullptr}
 UL Precoding matrices.
 
uint8_t m_ulRank {1}
 UL rank (number of MIMO layers)
 
std::vector< uint16_t > m_ulRBG
 UL Resource Block Group assigned in this slot.
 
std::vector< uint8_t > m_ulSym
 Corresponding symbol of m_ulRBG in this slot.
 
uint32_t m_ulTbSize {0}
 
- Protected Member Functions inherited from ns3::NrMacSchedulerUeInfo
uint32_t GetNumRbPerRbg () const
 Retrieve the number of RB per RBG.
 

Detailed Description

UE representation for a round-robin scheduler.

The UE representation does not store any additional information, but provides a way for a RR scheduler to order the UE based on the assigned RBG.

See also
CompareUeWeightsDl

Definition at line 22 of file nr-mac-scheduler-ue-info-rr.h.

Constructor & Destructor Documentation

◆ NrMacSchedulerUeInfoRR()

ns3::NrMacSchedulerUeInfoRR::NrMacSchedulerUeInfoRR ( uint16_t  rnti,
BeamId  beamId,
const GetRbPerRbgFn &  fn 
)
inline

NrMacSchedulerUeInfoRR constructor.

Parameters
rntiRNTI of the UE
beamIdBeam ID of the UE
fnA function that tells how many RB per RBG

Definition at line 31 of file nr-mac-scheduler-ue-info-rr.h.

Member Function Documentation

◆ CompareUeWeightsDl()

static bool ns3::NrMacSchedulerUeInfoRR::CompareUeWeightsDl ( const NrMacSchedulerNs3::UePtrAndBufferReq lue,
const NrMacSchedulerNs3::UePtrAndBufferReq rue 
)
inlinestatic

comparison function object (i.e. an object that satisfies the requirements of Compare) which returns true if the first argument is less than (i.e. is ordered before) the second.

Parameters
lueLeft UE
rueRight UE
Returns
true if the assigned RBG of lue is less than the assigned RBG of rue

The ordering is made by considering the RBG. An UE with 0 RBG will always be the first (i.e., has an higher priority) in a RR scheduler. The objective is to distribute evenly all the resources, in order to have the same RBG number for all the UEs.

Definition at line 49 of file nr-mac-scheduler-ue-info-rr.h.

Referenced by ns3::NrMacSchedulerUeInfoMR::CompareUeWeightsDl(), ns3::NrMacSchedulerOfdmaRR::GetUeCompareDlFn(), and ns3::NrMacSchedulerTdmaRR::GetUeCompareDlFn().

+ Here is the caller graph for this function:

◆ CompareUeWeightsUl()

static bool ns3::NrMacSchedulerUeInfoRR::CompareUeWeightsUl ( const NrMacSchedulerNs3::UePtrAndBufferReq lue,
const NrMacSchedulerNs3::UePtrAndBufferReq rue 
)
inlinestatic

comparison function object (i.e. an object that satisfies the requirements of Compare) which returns true if the first argument is less than (i.e. is ordered before) the second.

Parameters
lueLeft UE
rueRight UE
Returns
true if the assigned RBG of lue is less than the assigned RBG of rue

The ordering is made by considering the RBG. An UE with 0 RBG will always be the first (i.e., has an higher priority) in a RR scheduler. The objective is to distribute evenly all the resources, in order to have the same RBG number for all the UEs.

Definition at line 68 of file nr-mac-scheduler-ue-info-rr.h.

Referenced by ns3::NrMacSchedulerUeInfoMR::CompareUeWeightsUl(), ns3::NrMacSchedulerOfdmaRR::GetUeCompareUlFn(), and ns3::NrMacSchedulerTdmaRR::GetUeCompareUlFn().

+ Here is the caller graph for this function:

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