Add a constant rate setting function to the on-off helper
authorMitch Watrous
Thu, 23 Aug 2012 16:00:17 -0700
changeset 9000 3ec20a64fd08
parent 8999 7548373564e7
child 9001 28b79558d6b5
Add a constant rate setting function to the on-off helper
examples/error-model/simple-error-model.cc
examples/matrix-topology/matrix-topology.cc
examples/routing/dynamic-global-routing.cc
examples/routing/global-injection-slash32.cc
examples/routing/global-routing-slash32.cc
examples/routing/mixed-global-routing.cc
examples/routing/simple-alternate-routing.cc
examples/routing/simple-global-routing.cc
examples/routing/static-routing-slash32.cc
examples/wireless/mixed-wireless.cc
examples/wireless/mixed-wireless.py
examples/wireless/multirate.cc
examples/wireless/wifi-adhoc.cc
examples/wireless/wifi-ap.cc
examples/wireless/wifi-ap.py
examples/wireless/wifi-wired-bridging.cc
src/applications/bindings/modulegen__gcc_ILP32.py
src/applications/bindings/modulegen__gcc_LP64.py
src/applications/helper/on-off-helper.cc
src/applications/helper/on-off-helper.h
src/bridge/examples/csma-bridge-one-hop.cc
src/bridge/examples/csma-bridge.cc
src/bridge/examples/csma-bridge.py
src/csma/examples/csma-broadcast.cc
src/csma/examples/csma-multicast.cc
src/csma/examples/csma-one-subnet.cc
src/csma/examples/csma-packet-socket.cc
src/csma/examples/csma-ping.cc
src/csma/examples/csma-raw-ip-socket.cc
src/olsr/examples/simple-point-to-point-olsr.cc
src/openflow/examples/openflow-switch.cc
src/spectrum/examples/adhoc-aloha-ideal-phy-matrix-propagation-loss-model.cc
src/spectrum/examples/adhoc-aloha-ideal-phy.cc
src/spectrum/test/spectrum-ideal-phy-test.cc
src/tap-bridge/examples/tap-wifi-dumbbell.cc
src/test/csma-system-test-suite.cc
src/test/global-routing-test-suite.cc
src/test/ns3wifi/wifi-msdu-aggregator-test-suite.cc
src/test/static-routing-test-suite.cc
src/topology-read/examples/topology-example-sim.cc
src/virtual-net-device/examples/virtual-net-device.cc
--- a/examples/error-model/simple-error-model.cc	Thu Aug 23 10:52:15 2012 -0700
+++ b/examples/error-model/simple-error-model.cc	Thu Aug 23 16:00:17 2012 -0700
@@ -116,9 +116,7 @@
 
   OnOffHelper onoff ("ns3::UdpSocketFactory",
                      Address (InetSocketAddress (i3i2.GetAddress (1), port)));
-  onoff.SetAttribute ("OnTime", StringValue ("ns3::ConstantRandomVariable[Constant=1]"));
-  onoff.SetAttribute ("OffTime", StringValue ("ns3::ConstantRandomVariable[Constant=0]"));
-
+  onoff.SetConstantRate (DataRate ("448kb/s"));
   ApplicationContainer apps = onoff.Install (c.Get (0));
   apps.Start (Seconds (1.0));
   apps.Stop (Seconds (10.0));
--- a/examples/matrix-topology/matrix-topology.cc	Thu Aug 23 10:52:15 2012 -0700
+++ b/examples/matrix-topology/matrix-topology.cc	Thu Aug 23 16:00:17 2012 -0700
@@ -252,8 +252,7 @@
               Ipv4InterfaceAddress ipv4_int_addr = ipv4->GetAddress (1, 0);
               Ipv4Address ip_addr = ipv4_int_addr.GetLocal ();
               OnOffHelper onoff ("ns3::UdpSocketFactory", InetSocketAddress (ip_addr, port)); // traffic flows from node[i] to node[j]
-              onoff.SetAttribute ("OnTime", StringValue ("ns3::ConstantRandomVariable[Constant=1.0]"));
-              onoff.SetAttribute ("OffTime", StringValue ("ns3::ConstantRandomVariable[Constant=0.0]"));
+              onoff.SetConstantRate (DataRate (AppPacketRate));
               ApplicationContainer apps = onoff.Install (nodes.Get (i));  // traffic sources are installed on all nodes
               apps.Start (Seconds (AppStartTime + rn));
               apps.Stop (Seconds (AppStopTime));
--- a/examples/routing/dynamic-global-routing.cc	Thu Aug 23 10:52:15 2012 -0700
+++ b/examples/routing/dynamic-global-routing.cc	Thu Aug 23 16:00:17 2012 -0700
@@ -151,9 +151,7 @@
   uint16_t port = 9;   // Discard port (RFC 863)
   OnOffHelper onoff ("ns3::UdpSocketFactory",
                      InetSocketAddress (i5i6.GetAddress (1), port));
-  onoff.SetAttribute ("OnTime", StringValue ("ns3::ConstantRandomVariable[Constant=1]"));
-  onoff.SetAttribute ("OffTime", StringValue ("ns3::ConstantRandomVariable[Constant=0]"));
-  onoff.SetAttribute ("DataRate", StringValue ("2kbps"));
+  onoff.SetConstantRate (DataRate ("2kbps"));
   onoff.SetAttribute ("PacketSize", UintegerValue (50));
 
   ApplicationContainer apps = onoff.Install (c.Get (1));
--- a/examples/routing/global-injection-slash32.cc	Thu Aug 23 10:52:15 2012 -0700
+++ b/examples/routing/global-injection-slash32.cc	Thu Aug 23 16:00:17 2012 -0700
@@ -136,9 +136,7 @@
   uint16_t port = 9;   // Discard port (RFC 863)
   OnOffHelper onoff ("ns3::UdpSocketFactory", 
                      Address (InetSocketAddress (ifInAddrC.GetLocal (), port)));
