A Discrete-Event Network Simulator
API
ns3::LteAmc Class Reference

Implements the Adaptive Modulation And Coding Scheme. More...

#include "lte-amc.h"

+ Inheritance diagram for ns3::LteAmc:
+ Collaboration diagram for ns3::LteAmc:

Public Types

enum  AmcModel { PiroEW2010 , MiErrorModel }
 Types of AMC model. More...
 

Public Member Functions

 LteAmc ()
 
 ~LteAmc () override
 
std::vector< int > CreateCqiFeedbacks (const SpectrumValue &sinr, uint8_t rbgSize=0)
 Create a message with CQI feedback. More...
 
int GetCqiFromSpectralEfficiency (double s)
 Get a proper CQI for the spectral efficiency value. More...
 
int GetDlTbSizeFromMcs (int mcs, int nprb)
 Get the Transport Block Size for a selected MCS and number of PRB (table 7.1.7.2.1-1 of 36.213) More...
 
int GetMcsFromCqi (int cqi)
 Get the Modulation and Coding Scheme for a CQI value. More...
 
double GetSpectralEfficiencyFromCqi (int cqi)
 Get the spectral efficiency value associated to the received CQI. More...
 
int GetUlTbSizeFromMcs (int mcs, int nprb)
 Get the Transport Block Size for a selected MCS and number of PRB (table 8.6.1-1 of 36.213) More...
 
- Public Member Functions inherited from ns3::Object
 Object ()
 Constructor. More...
 
 ~Object () override
 Destructor. More...
 
void AggregateObject (Ptr< Object > other)
 Aggregate two Objects together. More...
 
void Dispose ()
 Dispose of this Object. More...
 
AggregateIterator GetAggregateIterator () const
 Get an iterator to the Objects aggregated to this one. More...
 
TypeId GetInstanceTypeId () const override
 Get the most derived TypeId for this Object. More...
 
template<typename T >
Ptr< T > GetObject () const
 Get a pointer to the requested aggregated Object. More...
 
template<>
Ptr< ObjectGetObject () const
 Specialization of () for objects of type ns3::Object. More...
 
template<typename T >
Ptr< T > GetObject (TypeId tid) const
 Get a pointer to the requested aggregated Object by TypeId. More...
 
template<>
Ptr< ObjectGetObject (TypeId tid) const
 Specialization of (TypeId tid) for objects of type ns3::Object. More...
 
void Initialize ()
 Invoke DoInitialize on all Objects aggregated to this one. More...
 
bool IsInitialized () const
 Check if the object has been initialized. More...
 
- Public Member Functions inherited from ns3::SimpleRefCount< Object, ObjectBase, ObjectDeleter >
 SimpleRefCount ()
 Default constructor. More...
 
 SimpleRefCount (const SimpleRefCount &o[[maybe_unused]])
 Copy constructor. More...
 
uint32_t GetReferenceCount () const
 Get the reference count of the object. More...
 
SimpleRefCountoperator= (const SimpleRefCount &o[[maybe_unused]])
 Assignment operator. More...
 
void Ref () const
 Increment the reference count. More...
 
void Unref () const
 Decrement the reference count. More...
 
- Public Member Functions inherited from ns3::ObjectBase
virtual ~ObjectBase ()
 Virtual destructor. More...
 
void GetAttribute (std::string name, AttributeValue &value) const
 Get the value of an attribute, raising fatal errors if unsuccessful. More...
 
bool GetAttributeFailSafe (std::string name, AttributeValue &value) const
 Get the value of an attribute without raising errors. More...
 
void SetAttribute (std::string name, const AttributeValue &value)
 Set a single attribute, raising fatal errors if unsuccessful. More...
 
bool SetAttributeFailSafe (std::string name, const AttributeValue &value)
 Set a single attribute without raising errors. More...
 
bool TraceConnect (std::string name, std::string context, const CallbackBase &cb)
 Connect a TraceSource to a Callback with a context. More...
 
bool TraceConnectWithoutContext (std::string name, const CallbackBase &cb)
 Connect a TraceSource to a Callback without a context. More...
 
bool TraceDisconnect (std::string name, std::string context, const CallbackBase &cb)
 Disconnect from a TraceSource a Callback previously connected with a context. More...
 
bool TraceDisconnectWithoutContext (std::string name, const CallbackBase &cb)
 Disconnect from a TraceSource a Callback previously connected without a context. More...
 

Static Public Member Functions

static TypeId GetTypeId ()
 Get the type ID. More...
 
- Static Public Member Functions inherited from ns3::Object
static TypeId GetTypeId ()
 Register this type. More...
 
- Static Public Member Functions inherited from ns3::ObjectBase
static TypeId GetTypeId ()
 Get the type ID. More...
 

Private Attributes

AmcModel m_amcModel
 The AmcModel attribute. More...
 
double m_ber
 The Ber attribute. More...
 

Additional Inherited Members

- Protected Member Functions inherited from ns3::Object
 Object (const Object &o)
 Copy an Object. More...
 
virtual void DoDispose ()
 Destructor implementation. More...
 
virtual void DoInitialize ()
 Initialize() implementation. More...
 
virtual void NotifyNewAggregate ()
 Notify all Objects aggregated to this one of a new Object being aggregated. More...
 
- Protected Member Functions inherited from ns3::ObjectBase
void ConstructSelf (const AttributeConstructionList &attributes)
 Complete construction of ObjectBase; invoked by derived classes. More...
 
