ns3::SatWaveformConf Class Reference

This class implements the available waveform configurations of DVB-RCS2 return link. More...

#include "satellite-wave-form-conf.h"

+ Inheritance diagram for ns3::SatWaveformConf:
+ Collaboration diagram for ns3::SatWaveformConf:

Public Types

typedef std::vector< uint32_t > BurstLengthContainer_t
 Define BurstLengthContainer. More...
 

Public Member Functions

 SatWaveformConf ()
 Default constructor, which is not to be used. More...
 
 SatWaveformConf (std::string filePathName)
 Constructor. More...
 
virtual ~SatWaveformConf ()
 Destructor for SatWaveformConf. More...
 
void Dump (double carrierBandwidthInHz, double symbolRateInBaud) const
 Dump the contents of the waveform. More...
 
bool GetBestWaveformId (double cno, double symbolRateInBaud, uint32_t &wfId, double &cnoThreshold, uint32_t burstLength=SHORT_BURST_LENGTH) const
 Get the best waveform id based on UT's C/No and C/No thresholds. More...
 
uint32_t GetDefaultBurstLength () const
 Get default burst length. More...
 
uint32_t GetDefaultWaveformId () const
 Get default waveform id. More...
 
virtual TypeId GetInstanceTypeId (void) const
 Get the type ID of instance. More...
 
uint32_t GetMaxWfId ()
 Get maximum supported waveform id return Maximum waveform id. More...
 
uint32_t GetMinWfId ()
 Get minimum supported waveform id return Minimum waveform id. More...
 
SatEnums::SatModcod_t GetModCod (uint32_t wfId) const
 Get MODCOD enum corresponding to a waveform id. More...
 
bool GetMostRobustWaveformId (uint32_t &wfId, uint32_t burstLength=SHORT_BURST_LENGTH) const
 Get the most robust waveform id based payload of the waveform in bytes. More...
 
const BurstLengthContainer_tGetSupportedBurstLengths () const
 Get supported burst lengths. More...
 
Ptr< SatWaveformGetWaveform (uint32_t wfId) const
 Get the details of a certain waveform. More...
 
void InitializeEbNoRequirements (Ptr< SatLinkResultsRtn > linkResults)
 Initialize the Eb/No requirements of the waveforms based on the used return link results. More...
 
bool IsAcmEnabled () const
 Check if ACM is enabled. More...
 

Static Public Member Functions

static TypeId GetTypeId (void)
 Derived from Object. More...
 

Static Public Attributes

static const uint32_t LONG_BURST_LENGTH = 1616
 Static variable defining long burst length. More...
 
static const uint32_t SHORT_BURST_LENGTH = 536
 Static variable defining short burst length. More...
 

Private Member Functions

SatEnums::SatModcod_t ConvertToModCod (uint32_t modulatedBits, uint32_t codingRateNumerator, uint32_t codingRateDenominator) const
 Convert modulated bits and coding rate to a MODCOD enum. More...
 
void ReadFromFile (std::string filePathName)
 Read the waveform table from a file. More...
 

Private Attributes

bool m_acmEnabled
 Flag to indicate whether ACM is enabled or disabled. More...
 
SatEnums::SatWaveFormBurstLength_t m_burstLength
 Burst length used. More...
 
uint32_t m_defaultWfId
 Default waveform id. More...
 
uint32_t m_maxWfId
 
uint32_t m_minWfId
 Minimum and maximum waveform ids. More...
 
BurstLengthContainer_t m_supportedBurstLengthsInSymbols
 Container to store supported burst lengths. More...
 
double m_targetBLER
 Block error rate target for the waveforms. More...
 
std::map< uint32_t, Ptr< SatWaveform > > m_waveforms
 Container of the waveforms. More...
 

Detailed Description

This class implements the available waveform configurations of DVB-RCS2 return link.

Currently the waveforms 3-22 are in use: 3-12 with shorter burst duration and 13-22 with longer burst duration.

See also
ETSI EN 301 545-2 Digital Video Broadcasting (DVB); Second Generation Interactive Satellite System (DVB-RCS2); Part 2: Lower Layers for Satellite Standard
  • Annex A Reference waveforms

Definition at line 209 of file satellite-wave-form-conf.h.

