PHY listener connected to the main PHY while operating on the link of an aux PHY that is not TX capable. More...
Public Member Functions | |
EmlsrPhyListener (Ptr< AdvancedEmlsrManager > emlsrManager) | |
Constructor. | |
void | NotifyCcaBusyStart (Time, WifiChannelListType, const std::vector< Time > &) override |
void | NotifyOff () override |
Notify listeners that we went to switch off. | |
void | NotifyOn () override |
Notify listeners that we went to switch on. | |
void | NotifyRxEndError (const WifiTxVector &) override |
void | NotifyRxEndOk () override |
We have received the last bit of a packet for which NotifyRxStart was invoked first and, the packet has been successfully received. | |
void | NotifyRxStart (Time) override |
void | NotifySleep () override |
Notify listeners that we went to sleep. | |
void | NotifySwitchingStart (Time) override |
void | NotifyTxStart (Time, dBm_u) override |
void | NotifyWakeup () override |
Notify listeners that we woke up. | |
![]() | |
virtual | ~WifiPhyListener () |
Private Attributes | |
Ptr< AdvancedEmlsrManager > | m_emlsrManager |
the EMLSR manager | |
PHY listener connected to the main PHY while operating on the link of an aux PHY that is not TX capable.
PHY notifications are forwarded to this EMLSR manager one timestep later because this EMLSR manager may then decide to switch the main PHY back to the preferred link. Given that notifying a PHY listener is only one of the actions that are performed when handling events such as RX end or CCA busy start, it is not a good idea to request a main PHY switch while performing other actions. Forwarding notifications a timestep later allows to first complete the handling of the given event and then (possibly) starting a main PHY switch.
Definition at line 40 of file advanced-emlsr-manager.cc.
|
inline |
Constructor.
emlsrManager | the EMLSR manager |
Definition at line 48 of file advanced-emlsr-manager.cc.
|
inlineoverridevirtual |
duration | the expected busy duration. |
channelType | the channel type for which the CCA busy state is reported. |
per20MhzDurations | vector that indicates for how long each 20 MHz subchannel (corresponding to the index of the element in the vector) is busy and where a zero duration indicates that the subchannel is idle. The vector is non-empty if the PHY supports 802.11ax or later and if the operational channel width is larger than 20 MHz. |
This method does not really report a real state change as opposed to the other methods in this class. It merely reports that, unless the medium is reported busy through NotifyTxStart or NotifyRxStart/End, it will be busy as defined by the currently selected CCA mode.
Typical client code which wants to have a clear picture of the CCA state will need to keep track of the time at which the last NotifyCcaBusyStart method is called and what duration it reported.
Implements ns3::WifiPhyListener.
Definition at line 75 of file advanced-emlsr-manager.cc.
References ns3::AdvancedEmlsrManager::InterruptSwitchMainPhyBackTimerIfNeeded(), m_emlsrManager, and ns3::Simulator::Schedule().
|
inlineoverridevirtual |
Notify listeners that we went to switch off.
Implements ns3::WifiPhyListener.
Definition at line 92 of file advanced-emlsr-manager.cc.
|
inlineoverridevirtual |
Notify listeners that we went to switch on.
Implements ns3::WifiPhyListener.
Definition at line 100 of file advanced-emlsr-manager.cc.
|
inlineoverridevirtual |
txVector | the TXVECTOR used for transmission |
We have received the last bit of a packet for which NotifyRxStart was invoked first and, the packet has not been successfully received.
Implements ns3::WifiPhyListener.
Definition at line 67 of file advanced-emlsr-manager.cc.
|
inlineoverridevirtual |
We have received the last bit of a packet for which NotifyRxStart was invoked first and, the packet has been successfully received.
Implements ns3::WifiPhyListener.
Definition at line 60 of file advanced-emlsr-manager.cc.
References ns3::AdvancedEmlsrManager::InterruptSwitchMainPhyBackTimerIfNeeded(), m_emlsrManager, and ns3::Simulator::Schedule().
|
inlineoverridevirtual |
duration | the expected duration of the packet reception. |
We have received the first bit of a packet. We decided that we could synchronize on this packet. It does not mean we will be able to successfully receive completely the whole packet. It means that we will report a BUSY status until one of the following happens:
Implements ns3::WifiPhyListener.
Definition at line 53 of file advanced-emlsr-manager.cc.
References ns3::AdvancedEmlsrManager::InterruptSwitchMainPhyBackTimerIfNeeded(), m_emlsrManager, and ns3::Simulator::Schedule().
|
inlineoverridevirtual |
Notify listeners that we went to sleep.
Implements ns3::WifiPhyListener.
Definition at line 88 of file advanced-emlsr-manager.cc.
|
inlineoverridevirtual |
duration | the expected channel switching duration. |
We do not send any event to notify the end of channel switching. Listeners should assume that the channel implicitly reverts to the idle or busy states.
Implements ns3::WifiPhyListener.
Definition at line 84 of file advanced-emlsr-manager.cc.
duration | the expected transmission duration. |
txPower | the nominal TX power |
We are about to send the first bit of the packet. We do not send any event to notify the end of transmission. Listeners should assume that the channel implicitly reverts to the idle state unless they have received a CCA busy report.
Implements ns3::WifiPhyListener.
Definition at line 71 of file advanced-emlsr-manager.cc.
|
inlineoverridevirtual |
Notify listeners that we woke up.
Implements ns3::WifiPhyListener.
Definition at line 96 of file advanced-emlsr-manager.cc.
|
private |
the EMLSR manager
Definition at line 105 of file advanced-emlsr-manager.cc.
Referenced by NotifyCcaBusyStart(), NotifyRxEndOk(), and NotifyRxStart().