src/devices/wifi/wifi-helper.cc
changeset 2524 db72c0e7743e
child 2549 fe90cf0b2c63
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/devices/wifi/wifi-helper.cc	Sat Mar 01 21:21:53 2008 +0100
@@ -0,0 +1,114 @@
+#include "wifi-helper.h"
+#include "wifi-net-device.h"
+#include "wifi-mac.h"
+#include "wifi-phy.h"
+#include "wifi-remote-station-manager.h"
+#include "wifi-channel.h"
+#include "ns3/mobility-model.h"
+#include "ns3/log.h"
+
+NS_LOG_COMPONENT_DEFINE ("WifiHelper");
+
+namespace ns3 {
+
+WifiHelper::WifiHelper ()
+{
+  m_stationManager.SetTypeId ("ArfWifiManager");
+  m_phy.SetTypeId ("WifiPhy");
+  m_mac.SetTypeId ("AdhocWifiMac");
+}
+
+void 
+WifiHelper::SetRemoteStationManager (std::string type,
+				     std::string n0, Attribute v0,
+				     std::string n1, Attribute v1,
+				     std::string n2, Attribute v2,
+				     std::string n3, Attribute v3,
+				     std::string n4, Attribute v4,
+				     std::string n5, Attribute v5,
+				     std::string n6, Attribute v6,
+				     std::string n7, Attribute v7)
+{
+  m_stationManager = ObjectFactory ();
+  m_stationManager.SetTypeId (type);
+  m_stationManager.Set (n0, v0);
+  m_stationManager.Set (n1, v1);
+  m_stationManager.Set (n2, v2);
+  m_stationManager.Set (n3, v3);
+  m_stationManager.Set (n4, v4);
+  m_stationManager.Set (n5, v5);
+  m_stationManager.Set (n6, v6);
+  m_stationManager.Set (n7, v7);
+}
+
+void 
+WifiHelper::SetMac (std::string type,
+		    std::string n0, Attribute v0,
+		    std::string n1, Attribute v1,
+		    std::string n2, Attribute v2,
+		    std::string n3, Attribute v3,
+		    std::string n4, Attribute v4,
+		    std::string n5, Attribute v5,
+		    std::string n6, Attribute v6,
+		    std::string n7, Attribute v7)
+{
+  m_mac = ObjectFactory ();
+  m_mac.SetTypeId (type);
+  m_mac.Set (n0, v0);
+  m_mac.Set (n1, v1);
+  m_mac.Set (n2, v2);
+  m_mac.Set (n3, v3);
+  m_mac.Set (n4, v4);
+  m_mac.Set (n5, v5);
+  m_mac.Set (n6, v6);
+  m_mac.Set (n7, v7);
+}
+
+void 
+WifiHelper::SetPhy (std::string type,
+		    std::string n0, Attribute v0,
+		    std::string n1, Attribute v1,
+		    std::string n2, Attribute v2,
+		    std::string n3, Attribute v3,
+		    std::string n4, Attribute v4,
+		    std::string n5, Attribute v5,
+		    std::string n6, Attribute v6,
+		    std::string n7, Attribute v7)
+{
+  m_phy = ObjectFactory ();
+  m_phy.SetTypeId (type);
+  m_phy.Set (n0, v0);
+  m_phy.Set (n1, v1);
+  m_phy.Set (n2, v2);
+  m_phy.Set (n3, v3);
+  m_phy.Set (n4, v4);
+  m_phy.Set (n5, v5);
+  m_phy.Set (n6, v6);
+  m_phy.Set (n7, v7);
+}
+
+NetDeviceContainer
+WifiHelper::Build (NodeContainer c) const
+{
+  Ptr<WifiChannel> channel = CreateObjectWith<WifiChannel> ();
+  return Build (c, channel);
+}
+NetDeviceContainer
+WifiHelper::Build (NodeContainer c, Ptr<WifiChannel> channel) const
+{
+  NetDeviceContainer devices;
+  for (NodeContainer::Iterator i = c.Begin (); i != c.End (); i++)
+    {
+      Ptr<Node> node = *i;
+      Ptr<WifiNetDevice> device = CreateObject<WifiNetDevice> ();
+      Ptr<WifiRemoteStationManager> manager = m_stationManager.Create<WifiRemoteStationManager> ();
+      Ptr<WifiMac> mac = m_mac.Create<WifiMac> ();
+      Ptr<WifiPhy> phy = m_phy.Create<WifiPhy> ();
+      device->Setup (node, mac, phy, manager, channel);
+      node->AddDevice (device);
+      devices.Add (device);
+      NS_LOG_DEBUG ("node="<<node<<", mob="<<node->GetObject<MobilityModel> ());
+    }
+  return devices;
+}
+} // namespace ns3