00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #include "error-rate-model.h"
00021
00022 namespace ns3 {
00023
00024 TypeId ErrorRateModel::GetTypeId (void)
00025 {
00026 static TypeId tid = TypeId ("ns3::ErrorRateModel")
00027 .SetParent<Object> ()
00028 ;
00029 return tid;
00030 }
00031
00032 double
00033 ErrorRateModel::CalculateSnr (WifiMode txMode, double ber) const
00034 {
00035
00036 double low, high, precision;
00037 low = 1e-25;
00038 high = 1e25;
00039 precision = 1e-12;
00040 while (high - low > precision)
00041 {
00042 NS_ASSERT (high >= low);
00043 double middle = low + (high - low) / 2;
00044 if ((1 - GetChunkSuccessRate (txMode, middle, 1)) > ber)
00045 {
00046 low = middle;
00047 }
00048 else
00049 {
00050 high = middle;
00051 }
00052 }
00053 return low;
00054 }
00055
00056 }