5G-LENA nr-v3.1-69-g2dd513a7
The 5G/NR module for the ns-3 simulator
Loading...
Searching...
No Matches
ns3::NrMacSchedulerTdma Class Referenceabstract

The base for all the TDMA schedulers. More...

#include "nr-mac-scheduler-tdma.h"

+ Inheritance diagram for ns3::NrMacSchedulerTdma:
+ Collaboration diagram for ns3::NrMacSchedulerTdma:

Public Member Functions

 NrMacSchedulerTdma ()
 NrMacSchedulerTdma constructor.
 
 ~NrMacSchedulerTdma () override
 NrMacSchedulerTdma deconstructor.
 
- Public Member Functions inherited from ns3::NrMacSchedulerNs3
 NrMacSchedulerNs3 ()
 NrMacSchedulerNs3 default constructor.
 
 NrMacSchedulerNs3 (const NrMacSchedulerNs3 &other)=delete
 NrMacSchedulerNs3 copy constructor (deleted)
 
 ~NrMacSchedulerNs3 () override
 NrMacSchedulerNs3 deconstructor.
 
int64_t AssignStreams (int64_t stream) override
 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.
 
void DoCschedCellConfigReq (const NrMacCschedSapProvider::CschedCellConfigReqParameters &params) override
 Cell configuration.
 
void DoCschedLcConfigReq (const NrMacCschedSapProvider::CschedLcConfigReqParameters &params) override
 Configure a logical channel for a UE.
 
void DoCschedLcReleaseReq (const NrMacCschedSapProvider::CschedLcReleaseReqParameters &params) override
 Release a LC.
 
void DoCschedUeConfigReq (const NrMacCschedSapProvider::CschedUeConfigReqParameters &params) override
 Register an UE.
 
void DoCschedUeReleaseReq (const NrMacCschedSapProvider::CschedUeReleaseReqParameters &params) override
 Release an UE.
 
void DoSchedDlCqiInfoReq (const NrMacSchedSapProvider::SchedDlCqiInfoReqParameters &params) override
 Received a DL CQI message.
 
void DoSchedDlRachInfoReq (const NrMacSchedSapProvider::SchedDlRachInfoReqParameters &params) override
 RACH information.
 
void DoSchedDlRlcBufferReq (const NrMacSchedSapProvider::SchedDlRlcBufferReqParameters &params) override
 RLC informs of DL data.
 
void DoSchedDlTriggerReq (const NrMacSchedSapProvider::SchedDlTriggerReqParameters &params) override
 Decide how to fill the frequency/time of a DL slot.
 
void DoSchedSetMcs (uint32_t mcs) override
 Set a fixed MCS.
 
void DoSchedUlCqiInfoReq (const NrMacSchedSapProvider::SchedUlCqiInfoReqParameters &params) override
 Received a UL CQI message.
 
void DoSchedUlMacCtrlInfoReq (const NrMacSchedSapProvider::SchedUlMacCtrlInfoReqParameters &params) override
 Evaluate different types of control messages (only BSR for the moment)
 
void DoSchedUlSrInfoReq (const NrMacSchedSapProvider::SchedUlSrInfoReqParameters &params) override
 Save the SR list into m_srList.
 
void DoSchedUlTriggerReq (const NrMacSchedSapProvider::SchedUlTriggerReqParameters &params) override
 Decide how to fill the frequency/time of a UL slot.
 
void EnableHarqReTx (bool enableFlag)
 Enable HARQ ReTx function.
 
Time GetCqiTimerThreshold () const
 Get the CqiTimerThreshold.
 
Ptr< const NrAmcGetDlAmc () const
 Get the AMC for DL.
 
uint8_t GetDlCtrlSyms () const override
 Retrieve the number of DL ctrl symbols configured in the scheduler.
 
std::vector< uint8_t > GetDlNotchedRbgMask () const
 Get the notched (blank) RBGs Mask for the DL.
 
int8_t GetMaxDlMcs () const
 Get the maximum DL MCS index.
 
uint8_t GetSrsCtrlSyms () const
 Get the configured value for the SRS symbols.
 
uint8_t GetStartMcsDl () const
 Get the DL MCS starting value.
 
uint8_t GetStartMcsUl () const
 Get the DL MCS starting value.
 
Ptr< const NrAmcGetUlAmc () const
 Get the AMC for UL.
 
uint8_t GetUlCtrlSyms () const override
 Retrieve the number of UL ctrl symbols configured in the scheduler.
 
