wifi: Introduce OFF state

This commit is contained in:
Sébastien Deronne
2017-12-02 13:25:28 +01:00
parent 9772db1705
commit db676adac2
4 changed files with 16 additions and 23 deletions

View File

@@ -346,8 +346,6 @@ WifiPhyStateHelper::SwitchToTx (Time txDuration, Ptr<const Packet> 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;
}

View File

@@ -2481,6 +2481,9 @@ WifiPhy::StartReceivePreambleAndHeader (Ptr<Packet> 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");

View File

@@ -193,7 +193,11 @@ public:
/**
* The PHY layer is sleeping.
*/
SLEEP
SLEEP,
/**
* The PHY layer is switched off.
*/
OFF
};
/**

View File

@@ -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 ());