#include <plc-channel.h>
Public Member Functions | |
PLC_ChannelTransferImpl (PLC_TxInterface *txInterface, PLC_RxInterface *rxInterface, Ptr< const SpectrumModel > sm, bool create_backbone_path=true) | |
Ptr< PLC_Graph > | GetGraph (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_TransferBase > | GetChannelTransferVector (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 |
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.
ns3::PLC_ChannelTransferImpl::PLC_ChannelTransferImpl | ( | PLC_TxInterface * | txInterface, |
PLC_RxInterface * | rxInterface, | ||
Ptr< const SpectrumModel > | sm, | ||
bool | create_backbone_path = true |
||
) |
Constructor
txInterface | Transmission source interface |
rxInterface | Transmission sink interface |
sm | Spectrum model |
create_backbone_path | If true the backbone path from txInterface to rxInterface will be calculated |
PLC_BackbonePath::iterator ns3::PLC_ChannelTransferImpl::BackbonePathBegin | ( | void | ) |
PLC_BackbonePath::iterator ns3::PLC_ChannelTransferImpl::BackbonePathEnd | ( | void | ) |
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
txPsd | Power spectral density of the transmitted waveform |
timeslot | Timeslot of propagation |
void ns3::PLC_ChannelTransferImpl::CreateBackbonePath | ( | void | ) |
Creates the backbone path
void ns3::PLC_ChannelTransferImpl::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 ns3::PLC_ChannelTransferImpl::GenerateAbsSqrCtf | ( | void | ) |
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
timeslot | Timeslot for timevariant CTF |
std::list< PLC_BackboneBranch * > ns3::PLC_ChannelTransferImpl::GetBackbonePath | ( | void | ) |
Get backbone path
Ptr< PLC_Graph > ns3::PLC_ChannelTransferImpl::GetGraph | ( | void | ) |
void ns3::PLC_ChannelTransferImpl::InitializeChannelTransferVector | ( | bool | set_time_variant = false | ) |
Initialize the channel transfer vector data structure
set_time_variant |
bool ns3::PLC_ChannelTransferImpl::IsTimeVariant | ( | void | ) |
bool ns3::PLC_ChannelTransferImpl::IsUp2Date | ( | void | ) | [inline] |
void ns3::PLC_ChannelTransferImpl::Lock | ( | void | ) | const [inline] |
Mutex lock and unlock
void ns3::PLC_ChannelTransferImpl::SetTimeVariant | ( | void | ) |
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
value |