std::vector< uint8_t > GetUlNotchedRbgMask () const
 Get the notched (blank) RBGs Mask for the UL.
 
void InstallDlAmc (const Ptr< NrAmc > &dlAmc)
 Install the AMC for the DL part.
 
void InstallUlAmc (const Ptr< NrAmc > &ulAmc)
 Install the AMC for the DL part.
 
bool IsDlMcsFixed () const
 Check if the MCS in DL is fixed.
 
bool IsHarqReTxEnable () const
 Is HARQ ReTx enable function.
 
bool IsSrsInFSlots () const
 Check if the F slots are allowed for SRS transmission.
 
bool IsSrsInUlSlots () const
 Check if the UL slots are allowed for SRS transmission.
 
bool IsUlMcsFixed () const
 Check if the MCS in UL is fixed.
 
void SetCqiTimerThreshold (const Time &v)
 Set the CqiTimerThreshold.
 
void SetDlCtrlSyms (uint8_t v)
 Set the number of DL ctrl symbols.
 
void SetDlNotchedRbgMask (const std::vector< uint8_t > &dlNotchedRbgsMask)
 Set the notched (blank) RBGs Mask for the DL.
 
void SetFixedDlMcs (bool v)
 Set if the MCS in DL is fixed (in case, it will take the starting value)
 
void SetFixedUlMcs (bool v)
 Set if the MCS in UL is fixed (in case, it will take the starting value)
 
void SetLcSched (const TypeId &type)
 Set LC Scheduler Algorithm model type.
 
void SetMaxDlMcs (int8_t v)
 Set the maximum index for the DL MCS.
 
void SetRachUlGrantMcs (uint8_t v)
 Sets the default RACH UL grant MCS.
 
void SetSrsCtrlSyms (uint8_t v)
 Set the number of UL SRS symbols.
 
void SetSrsInFSlots (bool v)
 Set if the F slots are allowed for SRS transmission.
 
void SetSrsInUlSlots (bool v)
 Set if the UL slots are allowed for SRS transmission (if True, UL and F slots may carry SRS, if False, SRS are transmitted only in F slots)
 
void SetStartMcsDl (uint8_t v)
 Set the starting value for the DL MCS.
 
void SetStartMcsUl (uint8_t v)
 Set the starting value for the UL MCS.
 
void SetUlCtrlSyms (uint8_t v)
 Set the number of UL ctrl symbols.
 
void SetUlNotchedRbgMask (const std::vector< uint8_t > &ulNotchedRbgsMask)
 Set the notched (blank) RBGs Mask for the UL.
 
- Public Member Functions inherited from ns3::NrMacScheduler
 NrMacScheduler ()
 NrMacScheduler constructor.
 
 ~NrMacScheduler () override
 NrMacScheduler deconstructor.
 
NrMacCschedSapProviderGetMacCschedSapProvider ()
 Get the MacCschedSapProvider pointer.
 
NrMacSchedSapProviderGetMacSchedSapProvider ()
 Get the MacSchedSapProvider pointer.
 
void SetMacCschedSapUser (NrMacCschedSapUser *sap)
 SetMacCschedSapUser.
 
void SetMacSchedSapUser (NrMacSchedSapUser *sap)
 Set the MacSchedSapUser pointer.
 

Static Public Member Functions

static TypeId GetTypeId ()
 GetTypeId.
 
- Static Public Member Functions inherited from ns3::NrMacSchedulerNs3
static TypeId GetTypeId ()
 GetTypeId.
 
- Static Public Member Functions inherited from ns3::NrMacScheduler
static TypeId GetTypeId ()
 Get the type id.
 

Protected Member Functions

BeamSymbolMap AssignDLRBG (uint32_t symAvail, const ActiveUeMap &activeDl) const override
 Assign the available DL RBG to the UEs.
 
virtual void AssignedDlResources (const UePtrAndBufferReq &ue, const FTResources &assigned, const FTResources &totalAssigned) const =0
 Update the UE representation after a symbol (DL) has been assigned to it.
 
virtual void AssignedUlResources (const UePtrAndBufferReq &ue, const FTResources &assigned, const FTResources &totalAssigned) const =0
 Update the UE representation after a symbol (DL) has been assigned to it.
 
BeamSymbolMap AssignULRBG (uint32_t symAvail, const ActiveUeMap &activeUl) const override
 Assign the available UL RBG to the UEs.
 
virtual void BeforeDlSched (const UePtrAndBufferReq &ue, const FTResources &assignableInIteration) const =0
 Prepare UE for the DL scheduling.
 
