A Discrete-Event Network Simulator
API
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
ns3::TdMtFfMacScheduler Class Reference

Implements the SCHED SAP and CSCHED SAP for a Time Domain Maximize Throughput scheduler. More...

#include <tdmt-ff-mac-scheduler.h>

+ Inheritance diagram for ns3::TdMtFfMacScheduler:

Public Member Functions

 TdMtFfMacScheduler ()
 Constructor. More...
 
virtual ~TdMtFfMacScheduler ()
 
virtual void DoDispose (void)
 
virtual FfMacCschedSapProviderGetFfMacCschedSapProvider ()
 
virtual FfMacSchedSapProviderGetFfMacSchedSapProvider ()
 
virtual void SetFfMacCschedSapUser (FfMacCschedSapUser *s)
 
virtual void SetFfMacSchedSapUser (FfMacSchedSapUser *s)
 
void TransmissionModeConfigurationUpdate (uint16_t rnti, uint8_t txMode)
 
- Public Member Functions inherited from ns3::FfMacScheduler
 FfMacScheduler ()
 
virtual ~FfMacScheduler ()
 
- Public Member Functions inherited from ns3::Object
void AggregateObject (Ptr< Object > other)
 
void Dispose (void)
 
AggregateIterator GetAggregateIterator (void) const
 
virtual TypeId GetInstanceTypeId (void) const
 
template<typename T >
Ptr< T > GetObject (void) const
 
template<typename T >
Ptr< T > GetObject (TypeId tid) const
 
void Initialize (void)
 
- Public Member Functions inherited from ns3::SimpleRefCount< Object, ObjectBase, ObjectDeleter >
 SimpleRefCount (const SimpleRefCount &o)
 
uint32_t GetReferenceCount (void) const
 
SimpleRefCountoperator= (const SimpleRefCount &o)
 
void Ref (void) const
 
void Unref (void) const
 
- Public Member Functions inherited from ns3::ObjectBase
void GetAttribute (std::string name, AttributeValue &value) const
 
bool GetAttributeFailSafe (std::string name, AttributeValue &attribute) const
 
void SetAttribute (std::string name, const AttributeValue &value)
 
bool SetAttributeFailSafe (std::string name, const AttributeValue &value)
 
bool TraceConnect (std::string name, std::string context, const CallbackBase &cb)
 
bool TraceConnectWithoutContext (std::string name, const CallbackBase &cb)
 
bool TraceDisconnect (std::string name, std::string context, const CallbackBase &cb)
 
bool TraceDisconnectWithoutContext (std::string name, const CallbackBase &cb)
 

Static Public Member Functions

static TypeId GetTypeId (void)
 
- Static Public Member Functions inherited from ns3::FfMacScheduler
static TypeId GetTypeId (void)
 
- Static Public Member Functions inherited from ns3::Object
static TypeId GetTypeId (void)
 
- Static Public Member Functions inherited from ns3::SimpleRefCount< Object, ObjectBase, ObjectDeleter >
static void Cleanup (void)
 
- Static Public Member Functions inherited from ns3::ObjectBase
static TypeId GetTypeId (void)
 

Private Member Functions

void DoCschedCellConfigReq (const struct FfMacCschedSapProvider::CschedCellConfigReqParameters &params)
 
void DoCschedLcConfigReq (const struct FfMacCschedSapProvider::CschedLcConfigReqParameters &params)
 
void DoCschedLcReleaseReq (const struct FfMacCschedSapProvider::CschedLcReleaseReqParameters &params)
 
void DoCschedUeConfigReq (const struct FfMacCschedSapProvider::CschedUeConfigReqParameters &params)
 
void DoCschedUeReleaseReq (const struct FfMacCschedSapProvider::CschedUeReleaseReqParameters &params)
 
void DoSchedDlCqiInfoReq (const struct FfMacSchedSapProvider::SchedDlCqiInfoReqParameters &params)
 
void DoSchedDlMacBufferReq (const struct FfMacSchedSapProvider::SchedDlMacBufferReqParameters &params)
 
void DoSchedDlPagingBufferReq (const struct FfMacSchedSapProvider::SchedDlPagingBufferReqParameters &params)
 
void DoSchedDlRachInfoReq (const struct FfMacSchedSapProvider::SchedDlRachInfoReqParameters &params)
 
void DoSchedDlRlcBufferReq (const struct FfMacSchedSapProvider::SchedDlRlcBufferReqParameters &params)
 
void DoSchedDlTriggerReq (const struct FfMacSchedSapProvider::SchedDlTriggerReqParameters &params)
 
void DoSchedUlCqiInfoReq (const struct FfMacSchedSapProvider::SchedUlCqiInfoReqParameters &params)
 
void DoSchedUlMacCtrlInfoReq (const struct FfMacSchedSapProvider::SchedUlMacCtrlInfoReqParameters &params)
 
