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"))
# 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"))
dst_port_high, l4_protocols[protocol], priority)
testbed_instance._elements[guid] = element
+def create_matrix_propagation(testbed_instance, guid):
+ create_element(testbed_instance, guid)
+ element = testbed_instance._elements[guid]
+ mp_guids = testbed_instance.get_connected(guid, "mobpair", "matrix")
+ for mpg in mp_guids:
+ mas = testbed_instance.get_connected(mpg, "ma", "mp")
+ if len(mas) != 1:
+ raise RuntimeError("Wrong number of source mobility models for MobilityPair %d" % guid)
+ mbs = testbed_instance.get_connected(mpg, "mb", "mp")
+ if len(mbs) != 1:
+ raise RuntimeError("Wrong number of destination mobility models for MobilityPair %d" % guid)
+ parameters = testbed_instance._get_parameters(mpg)
+ loss = parameters.get("Loss")
+ symmetric = parameters.get("Symmetric")
+ mas_elem = testbed_instance._elements[mas[0]]
+ mbs_elem = testbed_instance._elements[mbs[0]]
+ element.SetLoss(mas_elem, mbs_elem, loss, symmetric)
+
### Start/Stop functions ###
def start_application(testbed_instance, guid):
element = testbed_instance._elements[guid]
element.Start()
-def configure_matrix_propagation(testbed_instance, guid):
- create_element(testbed_instance, guid)
- element = testbed_instance._elements[guid]
- mp_guids = testbed_instance.get_connected(guid, "mobpair", "matrix")
- for mpg in mp_guids:
- mas = testbed_instance.get_connected(mpg, "ma", "mp")
- if len(mas) != 1:
- raise RuntimeError("Wrong number of source mobility models for MobilityPair %d" % guid)
- mbs = testbed_instance.get_connected(mpg, "mb", "mp")
- if len(mbs) != 1:
- raise RuntimeError("Wrong number of destination mobility models for MobilityPair %d" % guid)
- parameters = testbed_instance._get_parameters(mpg)
- loss = parameters.get("Loss")
- symmetric = parameters.get("Symmetric")
- mas_elem = testbed_instance._elements[mas[0]]
- mbs_elem = testbed_instance._elements[mbs[0]]
- element.SetLoss(mas_elem, mbs_elem, loss, symmetric)
-
-
### Factories ###
factories_create_order = ["ns3::BasicEnergySource",
}),
"ns3::MatrixPropagationLossModel": dict({
"category": FC.CATEGORY_LOSS_MODELS,
- "create_function": create_element,
- "configure_function": configure_matrix_propagation,
+ "create_function": create_matrix_propagation,
+ "configure_function": configure_element,
"help": "",
"connector_types": ["mobpair", "chan"],
"box_attributes": ["DefaultLoss"],