virtual void BeforeUlSched (const UePtrAndBufferReq &ue, const FTResources &assignableInIteration) const =0
 Prepare UE for the UL scheduling.
 
void ChangeDlBeam (PointInFTPlane *spoint, uint32_t symOfBeam) const override
 Not doing anything, moving forward the spoint is done by CreateDci.
 
void ChangeUlBeam (PointInFTPlane *spoint, uint32_t symOfBeam) const override
 Not doing anything, moving forward the spoint is done by CreateDci.
 
std::shared_ptr< DciInfoElementTdmaCreateDlDci (PointInFTPlane *spoint, const std::shared_ptr< NrMacSchedulerUeInfo > &ueInfo, uint32_t maxSym) const override
 Create a DL DCI starting from spoint and spanning maxSym symbols.
 
std::shared_ptr< DciInfoElementTdmaCreateUlDci (PointInFTPlane *spoint, const std::shared_ptr< NrMacSchedulerUeInfo > &ueInfo, uint32_t maxSym) const override
 Create a UL DCI starting from spoint and spanning maxSym symbols.
 
uint8_t GetTpc () const override
 Returns TPC command.
 
virtual std::function< bool(const NrMacSchedulerNs3::UePtrAndBufferReq &lhs, const NrMacSchedulerNs3::UePtrAndBufferReq &rhs)> GetUeCompareDlFn () const =0
 Provide the comparison function to order the UE when scheduling DL.
 
virtual std::function< bool(const NrMacSchedulerNs3::UePtrAndBufferReq &lhs, const NrMacSchedulerNs3::UePtrAndBufferReq &rhs)> GetUeCompareUlFn () const =0
 Provide the comparison function to order the UE when scheduling UL.
 
virtual void NotAssignedDlResources (const UePtrAndBufferReq &ue, const FTResources &notAssigned, const FTResources &totalAssigned) const =0
 Update the UE representation after a symbol (DL) has been assigned to other UE.
 
virtual void NotAssignedUlResources (const UePtrAndBufferReq &ue, const FTResources &notAssigned, const FTResources &totalAssigned) const =0
 Update the UE representation after a symbol (UL) has been assigned to other UE.
 
- Protected Member Functions inherited from ns3::NrMacSchedulerNs3
virtual LCPtr CreateLC (const nr::LogicalChannelConfigListElement_s &config) const
 Create a logical channel starting from a configuration.
 
virtual LCGPtr CreateLCG (const nr::LogicalChannelConfigListElement_s &config) const
 Create a logical channel group starting from a configuration.
 
virtual std::shared_ptr< NrMacSchedulerUeInfoCreateUeRepresentation (const NrMacCschedSapProvider::CschedUeConfigReqParameters &params) const =0
 Create an UE representation for the scheduler.
 
uint16_t GetBandwidthInRbg () const
 
uint16_t GetBwpId () const
 Get the bwp id of this MAC.
 
uint16_t GetCellId () const
 Get the cell id of this MAC.
 
uint64_t GetNumRbPerRbg () const
 Private function that is used to get the number of resource blocks per resource block group and also to check whether this value is configured.
 
virtual uint8_t ScheduleDlHarq (NrMacSchedulerNs3::PointInFTPlane *startingPoint, uint8_t symAvail, const ActiveHarqMap &activeDlHarq, const std::unordered_map< uint16_t, UePtr > &ueMap, std::vector< DlHarqInfo > *dlHarqToRetransmit, const std::vector< DlHarqInfo > &dlHarqFeedback, SlotAllocInfo *slotAlloc) const
 Giving the input, append to slotAlloc the allocations for the DL HARQ retransmissions.
 
virtual uint8_t ScheduleUlHarq (NrMacSchedulerNs3::PointInFTPlane *startingPoint, uint8_t symAvail, const std::unordered_map< uint16_t, UePtr > &ueMap, std::vector< UlHarqInfo > *ulHarqToRetransmit, const std::vector< UlHarqInfo > &ulHarqFeedback, SlotAllocInfo *slotAlloc) const
 Giving the input, append to slotAlloc the allocations for the DL HARQ retransmissions.
 
virtual void SortDlHarq (ActiveHarqMap *activeDlHarq) const
 Sort the DL HARQ retransmission.
 
virtual void SortUlHarq (ActiveHarqMap *activeUlHarq) const
 Sort the UL HARQ retransmission.
 

Additional Inherited Members