-  onoff.SetAttribute ("OnTime", StringValue ("ns3::ConstantRandomVariable[Constant=1]"));
-  onoff.SetAttribute ("OffTime", StringValue ("ns3::ConstantRandomVariable[Constant=0]"));
-  onoff.SetAttribute ("DataRate", DataRateValue (DataRate (6000)));
+  onoff.SetConstantRate (DataRate (6000));
   ApplicationContainer apps = onoff.Install (nA);
   apps.Start (Seconds (1.0));
   apps.Stop (Seconds (10.0));
--- a/examples/routing/global-routing-slash32.cc	Thu Aug 23 10:52:15 2012 -0700
+++ b/examples/routing/global-routing-slash32.cc	Thu Aug 23 16:00:17 2012 -0700
@@ -107,9 +107,7 @@
   uint16_t port = 9;   // Discard port (RFC 863)
   OnOffHelper onoff ("ns3::UdpSocketFactory", 
                      Address (InetSocketAddress (ifInAddrC.GetLocal (), port)));
-  onoff.SetAttribute ("OnTime", StringValue ("ns3::ConstantRandomVariable[Constant=1]"));
-  onoff.SetAttribute ("OffTime", StringValue ("ns3::ConstantRandomVariable[Constant=0]"));
-  onoff.SetAttribute ("DataRate", DataRateValue (DataRate (6000)));
+  onoff.SetConstantRate (DataRate (6000));
   ApplicationContainer apps = onoff.Install (nA);
   apps.Start (Seconds (1.0));
   apps.Stop (Seconds (10.0));
--- a/examples/routing/mixed-global-routing.cc	Thu Aug 23 10:52:15 2012 -0700
+++ b/examples/routing/mixed-global-routing.cc	Thu Aug 23 16:00:17 2012 -0700
@@ -113,9 +113,7 @@
   uint16_t port = 9;   // Discard port (RFC 863)
   OnOffHelper onoff ("ns3::UdpSocketFactory",
                      InetSocketAddress (i5i6.GetAddress (1), port));
-  onoff.SetAttribute ("OnTime", StringValue ("ns3::ConstantRandomVariable[Constant=1]"));
-  onoff.SetAttribute ("OffTime", StringValue ("ns3::ConstantRandomVariable[Constant=0]"));
-  onoff.SetAttribute ("DataRate", StringValue ("300bps"));
+  onoff.SetConstantRate (DataRate ("300bps"));
   onoff.SetAttribute ("PacketSize", UintegerValue (50));
 
   ApplicationContainer apps = onoff.Install (c.Get (0));
--- a/examples/routing/simple-alternate-routing.cc	Thu Aug 23 10:52:15 2012 -0700
+++ b/examples/routing/simple-alternate-routing.cc	Thu Aug 23 16:00:17 2012 -0700
@@ -140,8 +140,7 @@
   // Create a flow from n3 to n1, starting at time 1.1 seconds
   OnOffHelper onoff ("ns3::UdpSocketFactory",
                      Address (InetSocketAddress (i1i2.GetAddress (0), port)));
-  onoff.SetAttribute ("OnTime", StringValue ("ns3::ConstantRandomVariable[Constant=1]"));
-  onoff.SetAttribute ("OffTime", StringValue ("ns3::ConstantRandomVariable[Constant=0]"));
+  onoff.SetConstantRate (DataRate ("300b/s"));
 
   ApplicationContainer apps = onoff.Install (c.Get (3));
   apps.Start (Seconds (1.1));
--- a/examples/routing/simple-global-routing.cc	Thu Aug 23 10:52:15 2012 -0700
+++ b/examples/routing/simple-global-routing.cc	Thu Aug 23 16:00:17 2012 -0700
@@ -120,8 +120,7 @@
   uint16_t port = 9;   // Discard port (RFC 863)
   OnOffHelper onoff ("ns3::UdpSocketFactory", 
                      Address (InetSocketAddress (i3i2.GetAddress (0), port)));
-  onoff.SetAttribute ("OnTime", StringValue ("ns3::ConstantRandomVariable[Constant=1]"));
-  onoff.SetAttribute ("OffTime", StringValue ("ns3::ConstantRandomVariable[Constant=0]"));
+  onoff.SetConstantRate (DataRate ("448kb/s"));
   ApplicationContainer apps = onoff.Install (c.Get (0));
   apps.Start (Seconds (1.0));
   apps.Stop (Seconds (10.0));
--- a/examples/routing/static-routing-slash32.cc	Thu Aug 23 10:52:15 2012 -0700
+++ b/examples/routing/static-routing-slash32.cc	Thu Aug 23 16:00:17 2012 -0700
@@ -112,9 +112,7 @@
   uint16_t port = 9;   // Discard port (RFC 863)
   OnOffHelper onoff ("ns3::UdpSocketFactory", 
                      Address (InetSocketAddress (ifInAddrC.GetLocal (), port)));
-  onoff.SetAttribute ("OnTime", StringValue ("ns3::ConstantRandomVariable[Constant=1]"));
-  onoff.SetAttribute ("OffTime", StringValue ("ns3::ConstantRandomVariable[Constant=0]"));
-  onoff.SetAttribute ("DataRate", DataRateValue (DataRate (6000)));
+  onoff.SetConstantRate (DataRate (6000));
   ApplicationContainer apps = onoff.Install (nA);
   apps.Start (Seconds (1.0));
   apps.Stop (Seconds (10.0));
--- a/examples/wireless/mixed-wireless.cc	Thu Aug 23 10:52:15 2012 -0700
+++ b/examples/wireless/mixed-wireless.cc	Thu Aug 23 16:00:17 2012 -0700
@@ -363,8 +363,8 @@
 
   OnOffHelper onoff ("ns3::UdpSocketFactory", 
                      Address (InetSocketAddress (remoteAddr, port)));
-  onoff.SetAttribute ("OnTime", StringValue ("ns3::ConstantRandomVariable[Constant=1]"));
-  onoff.SetAttribute ("OffTime", StringValue ("ns3::ConstantRandomVariable[Constant=0]"));
+  onoff.SetConstantRate (DataRate ("10kb/s"));
+
   ApplicationContainer apps = onoff.Install (appSource);
   apps.Start (Seconds (3.0));
   apps.Stop (Seconds (20.0));
