802.11 PHY layer modelThis PHY implements a spectrum-aware enhancement of the 802.11 SpectrumWifiPhy model. More...
#include "spectrum-wifi-phy.h"
Public Types | |
typedef void(* | SignalArrivalCallback) (bool signalType, uint32_t senderNodeId, double rxPower, Time duration) |
Callback invoked when the PHY model starts to process a signal. More... | |
![]() | |
typedef std::pair< uint8_t, WifiPhyStandard > | ChannelNumberStandardPair |
A pair of a ChannelNumber and WifiPhyStandard. More... | |
typedef void(* | EndOfHePreambleCallback) (HePreambleParameters params) |
TracedCallback signature for end of HE-SIG-A events. More... | |
typedef std::pair< uint16_t, uint16_t > | FrequencyWidthPair |
A pair of a center Frequency (MHz) and a ChannelWidth (MHz) More... | |
typedef void(* | MonitorSnifferRxCallback) (Ptr< const Packet > packet, uint16_t channelFreqMhz, WifiTxVector txVector, MpduInfo aMpdu, SignalNoiseDbm signalNoise) |
TracedCallback signature for monitor mode receive events. More... | |
typedef void(* | MonitorSnifferTxCallback) (const Ptr< const Packet > packet, uint16_t channelFreqMhz, WifiTxVector txVector, MpduInfo aMpdu) |
TracedCallback signature for monitor mode transmit events. More... | |
typedef void(* | PhyRxPayloadBeginTracedCallback) (WifiTxVector txVector, Time psduDuration) |
TracedCallback signature for start of PSDU reception events. More... | |
typedef void(* | PsduTxBeginCallback) (Ptr< const WifiPsdu > psdu, WifiTxVector txVector, double txPowerW) |
TracedCallback signature for PSDU transmit events. More... | |
Public Member Functions | |
SpectrumWifiPhy () | |
virtual | ~SpectrumWifiPhy () |
virtual void | ConfigureStandard (WifiPhyStandard standard) |
Configure the PHY-level parameters for different Wi-Fi standard. More... | |
void | CreateWifiSpectrumPhyInterface (Ptr< NetDevice > device) |
Method to encapsulate the creation of the WifiSpectrumPhyInterface object (used to bind the WifiSpectrumPhy to a SpectrumChannel) and to link it to this SpectrumWifiPhy instance. More... | |
uint32_t | GetBandBandwidth (void) const |
uint16_t | GetCenterFrequencyForChannelWidth (WifiTxVector txVector) const |
Get the center frequency of the channel corresponding the current TxVector rather than that of the supported channel width. More... | |
Ptr< Channel > | GetChannel (void) const |
Return the Channel this WifiPhy is connected to. More... | |
uint16_t | GetGuardBandwidth (uint16_t currentChannelWidth) const |
Ptr< AntennaModel > | GetRxAntenna (void) const |
Get the antenna model used for reception. More... | |
Ptr< const SpectrumModel > | GetRxSpectrumModel () const |
void | SetAntenna (const Ptr< AntennaModel > antenna) |
void | SetChannel (const Ptr< SpectrumChannel > channel) |
Set the SpectrumChannel this SpectrumWifiPhy is to be connected to. More... | |
virtual void | SetChannelNumber (uint8_t id) |
Set channel number. More... | |
virtual void | SetChannelWidth (uint16_t channelwidth) |
virtual void | SetFrequency (uint16_t freq) |
void | StartRx (Ptr< SpectrumSignalParameters > rxParams) |
Input method for delivering a signal from the spectrum channel and low-level PHY interface to this SpectrumWifiPhy instance. More... | |
void | StartTx (Ptr< WifiPpdu > ppdu) |
![]() | |
WifiPhy () | |
virtual | ~WifiPhy () |
void | AddSupportedChannelWidth (uint16_t width) |
virtual int64_t | AssignStreams (int64_t stream) |
Assign a fixed random variable stream number to the random variables used by this model. More... | |
double | CalculateSnr (WifiTxVector txVector, double ber) const |
void | ContinueReceiveHeader (Ptr< Event > event) |
Continue receiving the PHY header of a PPDU (i.e. More... | |
bool | DefineChannelNumber (uint8_t channelNumber, WifiPhyStandard standard, uint16_t frequency, uint16_t channelWidth) |
Add a channel definition to the WifiPhy. More... | |
void | EndReceive (Ptr< Event > event) |
The last symbol of the PPDU has arrived. More... | |
void | EndReceiveInterBss (void) |
For HE receptions only, check and possibly modify the transmit power restriction state at the end of PPDU reception. More... | |
uint8_t | GetBssMembershipSelector (uint8_t selector) const |
The WifiPhy::BssMembershipSelector() method is used (e.g., by a WifiRemoteStationManager) to determine the set of transmission/reception modes that this WifiPhy(-derived class) can support - a set of WifiMode objects which we call the BssMembershipSelectorSet, and which is stored as WifiPhy::m_bssMembershipSelectorSet. More... | |
double | GetCcaEdThreshold (void) const |
Return the CCA threshold (dBm). More... | |
uint8_t | GetChannelNumber (void) const |
Return current channel number. More... | |
Time | GetChannelSwitchDelay (void) const |
uint16_t | GetChannelWidth (void) const |
Time | GetDelayUntilIdle (void) |
Ptr< NetDevice > | GetDevice (void) const |
Return the device this PHY is associated with. More... | |
uint16_t | GetFrequency (void) const |
bool | GetGreenfield (void) const |
Return whether Greenfield is supported. More... | |
Time | GetGuardInterval (void) const |
WifiMode | GetHeMcs (uint8_t mcs) const |
Get the WifiMode object corresponding to the given MCS of the HE modulation class. More... | |
WifiMode | GetHtMcs (uint8_t mcs) const |
Get the WifiMode object corresponding to the given MCS of the HT modulation class. More... | |
Time | GetLastRxEndTime (void) const |
Return the end time of the last received packet. More... | |
Time | GetLastRxStartTime (void) const |
Return the start time of the last received packet. More... | |
uint8_t | GetMaxSupportedRxSpatialStreams (void) const |
uint8_t | GetMaxSupportedTxSpatialStreams (void) const |
WifiMode | GetMcs (uint8_t mcs) const |
The WifiPhy::GetMcs() method is used (e.g., by a WifiRemoteStationManager) to determine the set of transmission/reception MCS indexes that this WifiPhy(-derived class) can support - a set of MCS indexes which we call the DeviceMcsSet, and which is stored as WifiPhy::m_deviceMcsSet. More... | |
WifiMode | GetMcs (WifiModulationClass modulation, uint8_t mcs) const |
Get the WifiMode object corresponding to the given MCS of the given modulation class. More... | |
Ptr< MobilityModel > | GetMobility (void) const |
Return the mobility model this PHY is associated with. More... | |
WifiMode | GetMode (uint8_t mode) const |
The WifiPhy::GetNModes() and WifiPhy::GetMode() methods are used (e.g., by a WifiRemoteStationManager) to determine the set of transmission/reception modes that this WifiPhy(-derived class) can support - a set of WifiMode objects which we call the DeviceRateSet, and which is stored as WifiPhy::m_deviceRateSet. More... | |
uint8_t | GetNBssMembershipSelectors (void) const |
The WifiPhy::NBssMembershipSelectors() method is used (e.g., by a WifiRemoteStationManager) to determine the set of transmission/reception modes that this WifiPhy(-derived class) can support - a set of WifiMode objects which we call the BssMembershipSelectorSet, and which is stored as WifiPhy::m_bssMembershipSelectorSet. More... | |
uint8_t | GetNMcs (void) const |
The WifiPhy::GetNMcs() method is used (e.g., by a WifiRemoteStationManager) to determine the set of transmission/reception MCS indexes that this WifiPhy(-derived class) can support - a set of MCS indexes which we call the DeviceMcsSet, and which is stored as WifiPhy::m_deviceMcsSet. More... | |
uint8_t | GetNModes (void) const |
The WifiPhy::GetNModes() and WifiPhy::GetMode() methods are used (e.g., by a WifiRemoteStationManager) to determine the set of transmission/reception modes that this WifiPhy(-derived class) can support - a set of WifiMode objects which we call the DeviceRateSet, and which is stored as WifiPhy::m_deviceRateSet. More... | |
uint8_t | GetNTxPower (void) const |
Return the number of available transmission power levels. More... | |
uint8_t | GetNumberOfAntennas (void) const |
double | GetPowerDbm (uint8_t power) const |
Get the power of the given power level in dBm. More... | |
double | GetRxGain (void) const |
Return the reception gain (dB). More... | |
double | GetRxSensitivity (void) const |
Return the receive sensitivity threshold (dBm). More... | |
bool | GetShortGuardInterval (void) const |
Return whether short guard interval is supported. More... | |
bool | GetShortPhyPreambleSupported (void) const |
Return whether short PHY preamble is supported. More... | |
WifiPhyStandard | GetStandard (void) const |
Get the configured Wi-Fi standard. More... | |
Ptr< WifiPhyStateHelper > | GetState (void) const |
Return the WifiPhyStateHelper of this PHY. More... | |
std::vector< uint16_t > | GetSupportedChannelWidthSet (void) const |
double | GetTxGain (void) const |
Return the transmission gain (dB). More... | |
double | GetTxPowerEnd (void) const |
Return the maximum available transmission power level (dBm). More... | |
double | GetTxPowerForTransmission (WifiTxVector txVector) const |
Compute the transmit power (in dBm) for the next transmission. More... | |
double | GetTxPowerStart (void) const |
Return the minimum available transmission power level (dBm). More... | |
WifiMode | GetVhtMcs (uint8_t mcs) const |
Get the WifiMode object corresponding to the given MCS of the VHT modulation class. More... | |
bool | IsMcsSupported (WifiMode mcs) const |
Check if the given WifiMode is supported by the PHY. More... | |
bool | IsMcsSupported (WifiModulationClass mc, uint8_t mcs) const |
Check if the given MCS of the given modulation class is supported by the PHY. More... | |
bool | IsModeSupported (WifiMode mode) const |
Check if the given WifiMode is supported by the PHY. More... | |
bool | IsStateCcaBusy (void) const |
bool | IsStateIdle (void) const |
bool | IsStateOff (void) const |
bool | IsStateRx (void) const |
bool | IsStateSleep (void) const |
bool | IsStateSwitching (void) const |
bool | IsStateTx (void) const |
void | NotifyChannelAccessRequested (void) |
Notify the PHY that an access to the channel was requested. More... | |
void | NotifyEndOfHePreamble (HePreambleParameters params) |
Public method used to fire a EndOfHePreamble trace once both HE SIG fields have been received, as well as training fields. More... | |
void | NotifyMonitorSniffRx (Ptr< const WifiPsdu > psdu, uint16_t channelFreqMhz, WifiTxVector txVector, SignalNoiseDbm signalNoise, std::vector< bool > statusPerMpdu) |
Public method used to fire a MonitorSniffer trace for a wifi PSDU being received. More... | |
void | NotifyMonitorSniffTx (Ptr< const WifiPsdu > psdu, uint16_t channelFreqMhz, WifiTxVector txVector) |
Public method used to fire a MonitorSniffer trace for a wifi PSDU being transmitted. More... | |
void | NotifyRxBegin (Ptr< const WifiPsdu > psdu) |
Public method used to fire a PhyRxBegin trace. More... | |
void | NotifyRxDrop (Ptr< const WifiPsdu > psdu, WifiPhyRxfailureReason reason) |
Public method used to fire a PhyRxDrop trace. More... | |
void | NotifyRxEnd (Ptr< const WifiPsdu > psdu) |
Public method used to fire a PhyRxEnd trace. More... | |
void | NotifyTxBegin (Ptr< const WifiPsdu > psdu, double txPowerW) |
Public method used to fire a PhyTxBegin trace. More... | |
void | NotifyTxDrop (Ptr< const WifiPsdu > psdu) |
Public method used to fire a PhyTxDrop trace. More... | |
void | NotifyTxEnd (Ptr< const WifiPsdu > psdu) |
Public method used to fire a PhyTxEnd trace. More... | |
void | RegisterListener (WifiPhyListener *listener) |
void | ResetCca (bool powerRestricted, double txPowerMaxSiso=0, double txPowerMaxMimo=0) |
Reset PHY to IDLE, with some potential TX power restrictions for the next transmission. More... | |
void | ResetReceive (Ptr< Event > event) |
Reset PHY at the end of the packet under reception after it has failed the PHY header. More... | |
void | ResumeFromOff (void) |
Resume from off mode. More... | |
void | ResumeFromSleep (void) |
Resume from sleep mode. More... | |
void | Send (Ptr< const WifiPsdu > psdu, WifiTxVector txVector) |
void | SetCapabilitiesChangedCallback (Callback< void > callback) |
void | SetCcaEdThreshold (double threshold) |
Sets the CCA threshold (dBm). More... | |
void | SetDevice (const Ptr< NetDevice > device) |
Sets the device this PHY is associated with. More... | |
void | SetEdThreshold (double threshold) |
Sets the energy detection threshold (dBm). More... | |
void | SetErrorRateModel (const Ptr< ErrorRateModel > rate) |
Sets the error rate model. More... | |
void | SetFrameCaptureModel (const Ptr< FrameCaptureModel > frameCaptureModel) |
Sets the frame capture model. More... | |
void | SetGreenfield (bool greenfield) |
Enable or disable Greenfield support. More... | |
void | SetGuardInterval (Time guardInterval) |
void | SetMaxSupportedRxSpatialStreams (uint8_t streams) |
void | SetMaxSupportedTxSpatialStreams (uint8_t streams) |
void | SetMobility (const Ptr< MobilityModel > mobility) |
assign a mobility model to this device More... | |
void | SetNTxPower (uint8_t n) |
Sets the number of transmission power levels available between the minimum level and the maximum level. More... | |
void | SetNumberOfAntennas (uint8_t antennas) |
void | SetOffMode (void) |
Put in off mode. More... | |
void | SetPostReceptionErrorModel (const Ptr< ErrorModel > em) |
Attach a receive ErrorModel to the WifiPhy. More... | |
void | SetPreambleDetectionModel (const Ptr< PreambleDetectionModel > preambleDetectionModel) |
Sets the preamble detection model. More... | |
void | SetReceiveErrorCallback (RxErrorCallback callback) |
void | SetReceiveOkCallback (RxOkCallback callback) |
void | SetRxGain (double gain) |
Sets the reception gain (dB). More... | |
void | SetRxNoiseFigure (double noiseFigureDb) |
Sets the RX loss (dB) in the Signal-to-Noise-Ratio due to non-idealities in the receiver. More... | |
void | SetRxSensitivity (double threshold) |
Sets the receive sensitivity threshold (dBm). More... | |
void | SetShortGuardInterval (bool shortGuardInterval) |
Enable or disable support for HT/VHT short guard interval. More... | |
void | SetShortPhyPreambleSupported (bool preamble) |
Enable or disable short PHY preamble. More... | |
void | SetSleepMode (void) |
Put in sleep mode. More... | |
void | SetTxGain (double gain) |
Sets the transmission gain (dB). More... | |
void | SetTxPowerEnd (double end) |
Sets the maximum available transmission power level (dBm). More... | |
void | SetTxPowerStart (double start) |
Sets the minimum available transmission power level (dBm). More... | |
void | SetWifiRadioEnergyModel (const Ptr< WifiRadioEnergyModel > wifiRadioEnergyModel) |
Sets the wifi radio energy model. More... | |
void | StartReceiveHeader (Ptr< Event > event) |
Start receiving the PHY header of a PPDU (i.e. More... | |
void | StartReceivePayload (Ptr< Event > event) |
Start receiving the PSDU (i.e. More... | |
void | StartReceivePreamble (Ptr< WifiPpdu > ppdu, double rxPowerW) |
Start receiving the PHY preamble of a PPDU (i.e. More... | |
void | UnregisterListener (WifiPhyListener *listener) |
![]() | |
Object () | |
Constructor. More... | |
virtual | ~Object () |
Destructor. More... | |
void | AggregateObject (Ptr< Object > other) |
Aggregate two Objects together. More... | |
void | Dispose (void) |
Dispose of this Object. More... | |
AggregateIterator | GetAggregateIterator (void) const |
Get an iterator to the Objects aggregated to this one. More... | |
virtual TypeId | GetInstanceTypeId (void) const |
Get the most derived TypeId for this Object. More... | |
template<typename T > | |
Ptr< T > | GetObject (void) const |
Get a pointer to the requested aggregated Object. More... | |
template<typename T > | |
Ptr< T > | GetObject (TypeId tid) const |
Get a pointer to the requested aggregated Object by TypeId. More... | |
template<> | |
Ptr< Object > | GetObject () const |
template<> | |
Ptr< Object > | GetObject (TypeId tid) const |
void | Initialize (void) |
Invoke DoInitialize on all Objects aggregated to this one. More... | |
bool | IsInitialized (void) const |
Check if the object has been initialized. More... | |
![]() | |
SimpleRefCount () | |
Default constructor. More... | |
SimpleRefCount (const SimpleRefCount &o) | |
Copy constructor. More... | |
uint32_t | GetReferenceCount (void) const |
Get the reference count of the object. More... | |
SimpleRefCount & | operator= (const SimpleRefCount &o) |
Assignment operator. More... | |
void | Ref (void) const |
Increment the reference count. More... | |
void | Unref (void) const |
Decrement the reference count. More... | |
![]() | |
virtual | ~ObjectBase () |
Virtual destructor. More... | |
void | GetAttribute (std::string name, AttributeValue &value) const |
Get the value of an attribute, raising fatal errors if unsuccessful. More... | |
bool | GetAttributeFailSafe (std::string name, AttributeValue &value) const |
Get the value of an attribute without raising erros. More... | |
void | SetAttribute (std::string name, const AttributeValue &value) |
Set a single attribute, raising fatal errors if unsuccessful. More... | |
bool | SetAttributeFailSafe (std::string name, const AttributeValue &value) |
Set a single attribute without raising errors. More... | |
bool | TraceConnect (std::string name, std::string context, const CallbackBase &cb) |
Connect a TraceSource to a Callback with a context. More... | |
bool | TraceConnectWithoutContext (std::string name, const CallbackBase &cb) |
Connect a TraceSource to a Callback without a context. More... | |
bool | TraceDisconnect (std::string name, std::string context, const CallbackBase &cb) |
Disconnect from a TraceSource a Callback previously connected with a context. More... | |
bool | TraceDisconnectWithoutContext (std::string name, const CallbackBase &cb) |
Disconnect from a TraceSource a Callback previously connected without a context. More... | |
Static Public Member Functions | |
static TypeId | GetTypeId (void) |
Get the type ID. More... | |
![]() | |
static Time | CalculatePhyPreambleAndHeaderDuration (WifiTxVector txVector) |
static Time | CalculateTxDuration (uint32_t size, WifiTxVector txVector, uint16_t frequency) |
static WifiMode | GetDsssRate11Mbps () |
Return a WifiMode for DSSS at 11Mbps. More... | |
static WifiMode | GetDsssRate1Mbps () |
Return a WifiMode for DSSS at 1Mbps. More... | |
static WifiMode | GetDsssRate2Mbps () |
Return a WifiMode for DSSS at 2Mbps. More... | |
static WifiMode | GetDsssRate5_5Mbps () |
Return a WifiMode for DSSS at 5.5Mbps. More... | |
static WifiMode | GetErpOfdmRate12Mbps () |
Return a WifiMode for ERP-OFDM at 12Mbps. More... | |
static WifiMode | GetErpOfdmRate18Mbps () |
Return a WifiMode for ERP-OFDM at 18Mbps. More... | |
static WifiMode | GetErpOfdmRate24Mbps () |
Return a WifiMode for ERP-OFDM at 24Mbps. More... | |
static WifiMode | GetErpOfdmRate36Mbps () |
Return a WifiMode for ERP-OFDM at 36Mbps. More... | |
static WifiMode | GetErpOfdmRate48Mbps () |
Return a WifiMode for ERP-OFDM at 48Mbps. More... | |
static WifiMode | GetErpOfdmRate54Mbps () |
Return a WifiMode for ERP-OFDM at 54Mbps. More... | |
static WifiMode | GetErpOfdmRate6Mbps () |
Return a WifiMode for ERP-OFDM at 6Mbps. More... | |
static WifiMode | GetErpOfdmRate9Mbps () |
Return a WifiMode for ERP-OFDM at 9Mbps. More... | |
static WifiMode | GetHeMcs0 () |
Return MCS 0 from HE MCS values. More... | |
static WifiMode | GetHeMcs1 () |
Return MCS 1 from HE MCS values. More... | |
static WifiMode | GetHeMcs10 () |
Return MCS 10 from HE MCS values. More... | |
static WifiMode | GetHeMcs11 () |
Return MCS 11 from HE MCS values. More... | |
static WifiMode | GetHeMcs2 () |
Return MCS 2 from HE MCS values. More... | |
static WifiMode | GetHeMcs3 () |
Return MCS 3 from HE MCS values. More... | |
static WifiMode | GetHeMcs4 () |
Return MCS 4 from HE MCS values. More... | |
static WifiMode | GetHeMcs5 () |
Return MCS 5 from HE MCS values. More... | |
static WifiMode | GetHeMcs6 () |
Return MCS 6 from HE MCS values. More... | |
static WifiMode | GetHeMcs7 () |
Return MCS 7 from HE MCS values. More... | |
static WifiMode | GetHeMcs8 () |
Return MCS 8 from HE MCS values. More... | |
static WifiMode | GetHeMcs9 () |
Return MCS 9 from HE MCS values. More... | |
static WifiMode | GetHePhyHeaderMode () |
static WifiMode | GetHtMcs0 () |
Return MCS 0 from HT MCS values. More... | |
static WifiMode | GetHtMcs1 () |
Return MCS 1 from HT MCS values. More... | |
static WifiMode | GetHtMcs10 () |
Return MCS 10 from HT MCS values. More... | |
static WifiMode | GetHtMcs11 () |
Return MCS 11 from HT MCS values. More... | |
static WifiMode | GetHtMcs12 () |
Return MCS 12 from HT MCS values. More... | |
static WifiMode | GetHtMcs13 () |
Return MCS 13 from HT MCS values. More... | |
static WifiMode | GetHtMcs14 () |
Return MCS 14 from HT MCS values. More... | |
static WifiMode | GetHtMcs15 () |
Return MCS 15 from HT MCS values. More... | |
static WifiMode | GetHtMcs16 () |
Return MCS 16 from HT MCS values. More... | |
static WifiMode | GetHtMcs17 () |
Return MCS 17 from HT MCS values. More... | |
static WifiMode | GetHtMcs18 () |
Return MCS 18 from HT MCS values. More... | |
static WifiMode | GetHtMcs19 () |
Return MCS 19 from HT MCS values. More... | |
static WifiMode | GetHtMcs2 () |
Return MCS 2 from HT MCS values. More... | |
static WifiMode | GetHtMcs20 () |
Return MCS 20 from HT MCS values. More... | |
static WifiMode | GetHtMcs21 () |
Return MCS 21 from HT MCS values. More... | |
static WifiMode | GetHtMcs22 () |
Return MCS 22 from HT MCS values. More... | |
static WifiMode | GetHtMcs23 () |
Return MCS 23 from HT MCS values. More... | |
static WifiMode | GetHtMcs24 () |
Return MCS 24 from HT MCS values. More... | |
static WifiMode | GetHtMcs25 () |
Return MCS 25 from HT MCS values. More... | |
static WifiMode | GetHtMcs26 () |
Return MCS 26 from HT MCS values. More... | |
static WifiMode | GetHtMcs27 () |
Return MCS 27 from HT MCS values. More... | |
static WifiMode | GetHtMcs28 () |
Return MCS 28 from HT MCS values. More... | |
static WifiMode | GetHtMcs29 () |
Return MCS 29 from HT MCS values. More... | |
static WifiMode | GetHtMcs3 () |
Return MCS 3 from HT MCS values. More... | |
static WifiMode | GetHtMcs30 () |
Return MCS 30 from HT MCS values. More... | |
static WifiMode | GetHtMcs31 () |
Return MCS 31 from HT MCS values. More... | |
static WifiMode | GetHtMcs4 () |
Return MCS 4 from HT MCS values. More... | |
static WifiMode | GetHtMcs5 () |
Return MCS 5 from HT MCS values. More... | |
static WifiMode | GetHtMcs6 () |
Return MCS 6 from HT MCS values. More... | |
static WifiMode | GetHtMcs7 () |
Return MCS 7 from HT MCS values. More... | |
static WifiMode | GetHtMcs8 () |
Return MCS 8 from HT MCS values. More... | |
static WifiMode | GetHtMcs9 () |
Return MCS 9 from HT MCS values. More... | |
static WifiMode | GetHtPhyHeaderMode () |
static WifiMode | GetOfdmRate12Mbps () |
Return a WifiMode for OFDM at 12Mbps. More... | |
static WifiMode | GetOfdmRate12MbpsBW10MHz () |
Return a WifiMode for OFDM at 12Mbps with 10MHz channel spacing. More... | |
static WifiMode | GetOfdmRate12MbpsBW5MHz () |
Return a WifiMode for OFDM at 12Mbps with 5MHz channel spacing. More... | |
static WifiMode | GetOfdmRate13_5MbpsBW5MHz () |
Return a WifiMode for OFDM at 13.5Mbps with 5MHz channel spacing. More... | |
static WifiMode | GetOfdmRate18Mbps () |
Return a WifiMode for OFDM at 18Mbps. More... | |
static WifiMode | GetOfdmRate18MbpsBW10MHz () |
Return a WifiMode for OFDM at 18Mbps with 10MHz channel spacing. More... | |
static WifiMode | GetOfdmRate1_5MbpsBW5MHz () |
Return a WifiMode for OFDM at 1.5Mbps with 5MHz channel spacing. More... | |
static WifiMode | GetOfdmRate24Mbps () |
Return a WifiMode for OFDM at 24Mbps. More... | |
static WifiMode | GetOfdmRate24MbpsBW10MHz () |
Return a WifiMode for OFDM at 24Mbps with 10MHz channel spacing. More... | |
static WifiMode | GetOfdmRate27MbpsBW10MHz () |
Return a WifiMode for OFDM at 27Mbps with 10MHz channel spacing. More... | |
static WifiMode | GetOfdmRate2_25MbpsBW5MHz () |
Return a WifiMode for OFDM at 2.25Mbps with 5MHz channel spacing. More... | |
static WifiMode | GetOfdmRate36Mbps () |
Return a WifiMode for OFDM at 36Mbps. More... | |
static WifiMode | GetOfdmRate3MbpsBW10MHz () |
Return a WifiMode for OFDM at 3Mbps with 10MHz channel spacing. More... | |
static WifiMode | GetOfdmRate3MbpsBW5MHz () |
Return a WifiMode for OFDM at 3Mbps with 5MHz channel spacing. More... | |
static WifiMode | GetOfdmRate48Mbps () |
Return a WifiMode for OFDM at 48Mbps. More... | |
static WifiMode | GetOfdmRate4_5MbpsBW10MHz () |
Return a WifiMode for OFDM at 4.5Mbps with 10MHz channel spacing. More... | |
static WifiMode | GetOfdmRate4_5MbpsBW5MHz () |
Return a WifiMode for OFDM at 4.5Mbps with 5MHz channel spacing. More... | |
static WifiMode | GetOfdmRate54Mbps () |
Return a WifiMode for OFDM at 54Mbps. More... | |
static WifiMode | GetOfdmRate6Mbps () |
Return a WifiMode for OFDM at 6Mbps. More... | |
static WifiMode | GetOfdmRate6MbpsBW10MHz () |
Return a WifiMode for OFDM at 6Mbps with 10MHz channel spacing. More... | |
static WifiMode | GetOfdmRate6MbpsBW5MHz () |
Return a WifiMode for OFDM at 6Mbps with 5MHz channel spacing. More... | |
static WifiMode | GetOfdmRate9Mbps () |
Return a WifiMode for OFDM at 9Mbps. More... | |
static WifiMode | GetOfdmRate9MbpsBW10MHz () |
Return a WifiMode for OFDM at 9Mbps with 10MHz channel spacing. More... | |
static WifiMode | GetOfdmRate9MbpsBW5MHz () |
Return a WifiMode for OFDM at 9Mbps with 5MHz channel spacing. More... | |
static Time | GetPayloadDuration (uint32_t size, WifiTxVector txVector, uint16_t frequency, MpduType mpdutype=NORMAL_MPDU) |
static Time | GetPayloadDuration (uint32_t size, WifiTxVector txVector, uint16_t frequency, MpduType mpdutype, bool incFlag, uint32_t &totalAmpduSize, double &totalAmpduNumSymbols) |
static Time | GetPhyHeaderDuration (WifiTxVector txVector) |
static WifiMode | GetPhyHeaderMode (WifiTxVector txVector) |
static Time | GetPhyHtSigHeaderDuration (WifiPreamble preamble) |
static Time | GetPhyPreambleDuration (WifiTxVector txVector) |
static Time | GetPhySigA1Duration (WifiPreamble preamble) |
static Time | GetPhySigA2Duration (WifiPreamble preamble) |
static Time | GetPhySigBDuration (WifiPreamble preamble) |
static Time | GetPhyTrainingSymbolDuration (WifiTxVector txVector) |
static Time | GetPreambleDetectionDuration (void) |
static Time | GetStartOfPacketDuration (WifiTxVector txVector) |
static TypeId | GetTypeId (void) |
Get the type ID. More... | |
static WifiMode | GetVhtMcs0 () |
Return MCS 0 from VHT MCS values. More... | |
static WifiMode | GetVhtMcs1 () |
Return MCS 1 from VHT MCS values. More... | |
static WifiMode | GetVhtMcs2 () |
Return MCS 2 from VHT MCS values. More... | |
static WifiMode | GetVhtMcs3 () |
Return MCS 3 from VHT MCS values. More... | |
static WifiMode | GetVhtMcs4 () |
Return MCS 4 from VHT MCS values. More... | |
static WifiMode | GetVhtMcs5 () |
Return MCS 5 from VHT MCS values. More... | |
static WifiMode | GetVhtMcs6 () |
Return MCS 6 from VHT MCS values. More... | |
static WifiMode | GetVhtMcs7 () |
Return MCS 7 from VHT MCS values. More... | |
static WifiMode | GetVhtMcs8 () |
Return MCS 8 from VHT MCS values. More... | |
static WifiMode | GetVhtMcs9 () |
Return MCS 9 from VHT MCS values. More... | |
static WifiMode | GetVhtPhyHeaderMode () |
![]() | |
static TypeId | GetTypeId (void) |
Register this type. More... | |
![]() | |
static TypeId | GetTypeId (void) |
Get the type ID. More... | |
Protected Member Functions | |
void | DoDispose (void) |
Destructor implementation. More... | |
void | DoInitialize (void) |
Initialize() implementation. More... | |
![]() | |
bool | DoChannelSwitch (uint8_t id) |
The default implementation does nothing and returns true. More... | |
bool | DoFrequencySwitch (uint16_t frequency) |
The default implementation does nothing and returns true. More... | |
void | SwitchMaybeToCcaBusy (void) |
Check if PHY state should move to CCA busy state based on current state of interference tracker. More... | |
![]() | |
Object (const Object &o) | |
Copy an Object. More... | |
virtual void | NotifyNewAggregate (void) |
Notify all Objects aggregated to this one of a new Object being aggregated. More... | |
![]() | |
void | ConstructSelf (const AttributeConstructionList &attributes) |
Complete construction of ObjectBase; invoked by derived classes. More... | |
virtual void | NotifyConstructionCompleted (void) |
Notifier called once the ObjectBase is fully constructed. More... | |
Private Member Functions | |
Ptr< SpectrumValue > | GetTxPowerSpectralDensity (uint16_t centerFrequency, uint16_t channelWidth, double txPowerW, WifiModulationClass modulationClass) const |
void | ResetSpectrumModel (void) |
Perform run-time spectrum model change. More... | |
Private Attributes | |
Ptr< AntennaModel > | m_antenna |
antenna model More... | |
Ptr< SpectrumChannel > | m_channel |
SpectrumChannel that this SpectrumWifiPhy is connected to. More... | |
bool | m_disableWifiReception |
forces this PHY to fail to sync on any signal More... | |
Ptr< const SpectrumModel > | m_rxSpectrumModel |
receive spectrum model More... | |
TracedCallback< bool, uint32_t, double, Time > | m_signalCb |
Signal callback. More... | |
Ptr< WifiSpectrumPhyInterface > | m_wifiSpectrumPhyInterface |
Spectrum PHY interface. More... | |
Additional Inherited Members | |
![]() | |
EventId | m_endPhyRxEvent |
the end of PHY receive event More... | |
EventId | m_endPreambleDetectionEvent |
the end of preamble detection event More... | |
EventId | m_endRxEvent |
the end of receive event More... | |
EventId | m_endTxEvent |
the end of transmit event More... | |
InterferenceHelper | m_interference |
Pointer to InterferenceHelper. More... | |
Ptr< UniformRandomVariable > | m_random |
Provides uniform random variables. More... | |
uint32_t | m_rxMpduReferenceNumber |
A-MPDU reference number to identify all received subframes belonging to the same received A-MPDU. More... | |
Ptr< WifiPhyStateHelper > | m_state |
Pointer to WifiPhyStateHelper. More... | |
uint32_t | m_txMpduReferenceNumber |
A-MPDU reference number to identify all transmitted subframes belonging to the same received A-MPDU. More... | |
![]() | |
static TypeId | GetObjectIid (void) |
Ensure the TypeId for ObjectBase gets fully configured to anchor the inheritance tree properly. More... | |
802.11 PHY layer model
This PHY implements a spectrum-aware enhancement of the 802.11 SpectrumWifiPhy model.
This PHY model depends on a channel loss and delay model as provided by the ns3::SpectrumPropagationLossModel and ns3::PropagationDelayModel classes.
ns3::SpectrumWifiPhy is accessible through the following paths with Config::Set and Config::Connect:
Size of this type is 816 bytes (on a 64-bit architecture).
Definition at line 51 of file spectrum-wifi-phy.h.
typedef void(* ns3::SpectrumWifiPhy::SignalArrivalCallback) (bool signalType, uint32_t senderNodeId, double rxPower, Time duration) |
Callback invoked when the PHY model starts to process a signal.
signalType | Whether signal is WiFi (true) or foreign (false) |
senderNodeId | Node Id of the sender of the signal |
rxPower | received signal power (dBm) |
duration | Signal duration |
Definition at line 151 of file spectrum-wifi-phy.h.
ns3::SpectrumWifiPhy::SpectrumWifiPhy | ( | ) |
Definition at line 63 of file spectrum-wifi-phy.cc.
References NS_LOG_FUNCTION.
|
virtual |
Definition at line 68 of file spectrum-wifi-phy.cc.
References NS_LOG_FUNCTION.
|
virtual |
Configure the PHY-level parameters for different Wi-Fi standard.
standard | the Wi-Fi standard |
Reimplemented from ns3::WifiPhy.
Definition at line 182 of file spectrum-wifi-phy.cc.
References ns3::WifiPhy::ConfigureStandard(), ns3::Object::IsInitialized(), NS_LOG_FUNCTION, and ResetSpectrumModel().
Referenced by SpectrumWifiPhyBasicTest::DoSetup(), TestThresholdPreambleDetectionWithoutFrameCapture::DoSetup(), WifiPhyThresholdsTest::DoSetup(), TestThresholdPreambleDetectionWithFrameCapture::DoSetup(), TestSimpleFrameCaptureModel::DoSetup(), TestPhyHeadersReception::DoSetup(), TestAmpduReception::DoSetup(), and InterferenceExperiment::Run().
Method to encapsulate the creation of the WifiSpectrumPhyInterface object (used to bind the WifiSpectrumPhy to a SpectrumChannel) and to link it to this SpectrumWifiPhy instance.
device | pointer to the NetDevice object including this new object |
Definition at line 262 of file spectrum-wifi-phy.cc.
References m_wifiSpectrumPhyInterface, and NS_LOG_FUNCTION.
Referenced by InterferenceExperiment::Run().
|
protectedvirtual |
Destructor implementation.
This method is called by Dispose() or by the Object's destructor, whichever comes first.
Subclasses are expected to implement their real destruction code in an overridden version of this method and chain up to their parent's implementation once they are done. i.e, for simplicity, the destructor of every subclass should be empty and its content should be moved to the associated DoDispose() method.
It is safe to call GetObject() from within this method.
Reimplemented from ns3::WifiPhy.
Definition at line 74 of file spectrum-wifi-phy.cc.
References ns3::WifiPhy::DoDispose(), m_channel, m_wifiSpectrumPhyInterface, and NS_LOG_FUNCTION.
|
protectedvirtual |
Initialize() implementation.
This method is called only once by Initialize(). If the user calls Initialize() multiple times, DoInitialize() is called only the first time.
Subclasses are expected to override this method and chain up to their parent's implementation once they are done. It is safe to call GetObject() and AggregateObject() from within this method.
Reimplemented from ns3::WifiPhy.
Definition at line 83 of file spectrum-wifi-phy.cc.
References ns3::WifiPhy::DoInitialize(), m_channel, m_wifiSpectrumPhyInterface, NS_FATAL_ERROR, and NS_LOG_FUNCTION.
uint32_t ns3::SpectrumWifiPhy::GetBandBandwidth | ( | void | ) | const |
Definition at line 337 of file spectrum-wifi-phy.cc.
References ns3::WifiPhy::GetStandard(), NS_FATAL_ERROR, ns3::WIFI_PHY_STANDARD_80211_10MHZ, ns3::WIFI_PHY_STANDARD_80211_5MHZ, ns3::WIFI_PHY_STANDARD_80211a, ns3::WIFI_PHY_STANDARD_80211ac, ns3::WIFI_PHY_STANDARD_80211ax_2_4GHZ, ns3::WIFI_PHY_STANDARD_80211ax_5GHZ, ns3::WIFI_PHY_STANDARD_80211b, ns3::WIFI_PHY_STANDARD_80211g, ns3::WIFI_PHY_STANDARD_80211n_2_4GHZ, ns3::WIFI_PHY_STANDARD_80211n_5GHZ, and ns3::WIFI_PHY_STANDARD_holland.
Referenced by GetRxSpectrumModel(), ResetSpectrumModel(), and StartRx().
uint16_t ns3::SpectrumWifiPhy::GetCenterFrequencyForChannelWidth | ( | WifiTxVector | txVector | ) | const |
Get the center frequency of the channel corresponding the current TxVector rather than that of the supported channel width.
Consider that this "primary channel" is on the lower part for the time being.
txVector | the TXVECTOR that has the channel width that is to be used |
Definition at line 301 of file spectrum-wifi-phy.cc.
References ns3::WifiTxVector::GetChannelWidth(), ns3::WifiPhy::GetChannelWidth(), ns3::WifiPhy::GetFrequency(), and NS_LOG_FUNCTION.
Referenced by StartTx().
Return the Channel this WifiPhy is connected to.
Implements ns3::WifiPhy.
Definition at line 124 of file spectrum-wifi-phy.cc.
References m_channel.
uint16_t ns3::SpectrumWifiPhy::GetGuardBandwidth | ( | uint16_t | currentChannelWidth | ) | const |
currentChannelWidth | channel width of the current transmission (MHz) |
Note: in order to properly model out of band transmissions for OFDM, the guard band has been configured so as to expand the modeled spectrum up to the outermost referenced point in "Transmit spectrum mask" sections' PSDs of each PHY specification of 802.11-2016 standard. It thus ultimately corresponds to the current channel bandwidth (which can be different from devices max channel width).
Definition at line 373 of file spectrum-wifi-phy.cc.
Referenced by GetRxSpectrumModel(), GetTxPowerSpectralDensity(), ResetSpectrumModel(), and StartRx().
Ptr< AntennaModel > ns3::SpectrumWifiPhy::GetRxAntenna | ( | void | ) | const |
Get the antenna model used for reception.
Definition at line 249 of file spectrum-wifi-phy.cc.
References m_antenna.
Referenced by ns3::WifiSpectrumPhyInterface::GetRxAntenna().
Ptr< const SpectrumModel > ns3::SpectrumWifiPhy::GetRxSpectrumModel | ( | void | ) | const |
Definition at line 99 of file spectrum-wifi-phy.cc.
References GetBandBandwidth(), ns3::WifiPhy::GetChannelWidth(), ns3::WifiPhy::GetFrequency(), GetGuardBandwidth(), ns3::WifiSpectrumValueHelper::GetSpectrumModel(), m_rxSpectrumModel, NS_LOG_DEBUG, and NS_LOG_FUNCTION.
Referenced by ns3::WifiSpectrumPhyInterface::GetRxSpectrumModel().
|
private |
centerFrequency | center frequency (MHz) |
channelWidth | channel width (MHz) of the channel for the current transmission |
txPowerW | power in W to spread across the bands |
modulationClass | the modulation class |
This is a helper function to create the right TX PSD corresponding to the standard in use.
Definition at line 271 of file spectrum-wifi-phy.cc.
References ns3::WifiSpectrumValueHelper::CreateDsssTxPowerSpectralDensity(), ns3::WifiSpectrumValueHelper::CreateHeOfdmTxPowerSpectralDensity(), ns3::WifiSpectrumValueHelper::CreateHtOfdmTxPowerSpectralDensity(), ns3::WifiSpectrumValueHelper::CreateOfdmTxPowerSpectralDensity(), GetGuardBandwidth(), NS_ABORT_MSG_IF, NS_FATAL_ERROR, NS_LOG_FUNCTION, ns3::WIFI_MOD_CLASS_DSSS, ns3::WIFI_MOD_CLASS_ERP_OFDM, ns3::WIFI_MOD_CLASS_HE, ns3::WIFI_MOD_CLASS_HR_DSSS, ns3::WIFI_MOD_CLASS_HT, ns3::WIFI_MOD_CLASS_OFDM, and ns3::WIFI_MOD_CLASS_VHT.
Referenced by StartTx().
|
static |
Get the type ID.
Definition at line 45 of file spectrum-wifi-phy.cc.
References m_disableWifiReception, m_signalCb, ns3::MakeBooleanAccessor(), ns3::MakeBooleanChecker(), ns3::MakeTraceSourceAccessor(), and ns3::TypeId::SetParent().
|
private |
Perform run-time spectrum model change.
Definition at line 136 of file spectrum-wifi-phy.cc.
References GetBandBandwidth(), ns3::WifiPhy::GetChannelWidth(), ns3::WifiPhy::GetFrequency(), GetGuardBandwidth(), ns3::WifiSpectrumValueHelper::GetSpectrumModel(), ns3::Object::IsInitialized(), m_channel, m_rxSpectrumModel, m_wifiSpectrumPhyInterface, NS_ASSERT_MSG(), NS_LOG_DEBUG, and NS_LOG_FUNCTION.
Referenced by ConfigureStandard(), SetChannelNumber(), SetChannelWidth(), and SetFrequency().
void ns3::SpectrumWifiPhy::SetAntenna | ( | const Ptr< AntennaModel > | antenna | ) |
antenna | an AntennaModel to include in the transmitted SpectrumSignalParameters (in case any objects downstream of the SpectrumWifiPhy wish to adjust signal properties based on the transmitted antenna model. This antenna is also used when the underlying WifiSpectrumPhyInterface::GetRxAntenna() method is called. |
Note: this method may be split into separate SetTx and SetRx methods in the future if the modeling need for this arises
Definition at line 255 of file spectrum-wifi-phy.cc.
References m_antenna, and NS_LOG_FUNCTION.
void ns3::SpectrumWifiPhy::SetChannel | ( | const Ptr< SpectrumChannel > | channel | ) |
Set the SpectrumChannel this SpectrumWifiPhy is to be connected to.
channel | the SpectrumChannel this SpectrumWifiPhy is to be connected to |
Definition at line 130 of file spectrum-wifi-phy.cc.
References third::channel, and m_channel.
Referenced by InterferenceExperiment::Run().
|
virtual |
Set channel number.
Channel center frequency = Channel starting frequency + 5 MHz * (nch - 1)
where Starting channel frequency is standard-dependent, as defined in (Section 18.3.8.4.2 "Channel numbering"; IEEE Std 802.11-2012). This method may fail to take action if the PHY model determines that the channel number cannot be switched for some reason (e.g. sleep state)
id | the channel number |
Reimplemented from ns3::WifiPhy.
Definition at line 149 of file spectrum-wifi-phy.cc.
References ns3::Object::IsInitialized(), NS_LOG_FUNCTION, ResetSpectrumModel(), and ns3::WifiPhy::SetChannelNumber().
Referenced by SpectrumWifiPhyBasicTest::DoSetup(), TestThresholdPreambleDetectionWithoutFrameCapture::DoSetup(), WifiPhyThresholdsTest::DoSetup(), TestThresholdPreambleDetectionWithFrameCapture::DoSetup(), TestSimpleFrameCaptureModel::DoSetup(), TestPhyHeadersReception::DoSetup(), TestAmpduReception::DoSetup(), and InterferenceExperiment::Run().
|
virtual |
channelWidth | the channel width (in MHz) |
Reimplemented from ns3::WifiPhy.
Definition at line 171 of file spectrum-wifi-phy.cc.
References ns3::Object::IsInitialized(), NS_LOG_FUNCTION, ResetSpectrumModel(), and ns3::WifiPhy::SetChannelWidth().
|
virtual |
freq | the operating center frequency (MHz) on this node. |
Reimplemented from ns3::WifiPhy.
Definition at line 160 of file spectrum-wifi-phy.cc.
References ns3::Object::IsInitialized(), NS_LOG_FUNCTION, ResetSpectrumModel(), and ns3::WifiPhy::SetFrequency().
Referenced by SpectrumWifiPhyBasicTest::DoSetup(), TestThresholdPreambleDetectionWithoutFrameCapture::DoSetup(), WifiPhyThresholdsTest::DoSetup(), TestThresholdPreambleDetectionWithFrameCapture::DoSetup(), TestSimpleFrameCaptureModel::DoSetup(), TestPhyHeadersReception::DoSetup(), and TestAmpduReception::DoSetup().
void ns3::SpectrumWifiPhy::StartRx | ( | Ptr< SpectrumSignalParameters > | rxParams | ) |
Input method for delivering a signal from the spectrum channel and low-level PHY interface to this SpectrumWifiPhy instance.
rxParams | Input signal parameters |
Definition at line 193 of file spectrum-wifi-phy.cc.
References ns3::InterferenceHelper::AddForeignSignal(), ns3::Time::As(), ns3::Copy(), ns3::WifiSpectrumValueHelper::CreateRfFilter(), ns3::DbToRatio(), GetBandBandwidth(), ns3::WifiPhy::GetChannelWidth(), ns3::WifiPhy::GetFrequency(), GetGuardBandwidth(), ns3::WifiPhy::GetRxGain(), ns3::WifiPhy::GetRxSensitivity(), ns3::Integral(), m_disableWifiReception, ns3::WifiPhy::m_interference, m_signalCb, ns3::Time::NS, NS_LOG_DEBUG, NS_LOG_FUNCTION, NS_LOG_INFO, ns3::WifiPhy::StartReceivePreamble(), ns3::WifiPhy::SwitchMaybeToCcaBusy(), and ns3::WToDbm().
Referenced by TestAmpduReception::SendAmpduWithThreeMpdus(), TestThresholdPreambleDetectionWithoutFrameCapture::SendPacket(), TestThresholdPreambleDetectionWithFrameCapture::SendPacket(), TestSimpleFrameCaptureModel::SendPacket(), TestPhyHeadersReception::SendPacket(), SpectrumWifiPhyBasicTest::SendSignal(), WifiPhyThresholdsTest::SendSignal(), and ns3::WifiSpectrumPhyInterface::StartRx().
ppdu | the PPDU to send |
Implements ns3::WifiPhy.
Definition at line 316 of file spectrum-wifi-phy.cc.
References ns3::DbmToW(), GetCenterFrequencyForChannelWidth(), ns3::WifiPhy::GetChannelNumber(), ns3::WifiTxVector::GetChannelWidth(), ns3::WifiTxVector::GetMode(), ns3::WifiMode::GetModulationClass(), ns3::SpectrumValue::GetSpectrumModel(), ns3::WifiPhy::GetTxGain(), ns3::WifiPhy::GetTxPowerForTransmission(), GetTxPowerSpectralDensity(), ns3::SpectrumModel::GetUid(), ns3::Integral(), m_antenna, m_channel, m_wifiSpectrumPhyInterface, NS_ASSERT_MSG(), NS_LOG_DEBUG, NS_LOG_FUNCTION, and ns3::WToDbm().
|
private |
antenna model
Definition at line 187 of file spectrum-wifi-phy.h.
Referenced by GetRxAntenna(), SetAntenna(), and StartTx().
|
private |
SpectrumChannel that this SpectrumWifiPhy is connected to.
Definition at line 184 of file spectrum-wifi-phy.h.
Referenced by DoDispose(), DoInitialize(), GetChannel(), ResetSpectrumModel(), SetChannel(), and StartTx().
|
private |
forces this PHY to fail to sync on any signal
Definition at line 189 of file spectrum-wifi-phy.h.
Referenced by GetTypeId(), and StartRx().
|
mutableprivate |
receive spectrum model
Definition at line 188 of file spectrum-wifi-phy.h.
Referenced by GetRxSpectrumModel(), and ResetSpectrumModel().
|
private |
Signal callback.
Definition at line 190 of file spectrum-wifi-phy.h.
Referenced by GetTypeId(), and StartRx().
|
private |
Spectrum PHY interface.
Definition at line 186 of file spectrum-wifi-phy.h.
Referenced by CreateWifiSpectrumPhyInterface(), DoDispose(), DoInitialize(), ResetSpectrumModel(), and StartTx().