Bugfixing for ns3::MatrixPropagationLossModel ...
authorAlina Quereilhac <alina.quereilhac@inria.fr>
Thu, 30 Aug 2012 13:54:56 +0000 (15:54 +0200)
committerAlina Quereilhac <alina.quereilhac@inria.fr>
Thu, 30 Aug 2012 13:54:56 +0000 (15:54 +0200)
examples/ns3_wifi_hidden_terminal.py
src/nepi/testbeds/ns3/execute.py
src/nepi/testbeds/ns3/factories_metadata.py
src/nepi/testbeds/ns3/ns3_bindings_import.py

index f2916ed..bcd07e0 100644 (file)
@@ -49,7 +49,10 @@ def create_wifi_device(ns3_desc, node, channel):
     phy.set_attribute_value("Standard",  "WIFI_PHY_STANDARD_80211b")
     dev.connector("phy").connect(phy.connector("dev"))
     channel.connector("phys").connect(phy.connector("chan"))
-
+    # Without the error model it doesn'y work!!
+    error = ns3_desc.create("ns3::NistErrorRateModel")
+    phy.connector("err").connect(error.connector("phy"))
     return dev
 
 root_dir = tempfile.mkdtemp()
@@ -60,6 +63,9 @@ testbed_id = "ns3"
 ns3_provider = FactoriesProvider(testbed_id)
 ns3_desc = exp_desc.add_testbed_description(ns3_provider)
 ns3_desc.set_attribute_value("homeDirectory", root_dir)
+#ns3_desc.set_attribute_value("SimulatorImplementationType", "ns3::RealtimeSimulatorImpl")
+#ns3_desc.set_attribute_value("ChecksumEnabled", True)
+
 # 0. Enable or disable CTS/RTS
 # ??
 
@@ -87,10 +93,14 @@ mp2.connector("mb").connect(mob2.connector("mp"))
 # 4. Create & setup wifi channel
 channel = ns3_desc.create("ns3::YansWifiChannel")
 channel.connector("loss").connect(matrix.connector("chan"))
+# DEBUG: Works with ns3::LogDistancePropagationLossModel but now with ns3::MatrixPropagationLossModel
+# loss = ns3_desc.create("ns3::LogDistancePropagationLossModel")
+# channel.connector("loss").connect(loss.connector("prev"))
 delay = ns3_desc.create("ns3::ConstantSpeedPropagationDelayModel")
 channel.connector("delay").connect(delay.connector("chan"))
 
 # 5. Install wireless devices
+
 dev1 = create_wifi_device(ns3_desc, node1, channel)
 ip1 = dev1.add_address()
 ip1.set_attribute_value("Address", "10.0.0.1")
@@ -119,5 +129,8 @@ xml = exp_desc.to_xml()
 controller = ExperimentController(xml, root_dir)
 controller.start()
 
+while not controller.is_finished(app.guid):
+    time.sleep(0.5)
+
 controller.stop()
 controller.shutdown()
index 5777f83..7de7bde 100644 (file)
@@ -57,7 +57,9 @@ class TestbedController(testbed_impl.TestbedController):
     LOCAL_FACTORIES = {
         'ns3::Nepi::TunChannel' : TunChannel,
     }
-    
+   
+    DUMMY_FACTORIES = ['ns3::Nepi::MobilityPair']
+
     LOCAL_TYPES = tuple(LOCAL_FACTORIES.values())
 
     def __init__(self):
@@ -102,8 +104,12 @@ class TestbedController(testbed_impl.TestbedController):
 
     def set(self, guid, name, value, time = TIME_NOW):
         super(TestbedController, self).set(guid, name, value, time)
+
         # TODO: take on account schedule time for the task
         factory_id = self._create[guid]
+        if factory_id in self.DUMMY_FACTORIES:
+            return 
+
         factory = self._factories[factory_id]
         element = self._elements[guid]
         if factory_id in self.LOCAL_FACTORIES:
@@ -128,8 +134,12 @@ class TestbedController(testbed_impl.TestbedController):
 
     def get(self, guid, name, time = TIME_NOW):
         value = super(TestbedController, self).get(guid, name, time)
+
         # TODO: take on account schedule time for the task
         factory_id = self._create[guid]
+        if factory_id in self.DUMMY_FACTORIES:
+            return 
+
         factory = self._factories[factory_id]
         element = self._elements[guid]
         if factory_id in self.LOCAL_FACTORIES:
index c29ef06..c2814fc 100644 (file)
@@ -515,7 +515,6 @@ def configure_matrix_propagation(testbed_instance, guid):
     element = testbed_instance._elements[guid]
     mp_guids = testbed_instance.get_connected(guid, "mobpair", "matrix")
     for mpg in mp_guids:
-        mp = testbed_instance._elements[mpg]
         mas = testbed_instance.get_connected(mpg, "ma", "mp")
         if len(mas) != 1:
             raise RuntimeError("Wrong number of source mobility models for MobilityPair %d" % guid)
@@ -525,7 +524,9 @@ def configure_matrix_propagation(testbed_instance, guid):
         parameters = testbed_instance._get_parameters(mpg)
         loss = parameters.get("Loss")
         symmetric = parameters.get("Symmetric")
-        element.SetLoss(mas[0].element, mbs[0].element, loss, symemtric)    
+        mas_elem = testbed_instance._elements[mas[0]]
+        mbs_elem = testbed_instance._elements[mbs[0]]
+        element.SetLoss(mas_elem, mbs_elem, loss, symmetric)    
 
 
 ###  Factories  ###
index 3b154e4..8214a45 100644 (file)
@@ -16,7 +16,7 @@ from ns.dsdv import *
 #from ns.click import *
 from ns.mobility import *
 from ns.wifi import *
-from ns.netanim import *
+#from ns.netanim import *
 from ns.stats import *
 from ns.uan import *
 from ns.spectrum import *