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;
+}