port ArfMacStations to new MacStation API
authorMathieu Lacage <mathieu.lacage@sophia.inria.fr>
Mon, 08 Oct 2007 17:02:20 +0200
changeset 1917 d781597e35c0
parent 1916 b7e68c4720c8
child 1918 fee53ba3f388
port ArfMacStations to new MacStation API
src/devices/wifi/arf-mac-stations.cc
src/devices/wifi/arf-mac-stations.h
src/devices/wifi/wscript
--- a/src/devices/wifi/arf-mac-stations.cc	Mon Oct 08 16:04:59 2007 +0200
+++ b/src/devices/wifi/arf-mac-stations.cc	Mon Oct 08 17:02:20 2007 +0200
@@ -1,7 +1,6 @@
 /* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
 /*
  * Copyright (c) 2004,2005,2006 INRIA
- * All rights reserved.
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License version 2 as 
@@ -22,16 +21,16 @@
 #include "mac-stations.h"
 #include "mac-station.h"
 #include "arf-mac-stations.h"
+#include "ns3/assert.h"
 
-#include <cassert>
 
 namespace ns3 {
   
-ArfMacStation::ArfMacStation (ArfMacStations *stations,
+ArfMacStation::ArfMacStation (WifiMode defaultTxMode,
                               int minTimerTimeout,
                               int minSuccessThreshold)
+  : MacStation (defaultTxMode)
 {
-  m_stations = stations;
   m_minTimerTimeout = minTimerTimeout;
   m_minSuccessThreshold = minSuccessThreshold;
   m_successThreshold = m_minSuccessThreshold;
@@ -50,7 +49,7 @@
 int 
 ArfMacStation::GetMaxRate (void)
 {
-  return m_stations->GetNModes ();
+  return GetNModes ();
 }
 int 
 ArfMacStation::GetMinRate (void)
@@ -108,7 +107,7 @@
 
   if (m_recovery) 
     {
-      assert (m_retry >= 1);
+      NS_ASSERT (m_retry >= 1);
       if (NeedRecoveryFallback ()) 
         {
           ReportRecoveryFailure ();
@@ -121,7 +120,7 @@
     } 
   else 
     {
-      assert (m_retry >= 1);
+      NS_ASSERT (m_retry >= 1);
       if (NeedNormalFallback ()) 
         {
           ReportFailure ();
@@ -137,15 +136,15 @@
     }
 }
 void 
-ArfMacStation::ReportRxOk (double rxSnr, uint8_t txMode)
+ArfMacStation::ReportRxOk (double rxSnr, WifiMode txMode)
 {}
-void ArfMacStation::ReportRtsOk (double ctsSnr, uint8_t ctsMode, uint8_t rtsSnr)
+void ArfMacStation::ReportRtsOk (double ctsSnr, WifiMode ctsMode, double rtsSnr)
 {
-  assert (rtsSnr == 0);
+  NS_ASSERT (rtsSnr == 0);
 }
-void ArfMacStation::ReportDataOk (double ackSnr, uint8_t ackMode, uint8_t dataSnr)
+void ArfMacStation::ReportDataOk (double ackSnr, WifiMode ackMode, double dataSnr)
 {
-  assert (dataSnr == 0);
+  NS_ASSERT (dataSnr == 0);
   m_timer++;
   m_success++;
   m_failed = 0;
@@ -161,20 +160,15 @@
       m_recovery = true;
     }
 }
-uint8_t 
-ArfMacStation::SnrToSnr (double snr)
+WifiMode
+ArfMacStation::GetDataMode (uint32_t size)
 {
-  return 0;
+  return GetMode (m_rate);
 }
-uint8_t 
-ArfMacStation::GetDataMode (int size)
-{
-  return m_rate;
-}
-uint8_t 
+WifiMode
 ArfMacStation::GetRtsMode (void)
 {
-  return 0;
+  return GetMode (0);
 }
 
 void ArfMacStation::ReportRecoveryFailure (void)
@@ -199,12 +193,12 @@
 }
 void ArfMacStation::SetTimerTimeout (int timerTimeout)
 {
-  assert (timerTimeout >= m_minTimerTimeout);
+  NS_ASSERT (timerTimeout >= m_minTimerTimeout);
   m_timerTimeout = timerTimeout;
 }
 void ArfMacStation::SetSuccessThreshold (int successThreshold)
 {
-  assert (successThreshold >= m_minSuccessThreshold);
+  NS_ASSERT (successThreshold >= m_minSuccessThreshold);
   m_successThreshold = successThreshold;
 }
 
@@ -212,23 +206,15 @@
 
 
 
-ArfMacStations::ArfMacStations (uint8_t nModes)
-  : m_nModes (nModes)
+ArfMacStations::ArfMacStations (WifiMode defaultTxMode)
+  : MacStations (defaultTxMode)
 {}
 ArfMacStations::~ArfMacStations ()
 {}
 MacStation *
-ArfMacStations::CreateStation (void)
+ArfMacStations::CreateStation (WifiMode defaultTxMode)
 {
-  /* XXX: use mac to access user and PHY params. */
-  return new ArfMacStation (this, 15, 10);
+  return new ArfMacStation (defaultTxMode, 15, 10);
 }
 