--- a/examples/wireless/mixed-wireless.py	Thu Aug 23 10:52:15 2012 -0700
+++ b/examples/wireless/mixed-wireless.py	Thu Aug 23 16:00:17 2012 -0700
@@ -301,8 +301,7 @@
 
     onoff = ns.applications.OnOffHelper("ns3::UdpSocketFactory", 
                             ns.network.Address(ns.network.InetSocketAddress(remoteAddr, port)))
-    onoff.SetAttribute("OnTime", ns.core.StringValue ("ns3::ConstantRandomVariable[Constant=1]"))
-    onoff.SetAttribute("OffTime", ns.core.StringValue ("ns3::ConstantRandomVariable[Constant=0]"))
+    onoff.SetConstantRate (ns.network.DataRate ("10kb/s"))
     apps = onoff.Install(ns.network.NodeContainer(appSource))
     apps.Start(ns.core.Seconds(3.0))
     apps.Stop(ns.core.Seconds(20.0))
--- a/examples/wireless/multirate.cc	Thu Aug 23 10:52:15 2012 -0700
+++ b/examples/wireless/multirate.cc	Thu Aug 23 16:00:17 2012 -0700
@@ -355,9 +355,7 @@
 
   // Equipping the source  node with OnOff Application used for sending 
   OnOffHelper onoff ("ns3::UdpSocketFactory", Address (InetSocketAddress (Ipv4Address ("10.0.0.1"), port)));
-  onoff.SetAttribute ("OnTime", StringValue ("ns3::ConstantRandomVariable[Constant=1]"));
-  onoff.SetAttribute ("OffTime", StringValue ("ns3::ConstantRandomVariable[Constant=0]"));
-  onoff.SetAttribute ("DataRate", DataRateValue (DataRate (60000000)));
+  onoff.SetConstantRate (DataRate (60000000));
   onoff.SetAttribute ("PacketSize", UintegerValue (packetSize));
   onoff.SetAttribute ("Remote", AddressValue (InetSocketAddress (ipv4AddrServer, port)));
 
--- a/examples/wireless/wifi-adhoc.cc	Thu Aug 23 10:52:15 2012 -0700
+++ b/examples/wireless/wifi-adhoc.cc	Thu Aug 23 16:00:17 2012 -0700
@@ -143,9 +143,7 @@
   socket.SetProtocol (1);
 
   OnOffHelper onoff ("ns3::PacketSocketFactory", Address (socket));
-  onoff.SetAttribute ("OnTime", StringValue ("ns3::ConstantRandomVariable[Constant=250]"));
-  onoff.SetAttribute ("OffTime", StringValue ("ns3::ConstantRandomVariable[Constant=0]"));
-  onoff.SetAttribute ("DataRate", DataRateValue (DataRate (60000000)));
+  onoff.SetConstantRate (DataRate (60000000));
   onoff.SetAttribute ("PacketSize", UintegerValue (2000));
 
   ApplicationContainer apps = onoff.Install (c.Get (0));
--- a/examples/wireless/wifi-ap.cc	Thu Aug 23 10:52:15 2012 -0700
+++ b/examples/wireless/wifi-ap.cc	Thu Aug 23 16:00:17 2012 -0700
@@ -170,8 +170,7 @@
   socket.SetProtocol (1);
 
   OnOffHelper onoff ("ns3::PacketSocketFactory", Address (socket));
-  onoff.SetAttribute ("OnTime", StringValue ("ns3::ConstantRandomVariable[Constant=42]"));
-  onoff.SetAttribute ("OffTime", StringValue ("ns3::ConstantRandomVariable[Constant=0]"));
+  onoff.SetConstantRate (DataRate ("500kb/s"));
 
   ApplicationContainer apps = onoff.Install (stas.Get (0));
   apps.Start (Seconds (0.5));
--- a/examples/wireless/wifi-ap.py	Thu Aug 23 10:52:15 2012 -0700
+++ b/examples/wireless/wifi-ap.py	Thu Aug 23 16:00:17 2012 -0700
@@ -150,8 +150,7 @@
     socket.SetProtocol(1)
 
     onoff = ns.applications.OnOffHelper("ns3::PacketSocketFactory", ns.network.Address(socket))
-    onoff.SetAttribute("OnTime", ns.core.StringValue ("ns3::ConstantRandomVariable[Constant=42]"))
-    onoff.SetAttribute("OffTime", ns.core.StringValue ("ns3::ConstantRandomVariable[Constant=0]"))
+    onoff.SetConstantRate (ns.network.DataRate ("500kb/s"))
 
     apps = onoff.Install(ns.network.NodeContainer(stas.Get(0)))
     apps.Start(ns.core.Seconds(0.5))
--- a/examples/wireless/wifi-wired-bridging.cc	Thu Aug 23 10:52:15 2012 -0700
+++ b/examples/wireless/wifi-wired-bridging.cc	Thu Aug 23 16:00:17 2012 -0700
@@ -180,8 +180,7 @@
     }
 
   OnOffHelper onoff = OnOffHelper (protocol, dest);
-  onoff.SetAttribute ("OnTime", StringValue ("ns3::ConstantRandomVariable[Constant=1]"));
-  onoff.SetAttribute ("OffTime", StringValue ("ns3::ConstantRandomVariable[Constant=0]"));
+  onoff.SetConstantRate (DataRate ("500kb/s"));
   ApplicationContainer apps = onoff.Install (staNodes[0].Get (0));
   apps.Start (Seconds (0.5));
   apps.Stop (Seconds (3.0));
--- a/src/applications/bindings/modulegen__gcc_ILP32.py	Thu Aug 23 10:52:15 2012 -0700
+++ b/src/applications/bindings/modulegen__gcc_ILP32.py	Thu Aug 23 16:00:17 2012 -0700
@@ -2453,6 +2453,10 @@
     cls.add_method('SetAttribute', 
                    'void', 
                    [param('std::string', 'name'), param('ns3::AttributeValue const &', 'value')])
+    ## on-off-helper.h (module 'applications'): void ns3::OnOffHelper::SetConstantRate(ns3::DataRate dataRate, uint32_t packetSize=512) [member function]
+    cls.add_method('SetConstantRate', 
+                   'void', 
+                   [param('ns3::DataRate', 'dataRate'), param('uint32_t', 'packetSize', default_value='512')])
     return
 
 def register_Ns3PacketLossCounter_methods(root_module, cls):
