examples: Adding an extremely basic WiFi-based ndnSIM scenario
diff --git a/examples/ndn-simple-wifi.cc b/examples/ndn-simple-wifi.cc
new file mode 100644
index 0000000..db54c93
--- /dev/null
+++ b/examples/ndn-simple-wifi.cc
@@ -0,0 +1,136 @@
+/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil -*- */
+/*
+ * Copyright (c) 2012-2013 University of California, Los Angeles
+ *
+ * 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
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ * Author: Alexander Afanasyev <alexander.afanasyev@ucla.edu>
+ */
+
+#include "ns3/core-module.h"
+#include "ns3/network-module.h"
+#include "ns3/applications-module.h"
+#include "ns3/wifi-module.h"
+#include "ns3/mobility-module.h"
+#include "ns3/internet-module.h"
+
+#include "ns3/ndnSIM-module.h"
+
+using namespace std;
+using namespace ns3;
+
+NS_LOG_COMPONENT_DEFINE ("ndn.WifiExample");
+
+//
+// DISCLAIMER: Note that this is an extremely simple example, containing just 2 wifi nodes communicating
+// directly over AdHoc channel.
+//
+
+// Ptr<ndn::NetDeviceFace>
+// MyNetDeviceFaceCallback (Ptr<Node> node, Ptr<ndn::L3Protocol> ndn, Ptr<NetDevice> device)
+// {
+// // NS_LOG_DEBUG ("Create custom network device " << node->GetId ());
+// Ptr<ndn::NetDeviceFace> face = CreateObject<ndn::MyNetDeviceFace> (node, device);
+// ndn->AddFace (face);
+// return face;
+// }
+
+int
+main (int argc, char *argv[])
+{
+ // disable fragmentation
+ Config::SetDefault ("ns3::WifiRemoteStationManager::FragmentationThreshold", StringValue ("2200"));
+ Config::SetDefault ("ns3::WifiRemoteStationManager::RtsCtsThreshold", StringValue ("2200"));
+ Config::SetDefault ("ns3::WifiRemoteStationManager::NonUnicastMode", StringValue ("OfdmRate24Mbps"));
+
+ CommandLine cmd;
+ cmd.Parse (argc,argv);
+
+ //////////////////////
+ //////////////////////
+ //////////////////////
+ WifiHelper wifi = WifiHelper::Default ();
+ // wifi.SetRemoteStationManager ("ns3::AarfWifiManager");
+ wifi.SetStandard (WIFI_PHY_STANDARD_80211a);
+ wifi.SetRemoteStationManager ("ns3::ConstantRateWifiManager",
+ "DataMode", StringValue ("OfdmRate24Mbps"));
+
+ YansWifiChannelHelper wifiChannel;// = YansWifiChannelHelper::Default ();
+ wifiChannel.SetPropagationDelay ("ns3::ConstantSpeedPropagationDelayModel");
+ wifiChannel.AddPropagationLoss ("ns3::ThreeLogDistancePropagationLossModel");
+ wifiChannel.AddPropagationLoss ("ns3::NakagamiPropagationLossModel");
+
+ //YansWifiPhy wifiPhy = YansWifiPhy::Default();
+ YansWifiPhyHelper wifiPhyHelper = YansWifiPhyHelper::Default ();
+ wifiPhyHelper.SetChannel (wifiChannel.Create ());
+ wifiPhyHelper.Set("TxPowerStart", DoubleValue(5));
+ wifiPhyHelper.Set("TxPowerEnd", DoubleValue(5));
+
+
+ NqosWifiMacHelper wifiMacHelper = NqosWifiMacHelper::Default ();
+ wifiMacHelper.SetType("ns3::AdhocWifiMac");
+
+ Ptr<UniformRandomVariable> randomizer = CreateObject<UniformRandomVariable> ();
+ randomizer->SetAttribute ("Min", DoubleValue (10));
+ randomizer->SetAttribute ("Max", DoubleValue (100));
+
+ MobilityHelper mobility;
+ mobility.SetPositionAllocator ("ns3::RandomBoxPositionAllocator",
+ "X", PointerValue (randomizer),
+ "Y", PointerValue (randomizer),
+ "Z", PointerValue (randomizer));
+
+ mobility.SetMobilityModel ("ns3::ConstantPositionMobilityModel");
+
+ NodeContainer nodes;
+ nodes.Create (2);
+
+ ////////////////
+ // 1. Install Wifi
+ NetDeviceContainer wifiNetDevices = wifi.Install (wifiPhyHelper, wifiMacHelper, nodes);
+
+ // 2. Install Mobility model
+ mobility.Install (nodes);
+
+ // 3. Install NDN stack
+ NS_LOG_INFO ("Installing NDN stack");
+ ndn::StackHelper ndnHelper;
+ // ndnHelper.AddNetDeviceFaceCreateCallback (WifiNetDevice::GetTypeId (), MakeCallback (MyNetDeviceFaceCallback));
+ ndnHelper.SetForwardingStrategy ("ns3::ndn::fw::BestRoute");
+ ndnHelper.SetContentStore ("ns3::ndn::cs::Lru", "MaxSize", "1000");
+ ndnHelper.SetDefaultRoutes (true);
+ ndnHelper.Install (nodes);
+
+ // 4. Set up applications
+ NS_LOG_INFO ("Installing Applications");
+
+ ndn::AppHelper consumerHelper ("ns3::ndn::ConsumerCbr");
+ consumerHelper.SetPrefix ("/test/prefix");
+ consumerHelper.SetAttribute ("Frequency", DoubleValue (10.0));
+ consumerHelper.Install (nodes.Get (0));
+
+ ndn::AppHelper producerHelper ("ns3::ndn::Producer");
+ producerHelper.SetPrefix ("/");
+ producerHelper.SetAttribute ("PayloadSize", StringValue("1200"));
+ producerHelper.Install (nodes.Get (1));
+
+ ////////////////
+
+ Simulator::Stop (Seconds (30.0));
+
+ Simulator::Run ();
+ Simulator::Destroy ();
+
+ return 0;
+}
diff --git a/examples/wscript b/examples/wscript
index 08f6f09..5162d3f 100644
--- a/examples/wscript
+++ b/examples/wscript
@@ -101,3 +101,8 @@
obj = bld.create_ns3_program('ndn-simple-udp', all_modules)
obj.source = 'ndn-simple-udp.cc'
+
+
+ if 'ns3-wifi' in bld.env['NS3_ENABLED_MODULES']:
+ obj = bld.create_ns3_program('ndn-simple-wifi', all_modules)
+ obj.source = 'ndn-simple-wifi.cc'
diff --git a/wscript b/wscript
index 2b37250..203ba0f 100644
--- a/wscript
+++ b/wscript
@@ -89,7 +89,7 @@
def build(bld):
deps = ['core', 'network', 'point-to-point']
deps.append ('internet') # Until RttEstimator is moved to network module
- if 'visualizer' in bld.env['NS3_ENABLED_MODULES']:
+ if 'ns3-visualizer' in bld.env['NS3_ENABLED_MODULES']:
deps.append ('visualizer')
if 'topology' in bld.env['NDN_plugins']: