5G-LENA nr-v3.1-69-g2dd513a7
The 5G/NR module for the ns-3 simulator
|
Assign entire symbols in a maximum-rate fashion. More...
#include "nr-mac-scheduler-tdma-mr.h"
Public Member Functions | |
NrMacSchedulerTdmaMR () | |
NrMacSchedulerTdmaMR constructor. | |
~NrMacSchedulerTdmaMR () override | |
~NrMacSchedulerTdmaMR deconstructor | |
Public Member Functions inherited from ns3::NrMacSchedulerTdmaRR | |
NrMacSchedulerTdmaRR () | |
NrMacSchedulerTdmaRR constructor. | |
~NrMacSchedulerTdmaRR () override | |
~NrMacSchedulerTdmaRR deconstructor | |
Public Member Functions inherited from ns3::NrMacSchedulerTdma | |
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 ¶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< 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 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< 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. | |
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 Public Member Functions inherited from ns3::NrMacSchedulerTdmaRR | |
static TypeId | GetTypeId () |
GetTypeId. | |
Static Public Member Functions inherited from ns3::NrMacSchedulerTdma | |
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 | |
std::shared_ptr< NrMacSchedulerUeInfo > | CreateUeRepresentation (const NrMacCschedSapProvider::CschedUeConfigReqParameters ¶ms) const override |
Create an UE representation of the type NrMacSchedulerUeInfoMR. | |
std::function< bool(const NrMacSchedulerNs3::UePtrAndBufferReq &lhs, const NrMacSchedulerNs3::UePtrAndBufferReq &rhs)> | GetUeCompareDlFn () const override |
Return the comparison function to sort DL UE according to the scheduler policy. | |
std::function< bool(const NrMacSchedulerNs3::UePtrAndBufferReq &lhs, const NrMacSchedulerNs3::UePtrAndBufferReq &rhs)> | GetUeCompareUlFn () const override |
Return the comparison function to sort UL UE according to the scheduler policy. | |
Protected Member Functions inherited from ns3::NrMacSchedulerTdmaRR | |
void | AssignedDlResources (const UePtrAndBufferReq &ue, const FTResources &assigned, const FTResources &totAssigned) const override |
Update the UE representation after a symbol (DL) has been assigned to it. | |
void | AssignedUlResources (const UePtrAndBufferReq &ue, const FTResources &assigned, const FTResources &totAssigned) const override |
Update the UE representation after a symbol (DL) has been assigned to it. | |
void | BeforeDlSched (const UePtrAndBufferReq &ue, const FTResources &assignableInIteration) const override |
Prepare UE for the DL scheduling. | |
void | BeforeUlSched (const UePtrAndBufferReq &ue, const FTResources &assignableInIteration) const override |
Prepare UE for the UL scheduling. | |
std::shared_ptr< NrMacSchedulerUeInfo > | CreateUeRepresentation (const NrMacCschedSapProvider::CschedUeConfigReqParameters ¶ms) const override |
Create an UE representation of the type NrMacSchedulerUeInfoRR. | |
std::function< bool(const NrMacSchedulerNs3::UePtrAndBufferReq &lhs, const NrMacSchedulerNs3::UePtrAndBufferReq &rhs)> | GetUeCompareDlFn () const override |
Return the comparison function to sort DL UE according to the scheduler policy. | |
std::function< bool(const NrMacSchedulerNs3::UePtrAndBufferReq &lhs, const NrMacSchedulerNs3::UePtrAndBufferReq &rhs)> | GetUeCompareUlFn () const override |
Return the comparison function to sort UL UE according to the scheduler policy. | |
void | NotAssignedDlResources (const UePtrAndBufferReq &ue, const FTResources ¬Assigned, const FTResources &totalAssigned) const override |
Update the UE representation after a symbol (DL) has been assigned to other UE. | |
void | NotAssignedUlResources (const UePtrAndBufferReq &ue, const FTResources ¬Assigned, const FTResources &totalAssigned) const override |
Update the UE representation after a symbol (UL) has been assigned to other UE. | |
Protected Member Functions inherited from ns3::NrMacSchedulerTdma | |
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 available UL RBG to the UEs. | |
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. | |
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. | |
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, 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. | |
Protected Attributes inherited from ns3::NrMacSchedulerNs3 | |
Ptr< NrAmc > | m_dlAmc |
AMC pointer. | |
Ptr< NrAmc > | m_ulAmc |
AMC pointer. | |
Protected Attributes inherited from ns3::NrMacScheduler | |
NrMacCschedSapProvider * | m_macCschedSapProvider {nullptr} |
SAP Provider. | |
NrMacCschedSapUser * | m_macCschedSapUser {nullptr} |
SAP User. | |
NrMacSchedSapProvider * | m_macSchedSapProvider {nullptr} |
SAP Provider. | |
NrMacSchedSapUser * | m_macSchedSapUser {nullptr} |
SAP user. | |
Assign entire symbols in a maximum-rate fashion.
The UEs will be sorted by their MCS. Higher MCS will always be scheduled before lower MCS, until they do not have any more bytes to transmit.
ns3::NrMacSchedulerTdmaMR is accessible through the following paths with Config::Set and Config::Connect:
/NodeList/[i]/DeviceList/[i]/$ns3::NrGnbNetDevice/BandwidthPartMap/[i]/MacScheduler/$ns3::NrMacSchedulerNs3/$ns3::NrMacSchedulerTdma/$ns3::NrMacSchedulerTdmaMR
/NodeList/[i]/DeviceList/[i]/$ns3::NrGnbNetDevice/BandwidthPartMap/[i]/MacScheduler/$ns3::NrMacSchedulerNs3/$ns3::NrMacSchedulerTdma/$ns3::NrMacSchedulerTdmaRR/$ns3::NrMacSchedulerTdmaMR
/NodeList/[i]/DeviceList/[i]/$ns3::NrGnbNetDevice/BandwidthPartMap/[i]/MacScheduler/$ns3::NrMacSchedulerNs3/$ns3::NrMacSchedulerTdmaMR
/NodeList/[i]/DeviceList/[i]/$ns3::NrGnbNetDevice/BandwidthPartMap/[i]/MacScheduler/$ns3::NrMacSchedulerNs3/$ns3::NrMacSchedulerTdmaRR/$ns3::NrMacSchedulerTdmaMR
/NodeList/[i]/DeviceList/[i]/$ns3::NrGnbNetDevice/BandwidthPartMap/[i]/MacScheduler/$ns3::NrMacSchedulerTdma/$ns3::NrMacSchedulerTdmaMR
/NodeList/[i]/DeviceList/[i]/$ns3::NrGnbNetDevice/BandwidthPartMap/[i]/MacScheduler/$ns3::NrMacSchedulerTdma/$ns3::NrMacSchedulerTdmaRR/$ns3::NrMacSchedulerTdmaMR
/NodeList/[i]/DeviceList/[i]/$ns3::NrGnbNetDevice/BandwidthPartMap/[i]/MacScheduler/$ns3::NrMacSchedulerTdmaMR
/NodeList/[i]/DeviceList/[i]/$ns3::NrGnbNetDevice/BandwidthPartMap/[i]/MacScheduler/$ns3::NrMacSchedulerTdmaRR/$ns3::NrMacSchedulerTdmaMR
/NodeList/[i]/DeviceList/[i]/$ns3::NrNetDevice/$ns3::NrGnbNetDevice/BandwidthPartMap/[i]/MacScheduler/$ns3::NrMacSchedulerNs3/$ns3::NrMacSchedulerTdma/$ns3::NrMacSchedulerTdmaMR
/NodeList/[i]/DeviceList/[i]/$ns3::NrNetDevice/$ns3::NrGnbNetDevice/BandwidthPartMap/[i]/MacScheduler/$ns3::NrMacSchedulerNs3/$ns3::NrMacSchedulerTdma/$ns3::NrMacSchedulerTdmaRR/$ns3::NrMacSchedulerTdmaMR
/NodeList/[i]/DeviceList/[i]/$ns3::NrNetDevice/$ns3::NrGnbNetDevice/BandwidthPartMap/[i]/MacScheduler/$ns3::NrMacSchedulerNs3/$ns3::NrMacSchedulerTdmaMR
/NodeList/[i]/DeviceList/[i]/$ns3::NrNetDevice/$ns3::NrGnbNetDevice/BandwidthPartMap/[i]/MacScheduler/$ns3::NrMacSchedulerNs3/$ns3::NrMacSchedulerTdmaRR/$ns3::NrMacSchedulerTdmaMR
/NodeList/[i]/DeviceList/[i]/$ns3::NrNetDevice/$ns3::NrGnbNetDevice/BandwidthPartMap/[i]/MacScheduler/$ns3::NrMacSchedulerTdma/$ns3::NrMacSchedulerTdmaMR
/NodeList/[i]/DeviceList/[i]/$ns3::NrNetDevice/$ns3::NrGnbNetDevice/BandwidthPartMap/[i]/MacScheduler/$ns3::NrMacSchedulerTdma/$ns3::NrMacSchedulerTdmaRR/$ns3::NrMacSchedulerTdmaMR
/NodeList/[i]/DeviceList/[i]/$ns3::NrNetDevice/$ns3::NrGnbNetDevice/BandwidthPartMap/[i]/MacScheduler/$ns3::NrMacSchedulerTdmaMR
/NodeList/[i]/DeviceList/[i]/$ns3::NrNetDevice/$ns3::NrGnbNetDevice/BandwidthPartMap/[i]/MacScheduler/$ns3::NrMacSchedulerTdmaRR/$ns3::NrMacSchedulerTdmaMR
No Attributes are defined for this type.
No TraceSources are defined for this type.
Size of this type is 616 bytes (on a 64-bit architecture).
Definition at line 21 of file nr-mac-scheduler-tdma-mr.h.
ns3::NrMacSchedulerTdmaMR::NrMacSchedulerTdmaMR | ( | ) |
NrMacSchedulerTdmaMR constructor.
Definition at line 23 of file nr-mac-scheduler-tdma-mr.cc.
|
inlineoverride |
~NrMacSchedulerTdmaMR deconstructor
Definition at line 38 of file nr-mac-scheduler-tdma-mr.h.
|
overrideprotectedvirtual |
Create an UE representation of the type NrMacSchedulerUeInfoMR.
params | parameters |
Implements ns3::NrMacSchedulerNs3.
Definition at line 29 of file nr-mac-scheduler-tdma-mr.cc.
References ns3::NrMacSchedulerNs3::GetNumRbPerRbg(), and ns3::NrMacCschedSapProvider::CschedUeConfigReqParameters::m_beamId.
|
static |
GetTypeId.
Definition at line 15 of file nr-mac-scheduler-tdma-mr.cc.
|
overrideprotectedvirtual |
Return the comparison function to sort DL UE according to the scheduler policy.
Implements ns3::NrMacSchedulerTdma.
Definition at line 41 of file nr-mac-scheduler-tdma-mr.cc.
References ns3::NrMacSchedulerUeInfoMR::CompareUeWeightsDl().
|
overrideprotectedvirtual |
Return the comparison function to sort UL UE according to the scheduler policy.
Implements ns3::NrMacSchedulerTdma.
Definition at line 48 of file nr-mac-scheduler-tdma-mr.cc.
References ns3::NrMacSchedulerUeInfoMR::CompareUeWeightsUl().