ns-3 PLC model
 All Classes Functions Variables Enumerations
Public Member Functions | Static Public Member Functions | Friends
ns3::PLC_ChannelTransferImpl Class Reference

#include <plc-channel.h>

List of all members.

Public Member Functions

 PLC_ChannelTransferImpl (PLC_TxInterface *txInterface, PLC_RxInterface *rxInterface, Ptr< const SpectrumModel > sm, bool create_backbone_path=true)
Ptr< PLC_GraphGetGraph (void)
bool IsTimeVariant (void)
void SetTimeVariant (void)
void UpdateImmediately (bool value)
bool IsUp2Date (void)
Time GetDirectPathPropagationDelay (void)
std::list< PLC_BackboneBranch * > GetBackbonePath (void)
PLC_BackbonePath::iterator BackbonePathBegin (void)
PLC_BackbonePath::iterator BackbonePathEnd (void)
void CreateBackbonePath (void)
void DiscoverBackboneBranches (void)
 Triggers a parallel depth first search onto the PLC graph originating from each node of the backbone path. If an outlet is found while traversing the graph a registration with the backbone node is done in order to get informed when the outlet impedance changes during the simulation and the channel transfer function needs to be recalculated.
void InitializeChannelTransferVector (bool set_time_variant=false)
void CalculateChannelTransferVector (void)
Ptr< PLC_TransferBaseGetChannelTransferVector (void)
Ptr< SpectrumValue > GetAbsSqrCtf (unsigned int timeslot=0)
void GenerateAbsSqrCtf (void)
Ptr< SpectrumValue > CalculateRxPowerSpectralDensity (Ptr< const SpectrumValue > txPsd, Timeslot timeslot=0)
 Calculate the power spectral density seen at the receiver's interface.
void Lock (void) const
void Unlock (void) const

Static Public Member Functions

static TypeId GetTypeId (void)

Friends

class PLC_TxInterface

Detailed Description

PLC_ChannelTransferImpl is owner of the channel transfer function of a (tx,rx)-tupel. Besides it caches the square values of the absolute channel transfer function.


Constructor & Destructor Documentation

ns3::PLC_ChannelTransferImpl::PLC_ChannelTransferImpl ( PLC_TxInterface txInterface,
PLC_RxInterface rxInterface,
Ptr< const SpectrumModel >  sm,
bool  create_backbone_path = true 
)

Constructor

Parameters:
txInterfaceTransmission source interface
rxInterfaceTransmission sink interface
smSpectrum model
create_backbone_pathIf true the backbone path from txInterface to rxInterface will be calculated

Member Function Documentation

PLC_BackbonePath::iterator ns3::PLC_ChannelTransferImpl::BackbonePathBegin ( void  )
Returns:
Iterator to the head of the backbone path list
PLC_BackbonePath::iterator ns3::PLC_ChannelTransferImpl::BackbonePathEnd ( void  )
Returns:
Iterator to the tail of the backbone path list

Triggers the channel calculation

Ptr< SpectrumValue > ns3::PLC_ChannelTransferImpl::CalculateRxPowerSpectralDensity ( Ptr< const SpectrumValue >  txPsd,
Timeslot  timeslot = 0 
)

Calculate the power spectral density seen at the receiver's interface.

rxPsd = txPsd*|H|^2

Parameters:
txPsdPower spectral density of the transmitted waveform
timeslotTimeslot of propagation
Returns:
Received power spectral density

Creates the backbone path

Triggers a parallel depth first search onto the PLC graph originating from each node of the backbone path. If an outlet is found while traversing the graph a registration with the backbone node is done in order to get informed when the outlet impedance changes during the simulation and the channel transfer function needs to be recalculated.

Warning:
Should be called after CreateBackbonePath() and before InitializeChannelTransferVector()

Create square of the absolute channel transfer function

Ptr< SpectrumValue > ns3::PLC_ChannelTransferImpl::GetAbsSqrCtf ( unsigned int  timeslot = 0)

Get magnitude square of the channel transfer function. Triggers GetAbsSqrCtf() if not up to date

Parameters:
timeslotTimeslot for timevariant CTF
Returns:
|H(f)|²

Get backbone path

Returns:
List of backbone nodes lying between txInterface and rxInterface; In case of a direct connection the function returns an empty list
Returns:
Updated channel transfer vector
Returns:
An estimation for the signal's propagation delay on the direct path
Returns:
PLC graph of the interfaces
void ns3::PLC_ChannelTransferImpl::InitializeChannelTransferVector ( bool  set_time_variant = false)

Initialize the channel transfer vector data structure

Parameters:
set_time_variant
Returns:
True if channel transfer function is time variant, false otherwise
bool ns3::PLC_ChannelTransferImpl::IsUp2Date ( void  ) [inline]
Returns:
True if the channel transfer function is up to date
void ns3::PLC_ChannelTransferImpl::Lock ( void  ) const [inline]

Mutex lock and unlock

If channel transfer vector is not time variant it will be converted to a time variant value. Called if an PLC_EdgeTransferUnit of the backbone path becomes time variant.

void ns3::PLC_ChannelTransferImpl::UpdateImmediately ( bool  value) [inline]

Set to true if the channel transfer function should be recalculated immediately after a change in the network, e.g. for the time correct tracing of the channel transfer function's evolution. If false the channel transfer function will only be updated at the next point in time when needed

Parameters:
value

The documentation for this class was generated from the following files:
 All Classes Functions Variables Enumerations