src/devices/wifi/error-rate-model.cc
changeset 3905 99c9346b5d71
parent 3903 714f93024a37
child 4038 c6f634d0fc6f
--- a/src/devices/wifi/error-rate-model.cc	Thu Jun 12 12:31:02 2008 -0700
+++ b/src/devices/wifi/error-rate-model.cc	Sat Jun 14 10:52:10 2008 -0700
@@ -25,6 +25,8 @@
 
 namespace ns3 {
 
+NS_OBJECT_ENSURE_REGISTERED (ErrorRateModel);
+
 TypeId 
 ErrorRateModel::GetTypeId (void)
 {
@@ -38,6 +40,30 @@
 ErrorRateModel::ErrorRateModel ()
 {}
 
+double 
+ErrorRateModel::CalculateSnr (WifiMode txMode, double ber) const
+{
+  // This is a very simple binary search.
+  double low, high, precision;
+  low = 1e-25;
+  high = 1e25;
+  precision = 1e-12;
+  while (high - low > precision) 
+    {
+      NS_ASSERT (high >= low);
+      double middle = low + (high - low) / 2;
+      if ((1 - GetChunkSuccessRate (txMode, middle, 1)) > ber) 
+        {
+          low = middle;
+        } 
+      else 
+        {
+          high = middle;
+        }
+    }
+  return low;
+}
+
 
 double 
 ErrorRateModel::Log2 (double val) const