From: Alina Quereilhac Date: Thu, 30 Aug 2012 13:54:56 +0000 (+0200) Subject: Bugfixing for ns3::MatrixPropagationLossModel ... X-Git-Tag: nepi-3.0.0~149 X-Git-Url: http://git.onelab.eu/?a=commitdiff_plain;h=b15fb26eea07301383b228dcfebf04bb1ba33b43;p=nepi.git Bugfixing for ns3::MatrixPropagationLossModel ... --- diff --git a/examples/ns3_wifi_hidden_terminal.py b/examples/ns3_wifi_hidden_terminal.py index f2916edc..bcd07e08 100644 --- a/examples/ns3_wifi_hidden_terminal.py +++ b/examples/ns3_wifi_hidden_terminal.py @@ -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() diff --git a/src/nepi/testbeds/ns3/execute.py b/src/nepi/testbeds/ns3/execute.py index 5777f83c..7de7bde9 100644 --- a/src/nepi/testbeds/ns3/execute.py +++ b/src/nepi/testbeds/ns3/execute.py @@ -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: diff --git a/src/nepi/testbeds/ns3/factories_metadata.py b/src/nepi/testbeds/ns3/factories_metadata.py index c29ef065..c2814fc2 100644 --- a/src/nepi/testbeds/ns3/factories_metadata.py +++ b/src/nepi/testbeds/ns3/factories_metadata.py @@ -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 ### diff --git a/src/nepi/testbeds/ns3/ns3_bindings_import.py b/src/nepi/testbeds/ns3/ns3_bindings_import.py index 3b154e44..8214a45f 100644 --- a/src/nepi/testbeds/ns3/ns3_bindings_import.py +++ b/src/nepi/testbeds/ns3/ns3_bindings_import.py @@ -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 *