virtual void NotifyConstructionCompleted ()
 Notifier called once the ObjectBase is fully constructed. More...
 

Detailed Description

Implements the Adaptive Modulation And Coding Scheme.

As proposed in 3GPP TSG-RAN WG1 R1-081483 Conveying MCS and TB size via PDCCH.

Definition at line 41 of file lte-amc.h.

Member Enumeration Documentation

◆ AmcModel

Types of AMC model.

Enumerator
PiroEW2010 

An AMC model based on Piro, G.; Grieco, L.A; Boggia, G.; Camarda, P., "A two-level scheduling algorithm for QoS support in the downlink of LTE cellular networks," Wireless Conference (EW), 2010 European, pp.246,253, 12-15 April 2010.

MiErrorModel 

An AMC model based on 10% of BER according to LteMiErrorModel.

Definition at line 54 of file lte-amc.h.

Constructor & Destructor Documentation

◆ LteAmc()

ns3::LteAmc::LteAmc ( )

Definition at line 459 of file lte-amc.cc.

◆ ~LteAmc()

ns3::LteAmc::~LteAmc ( )
override

Definition at line 463 of file lte-amc.cc.

Member Function Documentation

◆ CreateCqiFeedbacks()

std::vector< int > ns3::LteAmc::CreateCqiFeedbacks ( const SpectrumValue sinr,
uint8_t  rbgSize = 0 
)

Create a message with CQI feedback.

Parameters
sinrthe SpectrumValue vector of SINR for evaluating the CQI
rbgSizesize of RB group (in RBs) for evaluating subband/wideband CQI
Returns
a vector of CQI feedbacks

Definition at line 552 of file lte-amc.cc.

References ns3::SpectrumValue::ConstValuesBegin(), ns3::SpectrumValue::ConstValuesEnd(), NS_ASSERT_MSG, NS_LOG_DEBUG, NS_LOG_FUNCTION, NS_LOG_LOGIC, ns3::SpectralEfficiencyForCqi, ns3::SpectralEfficiencyForMcs, and ns3::TbStats_t::tbler.

+ Here is the call graph for this function:

◆ GetCqiFromSpectralEfficiency()

int ns3::LteAmc::GetCqiFromSpectralEfficiency ( double  s)

Get a proper CQI for the spectral efficiency value.

In order to assure a lower block error rate, the AMC chooses the lower CQI value for a given spectral efficiency

Parameters
sthe spectral efficiency
Returns
the CQI value

Definition at line 490 of file lte-amc.cc.

References NS_ASSERT_MSG, NS_LOG_FUNCTION, NS_LOG_LOGIC, and ns3::SpectralEfficiencyForCqi.

◆ GetDlTbSizeFromMcs()

int ns3::LteAmc::GetDlTbSizeFromMcs ( int  mcs,
int  nprb 
)

Get the Transport Block Size for a selected MCS and number of PRB (table 7.1.7.2.1-1 of 36.213)

Parameters
mcsthe MCS index
nprbthe no. of PRB
Returns
the Transport Block Size in bits

Definition at line 519 of file lte-amc.cc.

References ns3::McsToItbsDl, NS_ASSERT_MSG, NS_LOG_FUNCTION, and ns3::TransportBlockSizeTable.

◆ GetMcsFromCqi()

int ns3::LteAmc::GetMcsFromCqi ( int  cqi)

Get the Modulation and Coding Scheme for a CQI value.

Parameters
cqithe cqi value
Returns
the MCS value

Definition at line 504 of file lte-amc.cc.

References NS_ASSERT_MSG, NS_LOG_FUNCTION, NS_LOG_LOGIC, ns3::SpectralEfficiencyForCqi, and ns3::SpectralEfficiencyForMcs.

◆ GetSpectralEfficiencyFromCqi()

double ns3::LteAmc::GetSpectralEfficiencyFromCqi ( int  cqi)

Get the spectral efficiency value associated to the received CQI.

Parameters
cqithe cqi value
Returns
the spectral efficiency in (bit/s)/Hz

Definition at line 543 of file lte-amc.cc.

References NS_ASSERT_MSG, NS_LOG_FUNCTION, NS_LOG_LOGIC, and ns3::SpectralEfficiencyForCqi.

◆ GetTypeId()

TypeId ns3::LteAmc::GetTypeId ( void  )
static

Get the type ID.

Returns
the object TypeId

Definition at line 468 of file lte-amc.cc.

References ns3::MakeDoubleAccessor(), ns3::MakeEnumChecker(), and ns3::TypeId::SetParent().

+ Here is the call graph for this function:

◆ GetUlTbSizeFromMcs()

int ns3::LteAmc::GetUlTbSizeFromMcs ( int  mcs,
int  nprb 
)

Get the Transport Block Size for a selected MCS and number of PRB (table 8.6.1-1 of 36.213)

Parameters
mcsthe MCS index
nprbthe no. of PRB
Returns
the Transport Block Size in bits

Definition at line 531 of file lte-amc.cc.

References ns3::McsToItbsUl, NS_ASSERT_MSG, NS_LOG_FUNCTION, and ns3::TransportBlockSizeTable.

Member Data Documentation

◆ m_amcModel

AmcModel ns3::LteAmc::m_amcModel
private

The AmcModel attribute.

AMC model used to assign CQI.

Definition at line 134 of file lte-amc.h.

◆ m_ber

double ns3::LteAmc::m_ber
private

The Ber attribute.

The requested BER in assigning MCS (default is 0.00005).

Definition at line 127 of file lte-amc.h.


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