From db676adac2f91a00422bde493b88a77c0a8d38ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Deronne?= Date: Sat, 2 Dec 2017 13:25:28 +0100 Subject: [PATCH] wifi: Introduce OFF state --- src/wifi/model/wifi-phy-state-helper.cc | 25 +++-------------------- src/wifi/model/wifi-phy.cc | 5 +++++ src/wifi/model/wifi-phy.h | 6 +++++- src/wifi/model/wifi-radio-energy-model.cc | 3 +++ 4 files changed, 16 insertions(+), 23 deletions(-) diff --git a/src/wifi/model/wifi-phy-state-helper.cc b/src/wifi/model/wifi-phy-state-helper.cc index 2edef4a85..c266edcee 100644 --- a/src/wifi/model/wifi-phy-state-helper.cc +++ b/src/wifi/model/wifi-phy-state-helper.cc @@ -346,8 +346,6 @@ WifiPhyStateHelper::SwitchToTx (Time txDuration, Ptr packet, doubl case WifiPhy::IDLE: LogPreviousIdleAndCcaBusyStates (); break; - case WifiPhy::SWITCHING: - case WifiPhy::SLEEP: default: NS_FATAL_ERROR ("Invalid WifiPhy state."); break; @@ -378,10 +376,7 @@ WifiPhyStateHelper::SwitchToRx (Time rxDuration) ccaStart = Max (ccaStart, m_endSwitching); m_stateLogger (ccaStart, now - ccaStart, WifiPhy::CCA_BUSY); } break; - case WifiPhy::SWITCHING: - case WifiPhy::RX: - case WifiPhy::TX: - case WifiPhy::SLEEP: + default: NS_FATAL_ERROR ("Invalid WifiPhy state."); break; } @@ -418,9 +413,6 @@ WifiPhyStateHelper::SwitchToChannelSwitching (Time switchingDuration) case WifiPhy::IDLE: LogPreviousIdleAndCcaBusyStates (); break; - case WifiPhy::TX: - case WifiPhy::SWITCHING: - case WifiPhy::SLEEP: default: NS_FATAL_ERROR ("Invalid WifiPhy state."); break; @@ -489,18 +481,10 @@ WifiPhyStateHelper::SwitchMaybeToCcaBusy (Time duration) Time now = Simulator::Now (); switch (GetState ()) { - case WifiPhy::SWITCHING: - break; - case WifiPhy::SLEEP: - break; case WifiPhy::IDLE: LogPreviousIdleAndCcaBusyStates (); break; - case WifiPhy::CCA_BUSY: - break; - case WifiPhy::RX: - break; - case WifiPhy::TX: + default: break; } if (GetState () != WifiPhy::CCA_BUSY) @@ -527,10 +511,7 @@ WifiPhyStateHelper::SwitchToSleep (void) ccaStart = Max (ccaStart, m_endSwitching); m_stateLogger (ccaStart, now - ccaStart, WifiPhy::CCA_BUSY); } break; - case WifiPhy::RX: - case WifiPhy::SWITCHING: - case WifiPhy::TX: - case WifiPhy::SLEEP: + default: NS_FATAL_ERROR ("Invalid WifiPhy state."); break; } diff --git a/src/wifi/model/wifi-phy.cc b/src/wifi/model/wifi-phy.cc index cfc590944..2155f3477 100644 --- a/src/wifi/model/wifi-phy.cc +++ b/src/wifi/model/wifi-phy.cc @@ -2481,6 +2481,9 @@ WifiPhy::StartReceivePreambleAndHeader (Ptr packet, double rxPowerW, Tim NotifyRxDrop (packet); m_plcpSuccess = false; break; + default: + NS_FATAL_ERROR ("Invalid WifiPhy state."); + break; } } @@ -3756,6 +3759,8 @@ std::ostream& operator<< (std::ostream& os, WifiPhy::State state) return (os << "SWITCHING"); case WifiPhy::SLEEP: return (os << "SLEEP"); + case WifiPhy::OFF: + return (os << "OFF"); default: NS_FATAL_ERROR ("Invalid WifiPhy state"); return (os << "INVALID"); diff --git a/src/wifi/model/wifi-phy.h b/src/wifi/model/wifi-phy.h index 1fadbac50..09148aadc 100644 --- a/src/wifi/model/wifi-phy.h +++ b/src/wifi/model/wifi-phy.h @@ -193,7 +193,11 @@ public: /** * The PHY layer is sleeping. */ - SLEEP + SLEEP, + /** + * The PHY layer is switched off. + */ + OFF }; /** diff --git a/src/wifi/model/wifi-radio-energy-model.cc b/src/wifi/model/wifi-radio-energy-model.cc index f535f666c..f4fa356ee 100644 --- a/src/wifi/model/wifi-radio-energy-model.cc +++ b/src/wifi/model/wifi-radio-energy-model.cc @@ -413,6 +413,9 @@ WifiRadioEnergyModel::SetWifiRadioState (const WifiPhy::State state) case WifiPhy::SLEEP: stateName = "SLEEP"; break; + case WifiPhy::OFF: + stateName = "OFF"; + break; } NS_LOG_DEBUG ("WifiRadioEnergyModel:Switching to state: " << stateName << " at time = " << Simulator::Now ());