Added comments and changes for Doxygen compliance
authorAshwin Narayan
Sat, 16 Jul 2011 13:18:48 -0400
changeset 7332 07a8e2881ec2
parent 7331 9da649b6670f
child 7333 f5584b38c721
Added comments and changes for Doxygen compliance
src/wifi/model/mac-low.h
src/wifi/model/monitor-wifi-mac.cc
src/wifi/model/monitor-wifi-mac.h
src/wifi/model/regular-wifi-mac.h
--- a/src/wifi/model/mac-low.h	Sat Jul 16 10:44:13 2011 -0400
+++ b/src/wifi/model/mac-low.h	Sat Jul 16 13:18:48 2011 -0400
@@ -445,6 +445,7 @@
    * \param rxSnr snr of packet received
    * \param txMode transmission mode of packet received
    * \param preamble type of preamble used for the packet received
+   * \param radiotaphdr radiotap header created in YansWifiPhy
    *
    * This method is typically invoked by the lower PHY layer to notify
    * the MAC layer that a packet was successfully received.
--- a/src/wifi/model/monitor-wifi-mac.cc	Sat Jul 16 10:44:13 2011 -0400
+++ b/src/wifi/model/monitor-wifi-mac.cc	Sat Jul 16 13:18:48 2011 -0400
@@ -15,7 +15,8 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  *
- * Author: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>, Ashwin Narayan <ashwin.narayan89@gmail.com>
+ * Author: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>, 
+ *         Ashwin Narayan <ashwin.narayan89@gmail.com>
  */
 #include "monitor-wifi-mac.h"
 
@@ -24,6 +25,7 @@
 #include "ns3/pointer.h"
 #include "ns3/uinteger.h"
 #include "ns3/trace-source-accessor.h"
+#include "ns3/abort.h"
 
 #include "mac-rx-middle.h"
 #include "mac-tx-middle.h"
@@ -50,6 +52,16 @@
   return tid;
 }
 
+/*
+ * Please note that WifiNetDevice::SetMonitorMode () must 
+ * be invoked for this to work correctly.
+ *
+ * Functions that have been inherited but not used have been
+ * given empty implementations owing to the fact that they 
+ * are not applicable.
+ *
+ */
+
 MonitorWifiMac::MonitorWifiMac ()
 {
   NS_LOG_FUNCTION (this);
@@ -60,7 +72,7 @@
 
   m_low = CreateObject<MacLow> ();
   m_low->SetRxCallback (MakeCallback (&MacRxMiddle::Receive, m_rxMiddle));
-  m_low->SetMonitorMode ();
+  m_low->SetMonitorMode (); // Enables Monitor Mode functionality
 
   m_dcfManager = new DcfManager ();
   m_dcfManager->SetupLowListener (m_low);
@@ -138,7 +150,7 @@
 void
 MonitorWifiMac::SetQosSupported (bool enable)
 {
-  NS_FATAL_ERROR ("QoS Functionality not supported in MonitorWifiMac");
+  NS_ABORT_MSG ("QoS Functionality not supported in MonitorWifiMac");
 }
 
 bool
@@ -266,40 +278,42 @@
   return m_low->GetAddress ();
 }
 
+/**
+ * Not applicable in Monitor Mode
+ */
 void
 MonitorWifiMac::SetSsid (Ssid ssid)
 {
-  NS_LOG_FUNCTION (this << ssid);
-  m_ssid = ssid;
 }
-
+/**
+ * Not applicable in Monitor Mode
+ */
 Ssid
 MonitorWifiMac::GetSsid (void) const
 {
   return m_ssid;
 }
-
+/**
+ * Not applicable in Monitor Mode
+ */
 void
 MonitorWifiMac::SetBssid (Mac48Address bssid)
 {
-  NS_LOG_FUNCTION (this << bssid);
-  m_low->SetBssid (bssid);
 }
-
+/**
+ * Not applicable in Monitor Mode
+ */
 Mac48Address
 MonitorWifiMac::GetBssid (void) const
 {
   return m_low->GetBssid ();
 }
-
+/**
+ * Not applicable in Monitor Mode
+ */
 void
 MonitorWifiMac::SetWifiRemoteStationManager (Ptr<WifiRemoteStationManager> stationManager)
 {
-  NS_LOG_FUNCTION (this << stationManager);
-  m_stationManager = stationManager;
-  m_low->SetWifiRemoteStationManager (stationManager);
-
-  m_dca->SetWifiRemoteStationManager (stationManager);
 }
 
 void
@@ -317,18 +331,27 @@
   m_low->SetPromisc ();
 }
 
+/**
+ * Not applicable in Monitor Mode
+ */
 void
 MonitorWifiMac::Enqueue (Ptr<const Packet> packet,
                          Mac48Address to, Mac48Address from)
 {
+  NS_ABORT_MSG ("Not applicable in MonitorMacWifi");
 }
