src/wifi/model/wifi-phy.cc
changeset 9063 32755d0516f4
parent 8981 7e1c95c4d1a7
child 10139 17a71cd49da3
equal deleted inserted replaced
9062:d14e2430213d 9063:32755d0516f4
    28 #include "ns3/log.h"
    28 #include "ns3/log.h"
    29 #include "ns3/double.h"
    29 #include "ns3/double.h"
    30 #include "ns3/uinteger.h"
    30 #include "ns3/uinteger.h"
    31 #include "ns3/enum.h"
    31 #include "ns3/enum.h"
    32 #include "ns3/trace-source-accessor.h"
    32 #include "ns3/trace-source-accessor.h"
    33 #include <math.h>
    33 #include <cmath>
    34 
    34 
    35 NS_LOG_COMPONENT_DEFINE ("WifiPhy");
    35 NS_LOG_COMPONENT_DEFINE ("WifiPhy");
    36 
    36 
    37 namespace ns3 {
    37 namespace ns3 {
    38 
    38 
   262         // IEEE Std 802.11-2007, section 17.3.2.2, table 17-3
   262         // IEEE Std 802.11-2007, section 17.3.2.2, table 17-3
   263         // corresponds to N_{DBPS} in the table
   263         // corresponds to N_{DBPS} in the table
   264         double numDataBitsPerSymbol = payloadMode.GetDataRate ()  * symbolDurationUs / 1e6;
   264         double numDataBitsPerSymbol = payloadMode.GetDataRate ()  * symbolDurationUs / 1e6;
   265 
   265 
   266         // IEEE Std 802.11-2007, section 17.3.5.3, equation (17-11)
   266         // IEEE Std 802.11-2007, section 17.3.5.3, equation (17-11)
   267         uint32_t numSymbols = lrint (ceil ((16 + size * 8.0 + 6.0) / numDataBitsPerSymbol));
   267         uint32_t numSymbols = lrint (std::ceil ((16 + size * 8.0 + 6.0) / numDataBitsPerSymbol));
   268 
   268 
   269         // Add signal extension for ERP PHY
   269         // Add signal extension for ERP PHY
   270         if (payloadMode.GetModulationClass () == WIFI_MOD_CLASS_ERP_OFDM)
   270         if (payloadMode.GetModulationClass () == WIFI_MOD_CLASS_ERP_OFDM)
   271           {
   271           {
   272             return numSymbols * symbolDurationUs + 6;
   272             return numSymbols * symbolDurationUs + 6;
   280     case WIFI_MOD_CLASS_DSSS:
   280     case WIFI_MOD_CLASS_DSSS:
   281       // IEEE Std 802.11-2007, section 18.2.3.5
   281       // IEEE Std 802.11-2007, section 18.2.3.5
   282       NS_LOG_LOGIC (" size=" << size
   282       NS_LOG_LOGIC (" size=" << size
   283                              << " mode=" << payloadMode
   283                              << " mode=" << payloadMode
   284                              << " rate=" << payloadMode.GetDataRate () );
   284                              << " rate=" << payloadMode.GetDataRate () );
   285       return lrint (ceil ((size * 8.0) / (payloadMode.GetDataRate () / 1.0e6)));
   285       return lrint (std::ceil ((size * 8.0) / (payloadMode.GetDataRate () / 1.0e6)));
   286 
   286 
   287     default:
   287     default:
   288       NS_FATAL_ERROR ("unsupported modulation class");
   288       NS_FATAL_ERROR ("unsupported modulation class");
   289       return 0;
   289       return 0;
   290     }
   290     }