Member Typedef Documentation

◆ BurstLengthContainer_t

typedef std::vector<uint32_t> ns3::SatWaveformConf::BurstLengthContainer_t

Define BurstLengthContainer.

Definition at line 215 of file satellite-wave-form-conf.h.

Constructor & Destructor Documentation

◆ SatWaveformConf() [1/2]

ns3::SatWaveformConf::SatWaveformConf ( )

Default constructor, which is not to be used.

Definition at line 182 of file satellite-wave-form-conf.cc.

◆ SatWaveformConf() [2/2]

ns3::SatWaveformConf::SatWaveformConf ( std::string  filePathName)

Constructor.

Parameters
filePathNamePath and filename of the waveform configurations

Definition at line 195 of file satellite-wave-form-conf.cc.

References ns3::SatEnums::LONG_BURST, LONG_BURST_LENGTH, m_burstLength, m_supportedBurstLengthsInSymbols, ReadFromFile(), ns3::SatEnums::SHORT_AND_LONG_BURST, ns3::SatEnums::SHORT_BURST, and SHORT_BURST_LENGTH.

+ Here is the call graph for this function:

◆ ~SatWaveformConf()

ns3::SatWaveformConf::~SatWaveformConf ( )
virtual

Destructor for SatWaveformConf.

Definition at line 268 of file satellite-wave-form-conf.cc.

Member Function Documentation

◆ ConvertToModCod()

SatEnums::SatModcod_t ns3::SatWaveformConf::ConvertToModCod ( uint32_t  modulatedBits,
uint32_t  codingRateNumerator,
uint32_t  codingRateDenominator 
) const
private

Convert modulated bits and coding rate to a MODCOD enum.

Parameters
modulatedBitsModulated bits of the MODCOD
codingRateNumeratorCoding rate numerator of the MODCOD
codingRateDenominatorCoding rate denominator of the MODCOD
Returns
MODCOD enum

Definition at line 530 of file satellite-wave-form-conf.cc.

References ns3::SatEnums::SAT_MODCOD_16QAM_3_TO_4, ns3::SatEnums::SAT_MODCOD_16QAM_5_TO_6, ns3::SatEnums::SAT_MODCOD_8PSK_2_TO_3, ns3::SatEnums::SAT_MODCOD_8PSK_3_TO_4, ns3::SatEnums::SAT_MODCOD_8PSK_5_TO_6, ns3::SatEnums::SAT_MODCOD_BPSK_1_TO_3, ns3::SatEnums::SAT_MODCOD_QPSK_1_TO_2, ns3::SatEnums::SAT_MODCOD_QPSK_1_TO_3, ns3::SatEnums::SAT_MODCOD_QPSK_2_TO_3, ns3::SatEnums::SAT_MODCOD_QPSK_3_TO_4, ns3::SatEnums::SAT_MODCOD_QPSK_5_TO_6, and ns3::SatEnums::SAT_NONVALID_MODCOD.

Referenced by ReadFromFile().

+ Here is the caller graph for this function:

◆ Dump()

void ns3::SatWaveformConf::Dump ( double  carrierBandwidthInHz,
double  symbolRateInBaud 
) const

Dump the contents of the waveform.

The total carrier bandwidth and symbol rate are needed for spectral efficiency calculation.

Parameters
carrierBandwidthInHzTotal carrier bandwidth including e.g. guard band.
symbolRateInBaudEffective symbol rate where guard band and roll-off has been deduced.

Definition at line 492 of file satellite-wave-form-conf.cc.

References m_waveforms.

◆ GetBestWaveformId()

bool ns3::SatWaveformConf::GetBestWaveformId ( double  cno,
double  symbolRateInBaud,
uint32_t &  wfId,
double &  cnoThreshold,
uint32_t  burstLength = SHORT_BURST_LENGTH 
) const

Get the best waveform id based on UT's C/No and C/No thresholds.

Parameters
cnoUTs estimated C/No
symbolRateInBaudFrame's symbol rate used for waveform C/No requirement calculation
wfIdWaveform id variable used for passing the best waveform id to the client
cnoThresholdvariable used for passing the C/No threshold of the selected waveform to the client
burstLengthRequested burst length in symbols
Returns
boolean value presenting whether or not a suitable waveform was found.