-
+/**
+ * Not applicable in Monitor Mode
+ */
 void
 MonitorWifiMac::Enqueue (Ptr<const Packet> packet,
                          Mac48Address to)
 {
+  NS_ABORT_MSG ("Not applicable in MonitorMacWifi");
 }
-
+/**
+ * Not applicable in Monitor Mode
+ */
 bool
 MonitorWifiMac::SupportsSendFrom (void) const
 {
--- a/src/wifi/model/monitor-wifi-mac.h	Sat Jul 16 10:44:13 2011 -0400
+++ b/src/wifi/model/monitor-wifi-mac.h	Sat Jul 16 13:18:48 2011 -0400
@@ -15,7 +15,8 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  *
- * Author: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>, Ashwin Narayan <ashwin.narayan89@gmail.com>
+ * Author: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>, 
+ *         Ashwin Narayan <ashwin.narayan89@gmail.com>
  */
 #ifndef MONITOR_WIFI_MAC_H
 #define MONITOR_WIFI_MAC_H
@@ -43,7 +44,28 @@
  * \brief base class for Monitor Wifi Mac objects.
  *
  * This class is essentially a copy of the non-QoS
- * functionality of RegularWifiMac
+ * functionality of RegularWifiMac and serves as an
+ * abstraction for Monitor mode usage.
+ *
+ * This mode is generally used for passive sniffing. 
+ * The interface receives all packets in its listening 
+ * channel, even though it may not be destined for it.
+ * The 802.11 MAC packet contains extra header radiotap 
+ * which includes physical layer information such as
+ * received channel, signal quality, signal to noise 
+ * ratio, antenna scheme, etc. 
+ *
+ * The other purpose of monitor mode is packet injection. 
+ * It is possible to inject random IEEE 802.11 MAC frames 
+ * using the radiotap header and monitor mode WLAN network 
+ * interface.
+ *
+ * Please note that WifiNetDevice::SetMonitorMode () must 
+ * be invoked for this to work correctly.
+ *
+ * Functions that have been inherited but not used have been
+ * given empty implementations owing to the fact that they 
+ * are not applicable.
  *
  */
 
@@ -55,34 +77,137 @@
   MonitorWifiMac ();
   virtual ~MonitorWifiMac ();
 
+  /**
+  * \param slotTime the slot duration
+  */
   void SetSlot (Time slotTime);
+  /**
+   * \param sifs the sifs duration
+   */
   void SetSifs (Time sifs);
+  /**
+   * \param eifsNoDifs the duration of an EIFS minus DIFS.
+   *
+   * This value is used to calculate the EIFS depending
+   * on AIFSN.
+   */
   void SetEifsNoDifs (Time eifsNoDifs);
+  /**
+   * \param pifs the pifs duration.
+   */
   void SetPifs (Time pifs);
+  /**
+   * \param ctsTimeout the duration of a CTS timeout.
+   */
   void SetCtsTimeout (Time ctsTimeout);
+  /**
+   * \param ackTimeout the duration of an ACK timeout.
+   */
   void SetAckTimeout (Time ackTimeout);
+  /**
+   * \returns the current PIFS duration.
+   */
   Time GetPifs (void) const;
+  /**
+   * \returns the current SIFS duration.
+   */ 
   Time GetSifs (void) const;
+  /**
+   * \returns the current slot duration.
+   */ 
   Time GetSlot (void) const;
+  /**
+   * \returns the current EIFS minus DIFS duration
+   */  
   Time GetEifsNoDifs (void) const;
+  /**
+   * \returns the current CTS timeout duration.
+   */
   Time GetCtsTimeout (void) const;
+  /**
+   * \returns the current ACK timeout duration.
+   */
   Time GetAckTimeout (void) const;
+  /**
+   * \returns the MAC address associated to this MAC layer.
+   */
   virtual Mac48Address GetAddress (void) const;
+  /**
+   * Not applicable in Monitor Mode node
+   */
   virtual Ssid GetSsid (void) const;
+  /**
+   * \param address the current address of this MAC layer.
+   */
   virtual void SetAddress (Mac48Address address);
+  /**
+   * Not applicable in Monitor Mode
+   */
   virtual void SetSsid (Ssid ssid);
+  /**
+   * Not applicable in Monitor Mode
+   */
   virtual void SetBssid (Mac48Address bssid);
+  /**
+   * Not applicable in Monitor Mode
+   */
   virtual Mac48Address GetBssid (void) const;
+  /**
+   * \brief Sets the interface in promiscuous mode.
+   *
+   * Enables promiscuous mode on the interface. Note that any further
+   * filtering on the incoming frame path may affect the overall
+   * behavior.
+   */
   virtual void SetPromisc (void);
+  
+  /**
+   * Not applicable in Monitor Mode
+   */
   virtual void Enqueue (Ptr<const Packet> packet, Mac48Address to, Mac48Address from);
+  /**
+   * Not applicable in Monitor Mode
+   */
   virtual bool SupportsSendFrom (void) const;
+  /**
+   * Not applicable in Monitor Mode
+   */
   virtual void Enqueue (Ptr<const Packet> packet, Mac48Address to);
+  /**
+   * \param phy the physical layer attached to this MAC.
+   */
   virtual void SetWifiPhy (Ptr<WifiPhy> phy);
+  /**
+   * \param stationManager the station manager attached to this MAC.
+   */
   virtual void SetWifiRemoteStationManager (Ptr<WifiRemoteStationManager> stationManager);
+
+  /**
+   * This type defines the callback of a higher layer that a
+   * WifiMac(-derived) object invokes to pass a packet up the stack.
+   *
+   * \param packet the packet that has been received.
+   * \param from the MAC address of the device that sent the packet.
+   * \param to the MAC address ot the device that the packet is
+   * destined for.
+   */
   typedef Callback<void, Ptr<Packet>, Mac48Address, Mac48Address> ForwardUpCallback;
+  /**
+   * \param upCallback the callback to invoke when a packet must be
+   * forwarded up the stack.
+   */
   virtual void SetForwardUpCallback (ForwardUpCallback upCallback);
+  /**
+   * \param linkUp the callback to invoke when the link becomes up.
+   */
   virtual void SetLinkUpCallback (Callback<void> linkUp);
+  /**
+   * \param linkDown the callback to invoke when the link becomes down.
+   */
   virtual void SetLinkDownCallback (Callback<void> linkDown);
+  /* Next functions are not pure virtual so non Qos WifiMacs are not
+   * forced to implement them.
+   */ 
   virtual void SetBasicBlockAckTimeout (Time blockAckTimeout);
   virtual Time GetBasicBlockAckTimeout (void) const;
   virtual void SetCompressedBlockAckTimeout (Time blockAckTimeout);
@@ -106,26 +231,70 @@
 
   Ssid m_ssid;
 
+  /** This holds a pointer to the DCF instance for this WifiMac - used
+  for transmission of frames to non-QoS peers. */
   Ptr<DcaTxop> m_dca;
 
+  /**
+   * \param standard the phy standard to be used
+   *
+   * This method is called by ns3::WifiMac::ConfigureStandard to
+   * complete the configuration process for a requested phy standard.
+   *
+   * This method may be overriden by a derived class (e.g., in order
+   * to apply DCF parameters specific to the usage model it is
+   * dealing with), in which case the reimplementation may choose to
+   * deal with certain values in the WifiPhyStandard enumeration, and
+   * chain up to this implementation to deal with the remainder.
+   */
   virtual void FinishConfigureStandard (enum WifiPhyStandard standard);
 
+  /**
+   * This method acts as the MacRxMiddle receive callback and is
+   * invoked to notify us that a frame has been received. The radiotap
+   * header is added to the packet here and then sent up the stack after
+   * extracting the origin and destination addresses from the MAC header.
+   *
+   * \param packet the packet that has been received.
+   * \param hdr a pointer to the MAC header of the received frame.
+   * \param radiotaphdr a pointer to the Radiotap Header of the packet.
+   */
   virtual void Receive (Ptr<Packet> packet, const WifiMacHeader *hdr, const RadiotapHeader *radiotaphdr);
   virtual void TxOk (const WifiMacHeader &hdr);
   virtual void TxFailed (const WifiMacHeader &hdr);
 
   void ForwardUp (Ptr<Packet> packet, Mac48Address from, Mac48Address to);
 
+  /**
+   * Not applicable to Monitor Mode 
+   *
+   */
   virtual void DeaggregateAmsduAndForward (Ptr<Packet> aggregatedPacket,
                                            const WifiMacHeader *hdr);
-
+  /**
+   * Not applicable to Monitor Mode 
+   *
+   */
   virtual void SendAddBaResponse (const MgtAddBaRequestHeader *reqHdr,
                                   Mac48Address originator);
 
+  /**
+   * Not applicable to Monitor Mode 
+   *
+   */
   bool m_qosSupported;
+  /**
+   * Not applicable to Monitor Mode 
+   *
+   */
   void SetQosSupported (bool enable);
+  /**
+   * Not applicable to Monitor Mode 
+   *
+   */
   bool GetQosSupported () const;
 private:
+  /** Accessor for the DCF object */
   Ptr<DcaTxop> GetDcaTxop (void) const;
 
   TracedCallback<const WifiMacHeader &> m_txOkCallback;
--- a/src/wifi/model/regular-wifi-mac.h	Sat Jul 16 10:44:13 2011 -0400
+++ b/src/wifi/model/regular-wifi-mac.h	Sat Jul 16 13:18:48 2011 -0400
@@ -276,6 +276,7 @@
    *
    * \param packet the packet that has been received.
    * \param hdr a pointer to the MAC header of the received frame.
+   * \param radiotaphdr a point to the radiotap header of the packet.
    */
   virtual void Receive (Ptr<Packet> packet, const WifiMacHeader *hdr, const RadiotapHeader *radiotaphdr);
   virtual void TxOk (const WifiMacHeader &hdr);