- Public Types inherited from ns3::NrMacSchedulerNs3
typedef std::unordered_map< BeamId, HarqVectorIteratorList, BeamIdHashActiveHarqMap
 Map between a beamID and the HARQ of that beam.
 
typedef std::unordered_map< BeamId, std::vector< UePtrAndBufferReq >, BeamIdHashActiveUeMap
 Map between a BeamId and a vector of UE (the UE are in that beam)
 
typedef std::unordered_map< BeamId, uint32_t, BeamIdHashBeamSymbolMap
 Map between a BeamId and the symbol assigned to that beam.
 
typedef PointInFTPlane FTResources
 Represent an amount of RBG/symbols that can be, or is, assigned.
 
using HarqVectorIterator = NrMacHarqVector::iterator
 
using HarqVectorIteratorList = std::vector< HarqVectorIterator >
 
typedef std::pair< UePtr, uint32_t > UePtrAndBufferReq
 Pair between a pointer to NrMacSchedulerUeInfo and its buffer occupancy.
 
- Protected Attributes inherited from ns3::NrMacSchedulerNs3
Ptr< NrAmcm_dlAmc
 AMC pointer.
 
Ptr< NrAmcm_ulAmc
 AMC pointer.
 
- Protected Attributes inherited from ns3::NrMacScheduler
NrMacCschedSapProviderm_macCschedSapProvider {nullptr}
 SAP Provider.
 
NrMacCschedSapUserm_macCschedSapUser {nullptr}
 SAP User.
 
NrMacSchedSapProviderm_macSchedSapProvider {nullptr}
 SAP Provider.
 
NrMacSchedSapUserm_macSchedSapUser {nullptr}
 SAP user.
 

Detailed Description

The base for all the TDMA schedulers.

An example of TDMA-based scheduling is the following:

(f)
^
|=|===|===|===|===|=|
|C| U | U | U | U |C|
|T| E | E | E | E |T|
|R|   |   |   |   |R|
|L| 1 | 2 | 3 | 4 |L|
|----------------------------> (t)

The UEs are scheduled by prioritizing the assignment of symbols: the entire available spectrum is assigned, for a number of symbols that depend on the LC byte requirements.

In order to construct a slot like the previous one, the class defines a general algorithm, based on top of NrMacSchedulerNs3, to know how many, and what, UEs to schedule. The NrMacSchedulerNs3::ScheduleDl function needs three information that should be provided by the subclasses, to answer the following three questions:

  • How distribute the symbols between beams?
  • How many RBG should be assigned to the each active UE?
  • How to place the blocks in the 2D plan (in other words, how to create the DCIs)?

The first two are answered by the methods AssignDLRBG() and AssignULRBG(). The choice of what UE should be scheduled, and their order, is demanded to the subclasses. For more information, please refer to the methods documentation.

Subclasses should also implement what actions should be done before any assignment (NrMacSchedulerTdma::BeforeDlSched and NrMacSchedulerTdma::BeforeUlSched) as well as what to do after a symbol has been assigned (for the UE that got that symbols, and the UE that did not).

The last one is answered by CreateDlDci() or CreateUlDci(), which call CreateDci() to perform the "hard" work.

See also
NrMacSchedulerTdmaRR
NrMacSchedulerTdmaPF
NrMacSchedulerTdmaMR

Config Paths

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

No Attributes are defined for this type.

