From 2d9a3b4059fb95435b2f6957bc7c0e4c2a1b09bd Mon Sep 17 00:00:00 2001 From: Rediet Date: Tue, 3 Nov 2020 18:42:58 +0100 Subject: [PATCH] wifi: Move WifiPhyRxfailureReason to wifi-phy-common.h And add HT_SIG_FAILURE --- src/wifi/examples/wifi-bianchi.cc | 2 + src/wifi/model/wifi-phy-common.h | 79 +++++++++++++++++++++++++++++++ src/wifi/model/wifi-phy.h | 72 ---------------------------- 3 files changed, 81 insertions(+), 72 deletions(-) diff --git a/src/wifi/examples/wifi-bianchi.cc b/src/wifi/examples/wifi-bianchi.cc index dcc30f8b9..091de0151 100644 --- a/src/wifi/examples/wifi-bianchi.cc +++ b/src/wifi/examples/wifi-bianchi.cc @@ -550,7 +550,9 @@ PhyRxDropTrace (std::string context, Ptr p, WifiPhyRxfailureReason } break; } + case HT_SIG_FAILURE: case SIG_A_FAILURE: + case SIG_B_FAILURE: NS_FATAL_ERROR ("Unexpected PHY header failure!"); case PREAMBLE_DETECTION_PACKET_SWITCH: NS_FATAL_ERROR ("All devices should send with same power, so no packet switch during preamble detection should occur!"); diff --git a/src/wifi/model/wifi-phy-common.h b/src/wifi/model/wifi-phy-common.h index 1cbafc5a5..b3dc1976e 100644 --- a/src/wifi/model/wifi-phy-common.h +++ b/src/wifi/model/wifi-phy-common.h @@ -33,6 +33,7 @@ * - ns3::WifiModulationClass * - ns3::WifiPpduField * - ns3::WifiPpduType + * - ns3::WifiPhyRxfailureReason */ namespace ns3 { @@ -235,6 +236,84 @@ inline std::ostream& operator<< (std::ostream &os, const WifiPpduType &type) } } +/** + * \ingroup wifi + * Enumeration of the possible reception failure reasons. + */ +enum WifiPhyRxfailureReason +{ + UNKNOWN = 0, + UNSUPPORTED_SETTINGS, + CHANNEL_SWITCHING, + RXING, + TXING, + SLEEPING, + BUSY_DECODING_PREAMBLE, + PREAMBLE_DETECT_FAILURE, + RECEPTION_ABORTED_BY_TX, + L_SIG_FAILURE, + HT_SIG_FAILURE, + SIG_A_FAILURE, + SIG_B_FAILURE, + PREAMBLE_DETECTION_PACKET_SWITCH, + FRAME_CAPTURE_PACKET_SWITCH, + OBSS_PD_CCA_RESET, + HE_TB_PPDU_TOO_LATE, + FILTERED +}; + +/** + * \brief Stream insertion operator. + * + * \param os the stream + * \param reason the failure reason + * \returns a reference to the stream + */ +inline std::ostream& operator<< (std::ostream &os, const WifiPhyRxfailureReason &reason) +{ + switch (reason) + { + case UNSUPPORTED_SETTINGS: + return (os << "UNSUPPORTED_SETTINGS"); + case CHANNEL_SWITCHING: + return (os << "CHANNEL_SWITCHING"); + case RXING: + return (os << "RXING"); + case TXING: + return (os << "TXING"); + case SLEEPING: + return (os << "SLEEPING"); + case BUSY_DECODING_PREAMBLE: + return (os << "BUSY_DECODING_PREAMBLE"); + case PREAMBLE_DETECT_FAILURE: + return (os << "PREAMBLE_DETECT_FAILURE"); + case RECEPTION_ABORTED_BY_TX: + return (os << "RECEPTION_ABORTED_BY_TX"); + case L_SIG_FAILURE: + return (os << "L_SIG_FAILURE"); + case HT_SIG_FAILURE: + return (os << "HT_SIG_FAILURE"); + case SIG_A_FAILURE: + return (os << "SIG_A_FAILURE"); + case SIG_B_FAILURE: + return (os << "SIG_B_FAILURE"); + case PREAMBLE_DETECTION_PACKET_SWITCH: + return (os << "PREAMBLE_DETECTION_PACKET_SWITCH"); + case FRAME_CAPTURE_PACKET_SWITCH: + return (os << "FRAME_CAPTURE_PACKET_SWITCH"); + case OBSS_PD_CCA_RESET: + return (os << "OBSS_PD_CCA_RESET"); + case HE_TB_PPDU_TOO_LATE: + return (os << "HE_TB_PPDU_TOO_LATE"); + case FILTERED: + return (os << "FILTERED"); + case UNKNOWN: + default: + NS_FATAL_ERROR ("Unknown reason"); + return (os << "UNKNOWN"); + } +} + } //namespace ns3 #endif /* WIFI_PHY_COMMON_H */ diff --git a/src/wifi/model/wifi-phy.h b/src/wifi/model/wifi-phy.h index a670b794d..ae05de5d2 100644 --- a/src/wifi/model/wifi-phy.h +++ b/src/wifi/model/wifi-phy.h @@ -42,78 +42,6 @@ class PreambleDetectionModel; class WifiRadioEnergyModel; class UniformRandomVariable; -/** - * Enumeration of the possible reception failure reasons. - */ -enum WifiPhyRxfailureReason -{ - UNKNOWN = 0, - UNSUPPORTED_SETTINGS, - CHANNEL_SWITCHING, - RXING, - TXING, - SLEEPING, - BUSY_DECODING_PREAMBLE, - PREAMBLE_DETECT_FAILURE, - RECEPTION_ABORTED_BY_TX, - L_SIG_FAILURE, - SIG_A_FAILURE, - SIG_B_FAILURE, - PREAMBLE_DETECTION_PACKET_SWITCH, - FRAME_CAPTURE_PACKET_SWITCH, - OBSS_PD_CCA_RESET, - FILTERED, - HE_TB_PPDU_TOO_LATE -}; - -/** -* \brief Stream insertion operator. -* -* \param os the stream -* \param reason the failure reason -* \returns a reference to the stream -*/ -inline std::ostream& operator<< (std::ostream& os, WifiPhyRxfailureReason reason) -{ - switch (reason) - { - case UNSUPPORTED_SETTINGS: - return (os << "UNSUPPORTED_SETTINGS"); - case CHANNEL_SWITCHING: - return (os << "CHANNEL_SWITCHING"); - case RXING: - return (os << "RXING"); - case TXING: - return (os << "TXING"); - case SLEEPING: - return (os << "SLEEPING"); - case BUSY_DECODING_PREAMBLE: - return (os << "BUSY_DECODING_PREAMBLE"); - case PREAMBLE_DETECT_FAILURE: - return (os << "PREAMBLE_DETECT_FAILURE"); - case RECEPTION_ABORTED_BY_TX: - return (os << "RECEPTION_ABORTED_BY_TX"); - case L_SIG_FAILURE: - return (os << "L_SIG_FAILURE"); - case SIG_A_FAILURE: - return (os << "SIG_A_FAILURE"); - case PREAMBLE_DETECTION_PACKET_SWITCH: - return (os << "PREAMBLE_DETECTION_PACKET_SWITCH"); - case FRAME_CAPTURE_PACKET_SWITCH: - return (os << "FRAME_CAPTURE_PACKET_SWITCH"); - case OBSS_PD_CCA_RESET: - return (os << "OBSS_PD_CCA_RESET"); - case FILTERED: - return (os << "FILTERED"); - case HE_TB_PPDU_TOO_LATE: - return (os << "HE_TB_PPDU_TOO_LATE"); - case UNKNOWN: - default: - NS_FATAL_ERROR ("Unknown reason"); - return (os << "UNKNOWN"); - } -} - /// SignalNoiseDbm structure struct SignalNoiseDbm