--- a/src/applications/bindings/modulegen__gcc_LP64.py	Thu Aug 23 10:52:15 2012 -0700
+++ b/src/applications/bindings/modulegen__gcc_LP64.py	Thu Aug 23 16:00:17 2012 -0700
@@ -2453,6 +2453,10 @@
     cls.add_method('SetAttribute', 
                    'void', 
                    [param('std::string', 'name'), param('ns3::AttributeValue const &', 'value')])
+    ## on-off-helper.h (module 'applications'): void ns3::OnOffHelper::SetConstantRate(ns3::DataRate dataRate, uint32_t packetSize=512) [member function]
+    cls.add_method('SetConstantRate', 
+                   'void', 
+                   [param('ns3::DataRate', 'dataRate'), param('uint32_t', 'packetSize', default_value='512')])
     return
 
 def register_Ns3PacketLossCounter_methods(root_module, cls):
--- a/src/applications/helper/on-off-helper.cc	Thu Aug 23 10:52:15 2012 -0700
+++ b/src/applications/helper/on-off-helper.cc	Thu Aug 23 16:00:17 2012 -0700
@@ -21,7 +21,10 @@
 #include "ns3/inet-socket-address.h"
 #include "ns3/packet-socket-address.h"
 #include "ns3/string.h"
+#include "ns3/data-rate.h"
+#include "ns3/uinteger.h"
 #include "ns3/names.h"
+#include "ns3/random-variable-stream.h"
 #include "ns3/onoff-application.h"
 
 namespace ns3 {
@@ -93,4 +96,13 @@
   return (currentStream - stream);
 }
 
+void 
+OnOffHelper::SetConstantRate (DataRate dataRate, uint32_t packetSize)
+{
+  m_factory.Set ("OnTime", StringValue ("ns3::ConstantRandomVariable[Constant=1000]"));
+  m_factory.Set ("OffTime", StringValue ("ns3::ConstantRandomVariable[Constant=0]"));
+  m_factory.Set ("DataRate", DataRateValue (dataRate));
+  m_factory.Set ("PacketSize", UintegerValue (packetSize));
+}
+
 } // namespace ns3