Attributes defined in parent class ns3::NrMacSchedulerNs3

  • CqiTimerThreshold: The time while a CQI is valid
    • Set with class: ns3::TimeValue
    • Underlying type: Time +9.22337e+18ns:+9.22337e+18ns
    • Initial value: +1e+09ns
    • Flags: construct write read
  • FixedMcsDl: Fix MCS to value set in StartingMcsDl
    • Set with class: ns3::BooleanValue
    • Underlying type: bool
    • Initial value: false
    • Flags: construct write read
  • FixedMcsUl: Fix MCS to value set in StartingMcsUl
    • Set with class: ns3::BooleanValue
    • Underlying type: bool
    • Initial value: false
    • Flags: construct write read
  • StartingMcsDl: Starting MCS for DL
    • Set with class: ns3::UintegerValue
    • Underlying type: uint8_t 0:255
    • Initial value: 0
    • Flags: construct write read
  • StartingMcsUl: Starting MCS for UL
    • Set with class: ns3::UintegerValue
    • Underlying type: uint8_t 0:255
    • Initial value: 0
    • Flags: construct write read
  • DlCtrlSymbols: Number of symbols allocated for DL CTRL
    • Set with class: ns3::UintegerValue
    • Underlying type: uint8_t 0:255
    • Initial value: 1
    • Flags: construct write read
  • UlCtrlSymbols: Number of symbols allocated for UL CTRL
    • Set with class: ns3::UintegerValue
    • Underlying type: uint8_t 0:255
    • Initial value: 1
    • Flags: construct write read
  • SrsSymbols: Number of symbols allocated for UL SRS
    • Set with class: ns3::UintegerValue
    • Underlying type: uint8_t 0:255
    • Initial value: 1
    • Flags: construct write read
  • EnableSrsInUlSlots: Denotes whether the SRSs will be transmitted only in F slotsor both in F and UL slots. If False, SRS is transmitted onlyin F slots, if True in both (F/UL)
    • Set with class: ns3::BooleanValue
    • Underlying type: bool
    • Initial value: true
    • Flags: construct write read
  • EnableSrsInFSlots: Denotes whether the SRSs will be transmitted in F slotsIf true, it can be transmitted in F slots, otherwise it cannot.
    • Set with class: ns3::BooleanValue
    • Underlying type: bool
    • Initial value: true
    • Flags: construct write read
  • DlAmc: The DL AMC of this scheduler
    • Set with class: ns3::PointerValue
    • Underlying type: ns3::Ptr< ns3::NrAmc>
    • Initial value: 0
    • Flags: construct write read
  • UlAmc: The UL AMC of this scheduler
    • Set with class: ns3::PointerValue
    • Underlying type: ns3::Ptr< ns3::NrAmc>
    • Initial value: 0
    • Flags: construct write read
  • MaxDlMcs: Maximum MCS index for DL
    • Set with class: ns3::IntegerValue
    • Underlying type: int8_t -1:30
    • Initial value: -1
    • Flags: construct write read
  • EnableHarqReTx: If true, it would set the max HARQ ReTx to 3; otherwise it set it to 0
    • Set with class: ns3::BooleanValue
    • Underlying type: bool
    • Initial value: true
    • Flags: construct write read
  • SchedLcAlgorithmType: Type of the scheduling algorithm that assigns bytes to the different LCs.
    • Set with class: ns3::TypeIdValue
    • Underlying type: TypeId
    • Initial value: ns3::NrMacSchedulerLcRR
    • Flags: construct write
  • RachUlGrantMcs: The MCS of the RACH UL grant, must be [0..15] (default 0)
    • Set with class: ns3::UintegerValue
    • Underlying type: uint8_t 0:255
    • Initial value: 0
    • Flags: construct write

No TraceSources are defined for this type.
Size of this type is 616 bytes (on a 64-bit architecture).

Definition at line 62 of file nr-mac-scheduler-tdma.h.

Constructor & Destructor Documentation

◆ NrMacSchedulerTdma()

ns3::NrMacSchedulerTdma::NrMacSchedulerTdma ( )

NrMacSchedulerTdma constructor.

Definition at line 31 of file nr-mac-scheduler-tdma.cc.

◆ ~NrMacSchedulerTdma()

ns3::NrMacSchedulerTdma::~NrMacSchedulerTdma ( )
override

NrMacSchedulerTdma deconstructor.

Definition at line 35 of file nr-mac-scheduler-tdma.cc.

Member Function Documentation

◆ AssignDLRBG()

NrMacSchedulerTdma::BeamSymbolMap ns3::NrMacSchedulerTdma::AssignDLRBG ( uint32_t  symAvail,
const ActiveUeMap activeDl 
) const
overrideprotectedvirtual

Assign the available DL RBG to the UEs.

Parameters
symAvailNumber of available symbols
activeDlactive DL flows and UE
Returns
a map between the beam and the symbols assigned to each one

The function will prepare all the needed callbacks to return UE DL parameters (e.g., the DL TBS, the DL RBG) and then will call NrMacSchedulerTdma::AssignRBGTDMA.

Implements ns3::NrMacSchedulerNs3.

Definition at line 223 of file nr-mac-scheduler-tdma.cc.

References AssignedDlResources(), BeforeDlSched(), ns3::NrMacSchedulerUeInfo::GetDlRBG(), ns3::NrMacSchedulerUeInfo::GetDlSym(), ns3::NrMacSchedulerUeInfo::GetDlTBS(), GetUeCompareDlFn(), and NotAssignedDlResources().

+ Here is the call graph for this function:

◆ AssignedDlResources()

