LteSchedulerEnbUl Class Reference

Simu5G: LteSchedulerEnbUl Class Reference
Simu5G

#include <LteSchedulerEnbUl.h>

Inheritance diagram for LteSchedulerEnbUl:
[legend]

Public Member Functions

virtual void updateHarqDescs ()
 Updates HARQ descriptor current process pointer (to be called every TTI by main loop).
bool racschedule (GHz carrierFrequency, BandLimitVector *bandLim=nullptr) override
bool rtxschedule (GHz carrierFrequency, BandLimitVector *bandLim=nullptr) override
virtual void signalRac (MacNodeId nodeId, GHz carrierFrequency)
unsigned int schedulePerAcidRtx (MacNodeId nodeId, GHz carrierFrequency, Codeword cw, unsigned char acid, std::vector< BandLimit > *bandLim=nullptr, Remote antenna=MACRO, bool limitBl=false) override

Protected Member Functions

bool checkEligibility (MacNodeId id, Codeword &cw, GHz carrierFrequency) override
virtual unsigned int scheduleAdditionalRetransmissions (GHz carrierFrequency, BandLimitVector *bandLim=nullptr)

Protected Attributes

std::map< GHz, HarqStatus > harqStatus_
 Uplink Synchronous H-ARQ process counter - keeps track of currently active process on connected UEs.
std::map< GHz, RacStatus > racStatus_
 RAC request flags: signals whether a UE shall be granted the RAC allocation.

Detailed Description

LTE eNB uplink scheduler.

Member Function Documentation

◆ checkEligibility()

bool checkEligibility ( MacNodeId id,
Codeword & cw,
GHz carrierFrequency )
overrideprotected

Checks Harq Descriptors and returns the first free codeword.

Parameters
id
cw
Returns

◆ scheduleAdditionalRetransmissions()

virtual unsigned int scheduleAdditionalRetransmissions ( GHz carrierFrequency,
BandLimitVector * bandLim = nullptr )
protectedvirtual

Hook for scheduling additional (non-UL) retransmissions (e.g. D2D mirror HARQ), called by rtxschedule() after the UL retransmission handling. Returns the number of bytes allocated.

Reimplemented in LteSchedulerEnbUlD2D, and NrSchedulerGnbUlD2D.

◆ updateHarqDescs()

virtual void updateHarqDescs ( )
virtual

Updates HARQ descriptor current process pointer (to be called every TTI by main loop).

Reimplemented in NrSchedulerGnbUl.

◆ racschedule()

bool racschedule ( GHz carrierFrequency,
BandLimitVector * bandLim = nullptr )
override

Updates current schedule list with RAC grant responses.

Returns
TRUE if OFDM space is exhausted.

◆ rtxschedule()

bool rtxschedule ( GHz carrierFrequency,
BandLimitVector * bandLim = nullptr )
override

Updates current schedule list with HARQ retransmissions.

Returns
TRUE if OFDM space is exhausted.

◆ signalRac()

virtual void signalRac ( MacNodeId nodeId,
GHz carrierFrequency )
inlinevirtual

Schedule retransmissions for background UEs

Returns
TRUE if OFDM space is exhausted. signals RAC request to the scheduler (called by e/gNb)

References racStatus_.

◆ schedulePerAcidRtx()

unsigned int schedulePerAcidRtx ( MacNodeId nodeId,
GHz carrierFrequency,
Codeword cw,
unsigned char acid,
std::vector< BandLimit > * bandLim = nullptr,
Remote antenna = MACRO,
bool limitBl = false )
override

Schedules retransmission for the Harq Process of the given UE on a set of logical bands. Each band has also assigned a band limit amount of bytes: no more than the specified amount will be served on the given band for the acid.

Parameters
nodeIdThe node ID
carrierFrequencycarrier frequency
cwThe codeword used to serve the acid process
bandsA vector of logical bands
acidThe ACID
Returns
The allocated bytes. 0 if retransmission was not possible

Member Data Documentation

◆ harqStatus_

std::map<GHz, HarqStatus> harqStatus_
protected

Uplink Synchronous H-ARQ process counter - keeps track of currently active process on connected UEs.

◆ racStatus_

std::map<GHz, RacStatus> racStatus_
protected

RAC request flags: signals whether a UE shall be granted the RAC allocation.

Referenced by signalRac().