--- a/src/applications/helper/on-off-helper.h	Thu Aug 23 10:52:15 2012 -0700
+++ b/src/applications/helper/on-off-helper.h	Thu Aug 23 16:00:17 2012 -0700
@@ -32,6 +32,8 @@
 
 namespace ns3 {
 
+class DataRate;
+
 /**
  * \brief A helper to make it easier to instantiate an ns3::OnOffApplication 
  * on a set of nodes.
@@ -60,6 +62,16 @@
   void SetAttribute (std::string name, const AttributeValue &value);
 
   /**
+   * Helper function to set a constant rate source.  Equivalent to
+   * setting the attributes OnTime to constant 1000 seconds, OffTime to 
+   * constant 0 seconds, and the DataRate and PacketSize set accordingly
+   *
+   * \param dataRate DataRate object for the sending rate
+   * \param packetSize size in bytes of the packet payloads generated
+   */
+  void SetConstantRate (DataRate dataRate, uint32_t packetSize = 512);
+
+  /**
    * Install an ns3::OnOffApplication on each node of the input container
    * configured with all the attributes set with SetAttribute.
    *
--- a/src/bridge/examples/csma-bridge-one-hop.cc	Thu Aug 23 10:52:15 2012 -0700
+++ b/src/bridge/examples/csma-bridge-one-hop.cc	Thu Aug 23 16:00:17 2012 -0700
@@ -182,8 +182,7 @@
 
   OnOffHelper onoff ("ns3::UdpSocketFactory", 
                      Address (InetSocketAddress (Ipv4Address ("10.1.1.3"), port)));
-  onoff.SetAttribute ("OnTime", StringValue ("ns3::ConstantRandomVariable[Constant=1]"));
-  onoff.SetAttribute ("OffTime", StringValue ("ns3::ConstantRandomVariable[Constant=0]"));
+  onoff.SetConstantRate (DataRate ("500kb/s"));
 
   ApplicationContainer app = onoff.Install (n0);
   // Start the application
--- a/src/bridge/examples/csma-bridge.cc	Thu Aug 23 10:52:15 2012 -0700
+++ b/src/bridge/examples/csma-bridge.cc	Thu Aug 23 16:00:17 2012 -0700
@@ -112,8 +112,7 @@
 
   OnOffHelper onoff ("ns3::UdpSocketFactory", 
                      Address (InetSocketAddress (Ipv4Address ("10.1.1.2"), port)));
-  onoff.SetAttribute ("OnTime", StringValue ("ns3::ConstantRandomVariable[Constant=1]"));
-  onoff.SetAttribute ("OffTime", StringValue ("ns3::ConstantRandomVariable[Constant=0]"));
+  onoff.SetConstantRate (DataRate ("500kb/s"));
 
   ApplicationContainer app = onoff.Install (terminals.Get (0));
   // Start the application
--- a/src/bridge/examples/csma-bridge.py	Thu Aug 23 10:52:15 2012 -0700
+++ b/src/bridge/examples/csma-bridge.py	Thu Aug 23 16:00:17 2012 -0700
@@ -97,8 +97,7 @@
 
     onoff = ns.applications.OnOffHelper("ns3::UdpSocketFactory", 
                             ns.network.Address(ns.network.InetSocketAddress(ns.network.Ipv4Address("10.1.1.2"), port)))
-    onoff.SetAttribute("OnTime", ns.core.StringValue ("ns3::ConstantRandomVariable[Constant=1]"))
-    onoff.SetAttribute("OffTime", ns.core.StringValue ("ns3::ConstantRandomVariable[Constant=0]"))
+    onoff.SetConstantRate (ns.network.DataRate ("500kb/s"))
 
     app = onoff.Install(ns.network.NodeContainer(terminals.Get(0)))
     # Start the application
--- a/src/csma/examples/csma-broadcast.cc	Thu Aug 23 10:52:15 2012 -0700
+++ b/src/csma/examples/csma-broadcast.cc	Thu Aug 23 16:00:17 2012 -0700
@@ -92,8 +92,7 @@
   NS_LOG_INFO ("Create Applications.");
   OnOffHelper onoff ("ns3::UdpSocketFactory", 
                      Address (InetSocketAddress (Ipv4Address ("255.255.255.255"), port)));
-  onoff.SetAttribute ("OnTime", StringValue ("ns3::ConstantRandomVariable[Constant=1]"));
-  onoff.SetAttribute ("OffTime", StringValue ("ns3::ConstantRandomVariable[Constant=0]"));
+  onoff.SetConstantRate (DataRate ("500kb/s"));
 
   ApplicationContainer app = onoff.Install (c0.Get (0));
   // Start the application
--- a/src/csma/examples/csma-multicast.cc	Thu Aug 23 10:52:15 2012 -0700
+++ b/src/csma/examples/csma-multicast.cc	Thu Aug 23 16:00:17 2012 -0700
@@ -134,9 +134,7 @@
   // every few seconds
   OnOffHelper onoff ("ns3::UdpSocketFactory", 
                      Address (InetSocketAddress (multicastGroup, multicastPort)));
-  onoff.SetAttribute ("OnTime", StringValue ("ns3::ConstantRandomVariable[Constant=1]"));
-  onoff.SetAttribute ("OffTime", StringValue ("ns3::ConstantRandomVariable[Constant=0]"));
-  onoff.SetAttribute ("DataRate", DataRateValue (DataRate ("255b/s")));
+  onoff.SetConstantRate (DataRate ("255b/s"));
   onoff.SetAttribute ("PacketSize", UintegerValue (128));
 
   ApplicationContainer srcC = onoff.Install (c0.Get (0));
--- a/src/csma/examples/csma-one-subnet.cc	Thu Aug 23 10:52:15 2012 -0700
+++ b/src/csma/examples/csma-one-subnet.cc	Thu Aug 23 16:00:17 2012 -0700
@@ -89,8 +89,7 @@
 
   OnOffHelper onoff ("ns3::UdpSocketFactory", 
                      Address (InetSocketAddress (interfaces.GetAddress (1), port)));
-  onoff.SetAttribute ("OnTime", StringValue ("ns3::ConstantRandomVariable[Constant=1]"));
-  onoff.SetAttribute ("OffTime", StringValue ("ns3::ConstantRandomVariable[Constant=0]"));
+  onoff.SetConstantRate (DataRate ("500kb/s"));
 
   ApplicationContainer app = onoff.Install (nodes.Get (0));
   // Start the application
--- a/src/csma/examples/csma-packet-socket.cc	Thu Aug 23 10:52:15 2012 -0700
+++ b/src/csma/examples/csma-packet-socket.cc	Thu Aug 23 16:00:17 2012 -0700
@@ -88,8 +88,7 @@
   socket.SetPhysicalAddress (devs.Get (1)->GetAddress ());
   socket.SetProtocol (2);
   OnOffHelper onoff ("ns3::PacketSocketFactory", Address (socket));
-  onoff.SetAttribute ("OnTime", StringValue ("ns3::ConstantRandomVariable[Constant=1]"));
-  onoff.SetAttribute ("OffTime", StringValue ("ns3::ConstantRandomVariable[Constant=0]"));
+  onoff.SetConstantRate (DataRate ("500kb/s"));
   ApplicationContainer apps = onoff.Install (nodes.Get (0));
   apps.Start (Seconds (1.0));
   apps.Stop (Seconds (10.0));
--- a/src/csma/examples/csma-ping.cc	Thu Aug 23 10:52:15 2012 -0700
+++ b/src/csma/examples/csma-ping.cc	Thu Aug 23 16:00:17 2012 -0700
@@ -83,9 +83,7 @@
   Config::SetDefault ("ns3::Ipv4RawSocketImpl::Protocol", StringValue ("2"));
   InetSocketAddress dst = InetSocketAddress (addresses.GetAddress (3));
   OnOffHelper onoff = OnOffHelper ("ns3::Ipv4RawSocketFactory", dst);
-  onoff.SetAttribute ("OnTime", StringValue ("ns3::ConstantRandomVariable[Constant=1]"));
-  onoff.SetAttribute ("OffTime", StringValue ("ns3::ConstantRandomVariable[Constant=0]"));
-  onoff.SetAttribute ("DataRate", DataRateValue (DataRate (15000)));
+  onoff.SetConstantRate (DataRate (15000));
   onoff.SetAttribute ("PacketSize", UintegerValue (1200));
 
 
--- a/src/csma/examples/csma-raw-ip-socket.cc	Thu Aug 23 10:52:15 2012 -0700
+++ b/src/csma/examples/csma-raw-ip-socket.cc	Thu Aug 23 16:00:17 2012 -0700
@@ -88,9 +88,7 @@
   Config::SetDefault ("ns3::Ipv4RawSocketImpl::Protocol", StringValue ("2"));
   InetSocketAddress dst = InetSocketAddress (addresses.GetAddress (3));
   OnOffHelper onoff = OnOffHelper ("ns3::Ipv4RawSocketFactory", dst);
-  onoff.SetAttribute ("OnTime", StringValue ("ns3::ConstantRandomVariable[Constant=1]"));
-  onoff.SetAttribute ("OffTime", StringValue ("ns3::ConstantRandomVariable[Constant=0]"));
-  onoff.SetAttribute ("DataRate", DataRateValue (DataRate (dataRate*1000)));
+  onoff.SetConstantRate (DataRate (dataRate*1000));
   onoff.SetAttribute ("PacketSize", UintegerValue (1250));
 
   ApplicationContainer apps = onoff.Install (c.Get (0));
--- a/src/olsr/examples/simple-point-to-point-olsr.cc	Thu Aug 23 10:52:15 2012 -0700
+++ b/src/olsr/examples/simple-point-to-point-olsr.cc	Thu Aug 23 16:00:17 2012 -0700
@@ -132,8 +132,7 @@
 
   OnOffHelper onoff ("ns3::UdpSocketFactory", 
                      InetSocketAddress (i34.GetAddress (1), port));
-  onoff.SetAttribute ("OnTime", StringValue ("ns3::ConstantRandomVariable[Constant=1]"));
-  onoff.SetAttribute ("OffTime", StringValue ("ns3::ConstantRandomVariable[Constant=0]"));
+  onoff.SetConstantRate (DataRate ("448kb/s"));
 
   ApplicationContainer apps = onoff.Install (c.Get (0));
   apps.Start (Seconds (1.0));
--- a/src/openflow/examples/openflow-switch.cc	Thu Aug 23 10:52:15 2012 -0700
+++ b/src/openflow/examples/openflow-switch.cc	Thu Aug 23 16:00:17 2012 -0700
@@ -158,8 +158,7 @@
 
   OnOffHelper onoff ("ns3::UdpSocketFactory",
                      Address (InetSocketAddress (Ipv4Address ("10.1.1.2"), port)));
-  onoff.SetAttribute ("OnTime", StringValue ("ns3::ConstantRandomVariable[Constant=1]"));
-  onoff.SetAttribute ("OffTime", StringValue ("ns3::ConstantRandomVariable[Constant=0]"));
+  onoff.SetConstantRate (DataRate ("500kb/s"));
 
   ApplicationContainer app = onoff.Install (terminals.Get (0));
   // Start the application
--- a/src/spectrum/examples/adhoc-aloha-ideal-phy-matrix-propagation-loss-model.cc	Thu Aug 23 10:52:15 2012 -0700
+++ b/src/spectrum/examples/adhoc-aloha-ideal-phy-matrix-propagation-loss-model.cc	Thu Aug 23 16:00:17 2012 -0700
@@ -191,9 +191,7 @@
   socket.SetProtocol (1);
 
   OnOffHelper onoff ("ns3::PacketSocketFactory", Address (socket));
-  onoff.SetAttribute ("OnTime", StringValue ("ns3::ConstantRandomVariable[Constant=250]"));
-  onoff.SetAttribute ("OffTime", StringValue ("ns3::ConstantRandomVariable[Constant=0]"));
-  onoff.SetAttribute ("DataRate", DataRateValue (DataRate (2*phyRate)));
+  onoff.SetConstantRate (DataRate (2*phyRate));
   onoff.SetAttribute ("PacketSize", UintegerValue (pktSize));
 
   ApplicationContainer apps = onoff.Install (c.Get (0));
--- a/src/spectrum/examples/adhoc-aloha-ideal-phy.cc	Thu Aug 23 10:52:15 2012 -0700
+++ b/src/spectrum/examples/adhoc-aloha-ideal-phy.cc	Thu Aug 23 16:00:17 2012 -0700
@@ -168,9 +168,7 @@
   socket.SetProtocol (1);
 
   OnOffHelper onoff ("ns3::PacketSocketFactory", Address (socket));
-  onoff.SetAttribute ("OnTime", StringValue ("ns3::ConstantRandomVariable[Constant=250]"));
-  onoff.SetAttribute ("OffTime", StringValue ("ns3::ConstantRandomVariable[Constant=0]"));
-  onoff.SetAttribute ("DataRate", DataRateValue (DataRate ("0.5Mbps")));
+  onoff.SetConstantRate (DataRate ("0.5Mbps"));
   onoff.SetAttribute ("PacketSize", UintegerValue (125));
 
   ApplicationContainer apps = onoff.Install (c.Get (0));
--- a/src/spectrum/test/spectrum-ideal-phy-test.cc	Thu Aug 23 10:52:15 2012 -0700
+++ b/src/spectrum/test/spectrum-ideal-phy-test.cc	Thu Aug 23 16:00:17 2012 -0700
@@ -184,9 +184,7 @@
   socket.SetProtocol (1);
 
   OnOffHelper onoff ("ns3::PacketSocketFactory", Address (socket));
-  onoff.SetAttribute ("OnTime", StringValue ("ns3::ConstantRandomVariable[Constant=250]"));
-  onoff.SetAttribute ("OffTime", StringValue ("ns3::ConstantRandomVariable[Constant=0]"));
-  onoff.SetAttribute ("DataRate", DataRateValue (DataRate (static_cast<uint64_t> (1.2*phyRate))));
+  onoff.SetConstantRate (DataRate (static_cast<uint64_t> (1.2*phyRate)));
   onoff.SetAttribute ("PacketSize", UintegerValue (pktSize));
 
   ApplicationContainer apps = onoff.Install (c.Get (0));
--- a/src/tap-bridge/examples/tap-wifi-dumbbell.cc	Thu Aug 23 10:52:15 2012 -0700
+++ b/src/tap-bridge/examples/tap-wifi-dumbbell.cc	Thu Aug 23 16:00:17 2012 -0700
@@ -207,8 +207,7 @@
   //
   uint16_t port = 9;   // Discard port (RFC 863)
   OnOffHelper onoff ("ns3::UdpSocketFactory", InetSocketAddress (interfaces.GetAddress (1), port));
-  onoff.SetAttribute ("OnTime", StringValue ("ns3::ConstantRandomVariable[Constant=1]"));
-  onoff.SetAttribute ("OffTime", StringValue ("ns3::ConstantRandomVariable[Constant=0]"));
+  onoff.SetConstantRate (DataRate ("500kb/s"));
 
   ApplicationContainer apps = onoff.Install (nodesLeft.Get (3));
   apps.Start (Seconds (1.0));
--- a/src/test/csma-system-test-suite.cc	Thu Aug 23 10:52:15 2012 -0700
+++ b/src/test/csma-system-test-suite.cc	Thu Aug 23 16:00:17 2012 -0700
@@ -34,6 +34,7 @@
 #include "ns3/ipv4-global-routing-helper.h"
 #include "ns3/ipv4-static-routing-helper.h"
 #include "ns3/node.h"
+#include "ns3/data-rate.h"
 #include "ns3/node-container.h"
 #include "ns3/on-off-helper.h"
 #include "ns3/packet.h"
@@ -133,9 +134,7 @@
   // 4096 bits / (5000 bits/second) = 0.82 second.
   OnOffHelper onoff ("ns3::UdpSocketFactory", 
                      Address (InetSocketAddress (Ipv4Address ("10.1.1.2"), port)));
-  onoff.SetAttribute ("OnTime", StringValue ("ns3::ConstantRandomVariable[Constant=1]"));
-  onoff.SetAttribute ("OffTime", StringValue ("ns3::ConstantRandomVariable[Constant=0]"));
-  onoff.SetAttribute ("DataRate", DataRateValue (DataRate (5000)));
+  onoff.SetConstantRate (DataRate (5000));
 
   ApplicationContainer app = onoff.Install (terminals.Get (0));
   app.Start (Seconds (1.0));
@@ -249,9 +248,7 @@
   // 4096 bits / (5000 bits/second) = 0.82 second.
   OnOffHelper onoff ("ns3::UdpSocketFactory", 
                      Address (InetSocketAddress (Ipv4Address ("255.255.255.255"), port)));
-  onoff.SetAttribute ("OnTime", StringValue ("ns3::ConstantRandomVariable[Constant=1]"));
-  onoff.SetAttribute ("OffTime", StringValue ("ns3::ConstantRandomVariable[Constant=0]"));
-  onoff.SetAttribute ("DataRate", DataRateValue (DataRate (5000)));
+  onoff.SetConstantRate (DataRate (5000));
 
   ApplicationContainer app = onoff.Install (c0.Get (0));
   // Start the application
@@ -406,9 +403,7 @@
   // 4096 bits / (5000 bits/second) = 0.82 second.
   OnOffHelper onoff ("ns3::UdpSocketFactory", 
                      Address (InetSocketAddress (multicastGroup, multicastPort)));
-  onoff.SetAttribute ("OnTime", StringValue ("ns3::ConstantRandomVariable[Constant=1]"));
-  onoff.SetAttribute ("OffTime", StringValue ("ns3::ConstantRandomVariable[Constant=0]"));
-  onoff.SetAttribute ("DataRate", DataRateValue (DataRate (5000)));
+  onoff.SetConstantRate (DataRate (5000));
 
   ApplicationContainer srcC = onoff.Install (c0.Get (0));
 
@@ -528,9 +523,7 @@
   // 4096 bits / (5000 bits/second) = 0.82 second.
   OnOffHelper onoff ("ns3::UdpSocketFactory", 
                      Address (InetSocketAddress (interfaces.GetAddress (1), port)));
-  onoff.SetAttribute ("OnTime", StringValue ("ns3::ConstantRandomVariable[Constant=1]"));
-  onoff.SetAttribute ("OffTime", StringValue ("ns3::ConstantRandomVariable[Constant=0]"));
-  onoff.SetAttribute ("DataRate", DataRateValue (DataRate (5000)));
+  onoff.SetConstantRate (DataRate (5000));
 
   ApplicationContainer app = onoff.Install (nodes.Get (0));
   // Start the application
@@ -646,9 +639,7 @@
   socket.SetPhysicalAddress (devs.Get (1)->GetAddress ());
   socket.SetProtocol (2);
   OnOffHelper onoff ("ns3::PacketSocketFactory", Address (socket));
-  onoff.SetAttribute ("OnTime", StringValue ("ns3::ConstantRandomVariable[Constant=1]"));
-  onoff.SetAttribute ("OffTime", StringValue ("ns3::ConstantRandomVariable[Constant=0]"));
-  onoff.SetAttribute ("DataRate", DataRateValue (DataRate (5000)));
+  onoff.SetConstantRate (DataRate (5000));
   ApplicationContainer apps = onoff.Install (nodes.Get (0));
   apps.Start (Seconds (1.0));
   apps.Stop (Seconds (10.0));
@@ -657,7 +648,6 @@
   socket.SetPhysicalAddress (devs.Get (0)->GetAddress ());
   socket.SetProtocol (3);
   onoff.SetAttribute ("Remote", AddressValue (socket));
-  onoff.SetAttribute ("OffTime", StringValue ("ns3::ConstantRandomVariable[Constant=0]"));
   apps = onoff.Install (nodes.Get (3));
   apps.Start (Seconds (1.0));
   apps.Stop (Seconds (10.0));
@@ -762,9 +752,7 @@
   Config::SetDefault ("ns3::Ipv4RawSocketImpl::Protocol", StringValue ("2"));
   InetSocketAddress dst = InetSocketAddress (addresses.GetAddress (3));
   OnOffHelper onoff = OnOffHelper ("ns3::Ipv4RawSocketFactory", dst);
-  onoff.SetAttribute ("OnTime", StringValue ("ns3::ConstantRandomVariable[Constant=1]"));
-  onoff.SetAttribute ("OffTime", StringValue ("ns3::ConstantRandomVariable[Constant=0]"));
-  onoff.SetAttribute ("DataRate", DataRateValue (DataRate (5000)));
+  onoff.SetConstantRate (DataRate (5000));
 
   ApplicationContainer apps = onoff.Install (c.Get (0));
   apps.Start (Seconds (1.0));
@@ -878,9 +866,7 @@
   Config::SetDefault ("ns3::Ipv4RawSocketImpl::Protocol", StringValue ("2"));
   InetSocketAddress dst = InetSocketAddress (addresses.GetAddress (3));
   OnOffHelper onoff = OnOffHelper ("ns3::Ipv4RawSocketFactory", dst);
-  onoff.SetAttribute ("OnTime", StringValue ("ns3::ConstantRandomVariable[Constant=1]"));
-  onoff.SetAttribute ("OffTime", StringValue ("ns3::ConstantRandomVariable[Constant=0]"));
-  onoff.SetAttribute ("DataRate", DataRateValue (DataRate (5000)));
+  onoff.SetConstantRate (DataRate (5000));
 
   ApplicationContainer apps = onoff.Install (c.Get (0));
   apps.Start (Seconds (1.0));
@@ -1033,9 +1019,7 @@
   // Make packets be sent about every DefaultPacketSize / DataRate = 
   // 4096 bits / (5000 bits/second) = 0.82 second.
   OnOffHelper onOffHelper ("ns3::TcpSocketFactory", Address ());
-  onOffHelper.SetAttribute ("OnTime", StringValue ("ns3::ConstantRandomVariable[Constant=1]"));
-  onOffHelper.SetAttribute ("OffTime", StringValue ("ns3::ConstantRandomVariable[Constant=0]"));
-  onOffHelper.SetAttribute ("DataRate", DataRateValue (DataRate (5000)));
+  onOffHelper.SetConstantRate (DataRate (5000));
 
   ApplicationContainer spokeApps;
 
--- a/src/test/global-routing-test-suite.cc	Thu Aug 23 10:52:15 2012 -0700
+++ b/src/test/global-routing-test-suite.cc	Thu Aug 23 16:00:17 2012 -0700
@@ -199,9 +199,7 @@
   uint16_t port = 9;   // Discard port (RFC 863)
   OnOffHelper onoff ("ns3::UdpSocketFactory",
                      InetSocketAddress (i5i6.GetAddress (1), port));
-  onoff.SetAttribute ("OnTime", StringValue ("ns3::ConstantRandomVariable[Constant=1]"));
-  onoff.SetAttribute ("OffTime", StringValue ("ns3::ConstantRandomVariable[Constant=0]"));
-  onoff.SetAttribute ("DataRate", StringValue ("2kbps"));
+  onoff.SetConstantRate (DataRate ("2kbps"));
   onoff.SetAttribute ("PacketSize", UintegerValue (50));
 
   ApplicationContainer apps = onoff.Install (c.Get (1));
@@ -368,9 +366,7 @@
   uint16_t port = 9;   // Discard port (RFC 863)
   OnOffHelper onoff ("ns3::UdpSocketFactory",
                      Address (InetSocketAddress (ifInAddrC.GetLocal (), port)));
-  onoff.SetAttribute ("OnTime", StringValue ("ns3::ConstantRandomVariable[Constant=1]"));
-  onoff.SetAttribute ("OffTime", StringValue ("ns3::ConstantRandomVariable[Constant=0]"));
-  onoff.SetAttribute ("DataRate", DataRateValue (DataRate (6000)));
+  onoff.SetConstantRate (DataRate (6000));
   ApplicationContainer apps = onoff.Install (nA);
   apps.Start (Seconds (1.0));
   apps.Stop (Seconds (10.0));
--- a/src/test/ns3wifi/wifi-msdu-aggregator-test-suite.cc	Thu Aug 23 10:52:15 2012 -0700
+++ b/src/test/ns3wifi/wifi-msdu-aggregator-test-suite.cc	Thu Aug 23 16:00:17 2012 -0700
@@ -149,10 +149,8 @@
   OnOffHelper onoff ("ns3::UdpSocketFactory",
                      InetSocketAddress (staNodeInterface.GetAddress (0),
                                         udpPort));
-  onoff.SetAttribute ("DataRate", DataRateValue (DataRate ("1Mbps")));
   onoff.SetAttribute ("PacketSize", UintegerValue (100));
-  onoff.SetAttribute ("OnTime", StringValue ("ns3::ConstantRandomVariable[Constant=1]"));
-  onoff.SetAttribute ("OffTime", StringValue ("ns3::ConstantRandomVariable[Constant=0]"));
+  onoff.SetConstantRate (DataRate ("1Mbps"));
   ApplicationContainer sourceApp = onoff.Install (ap.Get (0));
   sourceApp.Start (Seconds (1.0));
   sourceApp.Stop (Seconds (9.0));
--- a/src/test/static-routing-test-suite.cc	Thu Aug 23 10:52:15 2012 -0700
+++ b/src/test/static-routing-test-suite.cc	Thu Aug 23 16:00:17 2012 -0700
@@ -135,9 +135,7 @@
   uint16_t port = 9;   // Discard port (RFC 863)
   OnOffHelper onoff ("ns3::UdpSocketFactory", 
                      Address (InetSocketAddress (ifInAddrC.GetLocal (), port)));
-  onoff.SetAttribute ("OnTime", StringValue ("ns3::ConstantRandomVariable[Constant=1]"));
-  onoff.SetAttribute ("OffTime", StringValue ("ns3::ConstantRandomVariable[Constant=0]"));
-  onoff.SetAttribute ("DataRate", DataRateValue (DataRate (6000)));
+  onoff.SetConstantRate (DataRate (6000));
   ApplicationContainer apps = onoff.Install (nA);
   apps.Start (Seconds (1.0));
   apps.Stop (Seconds (10.0));
--- a/src/topology-read/examples/topology-example-sim.cc	Thu Aug 23 10:52:15 2012 -0700
+++ b/src/topology-read/examples/topology-example-sim.cc	Thu Aug 23 16:00:17 2012 -0700
@@ -170,9 +170,7 @@
   InetSocketAddress dst = InetSocketAddress ( ipv4AddrServer );
 
   OnOffHelper onoff = OnOffHelper ("ns3::Ipv4RawSocketFactory", dst);
-  onoff.SetAttribute ("OnTime", StringValue ("ns3::ConstantRandomVariable[Constant=1.0]"));
-  onoff.SetAttribute ("OffTime", StringValue ("ns3::ConstantRandomVariable[Constant=0.0]"));
-  onoff.SetAttribute ("DataRate", DataRateValue (DataRate (15000)));
+  onoff.SetConstantRate (DataRate (15000));
   onoff.SetAttribute ("PacketSize", UintegerValue (1200));
 
   NodeContainer clientNodes;
--- a/src/virtual-net-device/examples/virtual-net-device.cc	Thu Aug 23 10:52:15 2012 -0700
+++ b/src/virtual-net-device/examples/virtual-net-device.cc	Thu Aug 23 16:00:17 2012 -0700
@@ -265,8 +265,7 @@
   uint16_t port = 9;   // Discard port (RFC 863)
   OnOffHelper onoff ("ns3::UdpSocketFactory", 
                      Address (InetSocketAddress (Ipv4Address ("11.0.0.254"), port)));
-  onoff.SetAttribute ("OnTime", StringValue ("ns3::ConstantRandomVariable[Constant=1]"));
-  onoff.SetAttribute ("OffTime", StringValue ("ns3::ConstantRandomVariable[Constant=0]"));
+  onoff.SetConstantRate (DataRate ("448kb/s"));
   ApplicationContainer apps = onoff.Install (c.Get (0));
   apps.Start (Seconds (1.0));
   apps.Stop (Seconds (10.0));