virtual void ns3::NrMacSchedulerTdma::AssignedDlResources ( const UePtrAndBufferReq ue,
const FTResources assigned,
const FTResources totalAssigned 
) const
protectedpure virtual

Update the UE representation after a symbol (DL) has been assigned to it.

Parameters
ueUE to which a symbol has been assigned
assignedthe amount of resources assigned
totalAssignedthe amount of total resources assigned until now

After an UE is selected to be eligible for a symbol assignment, its representation should be updated. The subclasses, by implementing this method, update the representation by updating some custom values that reflect the assignment done. These values are the one that, hopefully, are checked by the comparison function returned by GetUeCompareDlFn().

Implemented in ns3::NrMacSchedulerOfdmaPF, ns3::NrMacSchedulerOfdmaQos, ns3::NrMacSchedulerOfdmaRR, ns3::NrMacSchedulerTdmaPF, ns3::NrMacSchedulerTdmaQos, and ns3::NrMacSchedulerTdmaRR.

Referenced by ns3::NrMacSchedulerOfdma::AssignDLRBG(), and AssignDLRBG().

+ Here is the caller graph for this function:

◆ AssignedUlResources()

virtual void ns3::NrMacSchedulerTdma::AssignedUlResources ( const UePtrAndBufferReq ue,
const FTResources assigned,
const FTResources totalAssigned 
) const
protectedpure virtual

Update the UE representation after a symbol (DL) has been assigned to it.

Parameters
ueUE to which a symbol has been assigned
assignedthe amount of resources assigned
totalAssignedthe amount of total resources assigned until now

After an UE is selected to be eligible for a symbol assignment, its representation should be updated. The subclasses, by implementing this method, update the representation by updating some custom values that reflect the assignment done. These values are the one that, hopefully, are checked by the comparison function returned by GetUeCompareUelFn().

Implemented in ns3::NrMacSchedulerOfdmaPF, ns3::NrMacSchedulerOfdmaQos, ns3::NrMacSchedulerOfdmaRR, ns3::NrMacSchedulerTdmaPF, ns3::NrMacSchedulerTdmaQos, and ns3::NrMacSchedulerTdmaRR.

Referenced by ns3::NrMacSchedulerOfdma::AssignULRBG(), and AssignULRBG().

+ Here is the caller graph for this function:

◆ AssignULRBG()

NrMacSchedulerTdma::BeamSymbolMap ns3::NrMacSchedulerTdma::AssignULRBG ( uint32_t  symAvail,
const ActiveUeMap activeUl 
) const
overrideprotectedvirtual

Assign the available UL RBG to the UEs.

Parameters
symAvailNumber of available symbols
activeUlactive DL flows and UE
Returns
a map between the beam and the symbols assigned to each one

The function will prepare all the needed callbacks to return UE UL parameters (e.g., the UL TBS, the UL RBG) and then will call NrMacSchedulerTdma::AssignRBGTDMA.

Implements ns3::NrMacSchedulerNs3.

Definition at line 269 of file nr-mac-scheduler-tdma.cc.

References AssignedUlResources(), BeforeUlSched(), GetUeCompareUlFn(), ns3::NrMacSchedulerUeInfo::GetUlRBG(), ns3::NrMacSchedulerUeInfo::GetUlSym(), ns3::NrMacSchedulerUeInfo::GetUlTBS(), and NotAssignedUlResources().

+ Here is the call graph for this function:

◆ BeforeDlSched()

virtual void ns3::NrMacSchedulerTdma::BeforeDlSched ( const UePtrAndBufferReq ue,
const FTResources assignableInIteration 
) const
protectedpure virtual

Prepare UE for the DL scheduling.

Parameters
ueUE that is eligible for an assignation in any iteration round
assignableInIterationResources that can be assigned in each iteration

The default implementation is empty, but a subclass can specialize the behaviour, e.g., to calculate some value before the choice of RBG to assign to each UE is done.

Implemented in ns3::NrMacSchedulerOfdmaPF, ns3::NrMacSchedulerOfdmaQos, ns3::NrMacSchedulerOfdmaRR, ns3::NrMacSchedulerTdmaPF, ns3::NrMacSchedulerTdmaQos, and ns3::NrMacSchedulerTdmaRR.

Referenced by ns3::NrMacSchedulerOfdma::AssignDLRBG(), and AssignDLRBG().

+ Here is the caller graph for this function:

◆ BeforeUlSched()

virtual void ns3::NrMacSchedulerTdma::BeforeUlSched ( const UePtrAndBufferReq ue,
const FTResources assignableInIteration 
) const
protectedpure virtual