-uint8_t
-ArfMacStations::GetNModes (void) const
-{
-  return m_nModes;
-}
-
-
-}; // namespace ns3
+} // namespace ns3
--- a/src/devices/wifi/arf-mac-stations.h	Mon Oct 08 16:04:59 2007 +0200
+++ b/src/devices/wifi/arf-mac-stations.h	Mon Oct 08 17:02:20 2007 +0200
@@ -1,7 +1,6 @@
 /* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
 /*
  * Copyright (c) 2005,2006 INRIA
- * All rights reserved.
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License version 2 as 
@@ -28,37 +27,31 @@
 
 class ArfMacStations : public MacStations {
 public:
-  ArfMacStations (uint8_t nModes);
+  ArfMacStations (WifiMode defaultTxMode);
   virtual ~ArfMacStations ();
 
-  uint8_t GetNModes (void) const;
 private:
-  virtual class MacStation *CreateStation (void);
-  uint8_t m_nModes;
+  virtual class MacStation *CreateStation (WifiMode defaultTxMode);
 };
 
 
 class ArfMacStation : public MacStation
 {
 public:
-  ArfMacStation (ArfMacStations *stations,
+  ArfMacStation (WifiMode defaultTxMode,
                  int minTimerTimeout,
                  int minSuccessThreshold);
   virtual ~ArfMacStation ();
 
-  virtual void ReportRxOk (double rxSnr, uint8_t txMode);
-
+  virtual void ReportRxOk (double rxSnr, WifiMode txMode);
   virtual void ReportRtsFailed (void);
   virtual void ReportDataFailed (void);
-  virtual void ReportRtsOk (double ctsSnr, uint8_t ctsMode, uint8_t rtsSnr);
-  virtual void ReportDataOk (double ackSnr, uint8_t ackMode, uint8_t dataSnr);
-  virtual uint8_t GetDataMode (int size);
-  virtual uint8_t GetRtsMode (void);
-  virtual uint8_t SnrToSnr (double snr);
+  virtual void ReportRtsOk (double ctsSnr, WifiMode ctsMode, double rtsSnr);
+  virtual void ReportDataOk (double ackSnr, WifiMode ackMode, double dataSnr);
+  virtual WifiMode GetDataMode (uint32_t size);
+  virtual WifiMode GetRtsMode (void);
 
 private:
-  ArfMacStations *m_stations;
-
   int m_timer;
   int m_success;
   int m_failed;
--- a/src/devices/wifi/wscript	Mon Oct 08 16:04:59 2007 +0200
+++ b/src/devices/wifi/wscript	Mon Oct 08 17:02:20 2007 +0200
@@ -11,6 +11,7 @@
         'wifi-phy.cc',
         'mac-stations.cc',
         'cr-mac-stations.cc',
+        'arf-mac-stations.cc',
         'wifi-mac-header.cc',
         'wifi-mac-trailer.cc',
         'mac-parameters.cc',