Definition at line 417 of file satellite-wave-form-conf.cc.

References ns3::SatUtils::LinearToDb(), m_acmEnabled, m_defaultWfId, and m_waveforms.

+ Here is the call graph for this function:

◆ GetDefaultBurstLength()

uint32_t ns3::SatWaveformConf::GetDefaultBurstLength ( ) const
inline

Get default burst length.

Returns
Configured default burst length.

Definition at line 283 of file satellite-wave-form-conf.h.

References GetWaveform(), and m_defaultWfId.

+ Here is the call graph for this function:

◆ GetDefaultWaveformId()

uint32_t ns3::SatWaveformConf::GetDefaultWaveformId ( ) const

Get default waveform id.

Returns
SatWaveform id of the configuration holding all the details of the default waveform

Definition at line 403 of file satellite-wave-form-conf.cc.

References m_defaultWfId, m_maxWfId, and m_minWfId.

◆ GetInstanceTypeId()

TypeId ns3::SatWaveformConf::GetInstanceTypeId ( void  ) const
virtual

Get the type ID of instance.

Returns
the object TypeId

Definition at line 261 of file satellite-wave-form-conf.cc.

References GetTypeId().

+ Here is the call graph for this function:

◆ GetMaxWfId()

uint32_t ns3::SatWaveformConf::GetMaxWfId ( )
inline

Get maximum supported waveform id return Maximum waveform id.

Definition at line 341 of file satellite-wave-form-conf.h.

References m_maxWfId.

◆ GetMinWfId()

uint32_t ns3::SatWaveformConf::GetMinWfId ( )
inline

Get minimum supported waveform id return Minimum waveform id.

Definition at line 332 of file satellite-wave-form-conf.h.

References m_minWfId.

◆ GetModCod()

SatEnums::SatModcod_t ns3::SatWaveformConf::GetModCod ( uint32_t  wfId) const

Get MODCOD enum corresponding to a waveform id.

Parameters
wfIdWaveform id
Returns
MODCOD enum

Definition at line 506 of file satellite-wave-form-conf.cc.

References m_maxWfId, m_minWfId, m_waveforms, and ns3::SatEnums::SAT_NONVALID_MODCOD.

◆ GetMostRobustWaveformId()

bool ns3::SatWaveformConf::GetMostRobustWaveformId ( uint32_t &  wfId,
uint32_t  burstLength = SHORT_BURST_LENGTH 
) const

Get the most robust waveform id based payload of the waveform in bytes.

Parameters
wfIdWaveform id variable used for passing the best waveform id to the client
burstLengthRequested burst length in symbols
Returns
boolean value presenting whether or not a suitable waveform was found.

Definition at line 463 of file satellite-wave-form-conf.cc.

References m_waveforms.

◆ GetSupportedBurstLengths()

const BurstLengthContainer_t& ns3::SatWaveformConf::GetSupportedBurstLengths ( ) const
inline

Get supported burst lengths.

Returns
Supported burst lengths.

Definition at line 292 of file satellite-wave-form-conf.h.

References m_supportedBurstLengthsInSymbols.

◆ GetTypeId()

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

Derived from Object.

Definition at line 227 of file satellite-wave-form-conf.cc.

References ns3::SatEnums::LONG_BURST, m_acmEnabled, m_burstLength, m_defaultWfId, m_targetBLER, ns3::SatEnums::SHORT_AND_LONG_BURST, and ns3::SatEnums::SHORT_BURST.

Referenced by GetInstanceTypeId().

+ Here is the caller graph for this function:

◆ GetWaveform()

Ptr< SatWaveform > ns3::SatWaveformConf::GetWaveform ( uint32_t  wfId) const

Get the details of a certain waveform.

Parameters
wfIdWaveform id
Returns
SatWaveform holding all the details of a certain waveform

Definition at line 390 of file satellite-wave-form-conf.cc.

References m_maxWfId, m_minWfId, and m_waveforms.

Referenced by GetDefaultBurstLength().

+ Here is the caller graph for this function:

◆ InitializeEbNoRequirements()

void ns3::SatWaveformConf::InitializeEbNoRequirements ( Ptr< SatLinkResultsRtn linkResults)