Prepare UE for the UL scheduling.

Parameters
ueUE that is eligible for an assignation in any iteration round
assignableInIterationResources that can be assigned in each iteration

The default implementation is empty, but a subclass can specialize the behaviour, e.g., to calculate some value before the choice of RBG to assign to each UE is done.

Implemented in ns3::NrMacSchedulerOfdmaPF, ns3::NrMacSchedulerOfdmaQos, ns3::NrMacSchedulerOfdmaRR, ns3::NrMacSchedulerTdmaPF, ns3::NrMacSchedulerTdmaQos, and ns3::NrMacSchedulerTdmaRR.

Referenced by ns3::NrMacSchedulerOfdma::AssignULRBG(), and AssignULRBG().

+ Here is the caller graph for this function:

◆ ChangeDlBeam()

void ns3::NrMacSchedulerTdma::ChangeDlBeam ( PointInFTPlane spoint,
uint32_t  symOfBeam 
) const
inlineoverrideprotectedvirtual

Not doing anything, moving forward the spoint is done by CreateDci.

Parameters
spointStarting point
symOfBeamthe number of symbols assigned to the beam

Implements ns3::NrMacSchedulerNs3.

Definition at line 98 of file nr-mac-scheduler-tdma.h.

◆ ChangeUlBeam()

void ns3::NrMacSchedulerTdma::ChangeUlBeam ( PointInFTPlane spoint,
uint32_t  symOfBeam 
) const
inlineoverrideprotectedvirtual

Not doing anything, moving forward the spoint is done by CreateDci.

Parameters
spointStarting point
symOfBeamthe number of symbols assigned to the beam

Implements ns3::NrMacSchedulerNs3.

Definition at line 108 of file nr-mac-scheduler-tdma.h.

◆ CreateDlDci()

std::shared_ptr< DciInfoElementTdma > ns3::NrMacSchedulerTdma::CreateDlDci ( PointInFTPlane spoint,
const std::shared_ptr< NrMacSchedulerUeInfo > &  ueInfo,
uint32_t  maxSym 
) const
overrideprotectedvirtual

Create a DL DCI starting from spoint and spanning maxSym symbols.

Parameters
spointStarting point of the DCI
ueInfoUE representation
maxSymMaximum number of symbols for the creation of the DCI
Returns
a pointer to the newly created DCI

The method calculates the TBS and the real number of symbols needed, and then call CreateDci().

Implements ns3::NrMacSchedulerNs3.

Definition at line 314 of file nr-mac-scheduler-tdma.cc.

References ns3::DciInfoElementTdma::DL, ns3::NrMacSchedulerNs3::GetBandwidthInRbg(), ns3::NrMacSchedulerNs3::GetDlNotchedRbgMask(), ns3::NrMacSchedulerNs3::GetNumRbPerRbg(), ns3::NrMacSchedulerNs3::m_dlAmc, ns3::NrMacSchedulerNs3::PointInFTPlane::m_rbg, and ns3::NrMacSchedulerNs3::PointInFTPlane::m_sym.

+ Here is the call graph for this function:

◆ CreateUlDci()

std::shared_ptr< DciInfoElementTdma > ns3::NrMacSchedulerTdma::CreateUlDci ( NrMacSchedulerNs3::PointInFTPlane spoint,
const std::shared_ptr< NrMacSchedulerUeInfo > &  ueInfo,
uint32_t  maxSym 
) const
overrideprotectedvirtual

Create a UL DCI starting from spoint and spanning maxSym symbols.

Parameters
spointStarting point of the DCI
ueInfoUE representation
Returns
a pointer to the newly created DCI

The method calculates the TBS and the real number of symbols needed, and then call CreateDci(). Allocate the DCI going backward from the starting point (it should be called ending point maybe).

Implements ns3::NrMacSchedulerNs3.

Definition at line 366 of file nr-mac-scheduler-tdma.cc.

References ns3::NrMacSchedulerNs3::GetBandwidthInRbg(), ns3::NrMacSchedulerNs3::GetNumRbPerRbg(), ns3::NrMacSchedulerNs3::GetUlNotchedRbgMask(), ns3::NrMacSchedulerNs3::PointInFTPlane::m_rbg, ns3::NrMacSchedulerNs3::PointInFTPlane::m_sym, ns3::NrMacSchedulerNs3::m_ulAmc, and ns3::DciInfoElementTdma::UL.

+ Here is the call graph for this function:

◆ GetTpc()

