![]() |
5G-LENA nr-v3.3-161-gad18933f
The 5G/NR module for the ns-3 simulator
|
The base for all the OFDMA schedulers. More...
#include "nr-mac-scheduler-ofdma.h"
Public Member Functions | |
NrMacSchedulerOfdma () | |
NrMacSchedulerOfdma constructor. | |
~NrMacSchedulerOfdma () override | |
Deconstructor. | |
![]() | |
NrMacSchedulerTdma () | |
NrMacSchedulerTdma constructor. | |
~NrMacSchedulerTdma () override | |
NrMacSchedulerTdma deconstructor. | |
![]() | |
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 ¶ms) override |
Cell configuration. | |
void | DoCschedLcConfigReq (const NrMacCschedSapProvider::CschedLcConfigReqParameters ¶ms) override |
Configure a logical channel for a UE. | |
void | DoCschedLcReleaseReq (const NrMacCschedSapProvider::CschedLcReleaseReqParameters ¶ms) override |
Release a LC. | |
void | DoCschedUeConfigReq (const NrMacCschedSapProvider::CschedUeConfigReqParameters ¶ms) override |
Register an UE. | |
void | DoCschedUeReleaseReq (const NrMacCschedSapProvider::CschedUeReleaseReqParameters ¶ms) override |
Release an UE. | |
void | DoSchedDlCqiInfoReq (const NrMacSchedSapProvider::SchedDlCqiInfoReqParameters ¶ms) override |
Received a DL CQI message. | |
void | DoSchedDlRachInfoReq (const NrMacSchedSapProvider::SchedDlRachInfoReqParameters ¶ms) override |
RACH information. | |
void | DoSchedDlRlcBufferReq (const NrMacSchedSapProvider::SchedDlRlcBufferReqParameters ¶ms) override |
RLC informs of DL data. | |
void | DoSchedDlTriggerReq (const NrMacSchedSapProvider::SchedDlTriggerReqParameters ¶ms) 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 ¶ms) override |
Received a UL CQI message. | |
void | DoSchedUlMacCtrlInfoReq (const NrMacSchedSapProvider::SchedUlMacCtrlInfoReqParameters ¶ms) override |
Evaluate different types of control messages (only BSR for the moment) | |
void | DoSchedUlSrInfoReq (const NrMacSchedSapProvider::SchedUlSrInfoReqParameters ¶ms) override |
Save the SR list into m_srList. | |
void | DoSchedUlTriggerReq (const NrMacSchedSapProvider::SchedUlTriggerReqParameters ¶ms) 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 NrAmc > | GetDlAmc () const |
Get the AMC for DL. | |
uint8_t | GetDlCtrlSyms () const override |
Retrieve the number of DL ctrl symbols configured in the scheduler. | |
std::vector< bool > | GetDlNotchedRbgMask () const |
Get the notched (blank) RBGs Mask for the DL. | |
int8_t | GetMaxDlMcs () const |
Get the maximum DL MCS index. | |
NrFhSchedSapUser * | GetNrFhSchedSapUser () override |
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. | |
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 NrAmc > | GetUlAmc () const |
Get the AMC for UL. | |
uint8_t | GetUlCtrlSyms () const override |
Retrieve the number of UL ctrl symbols configured in the scheduler. | |
std::vector< bool > | 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 override |
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< bool > &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 | SetNrFhSchedSapProvider (NrFhSchedSapProvider *s) override |
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< bool > &ulNotchedRbgsMask) |
Set the notched (blank) RBGs Mask for the UL. | |
![]() | |
NrMacScheduler () | |
NrMacScheduler constructor. | |
~NrMacScheduler () override | |
NrMacScheduler deconstructor. | |
NrMacCschedSapProvider * | GetMacCschedSapProvider () |
Get the MacCschedSapProvider pointer. | |
NrMacSchedSapProvider * | GetMacSchedSapProvider () |
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 TypeId | GetTypeId () |
GetTypeId. | |
![]() | |
static TypeId | GetTypeId () |
GetTypeId. | |
![]() | |
static TypeId | GetTypeId () |
Get the type id. | |
Protected Types | |
enum class | SymPerBeamType { LOAD_BASED , ROUND_ROBIN , PROPORTIONAL_FAIR } |
Enumeration of techniques to distribute the available symbols to the active beams. More... | |
Protected Member Functions | |
BeamSymbolMap | AssignDLRBG (uint32_t symAvail, const ActiveUeMap &activeDl) const override |
Assign the available DL RBG to the UEs. | |
BeamSymbolMap | AssignULRBG (uint32_t symAvail, const ActiveUeMap &activeUl) const override |
Assign the UL RBG to the active UE, and return the distribution of symbols per beam. | |
void | ChangeDlBeam (PointInFTPlane *spoint, uint32_t symOfBeam) const override |
Advance the starting point by the number of symbols specified, resetting the RB count to 0. | |
void | ChangeUlBeam (PointInFTPlane *spoint, uint32_t symOfBeam) const override |
Perform a custom operation on the starting point each time all the UE of an UL beam have been scheduled. | |
std::shared_ptr< DciInfoElementTdma > | CreateDlDci (PointInFTPlane *spoint, const std::shared_ptr< NrMacSchedulerUeInfo > &ueInfo, uint32_t maxSym) const override |
Create the DL DCI in OFDMA mode. | |
std::shared_ptr< DciInfoElementTdma > | CreateUlDci (PointInFTPlane *spoint, const std::shared_ptr< NrMacSchedulerUeInfo > &ueInfo, uint32_t maxSym) const override |
Create a DCI for the specified UE for UL data. | |
NrMacSchedulerOfdma::BeamSymbolMap | GetSymPerBeam (uint32_t symAvail, const ActiveUeMap &activeDl) const |
Calculate the number of symbols to assign to each beam by calling using the technique selected in m_symPerBeamType. | |
uint8_t | GetTpc () const override |
Returns TPC command. | |
![]() | |
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. | |
virtual void | CallNotifyDlFn (const std::vector< UePtrAndBufferReq > &ueVector) const |
Call the notify callback function in the OpenGymEnv class in the ns3-gym module for downlink. | |
virtual void | CallNotifyUlFn (const std::vector< UePtrAndBufferReq > &ueVector) const |
Call the notify callback function in the OpenGymEnv class in the ns3-gym module for uplink. | |
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< DciInfoElementTdma > | CreateDlDci (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< DciInfoElementTdma > | CreateUlDci (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 ¬Assigned, 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 ¬Assigned, const FTResources &totalAssigned) const =0 |
Update the UE representation after a symbol (UL) has been assigned to other UE. | |
![]() | |
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< NrMacSchedulerUeInfo > | CreateUeRepresentation (const NrMacCschedSapProvider::CschedUeConfigReqParameters ¶ms) const =0 |
Create an UE representation for the scheduler. | |
bool | DoesFhAllocationFit (uint16_t bwpId, uint32_t mcs, uint32_t nRegs, uint8_t dlRank) const |
Returns a boolean indicating whether the current allocation can fit in the available FH bandwidth (when FH Control is enabled). | |
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. | |
uint8_t | GetFhControlMethod () const |
Get the FH Control Method. | |
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. | |
Friends | |
class | NrSchedOfdmaSymbolPerBeamTestCase |
Make it friend of the test case, so that the test case can access m_symPerBeam. | |
Additional Inherited Members | |
![]() | |
typedef std::unordered_map< BeamId, HarqVectorIteratorList, BeamIdHash > | ActiveHarqMap |
Map between a beamID and the HARQ of that beam. | |
typedef std::unordered_map< BeamId, std::vector< UePtrAndBufferReq >, BeamIdHash > | ActiveUeMap |
Map between a BeamId and a vector of UE (the UE are in that beam) | |
typedef std::unordered_map< BeamId, uint32_t, BeamIdHash > | BeamSymbolMap |
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. | |
![]() | |
bool | m_activeDlAi {false} |
Flag for activating AI for downlink. | |
bool | m_activeUlAi {false} |
Flag for activating AI for uplink. | |
Ptr< NrAmc > | m_dlAmc |
AMC pointer. | |
NrMacSchedulerUeInfo::McsCsiSource | m_mcsCsiSource |
CSI information source for DL MCS estimation. | |
NrFhSchedSapProvider * | m_nrFhSchedSapProvider {nullptr} |
FH Control SAP provider. | |
NrFhSchedSapUser * | m_nrFhSchedSapUser {nullptr} |
FH Control SAP user. | |
Ptr< NrAmc > | m_ulAmc |
AMC pointer. | |
![]() | |
NrMacCschedSapProvider * | m_macCschedSapProvider {nullptr} |
SAP Provider. | |
NrMacCschedSapUser * | m_macCschedSapUser {nullptr} |
SAP User. | |
NrMacSchedSapProvider * | m_macSchedSapProvider {nullptr} |
SAP Provider. | |
NrMacSchedSapUser * | m_macSchedSapUser {nullptr} |
SAP user. | |
The base for all the OFDMA schedulers.
An example of OFDMA-based scheduling is the following:
(f) ^ |=|======|=======|=| |C| U E | U E |C| |T| 1 | 3 |T| | |======|=======| | |R| U E | U E |R| |L| 2 | 4 |L| |----------------------------> (t)
The UEs are scheduled by prioritizing the assignment of frequencies: the entire available spectrum is divided among UEs of the same beam, by a number of symbols which is pre-computed and depends on the total byte to transmit of each beam.
The OFDMA scheduling is only done in downlink. In uplink, the division in time is used, and therefore the class is based on top of NrMacSchedulerTdma.
The implementation details to construct a slot like the one showed before are in the functions AssignDLRBG() and AssignULRBG(). The choice of the UEs to be scheduled is, however, demanded to the subclasses.
The DCI is created by CreateDlDci() or CreateUlDci(), which call CreateDci() to perform the "hard" work.
ns3::NrMacSchedulerOfdma is accessible through the following paths with Config::Set and Config::Connect:
/NodeList/[i]/DeviceList/[i]/$ns3::NrGnbNetDevice/BandwidthPartMap/[i]/MacScheduler/$ns3::NrMacSchedulerNs3/$ns3::NrMacSchedulerOfdma
/NodeList/[i]/DeviceList/[i]/$ns3::NrGnbNetDevice/BandwidthPartMap/[i]/MacScheduler/$ns3::NrMacSchedulerNs3/$ns3::NrMacSchedulerTdma/$ns3::NrMacSchedulerOfdma
/NodeList/[i]/DeviceList/[i]/$ns3::NrGnbNetDevice/BandwidthPartMap/[i]/MacScheduler/$ns3::NrMacSchedulerOfdma
/NodeList/[i]/DeviceList/[i]/$ns3::NrGnbNetDevice/BandwidthPartMap/[i]/MacScheduler/$ns3::NrMacSchedulerTdma/$ns3::NrMacSchedulerOfdma
/NodeList/[i]/DeviceList/[i]/$ns3::NrNetDevice/$ns3::NrGnbNetDevice/BandwidthPartMap/[i]/MacScheduler/$ns3::NrMacSchedulerNs3/$ns3::NrMacSchedulerOfdma
/NodeList/[i]/DeviceList/[i]/$ns3::NrNetDevice/$ns3::NrGnbNetDevice/BandwidthPartMap/[i]/MacScheduler/$ns3::NrMacSchedulerNs3/$ns3::NrMacSchedulerTdma/$ns3::NrMacSchedulerOfdma
/NodeList/[i]/DeviceList/[i]/$ns3::NrNetDevice/$ns3::NrGnbNetDevice/BandwidthPartMap/[i]/MacScheduler/$ns3::NrMacSchedulerOfdma
/NodeList/[i]/DeviceList/[i]/$ns3::NrNetDevice/$ns3::NrGnbNetDevice/BandwidthPartMap/[i]/MacScheduler/$ns3::NrMacSchedulerTdma/$ns3::NrMacSchedulerOfdma
Size of this type is 744 bytes (on a 64-bit architecture).
Definition at line 56 of file nr-mac-scheduler-ofdma.h.
|
strongprotected |
Enumeration of techniques to distribute the available symbols to the active beams.
Definition at line 115 of file nr-mac-scheduler-ofdma.h.
ns3::NrMacSchedulerOfdma::NrMacSchedulerOfdma | ( | ) |
NrMacSchedulerOfdma constructor.
Definition at line 49 of file nr-mac-scheduler-ofdma.cc.
|
inlineoverride |
Deconstructor.
Definition at line 73 of file nr-mac-scheduler-ofdma.h.
|
overrideprotectedvirtual |
Assign the available DL RBG to the UEs.
symAvail | Available symbols |
activeDl | Map of active UE and their beams |
The algorithm redistributes the frequencies to all the UEs inside a beam. The pre-requisite is to calculate the symbols for each beam, done with the function GetSymPerBeam(). The pseudocode is the following (please note that sym_of_beam is a value returned by the GetSymPerBeam() function):
while frequencies > 0: sort (ueVector); ueVector.first().m_dlRBG += 1 * sym_of_beam; frequencies--; UpdateUeDlMetric (ueVector.first());
To sort the UEs, the method uses the function returned by GetUeCompareDlFn(). Two fairness helper are hard-coded in the method: the first one is avoid to assign resources to UEs that already have their buffer requirement covered, and the other one is avoid to assign symbols when all the UEs have their requirements covered.
Implements ns3::NrMacSchedulerNs3.
Definition at line 341 of file nr-mac-scheduler-ofdma.cc.
References ns3::NrMacSchedulerTdma::BeforeDlSched(), ns3::NrMacSchedulerTdma::CallNotifyDlFn(), ns3::NrMacSchedulerNs3::GetBandwidthInRbg(), ns3::NrMacSchedulerNs3::GetBwpId(), ns3::NrMacSchedulerNs3::GetDlNotchedRbgMask(), ns3::NrMacSchedulerNs3::GetFhControlMethod(), GetSymPerBeam(), ns3::NrMacSchedulerTdma::GetUeCompareDlFn(), ns3::NrMacSchedulerNs3::m_activeDlAi, ns3::NrMacSchedulerNs3::m_nrFhSchedSapProvider, ns3::NrMacSchedulerTdma::NotAssignedDlResources(), ns3::NrFhControl::OptimizeMcs, ns3::NrFhControl::OptimizeRBs, and ns3::NrFhControl::Postponing.
|
overrideprotectedvirtual |
Assign the UL RBG to the active UE, and return the distribution of symbols per beam.
symAvail | available symbols for UL |
activeUl | Map of Beam and active UE per beam |
The function should assign RBG to each UE, modifying the value m_ulRBG for each UE in the activeUl map. In doing so, it has to calculate the number of symbols assigned to each UE, and return it to the caller.
The creation of DCI will be performed by calling CreateDlDci with the appropriate input parameters.
Implements ns3::NrMacSchedulerNs3.
Definition at line 477 of file nr-mac-scheduler-ofdma.cc.
References ns3::NrMacSchedulerTdma::AssignedUlResources(), ns3::NrMacSchedulerTdma::BeforeUlSched(), ns3::NrMacSchedulerTdma::CallNotifyUlFn(), ns3::NrMacSchedulerNs3::GetBandwidthInRbg(), GetSymPerBeam(), ns3::NrMacSchedulerTdma::GetUeCompareUlFn(), ns3::NrMacSchedulerNs3::GetUlNotchedRbgMask(), ns3::NrMacSchedulerNs3::m_activeUlAi, ns3::NrMacSchedulerNs3::PointInFTPlane::m_rbg, ns3::NrMacSchedulerNs3::PointInFTPlane::m_sym, and ns3::NrMacSchedulerTdma::NotAssignedUlResources().
|
overrideprotectedvirtual |
Advance the starting point by the number of symbols specified, resetting the RB count to 0.
spoint | Starting point |
symOfBeam | Number of symbols for the beam |
Implements ns3::NrMacSchedulerNs3.
Definition at line 709 of file nr-mac-scheduler-ofdma.cc.
References ns3::NrMacSchedulerNs3::PointInFTPlane::m_rbg, and ns3::NrMacSchedulerNs3::PointInFTPlane::m_sym.
|
overrideprotectedvirtual |
Perform a custom operation on the starting point each time all the UE of an UL beam have been scheduled.
spoint | starting point for the next beam to modify |
symOfBeam | number the symbol used for the beam |
Implements ns3::NrMacSchedulerNs3.
Definition at line 716 of file nr-mac-scheduler-ofdma.cc.
References ns3::NrMacSchedulerNs3::PointInFTPlane::m_rbg, and ns3::NrMacSchedulerNs3::PointInFTPlane::m_sym.
|
overrideprotectedvirtual |
Create the DL DCI in OFDMA mode.
spoint | Starting point |
ueInfo | UE representation |
maxSym | Maximum symbols to use |
The function calculates the TBS and then call CreateDci().
Implements ns3::NrMacSchedulerNs3.
Definition at line 587 of file nr-mac-scheduler-ofdma.cc.
References ns3::DciInfoElementTdma::DATA, ns3::DciInfoElementTdma::DL, ns3::NrMacSchedulerNs3::GetBandwidthInRbg(), ns3::NrMacSchedulerNs3::GetBwpId(), ns3::NrMacSchedulerNs3::GetNumRbPerRbg(), GetTpc(), ns3::NrMacSchedulerNs3::m_dlAmc, ns3::NrMacSchedulerNs3::PointInFTPlane::m_rbg, and ns3::NrMacSchedulerNs3::PointInFTPlane::m_sym.
|
overrideprotectedvirtual |
Create a DCI for the specified UE for UL data.
spoint | Starting point |
ueInfo | UE specified |
maxSym | maximum amount of symbols that can be assigned |
The function should create a block in the 2D frequency-time plane in which the specified UE will receive the UL data.
Implements ns3::NrMacSchedulerNs3.
Definition at line 649 of file nr-mac-scheduler-ofdma.cc.
References ns3::DciInfoElementTdma::DATA, ns3::NrMacSchedulerNs3::GetBandwidthInRbg(), ns3::NrMacSchedulerNs3::GetBwpId(), ns3::NrMacSchedulerNs3::GetNumRbPerRbg(), GetTpc(), ns3::NrMacSchedulerNs3::PointInFTPlane::m_rbg, ns3::NrMacSchedulerNs3::PointInFTPlane::m_sym, ns3::NrMacSchedulerNs3::m_ulAmc, and ns3::DciInfoElementTdma::UL.
|
protected |
Calculate the number of symbols to assign to each beam by calling using the technique selected in m_symPerBeamType.
symAvail | Number of available symbols |
activeDl | Map of active DL UE and their beam |
Definition at line 77 of file nr-mac-scheduler-ofdma.cc.
Referenced by AssignDLRBG(), and AssignULRBG().
|
overrideprotectedvirtual |
Returns TPC command.
Implements ns3::NrMacSchedulerNs3.
Definition at line 723 of file nr-mac-scheduler-ofdma.cc.
Referenced by CreateDlDci(), and CreateUlDci().
|
static |
GetTypeId.
Definition at line 26 of file nr-mac-scheduler-ofdma.cc.
References LOAD_BASED, PROPORTIONAL_FAIR, and ROUND_ROBIN.
|
friend |
Make it friend of the test case, so that the test case can access m_symPerBeam.
Definition at line 232 of file nr-mac-scheduler-ofdma.h.