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()
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
# ??
# 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")
controller = ExperimentController(xml, root_dir)
controller.start()
+while not controller.is_finished(app.guid):
+ time.sleep(0.5)
+
controller.stop()
controller.shutdown()
LOCAL_FACTORIES = {
'ns3::Nepi::TunChannel' : TunChannel,
}
-
+
+ DUMMY_FACTORIES = ['ns3::Nepi::MobilityPair']
+
LOCAL_TYPES = tuple(LOCAL_FACTORIES.values())
def __init__(self):
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:
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:
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)
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 ###
#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 *