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

The LteAmc class implements the Adaptive Modulation And Coding Scheme as proposed in 3GPP TSG-RAN WG1 - R1-081483 http://www.3gpp.org/ftp/tsg_ran/WG1_RL1/TSGR1_52b/Docs/R1-081483.zip. More...

#include <lte-amc.h>

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

Public Types

enum  AmcModel { PiroEW2010, MiErrorModel }

Public Member Functions

 LteAmc ()
virtual ~LteAmc ()
std::vector< int > CreateCqiFeedbacks (const SpectrumValue &sinr, uint8_t rbgSize=0)
 Create a message with CQI feedback.
int GetCqiFromSpectralEfficiency (double s)
 Get a proper CQI for the spectrale efficiency value. In order to assure a fewer block error rate, the AMC chooses the lower CQI value for a given spectral efficiency.
int GetMcsFromCqi (int cqi)
 Get the Modulation anc Coding Scheme for a CQI value.
double GetSpectralEfficiencyFromCqi (int cqi)
 Get the spectral efficiency value associated to the received CQI.
int GetTbSizeFromMcs (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)
- Public Member Functions inherited from ns3::Object
 Object ()
virtual ~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 Start (void)
- Public Member Functions inherited from ns3::SimpleRefCount< Object, ObjectBase, ObjectDeleter >
 SimpleRefCount ()
 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
virtual ~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)
 This method returns the TypeId associated to ns3::LteAmc.

Private Attributes

AmcModel m_amcModel
double m_ber

Additional Inherited Members

- Protected Member Functions inherited from ns3::Object
 Object (const Object &o)
virtual void DoDispose (void)
virtual void DoStart (void)
virtual void NotifyNewAggregate (void)

Detailed Description

The LteAmc class implements the Adaptive Modulation And Coding Scheme as proposed in 3GPP TSG-RAN WG1 - R1-081483 http://www.3gpp.org/ftp/tsg_ran/WG1_RL1/TSGR1_52b/Docs/R1-081483.zip.

Note
All the methods of this class are static, so you'll never need to create and manage instances of this class.

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

Member Enumeration Documentation

Enumerator:
PiroEW2010 
MiErrorModel 

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

Constructor & Destructor Documentation

ns3::LteAmc::LteAmc ( )

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

ns3::LteAmc::~LteAmc ( )
virtual

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

Member Function Documentation

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

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

References ns3::SpectrumValue::ConstValuesBegin(), ns3::SpectrumValue::ConstValuesEnd(), GetCqiFromSpectralEfficiency(), ns3::LteMiErrorModel::GetTbError(), GetTbSizeFromMcs(), m_amcModel, m_ber, MiErrorModel, NS_ASSERT_MSG, NS_LOG_DEBUG, NS_LOG_FUNCTION, NS_LOG_LOGIC, PiroEW2010, ns3::SpectralEfficiencyForCqi, and ns3::SpectralEfficiencyForMcs.

Referenced by ns3::LteUePhy::CreateDlCqiFeedbackMessage().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

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

Get a proper CQI for the spectrale efficiency value. In order to assure a fewer 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 241 of file lte-amc.cc.

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

Referenced by CreateCqiFeedbacks(), ns3::RrFfMacScheduler::DoSchedUlTriggerReq(), and ns3::PfFfMacScheduler::DoSchedUlTriggerReq().

+ Here is the caller graph for this function:

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

Get the Modulation anc Coding Scheme for a CQI value.

Parameters
cqithe cqi value
Returns
the MCS value

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

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

Referenced by ns3::RrFfMacScheduler::DoSchedDlTriggerReq(), ns3::PfFfMacScheduler::DoSchedDlTriggerReq(), ns3::RrFfMacScheduler::DoSchedUlTriggerReq(), and ns3::PfFfMacScheduler::DoSchedUlTriggerReq().

+ Here is the caller graph for this function:

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 284 of file lte-amc.cc.

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

int ns3::LteAmc::GetTbSizeFromMcs ( 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 271 of file lte-amc.cc.

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

Referenced by CreateCqiFeedbacks(), ns3::RrFfMacScheduler::DoSchedDlTriggerReq(), ns3::PfFfMacScheduler::DoSchedDlTriggerReq(), ns3::RrFfMacScheduler::DoSchedUlTriggerReq(), and ns3::PfFfMacScheduler::DoSchedUlTriggerReq().

+ Here is the caller graph for this function:

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

This method returns the TypeId associated to ns3::LteAmc.

Attributes defined for this type:

  • Ber: The requested BER in assigning MCS (default is 0.00005).
    • Set with class: ns3::DoubleValue
    • Underlying type: double -1.79769e+308:1.79769e+308
    • Initial value: 5e-05
    • Flags: construct write read
  • AmcModel: AMC model used to assign CQI
    • Set with class: ns3::EnumValue
    • Underlying type: Vienna|PiroEW2010
    • Initial value: Vienna
    • Flags: construct write read

No TraceSources defined for this type.

Reimplemented from ns3::Object.

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

References m_amcModel, m_ber, ns3::MakeEnumAccessor(), ns3::MakeEnumChecker(), MiErrorModel, PiroEW2010, and ns3::TypeId::SetParent().

+ Here is the call graph for this function:

Member Data Documentation

AmcModel ns3::LteAmc::m_amcModel
private

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

Referenced by CreateCqiFeedbacks(), and GetTypeId().

double ns3::LteAmc::m_ber
private

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

Referenced by CreateCqiFeedbacks(), and GetTypeId().


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