Initialize the Eb/No requirements of the waveforms based on the used return link results.

Parameters
linkResultsPointer to return link results

In return link the link results are in Eb/No format. Since, the C/No is dependent on the symbol rate, we cannot store the requirement in C/No format, but in Eb/No. Eb/No = (Es/log2M)/No = (Es/No)*(1/log2M) = C/N * (1/log2M) = C/No * (1/fs) * (1/log2M)

Definition at line 371 of file satellite-wave-form-conf.cc.

References ns3::SatUtils::DbToLinear(), m_targetBLER, and m_waveforms.

+ Here is the call graph for this function:

◆ IsAcmEnabled()

bool ns3::SatWaveformConf::IsAcmEnabled ( ) const
inline

Check if ACM is enabled.

Definition at line 247 of file satellite-wave-form-conf.h.

References m_acmEnabled.

◆ ReadFromFile()

void ns3::SatWaveformConf::ReadFromFile ( std::string  filePathName)
private

Read the waveform table from a file.

Parameters
filePathNamepath and file name

Definition at line 274 of file satellite-wave-form-conf.cc.

References ConvertToModCod(), m_maxWfId, m_minWfId, and m_waveforms.

Referenced by SatWaveformConf().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

Member Data Documentation

◆ LONG_BURST_LENGTH

const uint32_t ns3::SatWaveformConf::LONG_BURST_LENGTH = 1616
static

Static variable defining long burst length.

Definition at line 354 of file satellite-wave-form-conf.h.

Referenced by SatWaveformConf().

◆ m_acmEnabled

bool ns3::SatWaveformConf::m_acmEnabled
private

Flag to indicate whether ACM is enabled or disabled.

If ACM is disabled, the m_defaultWfId is used.

Definition at line 389 of file satellite-wave-form-conf.h.

Referenced by GetBestWaveformId(), GetTypeId(), and IsAcmEnabled().

◆ m_burstLength

SatEnums::SatWaveFormBurstLength_t ns3::SatWaveformConf::m_burstLength
private

Burst length used.

Definition at line 406 of file satellite-wave-form-conf.h.

Referenced by SatWaveformConf(), and GetTypeId().

◆ m_defaultWfId

uint32_t ns3::SatWaveformConf::m_defaultWfId
private

Default waveform id.

Definition at line 394 of file satellite-wave-form-conf.h.

Referenced by GetBestWaveformId(), GetDefaultBurstLength(), GetDefaultWaveformId(), and GetTypeId().

◆ m_maxWfId

uint32_t ns3::SatWaveformConf::m_maxWfId
private

◆ m_minWfId

uint32_t ns3::SatWaveformConf::m_minWfId
private

Minimum and maximum waveform ids.

Note, that currently it is assumed that all the wfs between min and max are valid!

Definition at line 400 of file satellite-wave-form-conf.h.

Referenced by GetDefaultWaveformId(), GetMinWfId(), GetModCod(), GetWaveform(), and ReadFromFile().

◆ m_supportedBurstLengthsInSymbols

BurstLengthContainer_t ns3::SatWaveformConf::m_supportedBurstLengthsInSymbols
private

Container to store supported burst lengths.

Definition at line 411 of file satellite-wave-form-conf.h.

Referenced by SatWaveformConf(), and GetSupportedBurstLengths().

◆ m_targetBLER

double ns3::SatWaveformConf::m_targetBLER
private

Block error rate target for the waveforms.

Default value set as an attribute to 10^(-5).

Definition at line 383 of file satellite-wave-form-conf.h.

Referenced by GetTypeId(), and InitializeEbNoRequirements().

◆ m_waveforms

std::map<uint32_t, Ptr<SatWaveform> > ns3::SatWaveformConf::m_waveforms
private

◆ SHORT_BURST_LENGTH

const uint32_t ns3::SatWaveformConf::SHORT_BURST_LENGTH = 536
static

Static variable defining short burst length.

Definition at line 349 of file satellite-wave-form-conf.h.

Referenced by ns3::SatFrameAllocator::SatFrameAllocator(), SatWaveformConf(), and ns3::SatFrameAllocator::GetBestWaveform().


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