Inherited the functionality of ground station SatPhyRxCarriers and extended it with CRDSA functionality. More...
#include "satellite-phy-rx-carrier-per-window.h"
Classes | |
struct | essaPacketRxParams_s |
Struct for storing the E-SSA packet specific Rx parameters. More... | |
Public Types | |
typedef void(* | WindowLoadTraceCallback) (double windowLoad) |
Callback signature for WindowLoadTrace trace source. More... | |
Public Types inherited from ns3::SatPhyRxCarrier | |
enum | CarrierType { BASE , DEDICATED_ACCESS , RA_SLOTTED_ALOHA , RA_CRDSA , RA_ESSA } |
Possible carrier types. More... | |
typedef void(* | LinkBudgetTraceCallback) (Ptr< SatSignalParameters > rxParams, Mac48Address receiverAddress, Mac48Address destinationAddress, double interference, double sinr) |
Callback signature for LinkBudgetTrace trace source. More... | |
typedef void(* | LinkSinrTraceCallback) (double sinr, const Address &utAddress) |
Callback signature for LinkSinrTrace trace source. More... | |
typedef void(* | PhyRxCollisionCallback) (uint32_t nPackets, const Address &utAddress, bool isCollided) |
Common callback signature for trace sources related to packets reception by PHY and its collision. More... | |
typedef void(* | PhyRxErrorCallback) (uint32_t nPackets, const Address &utAddress, bool isError) |
Common callback signature for trace sources related to packets reception by PHY and its error. More... | |
typedef void(* | RxPowerTraceCallback) (double rxPower, const Address &utAddress) |
Callback signature for RxPowerTrace trace source. More... | |
enum | State { IDLE , RX } |
Enum for PHY states. More... | |
Public Member Functions | |
SatPhyRxCarrierPerWindow (uint32_t carrierId, Ptr< SatPhyRxCarrierConf > carrierConf, Ptr< SatWaveformConf > waveformConf, bool randomAccessEnabled) | |
Constructor. More... | |
virtual | ~SatPhyRxCarrierPerWindow () |
Destructor. More... | |
void | BeginEndScheduling () |
Function for initializing the window end scheduling. More... | |
virtual CarrierType | GetCarrierType () |
Method for querying the type of the carrier. More... | |
Public Member Functions inherited from ns3::SatPhyRxCarrierPerSlot | |
SatPhyRxCarrierPerSlot (uint32_t carrierId, Ptr< SatPhyRxCarrierConf > carrierConf, Ptr< SatWaveformConf > waveformConf, bool randomAccessEnabled) | |
Constructor. More... | |
virtual | ~SatPhyRxCarrierPerSlot () |
Destructor. More... | |
uint8_t | GetRandomAccessAllocationChannelId () const |
Function for getting the random access allocation channel ID. More... | |
void | SetRandomAccessAllocationChannelId (uint8_t randomAccessAllocationChannelId) |
Function for setting the random access allocation channel ID. More... | |
Public Member Functions inherited from ns3::SatPhyRxCarrier | |
SatPhyRxCarrier (uint32_t carrierId, Ptr< SatPhyRxCarrierConf > carrierConf, Ptr< SatWaveformConf > waveformConf, bool isRandomAccessEnabled) | |
Constructor. More... | |
virtual | ~SatPhyRxCarrier () |
Destructor. More... | |
uint32_t | GetBeamId () |
Get ID the ID of the beam this carrier is attached to. More... | |
double | GetRxTemperatureK () |
Method for querying the temperature of the carrier. More... | |
uint32_t | GetSatId () |
Get ID the ID of the satellite this carrier is attached to. More... | |
void | SetAverageNormalizedOfferedLoadCallback (SatPhyRx::AverageNormalizedOfferedLoadCallback callback) |
Function for setting the AverageNormalizedOfferedLoadCallback callback. More... | |
void | SetBeamId (uint32_t beamId) |
Function for setting the beam id for all the transmissions from this SatPhyTx. More... | |
void | SetCnoCb (SatPhyRx::CnoCallback cb) |
Function for settign the C/NO callback. More... | |
void | SetNodeInfo (const Ptr< SatNodeInfo > nodeInfo) |
Function for setting the node info class. More... | |
void | SetPhy (Ptr< SatPhy > phy) |
Function for setting the SatPhy module. More... | |
void | SetReceiveCb (SatPhyRx::ReceiveCallback cb) |
Function for setting the receive callback. More... | |
void | SetSatId (uint32_t satId) |
Function for setting the satellite id for all the transmissions from this SatPhyTx. More... | |
virtual bool | StartRx (Ptr< SatSignalParameters > rxParams) |
Function for starting packet reception from the SatChannel. More... | |
Static Public Member Functions | |
static TypeId | GetTypeId (void) |
Get the TypeId of the class. More... | |
Static Public Member Functions inherited from ns3::SatPhyRxCarrierPerSlot | |
static TypeId | GetTypeId (void) |
Get the TypeId of the class. More... | |
Static Public Member Functions inherited from ns3::SatPhyRxCarrier | |
static TypeId | GetTypeId (void) |
Function for gettign the NS-3 type ID. More... | |
Protected Member Functions | |
virtual void | DoDispose () |
Dispose implementation. More... | |
virtual void | ReceiveSlot (SatPhyRxCarrier::rxParams_s packetRxParams, const uint32_t nPackets) |
Receive a slot. More... | |
Protected Member Functions inherited from ns3::SatPhyRxCarrierPerSlot | |
double | CalculateAverageNormalizedOfferedRandomAccessLoad () |
Function for calculating the average normalized offered random access load. More... | |
virtual Ptr< SatInterference::InterferenceChangeEvent > | CreateInterference (Ptr< SatSignalParameters > rxParams, Address rxAddress) |
Create an interference event based on Rx parameters and address. More... | |
virtual void | EndRxData (uint32_t key) |
Function for ending the packet reception from the SatChannel. More... | |
SatPhyRxCarrierConf::RandomAccessCollisionModel | GetRandomAccessCollisionModel () const |
Get the random access collision model of the carrier. More... | |
bool | IsRandomAccessDynamicLoadControlEnabled () const |
Check if random access dynamic load control is enabled. More... | |
void | SaveMeasuredRandomAccessLoad (double measuredRandomAccessLoad) |
Function for saving the measured random access load. More... | |
Protected Member Functions inherited from ns3::SatPhyRxCarrier | |
double | CalculateCompositeSinr (double sinr1, double sinr2) |
Function for calculating the composite SINR. More... | |
double | CalculateSinr (double rxPowerW, double ifPowerW, double rxNoisePowerW, double rxAciIfPowerW, double rxExtNoisePowerW, double otherInterference) |
Function for calculating the SINR. More... | |
double | CalculateSinr (double sinr, double otherInterference) |
Calculate final SINR with PHY specific parameters and given calculated SINR. More... | |
void | ChangeState (State newState) |
Function for changing the receiver state. More... | |
bool | CheckAgainstLinkResults (double cSinr, Ptr< SatSignalParameters > rxParams) |
Function for checking the SINR against the link results. More... | |
void | CheckRxStateSanity () |
Function for checking the Rx state sanity. More... | |
void | DecreaseNumOfRxState (SatEnums::PacketType_t packetType) |
Function for decreasing the number of ongoing transmissions. More... | |
void | DoCompositeSinrOutputTrace (double cSinr) |
Function for composite SINR output tracing. More... | |
virtual void | DoCreateInterferenceEliminationModel (Ptr< SatPhyRxCarrierConf > carrierConf, uint32_t carrierId, Ptr< SatWaveformConf > waveformConf) |
Create an interference cancelation model for this carrier. More... | |
virtual void | DoCreateInterferenceModel (Ptr< SatPhyRxCarrierConf > carrierConf, uint32_t carrierId, double rxBandwidthHz) |
Create an interference model for this carrier. More... | |
uint32_t | GetCarrierId () const |
Get the ID of the carrier. More... | |
Ptr< SatChannelEstimationErrorContainer > | GetChannelEstimationErrorContainer () |
Get a pointer to the channel estimation error container of the carrier. More... | |
virtual SatEnums::ChannelType_t | GetChannelType () |
Get the channel type. More... | |
virtual const bool | GetDefaultReceiveMode () |
Get the default receive mode for the carrier. More... | |
Ptr< SatInterferenceElimination > | GetInterferenceEliminationModel () |
Get pointer to the current interference elimination model. More... | |
Ptr< SatInterference > | GetInterferenceModel () |
Get pointer to the current interference model. More... | |
virtual SatEnums::RegenerationMode_t | GetLinkRegenerationMode () |
Get the link regeneration mode. More... | |
Ptr< SatLinkResults > | GetLinkResults () |
Get pointer to the link results given by the carrier creation configuration. More... | |
Ptr< SatNodeInfo > | GetNodeInfo () |
Get the satellite node info. More... | |
Mac48Address | GetOwnAddress () |
Get the MAC address of the carrier. More... | |
std::pair< bool, SatPhyRxCarrier::rxParams_s > | GetReceiveParams (Ptr< SatSignalParameters > rxParams) |
Rx parameter storage methods. More... | |
State | GetState () |
Get the state of the carrier. More... | |
rxParams_s | GetStoredRxParams (uint32_t key) |
Get stored rxParams under a key. More... | |
double | GetUniformRandomValue (double min, double max) |
A helper method for getting values form a uniform random variable in child classes. More... | |
Ptr< SatWaveformConf > | GetWaveformConf () |
Get pointer to the waveform configuration. More... | |
double | GetWorstSinr (double sinr1, double sinr2) |
Function for calculating the worst sinr between uplink and downlink. More... | |
void | IncreaseNumOfRxState (SatEnums::PacketType_t packetType) |
Function for increasing the number of ongoing transmissions. More... | |
bool | IsCompositeSinrOutputTraceEnabled () const |
Check if composite SINR output trace is enabled. More... | |
bool | IsReceivingDedicatedAccess () |
Check if the carrier is receiving a dedicated access packet. More... | |
void | RemoveStoredRxParams (uint32_t key) |
Remove stored rxParams under a key. More... | |
void | SetChannelType (SatEnums::ChannelType_t channelType) |
Set the channel type for the carrier. More... | |
void | SetLinkRegenerationMode (SatEnums::RegenerationMode_t linkRegenerationMode) |
Set the link regeneration mode. More... | |
void | StoreRxParams (uint32_t key, rxParams_s rxParams) |
Store rxParams under a key. More... | |
Protected Attributes | |
TracedCallback< uint32_t, const Address &, bool > | m_essaRxCollisionTrace |
EssaRxError trace source. More... | |
TracedCallback< uint32_t, const Address &, bool > | m_essaRxErrorTrace |
EssaRxError trace source. More... | |
TracedCallback< double > | m_windowLoadTrace |
WindowLoad trace source. More... | |
Protected Attributes inherited from ns3::SatPhyRxCarrierPerSlot | |
uint32_t | m_randomAccessBitsInFrame |
The number of random access bits in current frame. More... | |
TracedCallback< uint32_t, const Address &, bool > | m_slottedAlohaRxCollisionTrace |
SlottedAlohaRxCollision trace source. More... | |
TracedCallback< uint32_t, const Address &, bool > | m_slottedAlohaRxErrorTrace |
SlottedAlohaRxError trace source. More... | |
Protected Attributes inherited from ns3::SatPhyRxCarrier | |
SatPhyRxCarrierConf::AdditionalInterferenceCallback | m_additionalInterferenceCallback |
Callback to get additional interference. More... | |
SatPhy::AverageNormalizedOfferedLoadCallback | m_avgNormalizedOfferedLoadCallback |
Average normalized offered load callback. More... | |
SatPhy::CnoCallback | m_cnoCallback |
The upper layer C/N0 receive callback. More... | |
TracedCallback< uint32_t, const Address & > | m_daRxCarrierIdTrace |
TracedCallback< uint32_t, const Address &, bool > | m_daRxTrace |
DaRx trace source. More... | |
TracedCallback< Ptr< SatSignalParameters >, Mac48Address, Mac48Address, double, double > | m_linkBudgetTrace |
The trace source on packet receptiong. More... | |
SatEnums::RegenerationMode_t | m_linkRegenerationMode |
Link regeneration mode. More... | |
TracedCallback< double, const Address & > | m_linkSinrTrace |
A callback for link specific SINR in dB. More... | |
const bool | m_randomAccessEnabled |
Is random access enabled for this carrier. More... | |
double | m_rxAciIfPowerW |
RX Adjacent channel interference. More... | |
double | m_rxBandwidthHz |
RX Bandwidth in Hz. More... | |
SatPhyRx::ReceiveCallback | m_rxCallback |
The upper layer package receive callback. More... | |
double | m_rxExtNoisePowerW |
External noise power system RX noise. More... | |
double | m_rxNoisePowerW |
RX noise. More... | |
TracedCallback< double, const Address & > | m_rxPowerTrace |
A callback for received signal power in dBW. More... | |
double | m_rxTemperatureK |
RX noise temperature in K. More... | |
TracedCallback< double, const Address & > | m_sinrTrace |
A callback for transmission composite SINR at UT (BBFrame) or GW (time slot). More... | |
Private Types | |
typedef std::list< SatPhyRxCarrierPerWindow::essaPacketRxParams_s > | packetList_t |
Private Member Functions | |
void | AddEssaPacket (SatPhyRxCarrierPerWindow::essaPacketRxParams_s essaPacketParams) |
Function for storing the received E-SSA packets. More... | |
double | CalculateNormalizedOfferedRandomAccessLoad () |
Function for calculating the normalized offered random access load. More... | |
void | CalculatePacketInterferenceVectors (SatPhyRxCarrierPerWindow::essaPacketRxParams_s &packet) |
Calculate gamma and Interference vectors for a single packet. More... | |
void | CleanOldPackets (const Time windowStartTime) |
Remove old packets from packet container. More... | |
void | DoSic (packetList_t::iterator processedPacket, std::pair< packetList_t::iterator, packetList_t::iterator > windowBounds) |
Perform SIC for a given decoded packet. More... | |
void | DoWindowEnd () |
Function called when a window ends. More... | |
void | EliminatePreviousInterferences (SatPhyRxCarrierPerWindow::essaPacketRxParams_s &packet) |
Calculate gamma and Interference vectors for a single packet. More... | |
double | GetEffectiveSnir (const SatPhyRxCarrierPerWindow::essaPacketRxParams_s &packet) |
Get the effective SNIR of the packet using the Mutual Information function. More... | |
packetList_t::iterator | GetHighestSnirPacket (const std::pair< packetList_t::iterator, packetList_t::iterator > windowBounds) |
Get the packet with the highst SNIR on the list. More... | |
std::pair< double, double > | GetNormalizedPacketInterferenceTime (const SatPhyRxCarrierPerWindow::essaPacketRxParams_s &packet, const SatPhyRxCarrierPerWindow::essaPacketRxParams_s &interferingPacket) |
Get the normalized start and end time between two interfering packets. More... | |
std::pair< packetList_t::iterator, packetList_t::iterator > | GetWindowBounds (Time startTime, Time endTime) |
Get a pair of iterators, pointing to the first element in the window, and to the first after the window. More... | |
void | MeasureRandomAccessLoad () |
Function for measuring the random access load. More... | |
bool | PacketCanBeDetected (const SatPhyRxCarrierPerWindow::essaPacketRxParams_s &packet) |
Function for processing a window. More... | |
void | ProcessWindow (Time startTime, Time endTime) |
Function for processing a window. More... | |
Private Attributes | |
double | m_detectionThreshold |
SNIR detection threshold for a packet (in magnitude) More... | |
packetList_t | m_essaPacketContainer |
ESSA packet container. More... | |
Time | m_firstWindow |
The time of the first window. More... | |
uint32_t | m_payloadBytesInWindow |
The number of payload bytes in the window. More... | |
uint32_t | m_sicEnabled |
Enable Sic. More... | |
uint32_t | m_spreadingFactor |
The spreading factor of packets. More... | |
Time | m_windowDelay |
The delay before processing a sliding window. More... | |
Time | m_windowDuration |
The duration of the sliding window. More... | |
bool | m_windowEndSchedulingInitialized |
Has the window end scheduling been initialized. More... | |
uint32_t | m_windowSicIterations |
The number of SIC iterations performed on each window. More... | |
Time | m_windowStep |
The step of the sliding window. More... | |
Inherited the functionality of ground station SatPhyRxCarriers and extended it with CRDSA functionality.
Definition at line 54 of file satellite-phy-rx-carrier-per-window.h.
|
private |
Definition at line 165 of file satellite-phy-rx-carrier-per-window.h.
typedef void(* ns3::SatPhyRxCarrierPerWindow::WindowLoadTraceCallback) (double windowLoad) |
Callback signature for WindowLoadTrace
trace source.
Definition at line 116 of file satellite-phy-rx-carrier-per-window.h.
ns3::SatPhyRxCarrierPerWindow::SatPhyRxCarrierPerWindow | ( | uint32_t | carrierId, |
Ptr< SatPhyRxCarrierConf > | carrierConf, | ||
Ptr< SatWaveformConf > | waveformConf, | ||
bool | randomAccessEnabled | ||
) |
Constructor.
carrierId | ID of the carrier |
carrierConf | Carrier configuration |
waveformConf | Waveform configuration |
randomAccessEnabled | Is this a RA carrier |
Definition at line 48 of file satellite-phy-rx-carrier-per-window.cc.
References ns3::SatPhyRxCarrier::m_randomAccessEnabled.
|
virtual |
Destructor.
Definition at line 92 of file satellite-phy-rx-carrier-per-window.cc.
|
private |
Function for storing the received E-SSA packets.
Insert received packet in packets container
Definition at line 808 of file satellite-phy-rx-carrier-per-window.cc.
References ns3::SatPhyRxCarrierPerWindow::essaPacketRxParams_s::arrivalTime, ns3::SatPhyRxCarrierPerWindow::essaPacketRxParams_s::duration, m_essaPacketContainer, ns3::SatPhyRxCarrierPerWindow::essaPacketRxParams_s::rxParams, and ns3::SatPhyRxCarrierPerWindow::essaPacketRxParams_s::sourceAddress.
Referenced by ReceiveSlot().
|
virtual |
Function for initializing the window end scheduling.
WARNING: if firstWindow is too large, too many packets may be stored before the first CleanOldPackets is called
Reimplemented from ns3::SatPhyRxCarrierPerSlot.
Definition at line 71 of file satellite-phy-rx-carrier-per-window.cc.
References DoWindowEnd(), ns3::SatPhyRxCarrier::GetNodeInfo(), m_firstWindow, m_windowDuration, and m_windowEndSchedulingInitialized.
|
private |
Function for calculating the normalized offered random access load.
Definition at line 853 of file satellite-phy-rx-carrier-per-window.cc.
References ns3::SatConstVariables::BITS_PER_BYTE, m_payloadBytesInWindow, ns3::SatPhyRxCarrier::m_rxBandwidthHz, and m_windowDuration.
Referenced by MeasureRandomAccessLoad().
|
private |
Calculate gamma and Interference vectors for a single packet.
Calculate the SNR
Update probes (only the first time we access this method for this packet)
composite sinr output trace
Calculate the gamma vector
Consider both the interference per fragment in the satellite, and the interference per fragment in the feeder. Since interference at the feeder does not consider intrabeam interference, the fragments will always be a subset of fragments in satellite (TODO: CHECK THIS). TODO: optimize. Find a way to do this without creating copy.
TODO: verify. Since Interference in feeder is a subset, fragments will never be smaller than those in satellite.
For each iteration: gamma[k] = ( SNR^-1 + (C/Interference[k])^-1 )^-1
Calculate composite C/I = (C_u/I_u^-1 + C_d/I_d^-1)^-1
Calculate gamma[k]
For each iteration: gamma[k] = ( SNR^-1 + (C/Interference[k])^-1 )^-1
Calculate composite C/I = (C_u/I_u^-1 + C_d/I_d^-1)^-1
Calculate gamma[k]
Calculate the gamma vector for the preamble
Calculate the mean SNIR
Definition at line 277 of file satellite-phy-rx-carrier-per-window.cc.
References ns3::SatPhyRxCarrier::CalculateCompositeSinr(), ns3::SatPhyRxCarrier::CalculateSinr(), ns3::SatPhyRxCarrierPerWindow::essaPacketRxParams_s::destAddress, ns3::SatPhyRxCarrier::DoCompositeSinrOutputTrace(), ns3::SatPhyRxCarrierPerWindow::essaPacketRxParams_s::gamma, ns3::SatPhyRxCarrier::GetLinkRegenerationMode(), ns3::SatPhyRxCarrier::GetOwnAddress(), ns3::SatPhyRxCarrier::GetWaveformConf(), ns3::SatPhyRxCarrierPerWindow::essaPacketRxParams_s::hasBeenUpdated, ns3::SatPhyRxCarrier::IsCompositeSinrOutputTraceEnabled(), ns3::SatUtils::LinearToDb(), ns3::SatPhyRxCarrier::m_additionalInterferenceCallback, ns3::SatPhyRxCarrier::m_linkBudgetTrace, ns3::SatPhyRxCarrier::m_linkSinrTrace, ns3::SatPhyRxCarrier::m_rxAciIfPowerW, ns3::SatPhyRxCarrier::m_rxExtNoisePowerW, ns3::SatPhyRxCarrier::m_rxNoisePowerW, ns3::SatPhyRxCarrierPerWindow::essaPacketRxParams_s::meanSinr, ns3::SatPhyRxCarrierPerWindow::essaPacketRxParams_s::preambleMeanSinr, ns3::SatPhyRxCarrierPerWindow::essaPacketRxParams_s::rxParams, ns3::SatUtils::ScalarProduct(), ns3::SatUplinkInfoTag::SetSinr(), ns3::SatPhyRxCarrierPerWindow::essaPacketRxParams_s::sourceAddress, and ns3::SatEnums::TRANSPARENT.
Referenced by DoSic(), and ReceiveSlot().
|
private |
Remove old packets from packet container.
Check first if packet is not entirely in window (not an old packet)
Check if packet is previous to window
Definition at line 684 of file satellite-phy-rx-carrier-per-window.cc.
References ns3::SatPhyRxCarrier::m_daRxTrace, m_essaPacketContainer, m_essaRxCollisionTrace, and m_firstWindow.
Referenced by ProcessWindow().
|
protectedvirtual |
Dispose implementation.
Reimplemented from ns3::SatPhyRxCarrierPerSlot.
Definition at line 163 of file satellite-phy-rx-carrier-per-window.cc.
References ns3::SatPhyRxCarrierPerSlot::DoDispose().
|
private |
Perform SIC for a given decoded packet.
Update SIC on interfering packets
Stop iterating for packets arriving after the processed packet
Except previous packets
Except already processed packets, and the packet being currently processed
Get normalized start and end time
Eliminate residual interference and recalculate the packets vectors
Definition at line 535 of file satellite-phy-rx-carrier-per-window.cc.
References CalculatePacketInterferenceVectors(), ns3::SatPhyRxCarrier::GetInterferenceEliminationModel(), GetNormalizedPacketInterferenceTime(), ns3::SatPhyRxCarrier::m_linkRegenerationMode, m_sicEnabled, m_spreadingFactor, and ns3::SatEnums::TRANSPARENT.
Referenced by ProcessWindow().
|
private |
Function called when a window ends.
Definition at line 434 of file satellite-phy-rx-carrier-per-window.cc.
References m_windowDelay, m_windowDuration, m_windowStep, and ProcessWindow().
Referenced by BeginEndScheduling().
|
private |
Calculate gamma and Interference vectors for a single packet.
Check first if packet interferes with received packet
Check if packet has been decoded
Get normalized times
Eliminate the interferences
Definition at line 227 of file satellite-phy-rx-carrier-per-window.cc.
References ns3::SatPhyRxCarrierPerWindow::essaPacketRxParams_s::arrivalTime, ns3::SatPhyRxCarrier::GetInterferenceEliminationModel(), GetNormalizedPacketInterferenceTime(), m_essaPacketContainer, ns3::SatPhyRxCarrier::m_linkRegenerationMode, m_sicEnabled, m_spreadingFactor, ns3::SatPhyRxCarrierPerWindow::essaPacketRxParams_s::rxParams, ns3::SatPhyRxCarrierPerWindow::essaPacketRxParams_s::sourceAddress, and ns3::SatEnums::TRANSPARENT.
Referenced by ReceiveSlot().
|
inlinevirtual |
Method for querying the type of the carrier.
Reimplemented from ns3::SatPhyRxCarrierPerSlot.
Definition at line 108 of file satellite-phy-rx-carrier-per-window.h.
|
private |
Get the effective SNIR of the packet using the Mutual Information function.
Definition at line 645 of file satellite-phy-rx-carrier-per-window.cc.
References ns3::SatUtils::DbToLinear(), ns3::SatPhyRxCarrierPerWindow::essaPacketRxParams_s::gamma, ns3::SatPhyRxCarrier::GetLinkResults(), ns3::SatLinkResultsFSim::GetMutualInformationTable(), ns3::SatUtils::LinearToDb(), ns3::SatPhyRxCarrierPerWindow::essaPacketRxParams_s::rxParams, and ns3::SatPhyRxCarrierPerWindow::essaPacketRxParams_s::sourceAddress.
Referenced by ProcessWindow().
|
private |
Get the packet with the highst SNIR on the list.
Check if bigger SINR
Definition at line 775 of file satellite-phy-rx-carrier-per-window.cc.
Referenced by ProcessWindow().
|
private |
Get the normalized start and end time between two interfering packets.
Get a first approach of the values (must redo calculations in the exact same order as they were done when calculating the interference vector).
Now get the actual values from the Interference vector (there may be
Definition at line 589 of file satellite-phy-rx-carrier-per-window.cc.
References ns3::SatPhyRxCarrierPerWindow::essaPacketRxParams_s::arrivalTime, ns3::SatPhyRxCarrierPerWindow::essaPacketRxParams_s::duration, and ns3::SatPhyRxCarrierPerWindow::essaPacketRxParams_s::rxParams.
Referenced by DoSic(), and EliminatePreviousInterferences().
|
static |
Get the TypeId of the class.
Definition at line 98 of file satellite-phy-rx-carrier-per-window.cc.
References m_detectionThreshold, m_essaRxCollisionTrace, m_essaRxErrorTrace, m_firstWindow, m_sicEnabled, m_spreadingFactor, m_windowDelay, m_windowDuration, m_windowLoadTrace, m_windowSicIterations, and m_windowStep.
|
private |
Get a pair of iterators, pointing to the first element in the window, and to the first after the window.
By default, we consider packet is not inside window
Check first if packet is not after window
Check if whole packet is inside window
update number of bytes in the window
First packet will always be the first of the list, since previous packets were deleted in CleanOldPackets
Definition at line 736 of file satellite-phy-rx-carrier-per-window.cc.
References ns3::SatPhyRxCarrier::GetWaveformConf(), m_essaPacketContainer, and m_payloadBytesInWindow.
Referenced by ProcessWindow().
|
private |
Function for measuring the random access load.
calculate the load for this window
save the load for this window
calculate the average load over the measurement window
upload trace with normalized offered load
Definition at line 824 of file satellite-phy-rx-carrier-per-window.cc.
References ns3::SatPhyRxCarrierPerSlot::CalculateAverageNormalizedOfferedRandomAccessLoad(), CalculateNormalizedOfferedRandomAccessLoad(), ns3::SatPhyRxCarrier::GetBeamId(), ns3::SatPhyRxCarrier::GetCarrierId(), ns3::SatPhyRxCarrier::GetChannelType(), ns3::SatPhyRxCarrierPerSlot::GetRandomAccessAllocationChannelId(), ns3::SatPhyRxCarrier::GetSatId(), ns3::SatPhyRxCarrier::m_avgNormalizedOfferedLoadCallback, m_windowLoadTrace, ns3::SatEnums::RETURN_FEEDER_CH, and ns3::SatPhyRxCarrierPerSlot::SaveMeasuredRandomAccessLoad().
Referenced by ProcessWindow().
|
private |
Function for processing a window.
Definition at line 799 of file satellite-phy-rx-carrier-per-window.cc.
References m_detectionThreshold, and ns3::SatPhyRxCarrierPerWindow::essaPacketRxParams_s::preambleMeanSinr.
Referenced by ReceiveSlot().
|
private |
Function for processing a window.
Clean old packets
Get packets in window
Select packet to decode (block 2)
MIESM (block 3)
Get effective SINR
Check against link results
SIC (block 4)
REMOVE
send treated packets upward
consider only packets that have been treated this window
If decoded, Packet could be deleted, since interference information is stored in each packet; but we'll keep it for logging purposes
measure random access load in window
Definition at line 451 of file satellite-phy-rx-carrier-per-window.cc.
References ns3::SatPhyRxCarrier::CheckAgainstLinkResults(), CleanOldPackets(), DoSic(), GetEffectiveSnir(), GetHighestSnirPacket(), GetWindowBounds(), ns3::SatPhyRxCarrierPerSlot::IsRandomAccessDynamicLoadControlEnabled(), ns3::SatUtils::LinearToDb(), m_essaRxErrorTrace, ns3::SatPhyRxCarrier::m_rxCallback, ns3::SatPhyRxCarrier::m_sinrTrace, m_windowSicIterations, and MeasureRandomAccessLoad().
Referenced by DoWindowEnd().
|
protectedvirtual |
Receive a slot.
TODO: make DeletePacket function, and use it in CleanOldPackets as well
Reimplemented from ns3::SatPhyRxCarrierPerSlot.
Definition at line 169 of file satellite-phy-rx-carrier-per-window.cc.
References AddEssaPacket(), ns3::SatPhyRxCarrierPerWindow::essaPacketRxParams_s::arrivalTime, CalculatePacketInterferenceVectors(), ns3::SatPhyRxCarrierPerWindow::essaPacketRxParams_s::destAddress, ns3::SatPhyRxCarrier::rxParams_s::destAddress, ns3::SatPhyRxCarrierPerWindow::essaPacketRxParams_s::duration, EliminatePreviousInterferences(), ns3::SatPhyRxCarrierPerWindow::essaPacketRxParams_s::failedSic, ns3::SatPhyRxCarrierPerWindow::essaPacketRxParams_s::hasBeenDecoded, ns3::SatPhyRxCarrierPerWindow::essaPacketRxParams_s::hasBeenUpdated, ns3::SatPhyRxCarrierPerWindow::essaPacketRxParams_s::isInsideWindow, m_essaRxCollisionTrace, ns3::SatPhyRxCarrierPerWindow::essaPacketRxParams_s::meanSinr, ns3::SatEnums::PACKET_TYPE_DEDICATED_ACCESS, ns3::SatEnums::PACKET_TYPE_ESSA, PacketCanBeDetected(), ns3::SatPhyRxCarrierPerWindow::essaPacketRxParams_s::preambleMeanSinr, ns3::SatPhyRxCarrierPerWindow::essaPacketRxParams_s::rxParams, ns3::SatPhyRxCarrier::rxParams_s::rxParams, ns3::SatPhyRxCarrierPerWindow::essaPacketRxParams_s::sourceAddress, and ns3::SatPhyRxCarrier::rxParams_s::sourceAddress.
|
private |
SNIR detection threshold for a packet (in magnitude)
Definition at line 284 of file satellite-phy-rx-carrier-per-window.h.
Referenced by GetTypeId(), and PacketCanBeDetected().
|
private |
ESSA packet container.
Definition at line 289 of file satellite-phy-rx-carrier-per-window.h.
Referenced by AddEssaPacket(), CleanOldPackets(), EliminatePreviousInterferences(), and GetWindowBounds().
|
protected |
EssaRxError
trace source.
Fired when a packet is treated through Random Access ESSA.
Contains the following information:
Definition at line 147 of file satellite-phy-rx-carrier-per-window.h.
Referenced by CleanOldPackets(), GetTypeId(), and ReceiveSlot().
|
protected |
EssaRxError
trace source.
Fired when a packet is decoded through Random Access ESSA.
Contains the following information:
Definition at line 135 of file satellite-phy-rx-carrier-per-window.h.
Referenced by GetTypeId(), and ProcessWindow().
|
private |
The time of the first window.
Definition at line 262 of file satellite-phy-rx-carrier-per-window.h.
Referenced by BeginEndScheduling(), CleanOldPackets(), and GetTypeId().
|
private |
The number of payload bytes in the window.
Definition at line 294 of file satellite-phy-rx-carrier-per-window.h.
Referenced by CalculateNormalizedOfferedRandomAccessLoad(), and GetWindowBounds().
|
private |
Enable Sic.
Definition at line 299 of file satellite-phy-rx-carrier-per-window.h.
Referenced by DoSic(), EliminatePreviousInterferences(), and GetTypeId().
|
private |
The spreading factor of packets.
Definition at line 273 of file satellite-phy-rx-carrier-per-window.h.
Referenced by DoSic(), EliminatePreviousInterferences(), and GetTypeId().
|
private |
The delay before processing a sliding window.
Definition at line 257 of file satellite-phy-rx-carrier-per-window.h.
Referenced by DoWindowEnd(), and GetTypeId().
|
private |
The duration of the sliding window.
Definition at line 247 of file satellite-phy-rx-carrier-per-window.h.
Referenced by BeginEndScheduling(), CalculateNormalizedOfferedRandomAccessLoad(), DoWindowEnd(), and GetTypeId().
|
private |
Has the window end scheduling been initialized.
Definition at line 278 of file satellite-phy-rx-carrier-per-window.h.
Referenced by BeginEndScheduling().
|
protected |
WindowLoad
trace source.
Fired when a Window Load measurement is performed.
Contains te following information:
Definition at line 157 of file satellite-phy-rx-carrier-per-window.h.
Referenced by GetTypeId(), and MeasureRandomAccessLoad().
|
private |
The number of SIC iterations performed on each window.
Definition at line 267 of file satellite-phy-rx-carrier-per-window.h.
Referenced by GetTypeId(), and ProcessWindow().
|
private |
The step of the sliding window.
Definition at line 252 of file satellite-phy-rx-carrier-per-window.h.
Referenced by DoWindowEnd(), and GetTypeId().