void DoSchedUlNoiseInterferenceReq (const struct FfMacSchedSapProvider::SchedUlNoiseInterferenceReqParameters &params)
 
void DoSchedUlSrInfoReq (const struct FfMacSchedSapProvider::SchedUlSrInfoReqParameters &params)
 
void DoSchedUlTriggerReq (const struct FfMacSchedSapProvider::SchedUlTriggerReqParameters &params)
 
double EstimateUlSinr (uint16_t rnti, uint16_t rb)
 
int GetRbgSize (int dlbandwidth)
 
uint8_t HarqProcessAvailability (uint16_t rnti)
 Return the availability of free process for the RNTI specified. More...
 
int LcActivePerFlow (uint16_t rnti)
 
void RefreshDlCqiMaps (void)
 
void RefreshHarqProcesses ()
 Refresh HARQ processes according to the timers.
 
void RefreshUlCqiMaps (void)
 
void UpdateDlRlcBufferInfo (uint16_t rnti, uint8_t lcid, uint16_t size)
 
uint8_t UpdateHarqProcessId (uint16_t rnti)
 Update and return a new process Id for the RNTI specified. More...
 
void UpdateUlRlcBufferInfo (uint16_t rnti, uint16_t size)
 

Private Attributes

std::map< uint16_t,
SbMeasResult_s
m_a30CqiRxed
 
std::map< uint16_t, uint32_t > m_a30CqiTimers
 
std::map< uint16_t,
std::vector< uint16_t > > 
m_allocationMaps
 
Ptr< LteAmcm_amc
 
std::map< uint16_t, uint32_t > m_ceBsrRxed
 
uint32_t m_cqiTimersThreshold
 
FfMacCschedSapProvider::CschedCellConfigReqParameters m_cschedCellConfig
 
FfMacCschedSapProviderm_cschedSapProvider
 
FfMacCschedSapUserm_cschedSapUser
 
std::map< uint16_t, uint8_t > m_dlHarqCurrentProcessId
 
std::map< uint16_t,
DlHarqProcessesDciBuffer_t > 
m_dlHarqProcessesDciBuffer
 
std::map< uint16_t,
DlHarqRlcPduListBuffer_t > 
m_dlHarqProcessesRlcPduListBuffer
 
std::map< uint16_t,
DlHarqProcessesStatus_t > 
m_dlHarqProcessesStatus
 
std::map< uint16_t,
DlHarqProcessesTimer_t > 
m_dlHarqProcessesTimer
 
std::vector< DlInfoListElement_sm_dlInfoListBuffered
 
std::set< uint16_t > m_flowStatsDl
 
std::set< uint16_t > m_flowStatsUl
 
bool m_harqOn
 
uint16_t m_nextRntiUl
 
std::map< uint16_t, uint8_t > m_p10CqiRxed
 
std::map< uint16_t, uint32_t > m_p10CqiTimers
 
std::vector< uint16_t > m_rachAllocationMap
 
std::vector< struct
RachListElement_s
m_rachList
 
std::map< LteFlowId_t,
FfMacSchedSapProvider::SchedDlRlcBufferReqParameters
m_rlcBufferReq
 
FfMacSchedSapProviderm_schedSapProvider
 
FfMacSchedSapUserm_schedSapUser
 
std::map< uint16_t,
std::vector< double > > 
m_ueCqi
 
std::map< uint16_t, uint32_t > m_ueCqiTimers
 
std::map< uint16_t, uint8_t > m_uesTxMode
 
uint8_t m_ulGrantMcs
 
std::map< uint16_t, uint8_t > m_ulHarqCurrentProcessId
 
std::map< uint16_t,
UlHarqProcessesDciBuffer_t > 
m_ulHarqProcessesDciBuffer
 
std::map< uint16_t,
UlHarqProcessesStatus_t > 
m_ulHarqProcessesStatus
 

Friends

class TdMtSchedulerMemberCschedSapProvider
 
class TdMtSchedulerMemberSchedSapProvider
 

Additional Inherited Members

- Public Types inherited from ns3::FfMacScheduler
enum  UlCqiFilter_t { SRS_UL_CQI, PUSCH_UL_CQI, ALL_UL_CQI }
 
- Protected Member Functions inherited from ns3::Object
 Object (const Object &o)
 
virtual void DoInitialize (void)
 
virtual void NotifyNewAggregate (void)
 
- Protected Member Functions inherited from ns3::ObjectBase
void ConstructSelf (const AttributeConstructionList &attributes)
 
virtual void NotifyConstructionCompleted (void)
 
- Protected Attributes inherited from ns3::FfMacScheduler
UlCqiFilter_t m_ulCqiFilter
 

Detailed Description

Implements the SCHED SAP and CSCHED SAP for a Time Domain Maximize Throughput scheduler.

This class implements the interface defined by the FfMacScheduler abstract class