uint8_t ns3::NrMacSchedulerTdma::GetTpc ( ) const
overrideprotectedvirtual

Returns TPC command.

Implements ns3::NrMacSchedulerNs3.

Definition at line 413 of file nr-mac-scheduler-tdma.cc.

◆ GetTypeId()

TypeId ns3::NrMacSchedulerTdma::GetTypeId ( )
static

GetTypeId.

Returns
The TypeId of the class

Definition at line 25 of file nr-mac-scheduler-tdma.cc.

◆ GetUeCompareDlFn()

virtual std::function< bool(const NrMacSchedulerNs3::UePtrAndBufferReq &lhs, const NrMacSchedulerNs3::UePtrAndBufferReq &rhs)> ns3::NrMacSchedulerTdma::GetUeCompareDlFn ( ) const
protectedpure virtual

Provide the comparison function to order the UE when scheduling DL.

Returns
a function that should order two UEs based on their priority: if UE a is less than UE b, it will have an higher priority.

Implemented in ns3::NrMacSchedulerOfdmaMR, ns3::NrMacSchedulerOfdmaPF, ns3::NrMacSchedulerOfdmaQos, ns3::NrMacSchedulerOfdmaRR, ns3::NrMacSchedulerTdmaMR, ns3::NrMacSchedulerTdmaPF, ns3::NrMacSchedulerTdmaQos, and ns3::NrMacSchedulerTdmaRR.

Referenced by ns3::NrMacSchedulerOfdma::AssignDLRBG(), and AssignDLRBG().

+ Here is the caller graph for this function:

◆ GetUeCompareUlFn()

virtual std::function< bool(const NrMacSchedulerNs3::UePtrAndBufferReq &lhs, const NrMacSchedulerNs3::UePtrAndBufferReq &rhs)> ns3::NrMacSchedulerTdma::GetUeCompareUlFn ( ) const
protectedpure virtual

Provide the comparison function to order the UE when scheduling UL.

Returns
a function that should order two UEs based on their priority: if UE a is less than UE b, it will have an higher priority.

Implemented in ns3::NrMacSchedulerOfdmaMR, ns3::NrMacSchedulerOfdmaPF, ns3::NrMacSchedulerOfdmaQos, ns3::NrMacSchedulerOfdmaRR, ns3::NrMacSchedulerTdmaMR, ns3::NrMacSchedulerTdmaPF, ns3::NrMacSchedulerTdmaQos, and ns3::NrMacSchedulerTdmaRR.

Referenced by ns3::NrMacSchedulerOfdma::AssignULRBG(), and AssignULRBG().

+ Here is the caller graph for this function:

◆ NotAssignedDlResources()

virtual void ns3::NrMacSchedulerTdma::NotAssignedDlResources ( const UePtrAndBufferReq ue,
const FTResources notAssigned,
const FTResources totalAssigned 
) const
protectedpure virtual

Update the UE representation after a symbol (DL) has been assigned to other UE.

Parameters
ueUE to which a symbol has not been assigned
notAssignedthe amount of resources not assigned
totalAssignedthe amount of total resources assigned until now

Implemented in ns3::NrMacSchedulerOfdmaPF, ns3::NrMacSchedulerOfdmaQos, ns3::NrMacSchedulerOfdmaRR, ns3::NrMacSchedulerTdmaRR, ns3::NrMacSchedulerTdmaPF, and ns3::NrMacSchedulerTdmaQos.

Referenced by ns3::NrMacSchedulerOfdma::AssignDLRBG(), and AssignDLRBG().

+ Here is the caller graph for this function:

◆ NotAssignedUlResources()

virtual void ns3::NrMacSchedulerTdma::NotAssignedUlResources ( const UePtrAndBufferReq ue,
const FTResources notAssigned,
const FTResources totalAssigned 
) const
protectedpure virtual

Update the UE representation after a symbol (UL) has been assigned to other UE.

Parameters
ueUE to which a symbol has not been assigned
notAssignedthe amount of resources not assigned
totalAssignedthe amount of total resources assigned until now

Implemented in ns3::NrMacSchedulerOfdmaPF, ns3::NrMacSchedulerOfdmaQos, ns3::NrMacSchedulerOfdmaRR, ns3::NrMacSchedulerTdmaRR, ns3::NrMacSchedulerTdmaPF, and ns3::NrMacSchedulerTdmaQos.

Referenced by ns3::NrMacSchedulerOfdma::AssignULRBG(), and AssignULRBG().

+ Here is the caller graph for this function:

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