element = testbed_instance._elements[guid]
element.AggregateObject(testbed_instance.ns3.PacketSocketFactory())
-def create_wifi_standard_model(testbed_instance, guid):
+def create_wifi_phy(testbed_instance, guid):
create_element(testbed_instance, guid)
element = testbed_instance._elements[guid]
parameters = testbed_instance._get_parameters(guid)
raise RuntimeError("No wifi standard set for %d" % guid)
element.ConfigureStandard(wifi_standards[standard])
+def create_wifi_mac(testbed_instance, guid):
+ create_element(testbed_instance, guid)
+ element = testbed_instance._elements[guid]
+ parameters = testbed_instance._get_parameters(guid)
+ standard = parameters.get("Standard")
+ if not standard:
+ raise RuntimeError("No wifi standard set for %d" % guid)
+ element.ConfigureStandard(wifi_standards[standard])
+ qos = parameters.get("QosSupported")
+ # BUG: There seems to be an inheritance problem with the Python Bindings and SetQosSupported.
+ # It seems to be onbly defined for regular-wifi-mac.h and not for its children...
+ # Report this!
+ # element.SetQosSupported(qos)
+
def create_waypoint_mobility(testbed_instance, guid):
create_element(testbed_instance, guid)
element = testbed_instance._elements[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::EdcaTxopN",
"ns3::StaWifiMac",
"ns3::ApWifiMac",
- "ns3::QadhocWifiMac",
"ns3::MinstrelWifiManager",
"ns3::CaraWifiManager",
"ns3::AarfcdWifiManager",
"ns3::NakagamiPropagationLossModel",
"ns3::FixedRssLossModel",
"ns3::MatrixPropagationLossModel",
+ "ns3::Nepi::MobilityPair",
"ns3::RangePropagationLossModel",
"ns3::RandomPropagationDelayModel",
"ns3::ConstantSpeedPropagationDelayModel",
"ns3::EdcaTxopN",
"ns3::StaWifiMac",
"ns3::ApWifiMac",
- "ns3::QadhocWifiMac",
"ns3::MinstrelWifiManager",
"ns3::CaraWifiManager",
"ns3::AarfcdWifiManager",
"ns3::NakagamiPropagationLossModel",
"ns3::FixedRssLossModel",
"ns3::MatrixPropagationLossModel",
+ "ns3::Nepi::MobilityPair",
"ns3::RangePropagationLossModel",
"ns3::RandomPropagationDelayModel",
"ns3::ConstantSpeedPropagationDelayModel",
"create_function": create_element,
"configure_function": configure_element,
"help": "",
- "connector_types": ["node"],
+ "connector_types": ["node", "mp"],
"box_attributes": ["Position",
"Velocity"],
"tags": [tags.MOBILE],
}),
"ns3::AdhocWifiMac": dict({
"category": FC.CATEGORY_MAC_MODELS,
- "create_function": create_element,
+ "create_function": create_wifi_mac,
"configure_function": configure_element,
"help": "",
- "connector_types": [],
+ "connector_types": ["dev"],
"box_attributes": ["CtsTimeout",
"AckTimeout",
"BasicBlockAckTimeout",
"Slot",
"Pifs",
"MaxPropagationDelay",
- "Ssid"],
+ "Ssid",
+ "Standard",
+ "QosSupported"],
}),
"ns3::ConstantAccelerationMobilityModel": dict({
"category": FC.CATEGORY_MOBILITY_MODELS,
"create_function": create_element,
"configure_function": configure_element,
"help": "",
- "connector_types": ["node"],
+ "connector_types": ["node", "mp"],
"box_attributes": ["Position",
"Velocity"],
"tags": [tags.MOBILE],
"ns3::MatrixPropagationLossModel": dict({
"category": FC.CATEGORY_LOSS_MODELS,
"create_function": create_element,
- "configure_function": configure_element,
+ "configure_function": configure_matrix_propagation,
"help": "",
- "connector_types": [],
+ "connector_types": ["mobpair", "chan"],
"box_attributes": ["DefaultLoss"],
+ }),
+ "ns3::Nepi::MobilityPair": dict({
+ "category": FC.CATEGORY_LOSS_MODELS,
+ "help": "",
+ "connector_types": ["matrix", "ma", "mb"],
+ "box_attributes": ["Loss", "Symmetric"],
}),
"ns3::WifiNetDevice": dict({
"category": FC.CATEGORY_DEVICES,
}),
"ns3::StaWifiMac": dict({
"category": FC.CATEGORY_MAC_MODELS,
- "create_function": create_wifi_standard_model,
+ "create_function": create_wifi_mac,
"configure_function": configure_element,
"help": "Station Wifi MAC Model",
"connector_types": ["dev"],
"Pifs",
"MaxPropagationDelay",
"Ssid",
- "Standard"],
+ "Standard",
+ "QosSupported"],
}),
"ns3::UdpEchoClient": dict({
"category": FC.CATEGORY_APPLICATIONS,
"create_function": create_element,
"configure_function": configure_element,
"help": "",
- "connector_types": ["node"],
+ "connector_types": ["node", "mp"],
"box_attributes": ["Position",
"Velocity"],
"tags": [tags.MOBILE],
}),
"ns3::ApWifiMac": dict({
"category": FC.CATEGORY_MAC_MODELS,
- "create_function": create_wifi_standard_model,
+ "create_function": create_wifi_mac,
"configure_function": configure_element,
"help": "Access point Wifi MAC Model",
"connector_types": ["dev"],
"Pifs",
"MaxPropagationDelay",
"Ssid",
- "Standard"],
+ "Standard",
+ "QosSupported"],
}),
"ns3::YansErrorRateModel": dict({
"category": FC.CATEGORY_ERROR_MODELS,
}),
"ns3::YansWifiPhy": dict({
"category": FC.CATEGORY_PHY_MODELS,
- "create_function": create_wifi_standard_model,
+ "create_function": create_wifi_phy,
"configure_function": configure_element,
"help": "",
"connector_types": ["dev", "err", "chan"],
"RtsCtsThreshold",
"FragmentationThreshold",
"NonUnicastMode"],
- }),
- "ns3::QadhocWifiMac": dict({
- "category": FC.CATEGORY_MAC_MODELS,
- "create_function": create_element,
- "configure_function": configure_element,
- "help": "",
- "connector_types": [],
- "box_attributes": ["CtsTimeout",
- "AckTimeout",
- "BasicBlockAckTimeout",
- "CompressedBlockAckTimeout",
- "Sifs",
- "EifsNoDifs",
- "Slot",
- "Pifs",
- "MaxPropagationDelay",
- "Ssid"],
}),
"ns3::JakesPropagationLossModel": dict({
"category": FC.CATEGORY_LOSS_MODELS,