Config Paths

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

  • /NodeList/[i]/DeviceList/[i]/$ns3::LteEnbNetDevice/FfMacScheduler/$ns3::TdMtFfMacScheduler
  • /NodeList/[i]/DeviceList/[i]/$ns3::LteNetDevice/$ns3::LteEnbNetDevice/FfMacScheduler/$ns3::TdMtFfMacScheduler

Attributes

  • CqiTimerThreshold: The number of TTIs a CQI is valid (default 1000 - 1 sec.)
  • HarqEnabled: Activate/Deactivate the HARQ [by default is active].
    • Set with class: BooleanValue
    • Underlying type: bool
    • Initial value: true
    • Flags: construct write read
  • UlGrantMcs: The MCS of the UL grant, must be [0..15] (default 0)

Attributes defined in parent class ns3::FfMacScheduler

  • UlCqiFilter: The filter to apply on UL CQIs received
    • Set with class: ns3::EnumValue
    • Underlying type: SRS_UL_CQI|PUSCH_UL_CQI|ALL_UL_CQI
    • Initial value: ALL_UL_CQI
    • Flags: construct write read

No TraceSources are defined for this type.

Definition at line 68 of file tdmt-ff-mac-scheduler.h.

Constructor & Destructor Documentation

ns3::TdMtFfMacScheduler::TdMtFfMacScheduler ( )

Constructor.

Creates the MAC Scheduler interface implementation

Definition at line 215 of file tdmt-ff-mac-scheduler.cc.

ns3::TdMtFfMacScheduler::~TdMtFfMacScheduler ( )
virtual

Destructor

Definition at line 225 of file tdmt-ff-mac-scheduler.cc.

References NS_LOG_FUNCTION.

Member Function Documentation

void ns3::TdMtFfMacScheduler::DoDispose ( void  )
virtual

This method is called by Object::Dispose or by the object's destructor, whichever comes first.

Subclasses are expected to implement their real destruction code in an overriden version of this method and chain up to their parent's implementation once they are done. i.e., for simplicity, the destructor of every subclass should be empty and its content should be moved to the associated DoDispose method.

It is safe to call GetObject from within this method.

Reimplemented from ns3::FfMacScheduler.

Definition at line 231 of file tdmt-ff-mac-scheduler.cc.

References NS_LOG_FUNCTION.

FfMacCschedSapProvider * ns3::TdMtFfMacScheduler::GetFfMacCschedSapProvider ( )
virtual
Returns
the Provider part of the FfMacCschedSap provided by the Scheduler

Implements ns3::FfMacScheduler.

Definition at line 285 of file tdmt-ff-mac-scheduler.cc.

FfMacSchedSapProvider * ns3::TdMtFfMacScheduler::GetFfMacSchedSapProvider ( )
virtual
Returns
the Provider part of the FfMacSchedSap provided by the Scheduler

Implements ns3::FfMacScheduler.

Definition at line 291 of file tdmt-ff-mac-scheduler.cc.

uint8_t ns3::TdMtFfMacScheduler::HarqProcessAvailability ( uint16_t  rnti)
private

Return the availability of free process for the RNTI specified.

Parameters
rntithe RNTI of the UE to be updated
Returns
the process id value

Definition at line 517 of file tdmt-ff-mac-scheduler.cc.

References NS_FATAL_ERROR, and NS_LOG_FUNCTION.

void ns3::TdMtFfMacScheduler::SetFfMacCschedSapUser ( FfMacCschedSapUser s)
virtual

set the user part of the FfMacCschedSap that this Scheduler will interact with. Normally this part of the SAP is exported by the MAC.

Parameters
s

Implements ns3::FfMacScheduler.

Definition at line 273 of file tdmt-ff-mac-scheduler.cc.

void ns3::TdMtFfMacScheduler::SetFfMacSchedSapUser ( FfMacSchedSapUser s)
virtual

set the user part of the FfMacSchedSap that this Scheduler will interact with. Normally this part of the SAP is exported by the MAC.

Parameters
s

Implements ns3::FfMacScheduler.

Definition at line 279 of file tdmt-ff-mac-scheduler.cc.

uint8_t ns3::TdMtFfMacScheduler::UpdateHarqProcessId ( uint16_t  rnti)
private

Update and return a new process Id for the RNTI specified.

Parameters
rntithe RNTI of the UE to be updated
Returns
the process id value

Definition at line 550 of file tdmt-ff-mac-scheduler.cc.

References m_harqOn, NS_FATAL_ERROR, and NS_LOG_FUNCTION.

Member Data Documentation

bool ns3::TdMtFfMacScheduler::m_harqOn
private

m_harqOn when false inhibit te HARQ mechanisms (by default active)

Definition at line 254 of file tdmt-ff-mac-scheduler.h.

Referenced by UpdateHarqProcessId().


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