diff --git a/CHANGES.html b/CHANGES.html
index 45a26e499..cf929464c 100644
--- a/CHANGES.html
+++ b/CHANGES.html
@@ -56,7 +56,9 @@ us a note on ns-developers mailing list.
Changes to existing API:
- deconflict NetDevice::ifIndex and Ipv4::ifIndex (bug 85). All function parameters named "ifIndex" that refer
+
+ Deconflict NetDevice::ifIndex and Ipv4::ifIndex (bug 85).
+All function parameters named "ifIndex" that refer
to an Ipv4 interface are instead named "interface".
- static const uint32_t Ipv4RoutingProtocol::IF_INDEX_ANY = 0xffffffff;
@@ -74,38 +76,63 @@ proposed IPv4 routing refactoring)
+ bool Ipv4::GetInterfaceForDestination (Ipv4Address dest, uint32_t &interface) const;
(N.B. this function is not needed in the proposed Ipv4 routing refactoring)
- allow multiple IPv4 addresses to be assigned to an interface (bug 188).
-
- Add class Ipv4InterfaceAddress:
-This is a new class to resemble Linux's struct in_ifaddr. It holds IP addressing information, including mask,
-broadcast address, scope, whether primary or secondary, etc.
-
+
+
+ Allow multiple IPv4 addresses to be assigned to an interface (bug 188)
+
+ Add class Ipv4InterfaceAddress:
+ This is a new class to resemble Linux's struct in_ifaddr. It holds IP addressing information, including mask,
+ broadcast address, scope, whether primary or secondary, etc.
+
+ virtual uint32_t AddAddress (uint32_t interface, Ipv4InterfaceAddress address) = 0;
+ virtual Ipv4InterfaceAddress GetAddress (uint32_t interface, uint32_t addressIndex) const = 0;
+ virtual uint32_t GetNAddresses (uint32_t interface) const = 0;
-
- Regarding legacy API usage, typically where you once did the following,
-using the public Ipv4 class interface (e.g.):
-
+
+ Regarding legacy API usage, typically where you once did the following,
+ using the public Ipv4 class interface (e.g.):
+
ipv4A->SetAddress (ifIndexA, Ipv4Address ("172.16.1.1"));
ipv4A->SetNetworkMask (ifIndexA, Ipv4Mask ("255.255.255.255"));
-
-you now do:
-
+
+ you now do:
+
Ipv4InterfaceAddress ipv4IfAddrA = Ipv4InterfaceAddress (Ipv4Address ("172.16.1.1"), Ipv4Mask ("255.255.255.255"));
ipv4A->AddAddress (ifIndexA, ipv4IfAddrA);
-
- At the helper API level, one often gets an address from an interface
-container. We preserve the legacy GetAddress (uint32_t i) but it
-is documented that this will return only the first (address index 0)
-address on the interface, if there are multiple such addresses.
-We provide also an overloaded variant for the multi-address case:
+
+ At the helper API level, one often gets an address from an interface
+ container. We preserve the legacy GetAddress (uint32_t i) but it
+ is documented that this will return only the first (address index 0)
+ address on the interface, if there are multiple such addresses.
+ We provide also an overloaded variant for the multi-address case:
-
+
Ipv4Address Ipv4InterfaceContainer::GetAddress (uint32_t i)
+ Ipv4Address Ipv4InterfaceContainer::GetAddress (uint32_t i, uint32_t j)
-
-
+
+
+
+
+ New WifiMacHelper objects
+The type of wifi MAC is now set by two new specific helpers, NqosWifiMacHelper for non QoS MACs and QosWifiMacHelper for Qos MACs. They are passed as argument to WifiHelper::Install methods.
+
+- void WifiHelper::SetMac (std::string type, std::string n0 = "", const AttributeValue &v0 = EmptyAttributeValue (),...)
+
+- NetDeviceContainer WifiHelper::Install (const WifiPhyHelper &phyHelper, NodeContainer c) const
++ NetDeviceContainer WifiHelper::Install (const WifiPhyHelper &phyHelper, const WifiMacHelper &macHelper, NodeContainer c) const
+
+- NetDeviceContainer WifiHelper::Install (const WifiPhyHelper &phy, Ptr<Node> node) const
++ NetDeviceContainer WifiHelper::Install (const WifiPhyHelper &phy, const WifiMacHelper &mac, Ptr<Node> node) const
+
+- NetDeviceContainer WifiHelper::Install (const WifiPhyHelper &phy, std::string nodeName) const
++ NetDeviceContainer WifiHelper::Install (const WifiPhyHelper &phy, const WifiMacHelper &mac, std::string nodeName) const
+
+ See src/helper/nqos-wifi-mac-helper.h and src/helper/qos-wifi-mac-helper.h for more details.
+
+
+Remove Mac48Address::IsMulticast
+ This method was considered buggy and unsafe to call. Its replacement is Mac48Address::IsGroup.
+
+
Changed behavior:
diff --git a/RELEASE_NOTES b/RELEASE_NOTES
index bed5b44b9..12972faaa 100644
--- a/RELEASE_NOTES
+++ b/RELEASE_NOTES
@@ -8,6 +8,23 @@ http://www.nsnam.org
including tutorials:
http://www.nsnam.org/tutorials.html
+Release 3.5
+===========
+
+Availability
+------------
+This release is scheduled for June/July 2009
+
+New user-visible features
+-------------------------
+ a) 802.11e EDCA support: Has been added possibilty to manage QoS traffic on wifi stations.
+
+ b) 802.11n initial support: Has been added support for A-MSDU frame aggregation feature.
+
+API changes from ns-3.4
+-----------------------
+API changes for this release are documented in the file CHANGES.html
+
Release 3.4
===========
diff --git a/bindings/python/callbacks_list.py b/bindings/python/callbacks_list.py
index 352a6ca1a..f18b3fc1e 100644
--- a/bindings/python/callbacks_list.py
+++ b/bindings/python/callbacks_list.py
@@ -1,10 +1,11 @@
callback_classes = [
['void', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty'],
+ ['void', 'ns3::Ptr', 'ns3::Mac48Address', 'ns3::Mac48Address', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty'],
['void', 'ns3::Ptr', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty'],
['void', 'ns3::Ptr', 'unsigned int', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty'],
['void', 'ns3::Ptr', 'ns3::Address const&', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty'],
['bool', 'ns3::Ptr', 'ns3::Address const&', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty'],
- ['void', 'ns3::Ptr', 'ns3::Mac48Address', 'ns3::Mac48Address', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty'],
+ ['void', 'ns3::WifiMacHeader const&', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty'],
['bool', 'std::string', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty'],
['bool', 'ns3::Ptr', 'ns3::Ptr', 'unsigned short', 'ns3::Address const&', 'ns3::Address const&', 'ns3::NetDevice::PacketType', 'ns3::empty', 'ns3::empty', 'ns3::empty'],
['bool', 'ns3::Ptr', 'ns3::Ptr', 'unsigned short', 'ns3::Address const&', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty'],
diff --git a/bindings/python/ns3_module_bridge.py b/bindings/python/ns3_module_bridge.py
index 647193174..e63db6b91 100644
--- a/bindings/python/ns3_module_bridge.py
+++ b/bindings/python/ns3_module_bridge.py
@@ -223,17 +223,17 @@ def register_Ns3BridgeNetDevice_methods(root_module, cls):
'void',
[],
visibility='protected', is_virtual=True)
- ## bridge-net-device.h: void ns3::BridgeNetDevice::ReceiveFromDevice(ns3::Ptr device, ns3::Ptr packet, uint16_t protocol, ns3::Address const & source, ns3::Address const & destination, ns3::NetDevice::PacketType packetType) [member function]
+ ## bridge-net-device.h: void ns3::BridgeNetDevice::ReceiveFromDevice(ns3::Ptr device, ns3::Ptr packet, uint16_t protocol, ns3::Address const & source, ns3::Address const & destination, ns3::NetDevice::PacketType packetType) [member function]
cls.add_method('ReceiveFromDevice',
'void',
[param('ns3::Ptr< ns3::NetDevice >', 'device'), param('ns3::Ptr< ns3::Packet const >', 'packet'), param('uint16_t', 'protocol'), param('ns3::Address const &', 'source'), param('ns3::Address const &', 'destination'), param('ns3::NetDevice::PacketType', 'packetType')],
visibility='protected')
- ## bridge-net-device.h: void ns3::BridgeNetDevice::ForwardUnicast(ns3::Ptr incomingPort, ns3::Ptr packet, uint16_t protocol, ns3::Mac48Address src, ns3::Mac48Address dst) [member function]
+ ## bridge-net-device.h: void ns3::BridgeNetDevice::ForwardUnicast(ns3::Ptr incomingPort, ns3::Ptr packet, uint16_t protocol, ns3::Mac48Address src, ns3::Mac48Address dst) [member function]
cls.add_method('ForwardUnicast',
'void',
[param('ns3::Ptr< ns3::NetDevice >', 'incomingPort'), param('ns3::Ptr< ns3::Packet const >', 'packet'), param('uint16_t', 'protocol'), param('ns3::Mac48Address', 'src'), param('ns3::Mac48Address', 'dst')],
visibility='protected')
- ## bridge-net-device.h: void ns3::BridgeNetDevice::ForwardBroadcast(ns3::Ptr incomingPort, ns3::Ptr packet, uint16_t protocol, ns3::Mac48Address src, ns3::Mac48Address dst) [member function]
+ ## bridge-net-device.h: void ns3::BridgeNetDevice::ForwardBroadcast(ns3::Ptr incomingPort, ns3::Ptr packet, uint16_t protocol, ns3::Mac48Address src, ns3::Mac48Address dst) [member function]
cls.add_method('ForwardBroadcast',
'void',
[param('ns3::Ptr< ns3::NetDevice >', 'incomingPort'), param('ns3::Ptr< ns3::Packet const >', 'packet'), param('uint16_t', 'protocol'), param('ns3::Mac48Address', 'src'), param('ns3::Mac48Address', 'dst')],
diff --git a/bindings/python/ns3_module_common.py b/bindings/python/ns3_module_common.py
index e5491e9a8..64bdf7f31 100644
--- a/bindings/python/ns3_module_common.py
+++ b/bindings/python/ns3_module_common.py
@@ -493,7 +493,7 @@ def register_Ns3Packet_methods(root_module, cls):
cls.add_constructor([param('uint32_t', 'size')])
## packet.h: ns3::Packet::Packet(uint8_t const * buffer, uint32_t size) [constructor]
cls.add_constructor([param('uint8_t const *', 'buffer'), param('uint32_t', 'size')])
- ## packet.h: void ns3::Packet::AddAtEnd(ns3::Ptr packet) [member function]
+ ## packet.h: void ns3::Packet::AddAtEnd(ns3::Ptr packet) [member function]
cls.add_method('AddAtEnd',
'void',
[param('ns3::Ptr< ns3::Packet const >', 'packet')])
@@ -1054,7 +1054,7 @@ def register_Ns3PcapWriter_methods(root_module, cls):
cls.add_method('WritePppHeader',
'void',
[])
- ## pcap-writer.h: void ns3::PcapWriter::WritePacket(ns3::Ptr packet) [member function]
+ ## pcap-writer.h: void ns3::PcapWriter::WritePacket(ns3::Ptr packet) [member function]
cls.add_method('WritePacket',
'void',
[param('ns3::Ptr< ns3::Packet const >', 'packet')])
diff --git a/bindings/python/ns3_module_contrib.py b/bindings/python/ns3_module_contrib.py
index c6ae60703..f334a7a30 100644
--- a/bindings/python/ns3_module_contrib.py
+++ b/bindings/python/ns3_module_contrib.py
@@ -102,12 +102,12 @@ def register_Ns3DelayJitterEstimation_methods(root_module, cls):
cls.add_constructor([param('ns3::DelayJitterEstimation const &', 'arg0')])
## delay-jitter-estimation.h: ns3::DelayJitterEstimation::DelayJitterEstimation() [constructor]
cls.add_constructor([])
- ## delay-jitter-estimation.h: static void ns3::DelayJitterEstimation::PrepareTx(ns3::Ptr packet) [member function]
+ ## delay-jitter-estimation.h: static void ns3::DelayJitterEstimation::PrepareTx(ns3::Ptr packet) [member function]
cls.add_method('PrepareTx',
'void',
[param('ns3::Ptr< ns3::Packet const >', 'packet')],
is_static=True)
- ## delay-jitter-estimation.h: void ns3::DelayJitterEstimation::RecordRx(ns3::Ptr packet) [member function]
+ ## delay-jitter-estimation.h: void ns3::DelayJitterEstimation::RecordRx(ns3::Ptr packet) [member function]
cls.add_method('RecordRx',
'void',
[param('ns3::Ptr< ns3::Packet const >', 'packet')])
diff --git a/bindings/python/ns3_module_core.py b/bindings/python/ns3_module_core.py
index f92b4d19a..e108eba13 100644
--- a/bindings/python/ns3_module_core.py
+++ b/bindings/python/ns3_module_core.py
@@ -2028,7 +2028,7 @@ def register_Ns3TracedValue__Unsigned_int_methods(root_module, cls):
cls.add_method('ConnectWithoutContext',
'void',
[param('ns3::CallbackBase const &', 'cb')])
- ## traced-value.h: void ns3::TracedValue::Connect(ns3::CallbackBase const & cb, std::basic_string,std::allocator > path) [member function]
+ ## traced-value.h: void ns3::TracedValue::Connect(ns3::CallbackBase const & cb, std::string path) [member function]
cls.add_method('Connect',
'void',
[param('ns3::CallbackBase const &', 'cb'), param('std::string', 'path')])
@@ -2036,7 +2036,7 @@ def register_Ns3TracedValue__Unsigned_int_methods(root_module, cls):
cls.add_method('DisconnectWithoutContext',
'void',
[param('ns3::CallbackBase const &', 'cb')])
- ## traced-value.h: void ns3::TracedValue::Disconnect(ns3::CallbackBase const & cb, std::basic_string,std::allocator > path) [member function]
+ ## traced-value.h: void ns3::TracedValue::Disconnect(ns3::CallbackBase const & cb, std::string path) [member function]
cls.add_method('Disconnect',
'void',
[param('ns3::CallbackBase const &', 'cb'), param('std::string', 'path')])
@@ -2184,7 +2184,7 @@ def register_functions(root_module):
module.add_function('TypeNameGet',
'std::string',
[],
- template_parameters=['long'])
+ template_parameters=['long long'])
## type-name.h: extern std::string ns3::TypeNameGet() [free function]
module.add_function('TypeNameGet',
'std::string',
@@ -2204,7 +2204,7 @@ def register_functions(root_module):
module.add_function('TypeNameGet',
'std::string',
[],
- template_parameters=['unsigned long'])
+ template_parameters=['unsigned long long'])
## type-name.h: extern std::string ns3::TypeNameGet() [free function]
module.add_function('TypeNameGet',
'std::string',
diff --git a/bindings/python/ns3_module_helper.py b/bindings/python/ns3_module_helper.py
index 770173eda..2b4b7f2f5 100644
--- a/bindings/python/ns3_module_helper.py
+++ b/bindings/python/ns3_module_helper.py
@@ -47,12 +47,18 @@ def register_types(module):
module.add_class('V4PingHelper', allow_subclassing=False)
## wifi-helper.h: ns3::WifiHelper [class]
module.add_class('WifiHelper', allow_subclassing=False)
+ ## wifi-helper.h: ns3::WifiMacHelper [class]
+ module.add_class('WifiMacHelper', allow_subclassing=False)
## wifi-helper.h: ns3::WifiPhyHelper [class]
module.add_class('WifiPhyHelper', allow_subclassing=False)
## yans-wifi-helper.h: ns3::YansWifiChannelHelper [class]
module.add_class('YansWifiChannelHelper', allow_subclassing=False)
## yans-wifi-helper.h: ns3::YansWifiPhyHelper [class]
module.add_class('YansWifiPhyHelper', allow_subclassing=False, parent=root_module['ns3::WifiPhyHelper'])
+ ## nqos-wifi-mac-helper.h: ns3::NqosWifiMacHelper [class]
+ module.add_class('NqosWifiMacHelper', allow_subclassing=False, parent=root_module['ns3::WifiMacHelper'])
+ ## qos-wifi-mac-helper.h: ns3::QosWifiMacHelper [class]
+ module.add_class('QosWifiMacHelper', allow_subclassing=False, parent=root_module['ns3::WifiMacHelper'])
## Register a nested module for the namespace Config
@@ -117,9 +123,12 @@ def register_methods(root_module):
register_Ns3UdpEchoServerHelper_methods(root_module, root_module['ns3::UdpEchoServerHelper'])
register_Ns3V4PingHelper_methods(root_module, root_module['ns3::V4PingHelper'])
register_Ns3WifiHelper_methods(root_module, root_module['ns3::WifiHelper'])
+ register_Ns3WifiMacHelper_methods(root_module, root_module['ns3::WifiMacHelper'])
register_Ns3WifiPhyHelper_methods(root_module, root_module['ns3::WifiPhyHelper'])
register_Ns3YansWifiChannelHelper_methods(root_module, root_module['ns3::YansWifiChannelHelper'])
register_Ns3YansWifiPhyHelper_methods(root_module, root_module['ns3::YansWifiPhyHelper'])
+ register_Ns3NqosWifiMacHelper_methods(root_module, root_module['ns3::NqosWifiMacHelper'])
+ register_Ns3QosWifiMacHelper_methods(root_module, root_module['ns3::QosWifiMacHelper'])
return
def register_Ns3ApplicationContainer_methods(root_module, cls):
@@ -1068,27 +1077,35 @@ def register_Ns3WifiHelper_methods(root_module, cls):
cls.add_method('SetRemoteStationManager',
'void',
[param('std::string', 'type'), param('std::string', 'n0', default_value='""'), param('ns3::AttributeValue const &', 'v0', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n1', default_value='""'), param('ns3::AttributeValue const &', 'v1', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n2', default_value='""'), param('ns3::AttributeValue const &', 'v2', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n3', default_value='""'), param('ns3::AttributeValue const &', 'v3', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n4', default_value='""'), param('ns3::AttributeValue const &', 'v4', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n5', default_value='""'), param('ns3::AttributeValue const &', 'v5', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n6', default_value='""'), param('ns3::AttributeValue const &', 'v6', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n7', default_value='""'), param('ns3::AttributeValue const &', 'v7', default_value='ns3::EmptyAttributeValue()')])
- ## wifi-helper.h: void ns3::WifiHelper::SetMac(std::string type, std::string n0="", ns3::AttributeValue const & v0=ns3::EmptyAttributeValue(), std::string n1="", ns3::AttributeValue const & v1=ns3::EmptyAttributeValue(), std::string n2="", ns3::AttributeValue const & v2=ns3::EmptyAttributeValue(), std::string n3="", ns3::AttributeValue const & v3=ns3::EmptyAttributeValue(), std::string n4="", ns3::AttributeValue const & v4=ns3::EmptyAttributeValue(), std::string n5="", ns3::AttributeValue const & v5=ns3::EmptyAttributeValue(), std::string n6="", ns3::AttributeValue const & v6=ns3::EmptyAttributeValue(), std::string n7="", ns3::AttributeValue const & v7=ns3::EmptyAttributeValue()) [member function]
- cls.add_method('SetMac',
- 'void',
- [param('std::string', 'type'), param('std::string', 'n0', default_value='""'), param('ns3::AttributeValue const &', 'v0', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n1', default_value='""'), param('ns3::AttributeValue const &', 'v1', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n2', default_value='""'), param('ns3::AttributeValue const &', 'v2', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n3', default_value='""'), param('ns3::AttributeValue const &', 'v3', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n4', default_value='""'), param('ns3::AttributeValue const &', 'v4', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n5', default_value='""'), param('ns3::AttributeValue const &', 'v5', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n6', default_value='""'), param('ns3::AttributeValue const &', 'v6', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n7', default_value='""'), param('ns3::AttributeValue const &', 'v7', default_value='ns3::EmptyAttributeValue()')])
- ## wifi-helper.h: ns3::NetDeviceContainer ns3::WifiHelper::Install(ns3::WifiPhyHelper const & phy, ns3::NodeContainer c) const [member function]
+ ## wifi-helper.h: ns3::NetDeviceContainer ns3::WifiHelper::Install(ns3::WifiPhyHelper const & phy, ns3::WifiMacHelper const & mac, ns3::NodeContainer c) const [member function]
cls.add_method('Install',
'ns3::NetDeviceContainer',
- [param('ns3::WifiPhyHelper const &', 'phy'), param('ns3::NodeContainer', 'c')],
+ [param('ns3::WifiPhyHelper const &', 'phy'), param('ns3::WifiMacHelper const &', 'mac'), param('ns3::NodeContainer', 'c')],
is_const=True)
- ## wifi-helper.h: ns3::NetDeviceContainer ns3::WifiHelper::Install(ns3::WifiPhyHelper const & phy, ns3::Ptr node) const [member function]
+ ## wifi-helper.h: ns3::NetDeviceContainer ns3::WifiHelper::Install(ns3::WifiPhyHelper const & phy, ns3::WifiMacHelper const & mac, ns3::Ptr node) const [member function]
cls.add_method('Install',
'ns3::NetDeviceContainer',
- [param('ns3::WifiPhyHelper const &', 'phy'), param('ns3::Ptr< ns3::Node >', 'node')],
+ [param('ns3::WifiPhyHelper const &', 'phy'), param('ns3::WifiMacHelper const &', 'mac'), param('ns3::Ptr< ns3::Node >', 'node')],
is_const=True)
- ## wifi-helper.h: ns3::NetDeviceContainer ns3::WifiHelper::Install(ns3::WifiPhyHelper const & phy, std::string nodeName) const [member function]
+ ## wifi-helper.h: ns3::NetDeviceContainer ns3::WifiHelper::Install(ns3::WifiPhyHelper const & phy, ns3::WifiMacHelper const & mac, std::string nodeName) const [member function]
cls.add_method('Install',
'ns3::NetDeviceContainer',
- [param('ns3::WifiPhyHelper const &', 'phy'), param('std::string', 'nodeName')],
+ [param('ns3::WifiPhyHelper const &', 'phy'), param('ns3::WifiMacHelper const &', 'mac'), param('std::string', 'nodeName')],
is_const=True)
return
+def register_Ns3WifiMacHelper_methods(root_module, cls):
+ ## wifi-helper.h: ns3::WifiMacHelper::WifiMacHelper(ns3::WifiMacHelper const & arg0) [copy constructor]
+ cls.add_constructor([param('ns3::WifiMacHelper const &', 'arg0')])
+ ## wifi-helper.h: ns3::WifiMacHelper::WifiMacHelper() [constructor]
+ cls.add_constructor([])
+ ## wifi-helper.h: ns3::Ptr ns3::WifiMacHelper::Create() const [member function]
+ cls.add_method('Create',
+ 'ns3::Ptr< ns3::WifiMac >',
+ [],
+ is_pure_virtual=True, is_const=True, is_virtual=True)
+ return
+
def register_Ns3WifiPhyHelper_methods(root_module, cls):
## wifi-helper.h: ns3::WifiPhyHelper::WifiPhyHelper(ns3::WifiPhyHelper const & arg0) [copy constructor]
cls.add_constructor([param('ns3::WifiPhyHelper const &', 'arg0')])
@@ -1209,6 +1226,60 @@ def register_Ns3YansWifiPhyHelper_methods(root_module, cls):
is_const=True, visibility='private', is_virtual=True)
return
+def register_Ns3NqosWifiMacHelper_methods(root_module, cls):
+ ## nqos-wifi-mac-helper.h: ns3::NqosWifiMacHelper::NqosWifiMacHelper(ns3::NqosWifiMacHelper const & arg0) [copy constructor]
+ cls.add_constructor([param('ns3::NqosWifiMacHelper const &', 'arg0')])
+ ## nqos-wifi-mac-helper.h: ns3::NqosWifiMacHelper::NqosWifiMacHelper() [constructor]
+ cls.add_constructor([])
+ ## nqos-wifi-mac-helper.h: static ns3::NqosWifiMacHelper ns3::NqosWifiMacHelper::Default() [member function]
+ cls.add_method('Default',
+ 'ns3::NqosWifiMacHelper',
+ [],
+ is_static=True)
+ ## nqos-wifi-mac-helper.h: void ns3::NqosWifiMacHelper::SetType(std::string type, std::string n0="", ns3::AttributeValue const & v0=ns3::EmptyAttributeValue(), std::string n1="", ns3::AttributeValue const & v1=ns3::EmptyAttributeValue(), std::string n2="", ns3::AttributeValue const & v2=ns3::EmptyAttributeValue(), std::string n3="", ns3::AttributeValue const & v3=ns3::EmptyAttributeValue(), std::string n4="", ns3::AttributeValue const & v4=ns3::EmptyAttributeValue(), std::string n5="", ns3::AttributeValue const & v5=ns3::EmptyAttributeValue(), std::string n6="", ns3::AttributeValue const & v6=ns3::EmptyAttributeValue(), std::string n7="", ns3::AttributeValue const & v7=ns3::EmptyAttributeValue()) [member function]
+ cls.add_method('SetType',
+ 'void',
+ [param('std::string', 'type'), param('std::string', 'n0', default_value='""'), param('ns3::AttributeValue const &', 'v0', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n1', default_value='""'), param('ns3::AttributeValue const &', 'v1', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n2', default_value='""'), param('ns3::AttributeValue const &', 'v2', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n3', default_value='""'), param('ns3::AttributeValue const &', 'v3', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n4', default_value='""'), param('ns3::AttributeValue const &', 'v4', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n5', default_value='""'), param('ns3::AttributeValue const &', 'v5', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n6', default_value='""'), param('ns3::AttributeValue const &', 'v6', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n7', default_value='""'), param('ns3::AttributeValue const &', 'v7', default_value='ns3::EmptyAttributeValue()')])
+ ## nqos-wifi-mac-helper.h: void ns3::NqosWifiMacHelper::SetDcaParameters(std::string n0="", ns3::AttributeValue const & v0=ns3::EmptyAttributeValue(), std::string n1="", ns3::AttributeValue const & v1=ns3::EmptyAttributeValue(), std::string n2="", ns3::AttributeValue const & v2=ns3::EmptyAttributeValue(), std::string n3="", ns3::AttributeValue const & v3=ns3::EmptyAttributeValue()) [member function]
+ cls.add_method('SetDcaParameters',
+ 'void',
+ [param('std::string', 'n0', default_value='""'), param('ns3::AttributeValue const &', 'v0', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n1', default_value='""'), param('ns3::AttributeValue const &', 'v1', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n2', default_value='""'), param('ns3::AttributeValue const &', 'v2', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n3', default_value='""'), param('ns3::AttributeValue const &', 'v3', default_value='ns3::EmptyAttributeValue()')])
+ ## nqos-wifi-mac-helper.h: ns3::Ptr ns3::NqosWifiMacHelper::Create() const [member function]
+ cls.add_method('Create',
+ 'ns3::Ptr< ns3::WifiMac >',
+ [],
+ is_const=True, visibility='private', is_virtual=True)
+ return
+
+def register_Ns3QosWifiMacHelper_methods(root_module, cls):
+ ## qos-wifi-mac-helper.h: ns3::QosWifiMacHelper::QosWifiMacHelper(ns3::QosWifiMacHelper const & arg0) [copy constructor]
+ cls.add_constructor([param('ns3::QosWifiMacHelper const &', 'arg0')])
+ ## qos-wifi-mac-helper.h: ns3::QosWifiMacHelper::QosWifiMacHelper() [constructor]
+ cls.add_constructor([])
+ ## qos-wifi-mac-helper.h: static ns3::QosWifiMacHelper ns3::QosWifiMacHelper::Default() [member function]
+ cls.add_method('Default',
+ 'ns3::QosWifiMacHelper',
+ [],
+ is_static=True)
+ ## qos-wifi-mac-helper.h: void ns3::QosWifiMacHelper::SetType(std::string type, std::string n0="", ns3::AttributeValue const & v0=ns3::EmptyAttributeValue(), std::string n1="", ns3::AttributeValue const & v1=ns3::EmptyAttributeValue(), std::string n2="", ns3::AttributeValue const & v2=ns3::EmptyAttributeValue(), std::string n3="", ns3::AttributeValue const & v3=ns3::EmptyAttributeValue(), std::string n4="", ns3::AttributeValue const & v4=ns3::EmptyAttributeValue(), std::string n5="", ns3::AttributeValue const & v5=ns3::EmptyAttributeValue(), std::string n6="", ns3::AttributeValue const & v6=ns3::EmptyAttributeValue(), std::string n7="", ns3::AttributeValue const & v7=ns3::EmptyAttributeValue()) [member function]
+ cls.add_method('SetType',
+ 'void',
+ [param('std::string', 'type'), param('std::string', 'n0', default_value='""'), param('ns3::AttributeValue const &', 'v0', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n1', default_value='""'), param('ns3::AttributeValue const &', 'v1', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n2', default_value='""'), param('ns3::AttributeValue const &', 'v2', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n3', default_value='""'), param('ns3::AttributeValue const &', 'v3', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n4', default_value='""'), param('ns3::AttributeValue const &', 'v4', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n5', default_value='""'), param('ns3::AttributeValue const &', 'v5', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n6', default_value='""'), param('ns3::AttributeValue const &', 'v6', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n7', default_value='""'), param('ns3::AttributeValue const &', 'v7', default_value='ns3::EmptyAttributeValue()')])
+ ## qos-wifi-mac-helper.h: void ns3::QosWifiMacHelper::SetMsduAggregatorForAc(ns3::AccessClass accessClass, std::string type, std::string n0="", ns3::AttributeValue const & v0=ns3::EmptyAttributeValue(), std::string n1="", ns3::AttributeValue const & v1=ns3::EmptyAttributeValue(), std::string n2="", ns3::AttributeValue const & v2=ns3::EmptyAttributeValue(), std::string n3="", ns3::AttributeValue const & v3=ns3::EmptyAttributeValue()) [member function]
+ cls.add_method('SetMsduAggregatorForAc',
+ 'void',
+ [param('ns3::AccessClass', 'accessClass'), param('std::string', 'type'), param('std::string', 'n0', default_value='""'), param('ns3::AttributeValue const &', 'v0', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n1', default_value='""'), param('ns3::AttributeValue const &', 'v1', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n2', default_value='""'), param('ns3::AttributeValue const &', 'v2', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n3', default_value='""'), param('ns3::AttributeValue const &', 'v3', default_value='ns3::EmptyAttributeValue()')])
+ ## qos-wifi-mac-helper.h: void ns3::QosWifiMacHelper::SetEdcaParametersForAc(ns3::AccessClass accessClass, std::string n0="", ns3::AttributeValue const & v0=ns3::EmptyAttributeValue(), std::string n1="", ns3::AttributeValue const & v1=ns3::EmptyAttributeValue(), std::string n2="", ns3::AttributeValue const & v2=ns3::EmptyAttributeValue(), std::string n3="", ns3::AttributeValue const & v3=ns3::EmptyAttributeValue()) [member function]
+ cls.add_method('SetEdcaParametersForAc',
+ 'void',
+ [param('ns3::AccessClass', 'accessClass'), param('std::string', 'n0', default_value='""'), param('ns3::AttributeValue const &', 'v0', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n1', default_value='""'), param('ns3::AttributeValue const &', 'v1', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n2', default_value='""'), param('ns3::AttributeValue const &', 'v2', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n3', default_value='""'), param('ns3::AttributeValue const &', 'v3', default_value='ns3::EmptyAttributeValue()')])
+ ## qos-wifi-mac-helper.h: ns3::Ptr ns3::QosWifiMacHelper::Create() const [member function]
+ cls.add_method('Create',
+ 'ns3::Ptr< ns3::WifiMac >',
+ [],
+ is_const=True, visibility='private', is_virtual=True)
+ return
+
def register_functions(root_module):
module = root_module
register_functions_ns3_Config(module.get_submodule('Config'), root_module)
diff --git a/bindings/python/ns3_module_internet_stack.py b/bindings/python/ns3_module_internet_stack.py
index 329cbede6..c29a3992a 100644
--- a/bindings/python/ns3_module_internet_stack.py
+++ b/bindings/python/ns3_module_internet_stack.py
@@ -95,7 +95,7 @@ def register_Ns3Icmpv4DestinationUnreachable_methods(root_module, cls):
'uint16_t',
[],
is_const=True)
- ## icmpv4.h: void ns3::Icmpv4DestinationUnreachable::SetData(ns3::Ptr data) [member function]
+ ## icmpv4.h: void ns3::Icmpv4DestinationUnreachable::SetData(ns3::Ptr data) [member function]
cls.add_method('SetData',
'void',
[param('ns3::Ptr< ns3::Packet const >', 'data')])
@@ -151,7 +151,7 @@ def register_Ns3Icmpv4Echo_methods(root_module, cls):
cls.add_method('SetSequenceNumber',
'void',
[param('uint16_t', 'seq')])
- ## icmpv4.h: void ns3::Icmpv4Echo::SetData(ns3::Ptr data) [member function]
+ ## icmpv4.h: void ns3::Icmpv4Echo::SetData(ns3::Ptr data) [member function]
cls.add_method('SetData',
'void',
[param('ns3::Ptr< ns3::Packet const >', 'data')])
@@ -165,7 +165,7 @@ def register_Ns3Icmpv4Echo_methods(root_module, cls):
'uint16_t',
[],
is_const=True)
- ## icmpv4.h: ns3::Ptr ns3::Icmpv4Echo::GetData() const [member function]
+ ## icmpv4.h: ns3::Ptr ns3::Icmpv4Echo::GetData() const [member function]
cls.add_method('GetData',
'ns3::Ptr< ns3::Packet const >',
[],
@@ -266,7 +266,7 @@ def register_Ns3Icmpv4Header_methods(root_module, cls):
def register_Ns3Icmpv4TimeExceeded_methods(root_module, cls):
## icmpv4.h: ns3::Icmpv4TimeExceeded::Icmpv4TimeExceeded(ns3::Icmpv4TimeExceeded const & arg0) [copy constructor]
cls.add_constructor([param('ns3::Icmpv4TimeExceeded const &', 'arg0')])
- ## icmpv4.h: void ns3::Icmpv4TimeExceeded::SetData(ns3::Ptr data) [member function]
+ ## icmpv4.h: void ns3::Icmpv4TimeExceeded::SetData(ns3::Ptr data) [member function]
cls.add_method('SetData',
'void',
[param('ns3::Ptr< ns3::Packet const >', 'data')])
diff --git a/bindings/python/ns3_module_node.py b/bindings/python/ns3_module_node.py
index 122afc8f7..8fa22046a 100644
--- a/bindings/python/ns3_module_node.py
+++ b/bindings/python/ns3_module_node.py
@@ -1056,11 +1056,6 @@ def register_Ns3Mac48Address_methods(root_module, cls):
'bool',
[param('ns3::Address const &', 'address')],
is_static=True)
- ## mac48-address.h: bool ns3::Mac48Address::IsMulticast() const [member function]
- cls.add_method('IsMulticast',
- 'bool',
- [],
- is_const=True)
return
def register_Ns3Mac64Address_methods(root_module, cls):
@@ -1696,7 +1691,7 @@ def register_Ns3Queue_methods(root_module, cls):
cls.add_method('Dequeue',
'ns3::Ptr< ns3::Packet >',
[])
- ## queue.h: ns3::Ptr ns3::Queue::Peek() const [member function]
+ ## queue.h: ns3::Ptr ns3::Queue::Peek() const [member function]
cls.add_method('Peek',
'ns3::Ptr< ns3::Packet const >',
[],
@@ -1754,7 +1749,7 @@ def register_Ns3Queue_methods(root_module, cls):
'ns3::Ptr< ns3::Packet >',
[],
is_pure_virtual=True, visibility='private', is_virtual=True)
- ## queue.h: ns3::Ptr ns3::Queue::DoPeek() const [member function]
+ ## queue.h: ns3::Ptr ns3::Queue::DoPeek() const [member function]
cls.add_method('DoPeek',
'ns3::Ptr< ns3::Packet const >',
[],
@@ -2420,7 +2415,7 @@ def register_Ns3DropTailQueue_methods(root_module, cls):
'ns3::Ptr< ns3::Packet >',
[],
visibility='private', is_virtual=True)
- ## drop-tail-queue.h: ns3::Ptr ns3::DropTailQueue::DoPeek() const [member function]
+ ## drop-tail-queue.h: ns3::Ptr ns3::DropTailQueue::DoPeek() const [member function]
cls.add_method('DoPeek',
'ns3::Ptr< ns3::Packet const >',
[],
diff --git a/bindings/python/ns3_module_stats.py b/bindings/python/ns3_module_stats.py
index 6da736fe1..59532ca76 100644
--- a/bindings/python/ns3_module_stats.py
+++ b/bindings/python/ns3_module_stats.py
@@ -303,11 +303,11 @@ def register_Ns3PacketSizeMinMaxAvgTotalCalculator_methods(root_module, cls):
cls.add_constructor([param('ns3::PacketSizeMinMaxAvgTotalCalculator const &', 'arg0')])
## packet-data-calculators.h: ns3::PacketSizeMinMaxAvgTotalCalculator::PacketSizeMinMaxAvgTotalCalculator() [constructor]
cls.add_constructor([])
- ## packet-data-calculators.h: void ns3::PacketSizeMinMaxAvgTotalCalculator::PacketUpdate(std::string path, ns3::Ptr packet) [member function]
+ ## packet-data-calculators.h: void ns3::PacketSizeMinMaxAvgTotalCalculator::PacketUpdate(std::string path, ns3::Ptr packet) [member function]
cls.add_method('PacketUpdate',
'void',
[param('std::string', 'path'), param('ns3::Ptr< ns3::Packet const >', 'packet')])
- ## packet-data-calculators.h: void ns3::PacketSizeMinMaxAvgTotalCalculator::FrameUpdate(std::string path, ns3::Ptr packet, ns3::Mac48Address realto) [member function]
+ ## packet-data-calculators.h: void ns3::PacketSizeMinMaxAvgTotalCalculator::FrameUpdate(std::string path, ns3::Ptr packet, ns3::Mac48Address realto) [member function]
cls.add_method('FrameUpdate',
'void',
[param('std::string', 'path'), param('ns3::Ptr< ns3::Packet const >', 'packet'), param('ns3::Mac48Address', 'realto')])
@@ -400,11 +400,11 @@ def register_Ns3PacketCounterCalculator_methods(root_module, cls):
cls.add_constructor([param('ns3::PacketCounterCalculator const &', 'arg0')])
## packet-data-calculators.h: ns3::PacketCounterCalculator::PacketCounterCalculator() [constructor]
cls.add_constructor([])
- ## packet-data-calculators.h: void ns3::PacketCounterCalculator::PacketUpdate(std::string path, ns3::Ptr packet) [member function]
+ ## packet-data-calculators.h: void ns3::PacketCounterCalculator::PacketUpdate(std::string path, ns3::Ptr packet) [member function]
cls.add_method('PacketUpdate',
'void',
[param('std::string', 'path'), param('ns3::Ptr< ns3::Packet const >', 'packet')])
- ## packet-data-calculators.h: void ns3::PacketCounterCalculator::FrameUpdate(std::string path, ns3::Ptr packet, ns3::Mac48Address realto) [member function]
+ ## packet-data-calculators.h: void ns3::PacketCounterCalculator::FrameUpdate(std::string path, ns3::Ptr packet, ns3::Mac48Address realto) [member function]
cls.add_method('FrameUpdate',
'void',
[param('std::string', 'path'), param('ns3::Ptr< ns3::Packet const >', 'packet'), param('ns3::Mac48Address', 'realto')])
diff --git a/bindings/python/ns3_module_tap_bridge.py b/bindings/python/ns3_module_tap_bridge.py
index 060f909a6..ba5310e25 100644
--- a/bindings/python/ns3_module_tap_bridge.py
+++ b/bindings/python/ns3_module_tap_bridge.py
@@ -206,7 +206,7 @@ def register_Ns3TapBridge_methods(root_module, cls):
'void',
[],
visibility='protected', is_virtual=True)
- ## tap-bridge.h: void ns3::TapBridge::ReceiveFromBridgedDevice(ns3::Ptr device, ns3::Ptr packet, uint16_t protocol, ns3::Address const & src, ns3::Address const & dst, ns3::NetDevice::PacketType packetType) [member function]
+ ## tap-bridge.h: void ns3::TapBridge::ReceiveFromBridgedDevice(ns3::Ptr device, ns3::Ptr packet, uint16_t protocol, ns3::Address const & src, ns3::Address const & dst, ns3::NetDevice::PacketType packetType) [member function]
cls.add_method('ReceiveFromBridgedDevice',
'void',
[param('ns3::Ptr< ns3::NetDevice >', 'device'), param('ns3::Ptr< ns3::Packet const >', 'packet'), param('uint16_t', 'protocol'), param('ns3::Address const &', 'src'), param('ns3::Address const &', 'dst'), param('ns3::NetDevice::PacketType', 'packetType')],
diff --git a/bindings/python/ns3_module_wifi.py b/bindings/python/ns3_module_wifi.py
index 4d9546dd0..e13cc31ea 100644
--- a/bindings/python/ns3_module_wifi.py
+++ b/bindings/python/ns3_module_wifi.py
@@ -3,10 +3,16 @@ from pybindgen import Module, FileCodeSink, param, retval, cppclass
def register_types(module):
root_module = module.get_root()
+ ## wifi-mac-header.h: ns3::WifiMacType [enumeration]
+ module.add_enum('WifiMacType', ['WIFI_MAC_CTL_RTS', 'WIFI_MAC_CTL_CTS', 'WIFI_MAC_CTL_ACK', 'WIFI_MAC_CTL_BACKREQ', 'WIFI_MAC_CTL_BACKRESP', 'WIFI_MAC_MGT_BEACON', 'WIFI_MAC_MGT_ASSOCIATION_REQUEST', 'WIFI_MAC_MGT_ASSOCIATION_RESPONSE', 'WIFI_MAC_MGT_DISASSOCIATION', 'WIFI_MAC_MGT_REASSOCIATION_REQUEST', 'WIFI_MAC_MGT_REASSOCIATION_RESPONSE', 'WIFI_MAC_MGT_PROBE_REQUEST', 'WIFI_MAC_MGT_PROBE_RESPONSE', 'WIFI_MAC_MGT_AUTHENTICATION', 'WIFI_MAC_MGT_DEAUTHENTICATION', 'WIFI_MAC_DATA', 'WIFI_MAC_DATA_CFACK', 'WIFI_MAC_DATA_CFPOLL', 'WIFI_MAC_DATA_CFACK_CFPOLL', 'WIFI_MAC_DATA_NULL', 'WIFI_MAC_DATA_NULL_CFACK', 'WIFI_MAC_DATA_NULL_CFPOLL', 'WIFI_MAC_DATA_NULL_CFACK_CFPOLL', 'WIFI_MAC_QOSDATA', 'WIFI_MAC_QOSDATA_CFACK', 'WIFI_MAC_QOSDATA_CFPOLL', 'WIFI_MAC_QOSDATA_CFACK_CFPOLL', 'WIFI_MAC_QOSDATA_NULL', 'WIFI_MAC_QOSDATA_NULL_CFPOLL', 'WIFI_MAC_QOSDATA_NULL_CFACK_CFPOLL'])
## wifi-preamble.h: ns3::WifiPreamble [enumeration]
module.add_enum('WifiPreamble', ['WIFI_PREAMBLE_LONG', 'WIFI_PREAMBLE_SHORT'])
## wifi-phy-standard.h: ns3::WifiPhyStandard [enumeration]
module.add_enum('WifiPhyStandard', ['WIFI_PHY_STANDARD_80211a', 'WIFI_PHY_STANDARD_holland'])
+ ## qos-utils.h: ns3::AccessClass [enumeration]
+ module.add_enum('AccessClass', ['AC_VO', 'AC_VI', 'AC_BE', 'AC_BK', 'AC_UNDEF'])
+ ## edca-txop-n.h: ns3::TypeOfStation [enumeration]
+ module.add_enum('TypeOfStation', ['STA', 'AP', 'ADHOC_STA'])
## interference-helper.h: ns3::InterferenceHelper [class]
module.add_class('InterferenceHelper', allow_subclassing=False)
## interference-helper.h: ns3::InterferenceHelper::SnrPer [struct]
@@ -41,6 +47,8 @@ def register_types(module):
module.add_class('PropagationDelayModel', parent=root_module['ns3::Object'])
## propagation-loss-model.h: ns3::PropagationLossModel [class]
module.add_class('PropagationLossModel', parent=root_module['ns3::Object'])
+ ## qos-tag.h: ns3::QosTag [class]
+ module.add_class('QosTag', parent=root_module['ns3::Tag'])
## propagation-delay-model.h: ns3::RandomPropagationDelayModel [class]
module.add_class('RandomPropagationDelayModel', parent=root_module['ns3::PropagationDelayModel'])
## propagation-loss-model.h: ns3::RandomPropagationLossModel [class]
@@ -55,6 +63,12 @@ def register_types(module):
module.add_class('ThreeLogDistancePropagationLossModel', parent=root_module['ns3::PropagationLossModel'])
## wifi-mac.h: ns3::WifiMac [class]
module.add_class('WifiMac', parent=root_module['ns3::Object'])
+ ## wifi-mac-header.h: ns3::WifiMacHeader [class]
+ module.add_class('WifiMacHeader', parent=root_module['ns3::Header'])
+ ## wifi-mac-header.h: ns3::WifiMacHeader::QosAckPolicy [enumeration]
+ module.add_enum('QosAckPolicy', ['NORMAL_ACK', 'NO_ACK', 'NO_EXPLICIT_ACK', 'BLOCK_ACK'], outer_class=root_module['ns3::WifiMacHeader'])
+ ## wifi-mac-header.h: ns3::WifiMacHeader::AddressType [enumeration]
+ module.add_enum('AddressType', ['ADDR1', 'ADDR2', 'ADDR3', 'ADDR4'], outer_class=root_module['ns3::WifiMacHeader'])
## wifi-mode.h: ns3::WifiModeChecker [class]
module.add_class('WifiModeChecker', parent=root_module['ns3::AttributeChecker'])
## wifi-mode.h: ns3::WifiModeValue [class]
@@ -73,12 +87,18 @@ def register_types(module):
module.add_class('AdhocWifiMac', parent=root_module['ns3::WifiMac'])
## amrr-wifi-manager.h: ns3::AmrrWifiManager [class]
module.add_class('AmrrWifiManager', parent=root_module['ns3::WifiRemoteStationManager'])
+ ## amsdu-subframe-header.h: ns3::AmsduSubframeHeader [class]
+ module.add_class('AmsduSubframeHeader', parent=root_module['ns3::Header'])
## arf-wifi-manager.h: ns3::ArfWifiManager [class]
module.add_class('ArfWifiManager', parent=root_module['ns3::WifiRemoteStationManager'])
## constant-rate-wifi-manager.h: ns3::ConstantRateWifiManager [class]
module.add_class('ConstantRateWifiManager', parent=root_module['ns3::WifiRemoteStationManager'])
## propagation-delay-model.h: ns3::ConstantSpeedPropagationDelayModel [class]
module.add_class('ConstantSpeedPropagationDelayModel', parent=root_module['ns3::PropagationDelayModel'])
+ ## dca-txop.h: ns3::DcaTxop [class]
+ module.add_class('DcaTxop', parent=root_module['ns3::Object'])
+ ## edca-txop-n.h: ns3::EdcaTxopN [class]
+ module.add_class('EdcaTxopN', parent=root_module['ns3::Object'])
## error-rate-model.h: ns3::ErrorRateModel [class]
module.add_class('ErrorRateModel', parent=root_module['ns3::Object'])
## propagation-loss-model.h: ns3::FriisPropagationLossModel [class]
@@ -89,12 +109,20 @@ def register_types(module):
module.add_class('JakesPropagationLossModel', parent=root_module['ns3::PropagationLossModel'])
## propagation-loss-model.h: ns3::LogDistancePropagationLossModel [class]
module.add_class('LogDistancePropagationLossModel', parent=root_module['ns3::PropagationLossModel'])
+ ## msdu-aggregator.h: ns3::MsduAggregator [class]
+ module.add_class('MsduAggregator', parent=root_module['ns3::Object'])
## nqap-wifi-mac.h: ns3::NqapWifiMac [class]
module.add_class('NqapWifiMac', parent=root_module['ns3::WifiMac'])
## nqsta-wifi-mac.h: ns3::NqstaWifiMac [class]
module.add_class('NqstaWifiMac', parent=root_module['ns3::WifiMac'])
## onoe-wifi-manager.h: ns3::OnoeWifiManager [class]
module.add_class('OnoeWifiManager', parent=root_module['ns3::WifiRemoteStationManager'])
+ ## qadhoc-wifi-mac.h: ns3::QadhocWifiMac [class]
+ module.add_class('QadhocWifiMac', parent=root_module['ns3::WifiMac'])
+ ## qap-wifi-mac.h: ns3::QapWifiMac [class]
+ module.add_class('QapWifiMac', parent=root_module['ns3::WifiMac'])
+ ## qsta-wifi-mac.h: ns3::QstaWifiMac [class]
+ module.add_class('QstaWifiMac', parent=root_module['ns3::WifiMac'])
## rraa-wifi-manager.h: ns3::RraaWifiManager [class]
module.add_class('RraaWifiManager', parent=root_module['ns3::WifiRemoteStationManager'])
## wifi-channel.h: ns3::WifiChannel [class]
@@ -165,6 +193,7 @@ def register_methods(root_module):
register_Ns3OnoeWifiRemoteStation_methods(root_module, root_module['ns3::OnoeWifiRemoteStation'])
register_Ns3PropagationDelayModel_methods(root_module, root_module['ns3::PropagationDelayModel'])
register_Ns3PropagationLossModel_methods(root_module, root_module['ns3::PropagationLossModel'])
+ register_Ns3QosTag_methods(root_module, root_module['ns3::QosTag'])
register_Ns3RandomPropagationDelayModel_methods(root_module, root_module['ns3::RandomPropagationDelayModel'])
register_Ns3RandomPropagationLossModel_methods(root_module, root_module['ns3::RandomPropagationLossModel'])
register_Ns3RraaWifiRemoteStation_methods(root_module, root_module['ns3::RraaWifiRemoteStation'])
@@ -172,6 +201,7 @@ def register_methods(root_module):
register_Ns3SsidValue_methods(root_module, root_module['ns3::SsidValue'])
register_Ns3ThreeLogDistancePropagationLossModel_methods(root_module, root_module['ns3::ThreeLogDistancePropagationLossModel'])
register_Ns3WifiMac_methods(root_module, root_module['ns3::WifiMac'])
+ register_Ns3WifiMacHeader_methods(root_module, root_module['ns3::WifiMacHeader'])
register_Ns3WifiModeChecker_methods(root_module, root_module['ns3::WifiModeChecker'])
register_Ns3WifiModeValue_methods(root_module, root_module['ns3::WifiModeValue'])
register_Ns3WifiPhy_methods(root_module, root_module['ns3::WifiPhy'])
@@ -180,17 +210,24 @@ def register_methods(root_module):
register_Ns3AarfWifiRemoteStation_methods(root_module, root_module['ns3::AarfWifiRemoteStation'])
register_Ns3AdhocWifiMac_methods(root_module, root_module['ns3::AdhocWifiMac'])
register_Ns3AmrrWifiManager_methods(root_module, root_module['ns3::AmrrWifiManager'])
+ register_Ns3AmsduSubframeHeader_methods(root_module, root_module['ns3::AmsduSubframeHeader'])
register_Ns3ArfWifiManager_methods(root_module, root_module['ns3::ArfWifiManager'])
register_Ns3ConstantRateWifiManager_methods(root_module, root_module['ns3::ConstantRateWifiManager'])
register_Ns3ConstantSpeedPropagationDelayModel_methods(root_module, root_module['ns3::ConstantSpeedPropagationDelayModel'])
+ register_Ns3DcaTxop_methods(root_module, root_module['ns3::DcaTxop'])
+ register_Ns3EdcaTxopN_methods(root_module, root_module['ns3::EdcaTxopN'])
register_Ns3ErrorRateModel_methods(root_module, root_module['ns3::ErrorRateModel'])
register_Ns3FriisPropagationLossModel_methods(root_module, root_module['ns3::FriisPropagationLossModel'])
register_Ns3IdealWifiManager_methods(root_module, root_module['ns3::IdealWifiManager'])
register_Ns3JakesPropagationLossModel_methods(root_module, root_module['ns3::JakesPropagationLossModel'])
register_Ns3LogDistancePropagationLossModel_methods(root_module, root_module['ns3::LogDistancePropagationLossModel'])
+ register_Ns3MsduAggregator_methods(root_module, root_module['ns3::MsduAggregator'])
register_Ns3NqapWifiMac_methods(root_module, root_module['ns3::NqapWifiMac'])
register_Ns3NqstaWifiMac_methods(root_module, root_module['ns3::NqstaWifiMac'])
register_Ns3OnoeWifiManager_methods(root_module, root_module['ns3::OnoeWifiManager'])
+ register_Ns3QadhocWifiMac_methods(root_module, root_module['ns3::QadhocWifiMac'])
+ register_Ns3QapWifiMac_methods(root_module, root_module['ns3::QapWifiMac'])
+ register_Ns3QstaWifiMac_methods(root_module, root_module['ns3::QstaWifiMac'])
register_Ns3RraaWifiManager_methods(root_module, root_module['ns3::RraaWifiManager'])
register_Ns3WifiChannel_methods(root_module, root_module['ns3::WifiChannel'])
register_Ns3WifiNetDevice_methods(root_module, root_module['ns3::WifiNetDevice'])
@@ -522,15 +559,15 @@ def register_Ns3WifiRemoteStation_methods(root_module, cls):
cls.add_method('RecordDisassociated',
'void',
[])
- ## wifi-remote-station-manager.h: void ns3::WifiRemoteStation::PrepareForQueue(ns3::Ptr packet, uint32_t fullPacketSize) [member function]
+ ## wifi-remote-station-manager.h: void ns3::WifiRemoteStation::PrepareForQueue(ns3::Ptr packet, uint32_t fullPacketSize) [member function]
cls.add_method('PrepareForQueue',
'void',
[param('ns3::Ptr< ns3::Packet const >', 'packet'), param('uint32_t', 'fullPacketSize')])
- ## wifi-remote-station-manager.h: ns3::WifiMode ns3::WifiRemoteStation::GetDataMode(ns3::Ptr packet, uint32_t fullPacketSize) [member function]
+ ## wifi-remote-station-manager.h: ns3::WifiMode ns3::WifiRemoteStation::GetDataMode(ns3::Ptr packet, uint32_t fullPacketSize) [member function]
cls.add_method('GetDataMode',
'ns3::WifiMode',
[param('ns3::Ptr< ns3::Packet const >', 'packet'), param('uint32_t', 'fullPacketSize')])
- ## wifi-remote-station-manager.h: ns3::WifiMode ns3::WifiRemoteStation::GetRtsMode(ns3::Ptr packet) [member function]
+ ## wifi-remote-station-manager.h: ns3::WifiMode ns3::WifiRemoteStation::GetRtsMode(ns3::Ptr packet) [member function]
cls.add_method('GetRtsMode',
'ns3::WifiMode',
[param('ns3::Ptr< ns3::Packet const >', 'packet')])
@@ -562,37 +599,37 @@ def register_Ns3WifiRemoteStation_methods(root_module, cls):
cls.add_method('ReportRxOk',
'void',
[param('double', 'rxSnr'), param('ns3::WifiMode', 'txMode')])
- ## wifi-remote-station-manager.h: bool ns3::WifiRemoteStation::NeedRts(ns3::Ptr packet) [member function]
+ ## wifi-remote-station-manager.h: bool ns3::WifiRemoteStation::NeedRts(ns3::Ptr packet) [member function]
cls.add_method('NeedRts',
'bool',
[param('ns3::Ptr< ns3::Packet const >', 'packet')],
is_virtual=True)
- ## wifi-remote-station-manager.h: bool ns3::WifiRemoteStation::NeedRtsRetransmission(ns3::Ptr packet) [member function]
+ ## wifi-remote-station-manager.h: bool ns3::WifiRemoteStation::NeedRtsRetransmission(ns3::Ptr packet) [member function]
cls.add_method('NeedRtsRetransmission',
'bool',
[param('ns3::Ptr< ns3::Packet const >', 'packet')],
is_virtual=True)
- ## wifi-remote-station-manager.h: bool ns3::WifiRemoteStation::NeedDataRetransmission(ns3::Ptr packet) [member function]
+ ## wifi-remote-station-manager.h: bool ns3::WifiRemoteStation::NeedDataRetransmission(ns3::Ptr packet) [member function]
cls.add_method('NeedDataRetransmission',
'bool',
[param('ns3::Ptr< ns3::Packet const >', 'packet')],
is_virtual=True)
- ## wifi-remote-station-manager.h: bool ns3::WifiRemoteStation::NeedFragmentation(ns3::Ptr packet) [member function]
+ ## wifi-remote-station-manager.h: bool ns3::WifiRemoteStation::NeedFragmentation(ns3::Ptr packet) [member function]
cls.add_method('NeedFragmentation',
'bool',
[param('ns3::Ptr< ns3::Packet const >', 'packet')],
is_virtual=True)
- ## wifi-remote-station-manager.h: uint32_t ns3::WifiRemoteStation::GetFragmentSize(ns3::Ptr packet, uint32_t fragmentNumber) [member function]
+ ## wifi-remote-station-manager.h: uint32_t ns3::WifiRemoteStation::GetFragmentSize(ns3::Ptr packet, uint32_t fragmentNumber) [member function]
cls.add_method('GetFragmentSize',
'uint32_t',
[param('ns3::Ptr< ns3::Packet const >', 'packet'), param('uint32_t', 'fragmentNumber')],
is_virtual=True)
- ## wifi-remote-station-manager.h: uint32_t ns3::WifiRemoteStation::GetFragmentOffset(ns3::Ptr packet, uint32_t fragmentNumber) [member function]
+ ## wifi-remote-station-manager.h: uint32_t ns3::WifiRemoteStation::GetFragmentOffset(ns3::Ptr packet, uint32_t fragmentNumber) [member function]
cls.add_method('GetFragmentOffset',
'uint32_t',
[param('ns3::Ptr< ns3::Packet const >', 'packet'), param('uint32_t', 'fragmentNumber')],
is_virtual=True)
- ## wifi-remote-station-manager.h: bool ns3::WifiRemoteStation::IsLastFragment(ns3::Ptr packet, uint32_t fragmentNumber) [member function]
+ ## wifi-remote-station-manager.h: bool ns3::WifiRemoteStation::IsLastFragment(ns3::Ptr packet, uint32_t fragmentNumber) [member function]
cls.add_method('IsLastFragment',
'bool',
[param('ns3::Ptr< ns3::Packet const >', 'packet'), param('uint32_t', 'fragmentNumber')],
@@ -1033,6 +1070,52 @@ def register_Ns3PropagationLossModel_methods(root_module, cls):
is_pure_virtual=True, is_const=True, visibility='private', is_virtual=True)
return
+def register_Ns3QosTag_methods(root_module, cls):
+ ## qos-tag.h: ns3::QosTag::QosTag(ns3::QosTag const & arg0) [copy constructor]
+ cls.add_constructor([param('ns3::QosTag const &', 'arg0')])
+ ## qos-tag.h: static ns3::TypeId ns3::QosTag::GetTypeId() [member function]
+ cls.add_method('GetTypeId',
+ 'ns3::TypeId',
+ [],
+ is_static=True)
+ ## qos-tag.h: ns3::TypeId ns3::QosTag::GetInstanceTypeId() const [member function]
+ cls.add_method('GetInstanceTypeId',
+ 'ns3::TypeId',
+ [],
+ is_const=True, is_virtual=True)
+ ## qos-tag.h: ns3::QosTag::QosTag() [constructor]
+ cls.add_constructor([])
+ ## qos-tag.h: void ns3::QosTag::Serialize(ns3::TagBuffer i) const [member function]
+ cls.add_method('Serialize',
+ 'void',
+ [param('ns3::TagBuffer', 'i')],
+ is_const=True, is_virtual=True)
+ ## qos-tag.h: void ns3::QosTag::Deserialize(ns3::TagBuffer i) [member function]
+ cls.add_method('Deserialize',
+ 'void',
+ [param('ns3::TagBuffer', 'i')],
+ is_virtual=True)
+ ## qos-tag.h: uint32_t ns3::QosTag::GetSerializedSize() const [member function]
+ cls.add_method('GetSerializedSize',
+ 'uint32_t',
+ [],
+ is_const=True, is_virtual=True)
+ ## qos-tag.h: void ns3::QosTag::Print(std::ostream & os) const [member function]
+ cls.add_method('Print',
+ 'void',
+ [param('std::ostream &', 'os')],
+ is_const=True, is_virtual=True)
+ ## qos-tag.h: uint8_t ns3::QosTag::Get() const [member function]
+ cls.add_method('Get',
+ 'uint8_t',
+ [],
+ is_const=True)
+ ## qos-tag.h: void ns3::QosTag::Set(uint8_t tid) [member function]
+ cls.add_method('Set',
+ 'void',
+ [param('uint8_t', 'tid')])
+ return
+
def register_Ns3RandomPropagationDelayModel_methods(root_module, cls):
## propagation-delay-model.h: ns3::RandomPropagationDelayModel::RandomPropagationDelayModel(ns3::RandomPropagationDelayModel const & arg0) [copy constructor]
cls.add_constructor([param('ns3::RandomPropagationDelayModel const &', 'arg0')])
@@ -1070,7 +1153,7 @@ def register_Ns3RraaWifiRemoteStation_methods(root_module, cls):
cls.add_constructor([param('ns3::RraaWifiRemoteStation const &', 'arg0')])
## rraa-wifi-manager.h: ns3::RraaWifiRemoteStation::RraaWifiRemoteStation(ns3::Ptr stations) [constructor]
cls.add_constructor([param('ns3::Ptr< ns3::RraaWifiManager >', 'stations')])
- ## rraa-wifi-manager.h: bool ns3::RraaWifiRemoteStation::NeedRts(ns3::Ptr packet) [member function]
+ ## rraa-wifi-manager.h: bool ns3::RraaWifiRemoteStation::NeedRts(ns3::Ptr packet) [member function]
cls.add_method('NeedRts',
'bool',
[param('ns3::Ptr< ns3::Packet const >', 'packet')],
@@ -1296,12 +1379,12 @@ def register_Ns3WifiMac_methods(root_module, cls):
'ns3::Mac48Address',
[],
is_pure_virtual=True, is_const=True, is_virtual=True)
- ## wifi-mac.h: void ns3::WifiMac::Enqueue(ns3::Ptr packet, ns3::Mac48Address to, ns3::Mac48Address from) [member function]
+ ## wifi-mac.h: void ns3::WifiMac::Enqueue(ns3::Ptr packet, ns3::Mac48Address to, ns3::Mac48Address from) [member function]
cls.add_method('Enqueue',
'void',
[param('ns3::Ptr< ns3::Packet const >', 'packet'), param('ns3::Mac48Address', 'to'), param('ns3::Mac48Address', 'from')],
is_pure_virtual=True, is_virtual=True)
- ## wifi-mac.h: void ns3::WifiMac::Enqueue(ns3::Ptr packet, ns3::Mac48Address to) [member function]
+ ## wifi-mac.h: void ns3::WifiMac::Enqueue(ns3::Ptr packet, ns3::Mac48Address to) [member function]
cls.add_method('Enqueue',
'void',
[param('ns3::Ptr< ns3::Packet const >', 'packet'), param('ns3::Mac48Address', 'to')],
@@ -1336,28 +1419,399 @@ def register_Ns3WifiMac_methods(root_module, cls):
'void',
[param('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'linkDown')],
is_pure_virtual=True, is_virtual=True)
- ## wifi-mac.h: void ns3::WifiMac::NotifyTx(ns3::Ptr packet) [member function]
+ ## wifi-mac.h: void ns3::WifiMac::NotifyTx(ns3::Ptr packet) [member function]
cls.add_method('NotifyTx',
'void',
[param('ns3::Ptr< ns3::Packet const >', 'packet')])
- ## wifi-mac.h: void ns3::WifiMac::NotifyTxDrop(ns3::Ptr packet) [member function]
+ ## wifi-mac.h: void ns3::WifiMac::NotifyTxDrop(ns3::Ptr packet) [member function]
cls.add_method('NotifyTxDrop',
'void',
[param('ns3::Ptr< ns3::Packet const >', 'packet')])
- ## wifi-mac.h: void ns3::WifiMac::NotifyRx(ns3::Ptr packet) [member function]
+ ## wifi-mac.h: void ns3::WifiMac::NotifyRx(ns3::Ptr packet) [member function]
cls.add_method('NotifyRx',
'void',
[param('ns3::Ptr< ns3::Packet const >', 'packet')])
- ## wifi-mac.h: void ns3::WifiMac::NotifyPromiscRx(ns3::Ptr packet) [member function]
+ ## wifi-mac.h: void ns3::WifiMac::NotifyPromiscRx(ns3::Ptr packet) [member function]
cls.add_method('NotifyPromiscRx',
'void',
[param('ns3::Ptr< ns3::Packet const >', 'packet')])
- ## wifi-mac.h: void ns3::WifiMac::NotifyRxDrop(ns3::Ptr packet) [member function]
+ ## wifi-mac.h: void ns3::WifiMac::NotifyRxDrop(ns3::Ptr packet) [member function]
cls.add_method('NotifyRxDrop',
'void',
[param('ns3::Ptr< ns3::Packet const >', 'packet')])
return
+def register_Ns3WifiMacHeader_methods(root_module, cls):
+ ## wifi-mac-header.h: ns3::WifiMacHeader::WifiMacHeader(ns3::WifiMacHeader const & arg0) [copy constructor]
+ cls.add_constructor([param('ns3::WifiMacHeader const &', 'arg0')])
+ ## wifi-mac-header.h: ns3::WifiMacHeader::WifiMacHeader() [constructor]
+ cls.add_constructor([])
+ ## wifi-mac-header.h: static ns3::TypeId ns3::WifiMacHeader::GetTypeId() [member function]
+ cls.add_method('GetTypeId',
+ 'ns3::TypeId',
+ [],
+ is_static=True)
+ ## wifi-mac-header.h: ns3::TypeId ns3::WifiMacHeader::GetInstanceTypeId() const [member function]
+ cls.add_method('GetInstanceTypeId',
+ 'ns3::TypeId',
+ [],
+ is_const=True, is_virtual=True)
+ ## wifi-mac-header.h: void ns3::WifiMacHeader::Print(std::ostream & os) const [member function]
+ cls.add_method('Print',
+ 'void',
+ [param('std::ostream &', 'os')],
+ is_const=True, is_virtual=True)
+ ## wifi-mac-header.h: uint32_t ns3::WifiMacHeader::GetSerializedSize() const [member function]
+ cls.add_method('GetSerializedSize',
+ 'uint32_t',
+ [],
+ is_const=True, is_virtual=True)
+ ## wifi-mac-header.h: void ns3::WifiMacHeader::Serialize(ns3::Buffer::Iterator start) const [member function]
+ cls.add_method('Serialize',
+ 'void',
+ [param('ns3::Buffer::Iterator', 'start')],
+ is_const=True, is_virtual=True)
+ ## wifi-mac-header.h: uint32_t ns3::WifiMacHeader::Deserialize(ns3::Buffer::Iterator start) [member function]
+ cls.add_method('Deserialize',
+ 'uint32_t',
+ [param('ns3::Buffer::Iterator', 'start')],
+ is_virtual=True)
+ ## wifi-mac-header.h: void ns3::WifiMacHeader::SetAssocReq() [member function]
+ cls.add_method('SetAssocReq',
+ 'void',
+ [])
+ ## wifi-mac-header.h: void ns3::WifiMacHeader::SetAssocResp() [member function]
+ cls.add_method('SetAssocResp',
+ 'void',
+ [])
+ ## wifi-mac-header.h: void ns3::WifiMacHeader::SetProbeReq() [member function]
+ cls.add_method('SetProbeReq',
+ 'void',
+ [])
+ ## wifi-mac-header.h: void ns3::WifiMacHeader::SetProbeResp() [member function]
+ cls.add_method('SetProbeResp',
+ 'void',
+ [])
+ ## wifi-mac-header.h: void ns3::WifiMacHeader::SetBeacon() [member function]
+ cls.add_method('SetBeacon',
+ 'void',
+ [])
+ ## wifi-mac-header.h: void ns3::WifiMacHeader::SetTypeData() [member function]
+ cls.add_method('SetTypeData',
+ 'void',
+ [])
+ ## wifi-mac-header.h: void ns3::WifiMacHeader::SetDsFrom() [member function]
+ cls.add_method('SetDsFrom',
+ 'void',
+ [])
+ ## wifi-mac-header.h: void ns3::WifiMacHeader::SetDsNotFrom() [member function]
+ cls.add_method('SetDsNotFrom',
+ 'void',
+ [])
+ ## wifi-mac-header.h: void ns3::WifiMacHeader::SetDsTo() [member function]
+ cls.add_method('SetDsTo',
+ 'void',
+ [])
+ ## wifi-mac-header.h: void ns3::WifiMacHeader::SetDsNotTo() [member function]
+ cls.add_method('SetDsNotTo',
+ 'void',
+ [])
+ ## wifi-mac-header.h: void ns3::WifiMacHeader::SetAddr1(ns3::Mac48Address address) [member function]
+ cls.add_method('SetAddr1',
+ 'void',
+ [param('ns3::Mac48Address', 'address')])
+ ## wifi-mac-header.h: void ns3::WifiMacHeader::SetAddr2(ns3::Mac48Address address) [member function]
+ cls.add_method('SetAddr2',
+ 'void',
+ [param('ns3::Mac48Address', 'address')])
+ ## wifi-mac-header.h: void ns3::WifiMacHeader::SetAddr3(ns3::Mac48Address address) [member function]
+ cls.add_method('SetAddr3',
+ 'void',
+ [param('ns3::Mac48Address', 'address')])
+ ## wifi-mac-header.h: void ns3::WifiMacHeader::SetAddr4(ns3::Mac48Address address) [member function]
+ cls.add_method('SetAddr4',
+ 'void',
+ [param('ns3::Mac48Address', 'address')])
+ ## wifi-mac-header.h: void ns3::WifiMacHeader::SetType(ns3::WifiMacType type) [member function]
+ cls.add_method('SetType',
+ 'void',
+ [param('ns3::WifiMacType', 'type')])
+ ## wifi-mac-header.h: void ns3::WifiMacHeader::SetRawDuration(uint16_t duration) [member function]
+ cls.add_method('SetRawDuration',
+ 'void',
+ [param('uint16_t', 'duration')])
+ ## wifi-mac-header.h: void ns3::WifiMacHeader::SetDuration(ns3::Time duration) [member function]
+ cls.add_method('SetDuration',
+ 'void',
+ [param('ns3::Time', 'duration')])
+ ## wifi-mac-header.h: void ns3::WifiMacHeader::SetId(uint16_t id) [member function]
+ cls.add_method('SetId',
+ 'void',
+ [param('uint16_t', 'id')])
+ ## wifi-mac-header.h: void ns3::WifiMacHeader::SetSequenceNumber(uint16_t seq) [member function]
+ cls.add_method('SetSequenceNumber',
+ 'void',
+ [param('uint16_t', 'seq')])
+ ## wifi-mac-header.h: void ns3::WifiMacHeader::SetFragmentNumber(uint8_t frag) [member function]
+ cls.add_method('SetFragmentNumber',
+ 'void',
+ [param('uint8_t', 'frag')])
+ ## wifi-mac-header.h: void ns3::WifiMacHeader::SetNoMoreFragments() [member function]
+ cls.add_method('SetNoMoreFragments',
+ 'void',
+ [])
+ ## wifi-mac-header.h: void ns3::WifiMacHeader::SetMoreFragments() [member function]
+ cls.add_method('SetMoreFragments',
+ 'void',
+ [])
+ ## wifi-mac-header.h: void ns3::WifiMacHeader::SetRetry() [member function]
+ cls.add_method('SetRetry',
+ 'void',
+ [])
+ ## wifi-mac-header.h: void ns3::WifiMacHeader::SetNoRetry() [member function]
+ cls.add_method('SetNoRetry',
+ 'void',
+ [])
+ ## wifi-mac-header.h: void ns3::WifiMacHeader::SetQosTid(uint8_t tid) [member function]
+ cls.add_method('SetQosTid',
+ 'void',
+ [param('uint8_t', 'tid')])
+ ## wifi-mac-header.h: void ns3::WifiMacHeader::SetQosEosp() [member function]
+ cls.add_method('SetQosEosp',
+ 'void',
+ [])
+ ## wifi-mac-header.h: void ns3::WifiMacHeader::SetQosNoEosp() [member function]
+ cls.add_method('SetQosNoEosp',
+ 'void',
+ [])
+ ## wifi-mac-header.h: void ns3::WifiMacHeader::SetQosAckPolicy(ns3::WifiMacHeader::QosAckPolicy arg0) [member function]
+ cls.add_method('SetQosAckPolicy',
+ 'void',
+ [param('ns3::WifiMacHeader::QosAckPolicy', 'arg0')])
+ ## wifi-mac-header.h: void ns3::WifiMacHeader::SetQosAmsdu() [member function]
+ cls.add_method('SetQosAmsdu',
+ 'void',
+ [])
+ ## wifi-mac-header.h: void ns3::WifiMacHeader::SetQosNoAmsdu() [member function]
+ cls.add_method('SetQosNoAmsdu',
+ 'void',
+ [])
+ ## wifi-mac-header.h: void ns3::WifiMacHeader::SetQosTxopLimit(uint8_t txop) [member function]
+ cls.add_method('SetQosTxopLimit',
+ 'void',
+ [param('uint8_t', 'txop')])
+ ## wifi-mac-header.h: ns3::Mac48Address ns3::WifiMacHeader::GetAddr1() const [member function]
+ cls.add_method('GetAddr1',
+ 'ns3::Mac48Address',
+ [],
+ is_const=True)
+ ## wifi-mac-header.h: ns3::Mac48Address ns3::WifiMacHeader::GetAddr2() const [member function]
+ cls.add_method('GetAddr2',
+ 'ns3::Mac48Address',
+ [],
+ is_const=True)
+ ## wifi-mac-header.h: ns3::Mac48Address ns3::WifiMacHeader::GetAddr3() const [member function]
+ cls.add_method('GetAddr3',
+ 'ns3::Mac48Address',
+ [],
+ is_const=True)
+ ## wifi-mac-header.h: ns3::Mac48Address ns3::WifiMacHeader::GetAddr4() const [member function]
+ cls.add_method('GetAddr4',
+ 'ns3::Mac48Address',
+ [],
+ is_const=True)
+ ## wifi-mac-header.h: ns3::WifiMacType ns3::WifiMacHeader::GetType() const [member function]
+ cls.add_method('GetType',
+ 'ns3::WifiMacType',
+ [],
+ is_const=True)
+ ## wifi-mac-header.h: bool ns3::WifiMacHeader::IsFromDs() const [member function]
+ cls.add_method('IsFromDs',
+ 'bool',
+ [],
+ is_const=True)
+ ## wifi-mac-header.h: bool ns3::WifiMacHeader::IsToDs() const [member function]
+ cls.add_method('IsToDs',
+ 'bool',
+ [],
+ is_const=True)
+ ## wifi-mac-header.h: bool ns3::WifiMacHeader::IsData() const [member function]
+ cls.add_method('IsData',
+ 'bool',
+ [],
+ is_const=True)
+ ## wifi-mac-header.h: bool ns3::WifiMacHeader::IsQosData() const [member function]
+ cls.add_method('IsQosData',
+ 'bool',
+ [],
+ is_const=True)
+ ## wifi-mac-header.h: bool ns3::WifiMacHeader::IsCtl() const [member function]
+ cls.add_method('IsCtl',
+ 'bool',
+ [],
+ is_const=True)
+ ## wifi-mac-header.h: bool ns3::WifiMacHeader::IsMgt() const [member function]
+ cls.add_method('IsMgt',
+ 'bool',
+ [],
+ is_const=True)
+ ## wifi-mac-header.h: bool ns3::WifiMacHeader::IsCfpoll() const [member function]
+ cls.add_method('IsCfpoll',
+ 'bool',
+ [],
+ is_const=True)
+ ## wifi-mac-header.h: bool ns3::WifiMacHeader::IsRts() const [member function]
+ cls.add_method('IsRts',
+ 'bool',
+ [],
+ is_const=True)
+ ## wifi-mac-header.h: bool ns3::WifiMacHeader::IsCts() const [member function]
+ cls.add_method('IsCts',
+ 'bool',
+ [],
+ is_const=True)
+ ## wifi-mac-header.h: bool ns3::WifiMacHeader::IsAck() const [member function]
+ cls.add_method('IsAck',
+ 'bool',
+ [],
+ is_const=True)
+ ## wifi-mac-header.h: bool ns3::WifiMacHeader::IsAssocReq() const [member function]
+ cls.add_method('IsAssocReq',
+ 'bool',
+ [],
+ is_const=True)
+ ## wifi-mac-header.h: bool ns3::WifiMacHeader::IsAssocResp() const [member function]
+ cls.add_method('IsAssocResp',
+ 'bool',
+ [],
+ is_const=True)
+ ## wifi-mac-header.h: bool ns3::WifiMacHeader::IsReassocReq() const [member function]
+ cls.add_method('IsReassocReq',
+ 'bool',
+ [],
+ is_const=True)
+ ## wifi-mac-header.h: bool ns3::WifiMacHeader::IsReassocResp() const [member function]
+ cls.add_method('IsReassocResp',
+ 'bool',
+ [],
+ is_const=True)
+ ## wifi-mac-header.h: bool ns3::WifiMacHeader::IsProbeReq() const [member function]
+ cls.add_method('IsProbeReq',
+ 'bool',
+ [],
+ is_const=True)
+ ## wifi-mac-header.h: bool ns3::WifiMacHeader::IsProbeResp() const [member function]
+ cls.add_method('IsProbeResp',
+ 'bool',
+ [],
+ is_const=True)
+ ## wifi-mac-header.h: bool ns3::WifiMacHeader::IsBeacon() const [member function]
+ cls.add_method('IsBeacon',
+ 'bool',
+ [],
+ is_const=True)
+ ## wifi-mac-header.h: bool ns3::WifiMacHeader::IsDisassociation() const [member function]
+ cls.add_method('IsDisassociation',
+ 'bool',
+ [],
+ is_const=True)
+ ## wifi-mac-header.h: bool ns3::WifiMacHeader::IsAuthentication() const [member function]
+ cls.add_method('IsAuthentication',
+ 'bool',
+ [],
+ is_const=True)
+ ## wifi-mac-header.h: bool ns3::WifiMacHeader::IsDeauthentication() const [member function]
+ cls.add_method('IsDeauthentication',
+ 'bool',
+ [],
+ is_const=True)
+ ## wifi-mac-header.h: uint16_t ns3::WifiMacHeader::GetRawDuration() const [member function]
+ cls.add_method('GetRawDuration',
+ 'uint16_t',
+ [],
+ is_const=True)
+ ## wifi-mac-header.h: ns3::Time ns3::WifiMacHeader::GetDuration() const [member function]
+ cls.add_method('GetDuration',
+ 'ns3::Time',
+ [],
+ is_const=True)
+ ## wifi-mac-header.h: uint16_t ns3::WifiMacHeader::GetSequenceControl() const [member function]
+ cls.add_method('GetSequenceControl',
+ 'uint16_t',
+ [],
+ is_const=True)
+ ## wifi-mac-header.h: uint16_t ns3::WifiMacHeader::GetSequenceNumber() const [member function]
+ cls.add_method('GetSequenceNumber',
+ 'uint16_t',
+ [],
+ is_const=True)
+ ## wifi-mac-header.h: uint16_t ns3::WifiMacHeader::GetFragmentNumber() const [member function]
+ cls.add_method('GetFragmentNumber',
+ 'uint16_t',
+ [],
+ is_const=True)
+ ## wifi-mac-header.h: bool ns3::WifiMacHeader::IsRetry() const [member function]
+ cls.add_method('IsRetry',
+ 'bool',
+ [],
+ is_const=True)
+ ## wifi-mac-header.h: bool ns3::WifiMacHeader::IsMoreFragments() const [member function]
+ cls.add_method('IsMoreFragments',
+ 'bool',
+ [],
+ is_const=True)
+ ## wifi-mac-header.h: bool ns3::WifiMacHeader::IsQosBlockAck() const [member function]
+ cls.add_method('IsQosBlockAck',
+ 'bool',
+ [],
+ is_const=True)
+ ## wifi-mac-header.h: bool ns3::WifiMacHeader::IsQosNoAck() const [member function]
+ cls.add_method('IsQosNoAck',
+ 'bool',
+ [],
+ is_const=True)
+ ## wifi-mac-header.h: bool ns3::WifiMacHeader::IsQosAck() const [member function]
+ cls.add_method('IsQosAck',
+ 'bool',
+ [],
+ is_const=True)
+ ## wifi-mac-header.h: bool ns3::WifiMacHeader::IsQosEosp() const [member function]
+ cls.add_method('IsQosEosp',
+ 'bool',
+ [],
+ is_const=True)
+ ## wifi-mac-header.h: bool ns3::WifiMacHeader::IsQosAmsdu() const [member function]
+ cls.add_method('IsQosAmsdu',
+ 'bool',
+ [],
+ is_const=True)
+ ## wifi-mac-header.h: uint8_t ns3::WifiMacHeader::GetQosTid() const [member function]
+ cls.add_method('GetQosTid',
+ 'uint8_t',
+ [],
+ is_const=True)
+ ## wifi-mac-header.h: ns3::WifiMacHeader::QosAckPolicy ns3::WifiMacHeader::GetQosAckPolicy() const [member function]
+ cls.add_method('GetQosAckPolicy',
+ 'ns3::WifiMacHeader::QosAckPolicy',
+ [],
+ is_const=True)
+ ## wifi-mac-header.h: uint8_t ns3::WifiMacHeader::GetQosTxopLimit() const [member function]
+ cls.add_method('GetQosTxopLimit',
+ 'uint8_t',
+ [],
+ is_const=True)
+ ## wifi-mac-header.h: uint32_t ns3::WifiMacHeader::GetSize() const [member function]
+ cls.add_method('GetSize',
+ 'uint32_t',
+ [],
+ is_const=True)
+ ## wifi-mac-header.h: char const * ns3::WifiMacHeader::GetTypeString() const [member function]
+ cls.add_method('GetTypeString',
+ 'char const *',
+ [],
+ is_const=True)
+ return
+
def register_Ns3WifiModeChecker_methods(root_module, cls):
## wifi-mode.h: ns3::WifiModeChecker::WifiModeChecker(ns3::WifiModeChecker const & arg0) [copy constructor]
cls.add_constructor([param('ns3::WifiModeChecker const &', 'arg0')])
@@ -1433,7 +1887,7 @@ def register_Ns3WifiPhy_methods(root_module, cls):
'void',
[param('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, double, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'callback')],
is_pure_virtual=True, is_virtual=True)
- ## wifi-phy.h: void ns3::WifiPhy::SendPacket(ns3::Ptr packet, ns3::WifiMode mode, ns3::WifiPreamble preamble, uint8_t txPowerLevel) [member function]
+ ## wifi-phy.h: void ns3::WifiPhy::SendPacket(ns3::Ptr packet, ns3::WifiMode mode, ns3::WifiPreamble preamble, uint8_t txPowerLevel) [member function]
cls.add_method('SendPacket',
'void',
[param('ns3::Ptr< ns3::Packet const >', 'packet'), param('ns3::WifiMode', 'mode'), param('ns3::WifiPreamble', 'preamble'), param('uint8_t', 'txPowerLevel')],
@@ -1548,31 +2002,31 @@ def register_Ns3WifiPhy_methods(root_module, cls):
'ns3::WifiMode',
[],
is_static=True)
- ## wifi-phy.h: void ns3::WifiPhy::NotifyTxBegin(ns3::Ptr packet) [member function]
+ ## wifi-phy.h: void ns3::WifiPhy::NotifyTxBegin(ns3::Ptr packet) [member function]
cls.add_method('NotifyTxBegin',
'void',
[param('ns3::Ptr< ns3::Packet const >', 'packet')])
- ## wifi-phy.h: void ns3::WifiPhy::NotifyTxEnd(ns3::Ptr packet) [member function]
+ ## wifi-phy.h: void ns3::WifiPhy::NotifyTxEnd(ns3::Ptr packet) [member function]
cls.add_method('NotifyTxEnd',
'void',
[param('ns3::Ptr< ns3::Packet const >', 'packet')])
- ## wifi-phy.h: void ns3::WifiPhy::NotifyTxDrop(ns3::Ptr packet) [member function]
+ ## wifi-phy.h: void ns3::WifiPhy::NotifyTxDrop(ns3::Ptr packet) [member function]
cls.add_method('NotifyTxDrop',
'void',
[param('ns3::Ptr< ns3::Packet const >', 'packet')])
- ## wifi-phy.h: void ns3::WifiPhy::NotifyRxBegin(ns3::Ptr packet) [member function]
+ ## wifi-phy.h: void ns3::WifiPhy::NotifyRxBegin(ns3::Ptr packet) [member function]
cls.add_method('NotifyRxBegin',
'void',
[param('ns3::Ptr< ns3::Packet const >', 'packet')])
- ## wifi-phy.h: void ns3::WifiPhy::NotifyRxEnd(ns3::Ptr packet) [member function]
+ ## wifi-phy.h: void ns3::WifiPhy::NotifyRxEnd(ns3::Ptr packet) [member function]
cls.add_method('NotifyRxEnd',
'void',
[param('ns3::Ptr< ns3::Packet const >', 'packet')])
- ## wifi-phy.h: void ns3::WifiPhy::NotifyRxDrop(ns3::Ptr packet) [member function]
+ ## wifi-phy.h: void ns3::WifiPhy::NotifyRxDrop(ns3::Ptr packet) [member function]
cls.add_method('NotifyRxDrop',
'void',
[param('ns3::Ptr< ns3::Packet const >', 'packet')])
- ## wifi-phy.h: void ns3::WifiPhy::NotifyPromiscSniff(ns3::Ptr packet) [member function]
+ ## wifi-phy.h: void ns3::WifiPhy::NotifyPromiscSniff(ns3::Ptr packet) [member function]
cls.add_method('NotifyPromiscSniff',
'void',
[param('ns3::Ptr< ns3::Packet const >', 'packet')])
@@ -1820,7 +2274,7 @@ def register_Ns3YansWifiPhy_methods(root_module, cls):
'void',
[param('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, double, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'callback')],
is_virtual=True)
- ## yans-wifi-phy.h: void ns3::YansWifiPhy::SendPacket(ns3::Ptr packet, ns3::WifiMode mode, ns3::WifiPreamble preamble, uint8_t txPowerLevel) [member function]
+ ## yans-wifi-phy.h: void ns3::YansWifiPhy::SendPacket(ns3::Ptr packet, ns3::WifiMode mode, ns3::WifiPreamble preamble, uint8_t txPowerLevel) [member function]
cls.add_method('SendPacket',
'void',
[param('ns3::Ptr< ns3::Packet const >', 'packet'), param('ns3::WifiMode', 'mode'), param('ns3::WifiPreamble', 'preamble'), param('uint8_t', 'txPowerLevel')],
@@ -2002,12 +2456,12 @@ def register_Ns3AdhocWifiMac_methods(root_module, cls):
'void',
[param('ns3::Ptr< ns3::WifiRemoteStationManager >', 'stationManager')],
is_virtual=True)
- ## adhoc-wifi-mac.h: void ns3::AdhocWifiMac::Enqueue(ns3::Ptr packet, ns3::Mac48Address to, ns3::Mac48Address from) [member function]
+ ## adhoc-wifi-mac.h: void ns3::AdhocWifiMac::Enqueue(ns3::Ptr packet, ns3::Mac48Address to, ns3::Mac48Address from) [member function]
cls.add_method('Enqueue',
'void',
[param('ns3::Ptr< ns3::Packet const >', 'packet'), param('ns3::Mac48Address', 'to'), param('ns3::Mac48Address', 'from')],
is_virtual=True)
- ## adhoc-wifi-mac.h: void ns3::AdhocWifiMac::Enqueue(ns3::Ptr packet, ns3::Mac48Address to) [member function]
+ ## adhoc-wifi-mac.h: void ns3::AdhocWifiMac::Enqueue(ns3::Ptr packet, ns3::Mac48Address to) [member function]
cls.add_method('Enqueue',
'void',
[param('ns3::Ptr< ns3::Packet const >', 'packet'), param('ns3::Mac48Address', 'to')],
@@ -2081,6 +2535,70 @@ def register_Ns3AmrrWifiManager_methods(root_module, cls):
visibility='private', is_virtual=True)
return
+def register_Ns3AmsduSubframeHeader_methods(root_module, cls):
+ ## amsdu-subframe-header.h: ns3::AmsduSubframeHeader::AmsduSubframeHeader(ns3::AmsduSubframeHeader const & arg0) [copy constructor]
+ cls.add_constructor([param('ns3::AmsduSubframeHeader const &', 'arg0')])
+ ## amsdu-subframe-header.h: ns3::AmsduSubframeHeader::AmsduSubframeHeader() [constructor]
+ cls.add_constructor([])
+ ## amsdu-subframe-header.h: static ns3::TypeId ns3::AmsduSubframeHeader::GetTypeId() [member function]
+ cls.add_method('GetTypeId',
+ 'ns3::TypeId',
+ [],
+ is_static=True)
+ ## amsdu-subframe-header.h: ns3::TypeId ns3::AmsduSubframeHeader::GetInstanceTypeId() const [member function]
+ cls.add_method('GetInstanceTypeId',
+ 'ns3::TypeId',
+ [],
+ is_const=True, is_virtual=True)
+ ## amsdu-subframe-header.h: void ns3::AmsduSubframeHeader::Print(std::ostream & os) const [member function]
+ cls.add_method('Print',
+ 'void',
+ [param('std::ostream &', 'os')],
+ is_const=True, is_virtual=True)
+ ## amsdu-subframe-header.h: uint32_t ns3::AmsduSubframeHeader::GetSerializedSize() const [member function]
+ cls.add_method('GetSerializedSize',
+ 'uint32_t',
+ [],
+ is_const=True, is_virtual=True)
+ ## amsdu-subframe-header.h: void ns3::AmsduSubframeHeader::Serialize(ns3::Buffer::Iterator start) const [member function]
+ cls.add_method('Serialize',
+ 'void',
+ [param('ns3::Buffer::Iterator', 'start')],
+ is_const=True, is_virtual=True)
+ ## amsdu-subframe-header.h: uint32_t ns3::AmsduSubframeHeader::Deserialize(ns3::Buffer::Iterator start) [member function]
+ cls.add_method('Deserialize',
+ 'uint32_t',
+ [param('ns3::Buffer::Iterator', 'start')],
+ is_virtual=True)
+ ## amsdu-subframe-header.h: void ns3::AmsduSubframeHeader::SetDestinationAddr(ns3::Mac48Address to) [member function]
+ cls.add_method('SetDestinationAddr',
+ 'void',
+ [param('ns3::Mac48Address', 'to')])
+ ## amsdu-subframe-header.h: void ns3::AmsduSubframeHeader::SetSourceAddr(ns3::Mac48Address to) [member function]
+ cls.add_method('SetSourceAddr',
+ 'void',
+ [param('ns3::Mac48Address', 'to')])
+ ## amsdu-subframe-header.h: void ns3::AmsduSubframeHeader::SetLength(uint16_t arg0) [member function]
+ cls.add_method('SetLength',
+ 'void',
+ [param('uint16_t', 'arg0')])
+ ## amsdu-subframe-header.h: ns3::Mac48Address ns3::AmsduSubframeHeader::GetDestinationAddr() const [member function]
+ cls.add_method('GetDestinationAddr',
+ 'ns3::Mac48Address',
+ [],
+ is_const=True)
+ ## amsdu-subframe-header.h: ns3::Mac48Address ns3::AmsduSubframeHeader::GetSourceAddr() const [member function]
+ cls.add_method('GetSourceAddr',
+ 'ns3::Mac48Address',
+ [],
+ is_const=True)
+ ## amsdu-subframe-header.h: uint16_t ns3::AmsduSubframeHeader::GetLength() const [member function]
+ cls.add_method('GetLength',
+ 'uint16_t',
+ [],
+ is_const=True)
+ return
+
def register_Ns3ArfWifiManager_methods(root_module, cls):
## arf-wifi-manager.h: ns3::ArfWifiManager::ArfWifiManager(ns3::ArfWifiManager const & arg0) [copy constructor]
cls.add_constructor([param('ns3::ArfWifiManager const &', 'arg0')])
@@ -2151,6 +2669,276 @@ def register_Ns3ConstantSpeedPropagationDelayModel_methods(root_module, cls):
is_const=True)
return
+def register_Ns3DcaTxop_methods(root_module, cls):
+ ## dca-txop.h: static ns3::TypeId ns3::DcaTxop::GetTypeId() [member function]
+ cls.add_method('GetTypeId',
+ 'ns3::TypeId',
+ [],
+ is_static=True)
+ ## dca-txop.h: ns3::DcaTxop::DcaTxop() [constructor]
+ cls.add_constructor([])
+ ## dca-txop.h: void ns3::DcaTxop::SetLow(ns3::Ptr low) [member function]
+ cls.add_method('SetLow',
+ 'void',
+ [param('ns3::Ptr< ns3::MacLow >', 'low')])
+ ## dca-txop.h: void ns3::DcaTxop::SetManager(ns3::DcfManager * manager) [member function]
+ cls.add_method('SetManager',
+ 'void',
+ [param('ns3::DcfManager *', 'manager')])
+ ## dca-txop.h: void ns3::DcaTxop::SetWifiRemoteStationManager(ns3::Ptr remoteManager) [member function]
+ cls.add_method('SetWifiRemoteStationManager',
+ 'void',
+ [param('ns3::Ptr< ns3::WifiRemoteStationManager >', 'remoteManager')])
+ ## dca-txop.h: void ns3::DcaTxop::SetTxOkCallback(ns3::Callback callback) [member function]
+ cls.add_method('SetTxOkCallback',
+ 'void',
+ [param('ns3::Callback< void, ns3::WifiMacHeader const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'callback')])
+ ## dca-txop.h: void ns3::DcaTxop::SetTxFailedCallback(ns3::Callback callback) [member function]
+ cls.add_method('SetTxFailedCallback',
+ 'void',
+ [param('ns3::Callback< void, ns3::WifiMacHeader const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'callback')])
+ ## dca-txop.h: void ns3::DcaTxop::SetMaxQueueSize(uint32_t size) [member function]
+ cls.add_method('SetMaxQueueSize',
+ 'void',
+ [param('uint32_t', 'size')])
+ ## dca-txop.h: void ns3::DcaTxop::SetMaxQueueDelay(ns3::Time delay) [member function]
+ cls.add_method('SetMaxQueueDelay',
+ 'void',
+ [param('ns3::Time', 'delay')])
+ ## dca-txop.h: void ns3::DcaTxop::SetMinCw(uint32_t minCw) [member function]
+ cls.add_method('SetMinCw',
+ 'void',
+ [param('uint32_t', 'minCw')])
+ ## dca-txop.h: void ns3::DcaTxop::SetMaxCw(uint32_t maxCw) [member function]
+ cls.add_method('SetMaxCw',
+ 'void',
+ [param('uint32_t', 'maxCw')])
+ ## dca-txop.h: void ns3::DcaTxop::SetAifsn(uint32_t aifsn) [member function]
+ cls.add_method('SetAifsn',
+ 'void',
+ [param('uint32_t', 'aifsn')])
+ ## dca-txop.h: uint32_t ns3::DcaTxop::GetMinCw() const [member function]
+ cls.add_method('GetMinCw',
+ 'uint32_t',
+ [],
+ is_const=True)
+ ## dca-txop.h: uint32_t ns3::DcaTxop::GetMaxCw() const [member function]
+ cls.add_method('GetMaxCw',
+ 'uint32_t',
+ [],
+ is_const=True)
+ ## dca-txop.h: uint32_t ns3::DcaTxop::GetAifsn() const [member function]
+ cls.add_method('GetAifsn',
+ 'uint32_t',
+ [],
+ is_const=True)
+ ## dca-txop.h: void ns3::DcaTxop::Queue(ns3::Ptr packet, ns3::WifiMacHeader const & hdr) [member function]
+ cls.add_method('Queue',
+ 'void',
+ [param('ns3::Ptr< ns3::Packet const >', 'packet'), param('ns3::WifiMacHeader const &', 'hdr')])
+ ## dca-txop.h: void ns3::DcaTxop::DoDispose() [member function]
+ cls.add_method('DoDispose',
+ 'void',
+ [],
+ visibility='private', is_virtual=True)
+ return
+
+def register_Ns3EdcaTxopN_methods(root_module, cls):
+ ## edca-txop-n.h: static ns3::TypeId ns3::EdcaTxopN::GetTypeId() [member function]
+ cls.add_method('GetTypeId',
+ 'ns3::TypeId',
+ [],
+ is_static=True)
+ ## edca-txop-n.h: ns3::EdcaTxopN::EdcaTxopN() [constructor]
+ cls.add_constructor([])
+ ## edca-txop-n.h: void ns3::EdcaTxopN::DoDispose() [member function]
+ cls.add_method('DoDispose',
+ 'void',
+ [],
+ is_virtual=True)
+ ## edca-txop-n.h: void ns3::EdcaTxopN::SetLow(ns3::Ptr low) [member function]
+ cls.add_method('SetLow',
+ 'void',
+ [param('ns3::Ptr< ns3::MacLow >', 'low')])
+ ## edca-txop-n.h: void ns3::EdcaTxopN::SetTxMiddle(ns3::MacTxMiddle * txMiddle) [member function]
+ cls.add_method('SetTxMiddle',
+ 'void',
+ [param('ns3::MacTxMiddle *', 'txMiddle')])
+ ## edca-txop-n.h: void ns3::EdcaTxopN::SetManager(ns3::DcfManager * manager) [member function]
+ cls.add_method('SetManager',
+ 'void',
+ [param('ns3::DcfManager *', 'manager')])
+ ## edca-txop-n.h: void ns3::EdcaTxopN::SetTxOkCallback(ns3::Callback callback) [member function]
+ cls.add_method('SetTxOkCallback',
+ 'void',
+ [param('ns3::Callback< void, ns3::WifiMacHeader const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'callback')])
+ ## edca-txop-n.h: void ns3::EdcaTxopN::SetTxFailedCallback(ns3::Callback callback) [member function]
+ cls.add_method('SetTxFailedCallback',
+ 'void',
+ [param('ns3::Callback< void, ns3::WifiMacHeader const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'callback')])
+ ## edca-txop-n.h: void ns3::EdcaTxopN::SetWifiRemoteStationManager(ns3::Ptr remoteManager) [member function]
+ cls.add_method('SetWifiRemoteStationManager',
+ 'void',
+ [param('ns3::Ptr< ns3::WifiRemoteStationManager >', 'remoteManager')])
+ ## edca-txop-n.h: void ns3::EdcaTxopN::SetTypeOfStation(ns3::TypeOfStation type) [member function]
+ cls.add_method('SetTypeOfStation',
+ 'void',
+ [param('ns3::TypeOfStation', 'type')])
+ ## edca-txop-n.h: ns3::TypeOfStation ns3::EdcaTxopN::GetTypeOfStation() const [member function]
+ cls.add_method('GetTypeOfStation',
+ 'ns3::TypeOfStation',
+ [],
+ is_const=True)
+ ## edca-txop-n.h: void ns3::EdcaTxopN::SetMaxQueueSize(uint32_t size) [member function]
+ cls.add_method('SetMaxQueueSize',
+ 'void',
+ [param('uint32_t', 'size')])
+ ## edca-txop-n.h: void ns3::EdcaTxopN::SetMaxQueueDelay(ns3::Time delay) [member function]
+ cls.add_method('SetMaxQueueDelay',
+ 'void',
+ [param('ns3::Time', 'delay')])
+ ## edca-txop-n.h: void ns3::EdcaTxopN::SetMinCw(uint32_t minCw) [member function]
+ cls.add_method('SetMinCw',
+ 'void',
+ [param('uint32_t', 'minCw')])
+ ## edca-txop-n.h: void ns3::EdcaTxopN::SetMaxCw(uint32_t maxCw) [member function]
+ cls.add_method('SetMaxCw',
+ 'void',
+ [param('uint32_t', 'maxCw')])
+ ## edca-txop-n.h: void ns3::EdcaTxopN::SetAifsn(uint32_t aifsn) [member function]
+ cls.add_method('SetAifsn',
+ 'void',
+ [param('uint32_t', 'aifsn')])
+ ## edca-txop-n.h: uint32_t ns3::EdcaTxopN::GetMinCw() const [member function]
+ cls.add_method('GetMinCw',
+ 'uint32_t',
+ [],
+ is_const=True)
+ ## edca-txop-n.h: uint32_t ns3::EdcaTxopN::GetMaxCw() const [member function]
+ cls.add_method('GetMaxCw',
+ 'uint32_t',
+ [],
+ is_const=True)
+ ## edca-txop-n.h: uint32_t ns3::EdcaTxopN::GetAifsn() const [member function]
+ cls.add_method('GetAifsn',
+ 'uint32_t',
+ [],
+ is_const=True)
+ ## edca-txop-n.h: ns3::Ptr ns3::EdcaTxopN::Low() [member function]
+ cls.add_method('Low',
+ 'ns3::Ptr< ns3::MacLow >',
+ [])
+ ## edca-txop-n.h: ns3::Ptr ns3::EdcaTxopN::GetMsduAggregator() const [member function]
+ cls.add_method('GetMsduAggregator',
+ 'ns3::Ptr< ns3::MsduAggregator >',
+ [],
+ is_const=True)
+ ## edca-txop-n.h: bool ns3::EdcaTxopN::NeedsAccess() const [member function]
+ cls.add_method('NeedsAccess',
+ 'bool',
+ [],
+ is_const=True)
+ ## edca-txop-n.h: void ns3::EdcaTxopN::NotifyAccessGranted() [member function]
+ cls.add_method('NotifyAccessGranted',
+ 'void',
+ [])
+ ## edca-txop-n.h: void ns3::EdcaTxopN::NotifyInternalCollision() [member function]
+ cls.add_method('NotifyInternalCollision',
+ 'void',
+ [])
+ ## edca-txop-n.h: void ns3::EdcaTxopN::NotifyCollision() [member function]
+ cls.add_method('NotifyCollision',
+ 'void',
+ [])
+ ## edca-txop-n.h: void ns3::EdcaTxopN::GotCts(double snr, ns3::WifiMode txMode) [member function]
+ cls.add_method('GotCts',
+ 'void',
+ [param('double', 'snr'), param('ns3::WifiMode', 'txMode')])
+ ## edca-txop-n.h: void ns3::EdcaTxopN::MissedCts() [member function]
+ cls.add_method('MissedCts',
+ 'void',
+ [])
+ ## edca-txop-n.h: void ns3::EdcaTxopN::GotAck(double snr, ns3::WifiMode txMode) [member function]
+ cls.add_method('GotAck',
+ 'void',
+ [param('double', 'snr'), param('ns3::WifiMode', 'txMode')])
+ ## edca-txop-n.h: void ns3::EdcaTxopN::MissedAck() [member function]
+ cls.add_method('MissedAck',
+ 'void',
+ [])
+ ## edca-txop-n.h: void ns3::EdcaTxopN::StartNext() [member function]
+ cls.add_method('StartNext',
+ 'void',
+ [])
+ ## edca-txop-n.h: void ns3::EdcaTxopN::Cancel() [member function]
+ cls.add_method('Cancel',
+ 'void',
+ [])
+ ## edca-txop-n.h: void ns3::EdcaTxopN::RestartAccessIfNeeded() [member function]
+ cls.add_method('RestartAccessIfNeeded',
+ 'void',
+ [])
+ ## edca-txop-n.h: void ns3::EdcaTxopN::StartAccessIfNeeded() [member function]
+ cls.add_method('StartAccessIfNeeded',
+ 'void',
+ [])
+ ## edca-txop-n.h: bool ns3::EdcaTxopN::NeedRts() [member function]
+ cls.add_method('NeedRts',
+ 'bool',
+ [])
+ ## edca-txop-n.h: bool ns3::EdcaTxopN::NeedRtsRetransmission() [member function]
+ cls.add_method('NeedRtsRetransmission',
+ 'bool',
+ [])
+ ## edca-txop-n.h: bool ns3::EdcaTxopN::NeedDataRetransmission() [member function]
+ cls.add_method('NeedDataRetransmission',
+ 'bool',
+ [])
+ ## edca-txop-n.h: bool ns3::EdcaTxopN::NeedFragmentation() const [member function]
+ cls.add_method('NeedFragmentation',
+ 'bool',
+ [],
+ is_const=True)
+ ## edca-txop-n.h: uint32_t ns3::EdcaTxopN::GetNextFragmentSize() [member function]
+ cls.add_method('GetNextFragmentSize',
+ 'uint32_t',
+ [])
+ ## edca-txop-n.h: uint32_t ns3::EdcaTxopN::GetFragmentSize() [member function]
+ cls.add_method('GetFragmentSize',
+ 'uint32_t',
+ [])
+ ## edca-txop-n.h: uint32_t ns3::EdcaTxopN::GetFragmentOffset() [member function]
+ cls.add_method('GetFragmentOffset',
+ 'uint32_t',
+ [])
+ ## edca-txop-n.h: ns3::WifiRemoteStation * ns3::EdcaTxopN::GetStation(ns3::Mac48Address to) const [member function]
+ cls.add_method('GetStation',
+ 'ns3::WifiRemoteStation *',
+ [param('ns3::Mac48Address', 'to')],
+ is_const=True)
+ ## edca-txop-n.h: bool ns3::EdcaTxopN::IsLastFragment() const [member function]
+ cls.add_method('IsLastFragment',
+ 'bool',
+ [],
+ is_const=True)
+ ## edca-txop-n.h: void ns3::EdcaTxopN::NextFragment() [member function]
+ cls.add_method('NextFragment',
+ 'void',
+ [])
+ ## edca-txop-n.h: ns3::Ptr ns3::EdcaTxopN::GetFragmentPacket(ns3::WifiMacHeader * hdr) [member function]
+ cls.add_method('GetFragmentPacket',
+ 'ns3::Ptr< ns3::Packet >',
+ [param('ns3::WifiMacHeader *', 'hdr')])
+ ## edca-txop-n.h: void ns3::EdcaTxopN::Queue(ns3::Ptr packet, ns3::WifiMacHeader const & hdr) [member function]
+ cls.add_method('Queue',
+ 'void',
+ [param('ns3::Ptr< ns3::Packet const >', 'packet'), param('ns3::WifiMacHeader const &', 'hdr')])
+ ## edca-txop-n.h: void ns3::EdcaTxopN::SetMsduAggregator(ns3::Ptr aggr) [member function]
+ cls.add_method('SetMsduAggregator',
+ 'void',
+ [param('ns3::Ptr< ns3::MsduAggregator >', 'aggr')])
+ return
+
def register_Ns3ErrorRateModel_methods(root_module, cls):
## error-rate-model.h: ns3::ErrorRateModel::ErrorRateModel(ns3::ErrorRateModel const & arg0) [copy constructor]
cls.add_constructor([param('ns3::ErrorRateModel const &', 'arg0')])
@@ -2301,6 +3089,28 @@ def register_Ns3LogDistancePropagationLossModel_methods(root_module, cls):
is_const=True, visibility='private', is_virtual=True)
return
+def register_Ns3MsduAggregator_methods(root_module, cls):
+ ## msdu-aggregator.h: ns3::MsduAggregator::MsduAggregator(ns3::MsduAggregator const & arg0) [copy constructor]
+ cls.add_constructor([param('ns3::MsduAggregator const &', 'arg0')])
+ ## msdu-aggregator.h: ns3::MsduAggregator::MsduAggregator() [constructor]
+ cls.add_constructor([])
+ ## msdu-aggregator.h: static ns3::TypeId ns3::MsduAggregator::GetTypeId() [member function]
+ cls.add_method('GetTypeId',
+ 'ns3::TypeId',
+ [],
+ is_static=True)
+ ## msdu-aggregator.h: bool ns3::MsduAggregator::Aggregate(ns3::Ptr packet, ns3::Ptr aggregatedPacket, ns3::Mac48Address src, ns3::Mac48Address dest) [member function]
+ cls.add_method('Aggregate',
+ 'bool',
+ [param('ns3::Ptr< ns3::Packet const >', 'packet'), param('ns3::Ptr< ns3::Packet >', 'aggregatedPacket'), param('ns3::Mac48Address', 'src'), param('ns3::Mac48Address', 'dest')],
+ is_pure_virtual=True, is_virtual=True)
+ ## msdu-aggregator.h: static std::list, ns3::AmsduSubframeHeader>, std::allocator, ns3::AmsduSubframeHeader> > > ns3::MsduAggregator::Deaggregate(ns3::Ptr aggregatedPacket) [member function]
+ cls.add_method('Deaggregate',
+ 'std::list< std::pair< ns3::Ptr< ns3::Packet >, ns3::AmsduSubframeHeader > >',
+ [param('ns3::Ptr< ns3::Packet >', 'aggregatedPacket')],
+ is_static=True)
+ return
+
def register_Ns3NqapWifiMac_methods(root_module, cls):
## nqap-wifi-mac.h: static ns3::TypeId ns3::NqapWifiMac::GetTypeId() [member function]
cls.add_method('GetTypeId',
@@ -2379,12 +3189,12 @@ def register_Ns3NqapWifiMac_methods(root_module, cls):
'void',
[param('ns3::Ptr< ns3::WifiRemoteStationManager >', 'stationManager')],
is_virtual=True)
- ## nqap-wifi-mac.h: void ns3::NqapWifiMac::Enqueue(ns3::Ptr packet, ns3::Mac48Address to, ns3::Mac48Address from) [member function]
+ ## nqap-wifi-mac.h: void ns3::NqapWifiMac::Enqueue(ns3::Ptr packet, ns3::Mac48Address to, ns3::Mac48Address from) [member function]
cls.add_method('Enqueue',
'void',
[param('ns3::Ptr< ns3::Packet const >', 'packet'), param('ns3::Mac48Address', 'to'), param('ns3::Mac48Address', 'from')],
is_virtual=True)
- ## nqap-wifi-mac.h: void ns3::NqapWifiMac::Enqueue(ns3::Ptr packet, ns3::Mac48Address to) [member function]
+ ## nqap-wifi-mac.h: void ns3::NqapWifiMac::Enqueue(ns3::Ptr packet, ns3::Mac48Address to) [member function]
cls.add_method('Enqueue',
'void',
[param('ns3::Ptr< ns3::Packet const >', 'packet'), param('ns3::Mac48Address', 'to')],
@@ -2532,12 +3342,12 @@ def register_Ns3NqstaWifiMac_methods(root_module, cls):
'void',
[param('ns3::Ptr< ns3::WifiRemoteStationManager >', 'stationManager')],
is_virtual=True)
- ## nqsta-wifi-mac.h: void ns3::NqstaWifiMac::Enqueue(ns3::Ptr packet, ns3::Mac48Address to, ns3::Mac48Address from) [member function]
+ ## nqsta-wifi-mac.h: void ns3::NqstaWifiMac::Enqueue(ns3::Ptr packet, ns3::Mac48Address to, ns3::Mac48Address from) [member function]
cls.add_method('Enqueue',
'void',
[param('ns3::Ptr< ns3::Packet const >', 'packet'), param('ns3::Mac48Address', 'to'), param('ns3::Mac48Address', 'from')],
is_virtual=True)
- ## nqsta-wifi-mac.h: void ns3::NqstaWifiMac::Enqueue(ns3::Ptr packet, ns3::Mac48Address to) [member function]
+ ## nqsta-wifi-mac.h: void ns3::NqstaWifiMac::Enqueue(ns3::Ptr packet, ns3::Mac48Address to) [member function]
cls.add_method('Enqueue',
'void',
[param('ns3::Ptr< ns3::Packet const >', 'packet'), param('ns3::Mac48Address', 'to')],
@@ -2627,6 +3437,455 @@ def register_Ns3OnoeWifiManager_methods(root_module, cls):
visibility='private', is_virtual=True)
return
+def register_Ns3QadhocWifiMac_methods(root_module, cls):
+ ## qadhoc-wifi-mac.h: static ns3::TypeId ns3::QadhocWifiMac::GetTypeId() [member function]
+ cls.add_method('GetTypeId',
+ 'ns3::TypeId',
+ [],
+ is_static=True)
+ ## qadhoc-wifi-mac.h: ns3::QadhocWifiMac::QadhocWifiMac() [constructor]
+ cls.add_constructor([])
+ ## qadhoc-wifi-mac.h: void ns3::QadhocWifiMac::SetSlot(ns3::Time slotTime) [member function]
+ cls.add_method('SetSlot',
+ 'void',
+ [param('ns3::Time', 'slotTime')],
+ is_virtual=True)
+ ## qadhoc-wifi-mac.h: void ns3::QadhocWifiMac::SetSifs(ns3::Time sifs) [member function]
+ cls.add_method('SetSifs',
+ 'void',
+ [param('ns3::Time', 'sifs')],
+ is_virtual=True)
+ ## qadhoc-wifi-mac.h: void ns3::QadhocWifiMac::SetEifsNoDifs(ns3::Time eifsNoDifs) [member function]
+ cls.add_method('SetEifsNoDifs',
+ 'void',
+ [param('ns3::Time', 'eifsNoDifs')],
+ is_virtual=True)
+ ## qadhoc-wifi-mac.h: void ns3::QadhocWifiMac::SetAckTimeout(ns3::Time ackTimeout) [member function]
+ cls.add_method('SetAckTimeout',
+ 'void',
+ [param('ns3::Time', 'ackTimeout')],
+ is_virtual=True)
+ ## qadhoc-wifi-mac.h: void ns3::QadhocWifiMac::SetCtsTimeout(ns3::Time ctsTimeout) [member function]
+ cls.add_method('SetCtsTimeout',
+ 'void',
+ [param('ns3::Time', 'ctsTimeout')],
+ is_virtual=True)
+ ## qadhoc-wifi-mac.h: void ns3::QadhocWifiMac::SetPifs(ns3::Time pifs) [member function]
+ cls.add_method('SetPifs',
+ 'void',
+ [param('ns3::Time', 'pifs')],
+ is_virtual=True)
+ ## qadhoc-wifi-mac.h: ns3::Time ns3::QadhocWifiMac::GetSlot() const [member function]
+ cls.add_method('GetSlot',
+ 'ns3::Time',
+ [],
+ is_const=True, is_virtual=True)
+ ## qadhoc-wifi-mac.h: ns3::Time ns3::QadhocWifiMac::GetSifs() const [member function]
+ cls.add_method('GetSifs',
+ 'ns3::Time',
+ [],
+ is_const=True, is_virtual=True)
+ ## qadhoc-wifi-mac.h: ns3::Time ns3::QadhocWifiMac::GetEifsNoDifs() const [member function]
+ cls.add_method('GetEifsNoDifs',
+ 'ns3::Time',
+ [],
+ is_const=True, is_virtual=True)
+ ## qadhoc-wifi-mac.h: ns3::Time ns3::QadhocWifiMac::GetAckTimeout() const [member function]
+ cls.add_method('GetAckTimeout',
+ 'ns3::Time',
+ [],
+ is_const=True, is_virtual=True)
+ ## qadhoc-wifi-mac.h: ns3::Time ns3::QadhocWifiMac::GetCtsTimeout() const [member function]
+ cls.add_method('GetCtsTimeout',
+ 'ns3::Time',
+ [],
+ is_const=True, is_virtual=True)
+ ## qadhoc-wifi-mac.h: ns3::Time ns3::QadhocWifiMac::GetPifs() const [member function]
+ cls.add_method('GetPifs',
+ 'ns3::Time',
+ [],
+ is_const=True, is_virtual=True)
+ ## qadhoc-wifi-mac.h: void ns3::QadhocWifiMac::SetWifiPhy(ns3::Ptr phy) [member function]
+ cls.add_method('SetWifiPhy',
+ 'void',
+ [param('ns3::Ptr< ns3::WifiPhy >', 'phy')],
+ is_virtual=True)
+ ## qadhoc-wifi-mac.h: void ns3::QadhocWifiMac::SetWifiRemoteStationManager(ns3::Ptr stationManager) [member function]
+ cls.add_method('SetWifiRemoteStationManager',
+ 'void',
+ [param('ns3::Ptr< ns3::WifiRemoteStationManager >', 'stationManager')],
+ is_virtual=True)
+ ## qadhoc-wifi-mac.h: void ns3::QadhocWifiMac::Enqueue(ns3::Ptr packet, ns3::Mac48Address to, ns3::Mac48Address from) [member function]
+ cls.add_method('Enqueue',
+ 'void',
+ [param('ns3::Ptr< ns3::Packet const >', 'packet'), param('ns3::Mac48Address', 'to'), param('ns3::Mac48Address', 'from')],
+ is_virtual=True)
+ ## qadhoc-wifi-mac.h: void ns3::QadhocWifiMac::Enqueue(ns3::Ptr packet, ns3::Mac48Address to) [member function]
+ cls.add_method('Enqueue',
+ 'void',
+ [param('ns3::Ptr< ns3::Packet const >', 'packet'), param('ns3::Mac48Address', 'to')],
+ is_virtual=True)
+ ## qadhoc-wifi-mac.h: bool ns3::QadhocWifiMac::SupportsSendFrom() const [member function]
+ cls.add_method('SupportsSendFrom',
+ 'bool',
+ [],
+ is_const=True, is_virtual=True)
+ ## qadhoc-wifi-mac.h: void ns3::QadhocWifiMac::SetForwardUpCallback(ns3::Callback, ns3::Mac48Address, ns3::Mac48Address, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty> upCallback) [member function]
+ cls.add_method('SetForwardUpCallback',
+ 'void',
+ [param('ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::Mac48Address, ns3::Mac48Address, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'upCallback')],
+ is_virtual=True)
+ ## qadhoc-wifi-mac.h: void ns3::QadhocWifiMac::SetLinkUpCallback(ns3::Callback linkUp) [member function]
+ cls.add_method('SetLinkUpCallback',
+ 'void',
+ [param('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'linkUp')],
+ is_virtual=True)
+ ## qadhoc-wifi-mac.h: void ns3::QadhocWifiMac::SetLinkDownCallback(ns3::Callback linkDown) [member function]
+ cls.add_method('SetLinkDownCallback',
+ 'void',
+ [param('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'linkDown')],
+ is_virtual=True)
+ ## qadhoc-wifi-mac.h: ns3::Mac48Address ns3::QadhocWifiMac::GetAddress() const [member function]
+ cls.add_method('GetAddress',
+ 'ns3::Mac48Address',
+ [],
+ is_const=True, is_virtual=True)
+ ## qadhoc-wifi-mac.h: ns3::Ssid ns3::QadhocWifiMac::GetSsid() const [member function]
+ cls.add_method('GetSsid',
+ 'ns3::Ssid',
+ [],
+ is_const=True, is_virtual=True)
+ ## qadhoc-wifi-mac.h: void ns3::QadhocWifiMac::SetAddress(ns3::Mac48Address address) [member function]
+ cls.add_method('SetAddress',
+ 'void',
+ [param('ns3::Mac48Address', 'address')],
+ is_virtual=True)
+ ## qadhoc-wifi-mac.h: void ns3::QadhocWifiMac::SetSsid(ns3::Ssid ssid) [member function]
+ cls.add_method('SetSsid',
+ 'void',
+ [param('ns3::Ssid', 'ssid')],
+ is_virtual=True)
+ ## qadhoc-wifi-mac.h: ns3::Mac48Address ns3::QadhocWifiMac::GetBssid() const [member function]
+ cls.add_method('GetBssid',
+ 'ns3::Mac48Address',
+ [],
+ is_const=True, is_virtual=True)
+ ## qadhoc-wifi-mac.h: void ns3::QadhocWifiMac::DoDispose() [member function]
+ cls.add_method('DoDispose',
+ 'void',
+ [],
+ visibility='private', is_virtual=True)
+ return
+
+def register_Ns3QapWifiMac_methods(root_module, cls):
+ ## qap-wifi-mac.h: static ns3::TypeId ns3::QapWifiMac::GetTypeId() [member function]
+ cls.add_method('GetTypeId',
+ 'ns3::TypeId',
+ [],
+ is_static=True)
+ ## qap-wifi-mac.h: ns3::QapWifiMac::QapWifiMac() [constructor]
+ cls.add_constructor([])
+ ## qap-wifi-mac.h: void ns3::QapWifiMac::SetSlot(ns3::Time slotTime) [member function]
+ cls.add_method('SetSlot',
+ 'void',
+ [param('ns3::Time', 'slotTime')],
+ is_virtual=True)
+ ## qap-wifi-mac.h: void ns3::QapWifiMac::SetSifs(ns3::Time sifs) [member function]
+ cls.add_method('SetSifs',
+ 'void',
+ [param('ns3::Time', 'sifs')],
+ is_virtual=True)
+ ## qap-wifi-mac.h: void ns3::QapWifiMac::SetEifsNoDifs(ns3::Time eifsNoDifs) [member function]
+ cls.add_method('SetEifsNoDifs',
+ 'void',
+ [param('ns3::Time', 'eifsNoDifs')],
+ is_virtual=True)
+ ## qap-wifi-mac.h: void ns3::QapWifiMac::SetAckTimeout(ns3::Time ackTimeout) [member function]
+ cls.add_method('SetAckTimeout',
+ 'void',
+ [param('ns3::Time', 'ackTimeout')],
+ is_virtual=True)
+ ## qap-wifi-mac.h: void ns3::QapWifiMac::SetCtsTimeout(ns3::Time ctsTimeout) [member function]
+ cls.add_method('SetCtsTimeout',
+ 'void',
+ [param('ns3::Time', 'ctsTimeout')],
+ is_virtual=True)
+ ## qap-wifi-mac.h: void ns3::QapWifiMac::SetPifs(ns3::Time pifs) [member function]
+ cls.add_method('SetPifs',
+ 'void',
+ [param('ns3::Time', 'pifs')],
+ is_virtual=True)
+ ## qap-wifi-mac.h: ns3::Time ns3::QapWifiMac::GetSlot() const [member function]
+ cls.add_method('GetSlot',
+ 'ns3::Time',
+ [],
+ is_const=True, is_virtual=True)
+ ## qap-wifi-mac.h: ns3::Time ns3::QapWifiMac::GetSifs() const [member function]
+ cls.add_method('GetSifs',
+ 'ns3::Time',
+ [],
+ is_const=True, is_virtual=True)
+ ## qap-wifi-mac.h: ns3::Time ns3::QapWifiMac::GetEifsNoDifs() const [member function]
+ cls.add_method('GetEifsNoDifs',
+ 'ns3::Time',
+ [],
+ is_const=True, is_virtual=True)
+ ## qap-wifi-mac.h: ns3::Time ns3::QapWifiMac::GetAckTimeout() const [member function]
+ cls.add_method('GetAckTimeout',
+ 'ns3::Time',
+ [],
+ is_const=True, is_virtual=True)
+ ## qap-wifi-mac.h: ns3::Time ns3::QapWifiMac::GetCtsTimeout() const [member function]
+ cls.add_method('GetCtsTimeout',
+ 'ns3::Time',
+ [],
+ is_const=True, is_virtual=True)
+ ## qap-wifi-mac.h: ns3::Time ns3::QapWifiMac::GetPifs() const [member function]
+ cls.add_method('GetPifs',
+ 'ns3::Time',
+ [],
+ is_const=True, is_virtual=True)
+ ## qap-wifi-mac.h: void ns3::QapWifiMac::SetWifiPhy(ns3::Ptr phy) [member function]
+ cls.add_method('SetWifiPhy',
+ 'void',
+ [param('ns3::Ptr< ns3::WifiPhy >', 'phy')],
+ is_virtual=True)
+ ## qap-wifi-mac.h: void ns3::QapWifiMac::SetWifiRemoteStationManager(ns3::Ptr stationManager) [member function]
+ cls.add_method('SetWifiRemoteStationManager',
+ 'void',
+ [param('ns3::Ptr< ns3::WifiRemoteStationManager >', 'stationManager')],
+ is_virtual=True)
+ ## qap-wifi-mac.h: void ns3::QapWifiMac::Enqueue(ns3::Ptr packet, ns3::Mac48Address to, ns3::Mac48Address from) [member function]
+ cls.add_method('Enqueue',
+ 'void',
+ [param('ns3::Ptr< ns3::Packet const >', 'packet'), param('ns3::Mac48Address', 'to'), param('ns3::Mac48Address', 'from')],
+ is_virtual=True)
+ ## qap-wifi-mac.h: void ns3::QapWifiMac::Enqueue(ns3::Ptr packet, ns3::Mac48Address to) [member function]
+ cls.add_method('Enqueue',
+ 'void',
+ [param('ns3::Ptr< ns3::Packet const >', 'packet'), param('ns3::Mac48Address', 'to')],
+ is_virtual=True)
+ ## qap-wifi-mac.h: bool ns3::QapWifiMac::SupportsSendFrom() const [member function]
+ cls.add_method('SupportsSendFrom',
+ 'bool',
+ [],
+ is_const=True, is_virtual=True)
+ ## qap-wifi-mac.h: void ns3::QapWifiMac::SetForwardUpCallback(ns3::Callback, ns3::Mac48Address, ns3::Mac48Address, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty> upCallback) [member function]
+ cls.add_method('SetForwardUpCallback',
+ 'void',
+ [param('ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::Mac48Address, ns3::Mac48Address, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'upCallback')],
+ is_virtual=True)
+ ## qap-wifi-mac.h: void ns3::QapWifiMac::SetLinkUpCallback(ns3::Callback linkUp) [member function]
+ cls.add_method('SetLinkUpCallback',
+ 'void',
+ [param('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'linkUp')],
+ is_virtual=True)
+ ## qap-wifi-mac.h: void ns3::QapWifiMac::SetLinkDownCallback(ns3::Callback linkDown) [member function]
+ cls.add_method('SetLinkDownCallback',
+ 'void',
+ [param('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'linkDown')],
+ is_virtual=True)
+ ## qap-wifi-mac.h: ns3::Mac48Address ns3::QapWifiMac::GetAddress() const [member function]
+ cls.add_method('GetAddress',
+ 'ns3::Mac48Address',
+ [],
+ is_const=True, is_virtual=True)
+ ## qap-wifi-mac.h: ns3::Ssid ns3::QapWifiMac::GetSsid() const [member function]
+ cls.add_method('GetSsid',
+ 'ns3::Ssid',
+ [],
+ is_const=True, is_virtual=True)
+ ## qap-wifi-mac.h: void ns3::QapWifiMac::SetAddress(ns3::Mac48Address address) [member function]
+ cls.add_method('SetAddress',
+ 'void',
+ [param('ns3::Mac48Address', 'address')],
+ is_virtual=True)
+ ## qap-wifi-mac.h: void ns3::QapWifiMac::SetSsid(ns3::Ssid ssid) [member function]
+ cls.add_method('SetSsid',
+ 'void',
+ [param('ns3::Ssid', 'ssid')],
+ is_virtual=True)
+ ## qap-wifi-mac.h: ns3::Mac48Address ns3::QapWifiMac::GetBssid() const [member function]
+ cls.add_method('GetBssid',
+ 'ns3::Mac48Address',
+ [],
+ is_const=True, is_virtual=True)
+ ## qap-wifi-mac.h: void ns3::QapWifiMac::SetBeaconInterval(ns3::Time interval) [member function]
+ cls.add_method('SetBeaconInterval',
+ 'void',
+ [param('ns3::Time', 'interval')])
+ ## qap-wifi-mac.h: ns3::Time ns3::QapWifiMac::GetBeaconInterval() const [member function]
+ cls.add_method('GetBeaconInterval',
+ 'ns3::Time',
+ [],
+ is_const=True)
+ ## qap-wifi-mac.h: void ns3::QapWifiMac::StartBeaconing() [member function]
+ cls.add_method('StartBeaconing',
+ 'void',
+ [])
+ ## qap-wifi-mac.h: void ns3::QapWifiMac::DoDispose() [member function]
+ cls.add_method('DoDispose',
+ 'void',
+ [],
+ visibility='private', is_virtual=True)
+ return
+
+def register_Ns3QstaWifiMac_methods(root_module, cls):
+ ## qsta-wifi-mac.h: static ns3::TypeId ns3::QstaWifiMac::GetTypeId() [member function]
+ cls.add_method('GetTypeId',
+ 'ns3::TypeId',
+ [],
+ is_static=True)
+ ## qsta-wifi-mac.h: ns3::QstaWifiMac::QstaWifiMac() [constructor]
+ cls.add_constructor([])
+ ## qsta-wifi-mac.h: void ns3::QstaWifiMac::SetSlot(ns3::Time slotTime) [member function]
+ cls.add_method('SetSlot',
+ 'void',
+ [param('ns3::Time', 'slotTime')],
+ is_virtual=True)
+ ## qsta-wifi-mac.h: void ns3::QstaWifiMac::SetSifs(ns3::Time sifs) [member function]
+ cls.add_method('SetSifs',
+ 'void',
+ [param('ns3::Time', 'sifs')],
+ is_virtual=True)
+ ## qsta-wifi-mac.h: void ns3::QstaWifiMac::SetEifsNoDifs(ns3::Time eifsNoDifs) [member function]
+ cls.add_method('SetEifsNoDifs',
+ 'void',
+ [param('ns3::Time', 'eifsNoDifs')],
+ is_virtual=True)
+ ## qsta-wifi-mac.h: void ns3::QstaWifiMac::SetAckTimeout(ns3::Time ackTimeout) [member function]
+ cls.add_method('SetAckTimeout',
+ 'void',
+ [param('ns3::Time', 'ackTimeout')],
+ is_virtual=True)
+ ## qsta-wifi-mac.h: void ns3::QstaWifiMac::SetCtsTimeout(ns3::Time ctsTimeout) [member function]
+ cls.add_method('SetCtsTimeout',
+ 'void',
+ [param('ns3::Time', 'ctsTimeout')],
+ is_virtual=True)
+ ## qsta-wifi-mac.h: void ns3::QstaWifiMac::SetPifs(ns3::Time pifs) [member function]
+ cls.add_method('SetPifs',
+ 'void',
+ [param('ns3::Time', 'pifs')],
+ is_virtual=True)
+ ## qsta-wifi-mac.h: ns3::Time ns3::QstaWifiMac::GetSlot() const [member function]
+ cls.add_method('GetSlot',
+ 'ns3::Time',
+ [],
+ is_const=True, is_virtual=True)
+ ## qsta-wifi-mac.h: ns3::Time ns3::QstaWifiMac::GetSifs() const [member function]
+ cls.add_method('GetSifs',
+ 'ns3::Time',
+ [],
+ is_const=True, is_virtual=True)
+ ## qsta-wifi-mac.h: ns3::Time ns3::QstaWifiMac::GetEifsNoDifs() const [member function]
+ cls.add_method('GetEifsNoDifs',
+ 'ns3::Time',
+ [],
+ is_const=True, is_virtual=True)
+ ## qsta-wifi-mac.h: ns3::Time ns3::QstaWifiMac::GetAckTimeout() const [member function]
+ cls.add_method('GetAckTimeout',
+ 'ns3::Time',
+ [],
+ is_const=True, is_virtual=True)
+ ## qsta-wifi-mac.h: ns3::Time ns3::QstaWifiMac::GetCtsTimeout() const [member function]
+ cls.add_method('GetCtsTimeout',
+ 'ns3::Time',
+ [],
+ is_const=True, is_virtual=True)
+ ## qsta-wifi-mac.h: ns3::Time ns3::QstaWifiMac::GetPifs() const [member function]
+ cls.add_method('GetPifs',
+ 'ns3::Time',
+ [],
+ is_const=True, is_virtual=True)
+ ## qsta-wifi-mac.h: void ns3::QstaWifiMac::SetWifiPhy(ns3::Ptr phy) [member function]
+ cls.add_method('SetWifiPhy',
+ 'void',
+ [param('ns3::Ptr< ns3::WifiPhy >', 'phy')],
+ is_virtual=True)
+ ## qsta-wifi-mac.h: void ns3::QstaWifiMac::SetWifiRemoteStationManager(ns3::Ptr stationManager) [member function]
+ cls.add_method('SetWifiRemoteStationManager',
+ 'void',
+ [param('ns3::Ptr< ns3::WifiRemoteStationManager >', 'stationManager')],
+ is_virtual=True)
+ ## qsta-wifi-mac.h: void ns3::QstaWifiMac::Enqueue(ns3::Ptr packet, ns3::Mac48Address to, ns3::Mac48Address from) [member function]
+ cls.add_method('Enqueue',
+ 'void',
+ [param('ns3::Ptr< ns3::Packet const >', 'packet'), param('ns3::Mac48Address', 'to'), param('ns3::Mac48Address', 'from')],
+ is_virtual=True)
+ ## qsta-wifi-mac.h: void ns3::QstaWifiMac::Enqueue(ns3::Ptr packet, ns3::Mac48Address to) [member function]
+ cls.add_method('Enqueue',
+ 'void',
+ [param('ns3::Ptr< ns3::Packet const >', 'packet'), param('ns3::Mac48Address', 'to')],
+ is_virtual=True)
+ ## qsta-wifi-mac.h: bool ns3::QstaWifiMac::SupportsSendFrom() const [member function]
+ cls.add_method('SupportsSendFrom',
+ 'bool',
+ [],
+ is_const=True, is_virtual=True)
+ ## qsta-wifi-mac.h: void ns3::QstaWifiMac::SetForwardUpCallback(ns3::Callback, ns3::Mac48Address, ns3::Mac48Address, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty> upCallback) [member function]
+ cls.add_method('SetForwardUpCallback',
+ 'void',
+ [param('ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::Mac48Address, ns3::Mac48Address, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'upCallback')],
+ is_virtual=True)
+ ## qsta-wifi-mac.h: void ns3::QstaWifiMac::SetLinkUpCallback(ns3::Callback linkUp) [member function]
+ cls.add_method('SetLinkUpCallback',
+ 'void',
+ [param('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'linkUp')],
+ is_virtual=True)
+ ## qsta-wifi-mac.h: void ns3::QstaWifiMac::SetLinkDownCallback(ns3::Callback linkDown) [member function]
+ cls.add_method('SetLinkDownCallback',
+ 'void',
+ [param('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'linkDown')],
+ is_virtual=True)
+ ## qsta-wifi-mac.h: ns3::Mac48Address ns3::QstaWifiMac::GetAddress() const [member function]
+ cls.add_method('GetAddress',
+ 'ns3::Mac48Address',
+ [],
+ is_const=True, is_virtual=True)
+ ## qsta-wifi-mac.h: ns3::Ssid ns3::QstaWifiMac::GetSsid() const [member function]
+ cls.add_method('GetSsid',
+ 'ns3::Ssid',
+ [],
+ is_const=True, is_virtual=True)
+ ## qsta-wifi-mac.h: void ns3::QstaWifiMac::SetAddress(ns3::Mac48Address address) [member function]
+ cls.add_method('SetAddress',
+ 'void',
+ [param('ns3::Mac48Address', 'address')],
+ is_virtual=True)
+ ## qsta-wifi-mac.h: void ns3::QstaWifiMac::SetSsid(ns3::Ssid ssid) [member function]
+ cls.add_method('SetSsid',
+ 'void',
+ [param('ns3::Ssid', 'ssid')],
+ is_virtual=True)
+ ## qsta-wifi-mac.h: ns3::Mac48Address ns3::QstaWifiMac::GetBssid() const [member function]
+ cls.add_method('GetBssid',
+ 'ns3::Mac48Address',
+ [],
+ is_const=True, is_virtual=True)
+ ## qsta-wifi-mac.h: void ns3::QstaWifiMac::SetMaxMissedBeacons(uint32_t missed) [member function]
+ cls.add_method('SetMaxMissedBeacons',
+ 'void',
+ [param('uint32_t', 'missed')])
+ ## qsta-wifi-mac.h: void ns3::QstaWifiMac::SetProbeRequestTimeout(ns3::Time timeout) [member function]
+ cls.add_method('SetProbeRequestTimeout',
+ 'void',
+ [param('ns3::Time', 'timeout')])
+ ## qsta-wifi-mac.h: void ns3::QstaWifiMac::SetAssocRequestTimeout(ns3::Time timeout) [member function]
+ cls.add_method('SetAssocRequestTimeout',
+ 'void',
+ [param('ns3::Time', 'timeout')])
+ ## qsta-wifi-mac.h: void ns3::QstaWifiMac::StartActiveAssociation() [member function]
+ cls.add_method('StartActiveAssociation',
+ 'void',
+ [])
+ ## qsta-wifi-mac.h: void ns3::QstaWifiMac::DoDispose() [member function]
+ cls.add_method('DoDispose',
+ 'void',
+ [],
+ visibility='private', is_virtual=True)
+ return
+
def register_Ns3RraaWifiManager_methods(root_module, cls):
## rraa-wifi-manager.h: ns3::RraaWifiManager::RraaWifiManager(ns3::RraaWifiManager const & arg0) [copy constructor]
cls.add_constructor([param('ns3::RraaWifiManager const &', 'arg0')])
@@ -2878,7 +4137,7 @@ def register_Ns3YansWifiChannel_methods(root_module, cls):
cls.add_method('SetPropagationDelayModel',
'void',
[param('ns3::Ptr< ns3::PropagationDelayModel >', 'delay')])
- ## yans-wifi-channel.h: void ns3::YansWifiChannel::Send(ns3::Ptr sender, ns3::Ptr packet, double txPowerDbm, ns3::WifiMode wifiMode, ns3::WifiPreamble preamble) const [member function]
+ ## yans-wifi-channel.h: void ns3::YansWifiChannel::Send(ns3::Ptr sender, ns3::Ptr packet, double txPowerDbm, ns3::WifiMode wifiMode, ns3::WifiPreamble preamble) const [member function]
cls.add_method('Send',
'void',
[param('ns3::Ptr< ns3::YansWifiPhy >', 'sender'), param('ns3::Ptr< ns3::Packet const >', 'packet'), param('double', 'txPowerDbm'), param('ns3::WifiMode', 'wifiMode'), param('ns3::WifiPreamble', 'preamble')],
@@ -2912,6 +4171,14 @@ def register_functions(root_module):
module.add_function('MakeWifiModeChecker',
'ns3::Ptr< ns3::AttributeChecker const >',
[])
+ ## qos-utils.h: extern uint8_t ns3::QosUtilsGetTidForPacket(ns3::Ptr packet) [free function]
+ module.add_function('QosUtilsGetTidForPacket',
+ 'uint8_t',
+ [param('ns3::Ptr< ns3::Packet const >', 'packet')])
+ ## qos-utils.h: extern ns3::AccessClass ns3::QosUtilsMapTidToAc(uint8_t tid) [free function]
+ module.add_function('QosUtilsMapTidToAc',
+ 'ns3::AccessClass',
+ [param('uint8_t', 'tid')])
register_functions_ns3_Config(module.get_submodule('Config'), root_module)
register_functions_ns3_TimeStepPrecision(module.get_submodule('TimeStepPrecision'), root_module)
register_functions_ns3_internal(module.get_submodule('internal'), root_module)
diff --git a/bindings/python/ns3modulegen_generated.py b/bindings/python/ns3modulegen_generated.py
index 5d682396c..694befa0b 100644
--- a/bindings/python/ns3modulegen_generated.py
+++ b/bindings/python/ns3modulegen_generated.py
@@ -274,6 +274,7 @@ def register_types(module):
root_module.end_section('ns3_module_helper')
module.add_container('std::vector< unsigned int >', 'unsigned int', container_type='vector')
module.add_container('std::list< unsigned int >', 'unsigned int', container_type='list')
+ module.add_container('std::list< std::pair< ns3::Ptr< ns3::Packet >, ns3::AmsduSubframeHeader > >', 'std::pair< ns3::Ptr< ns3::Packet >, ns3::AmsduSubframeHeader >', container_type='list')
## Register a nested module for the namespace Config
diff --git a/bindings/python/wscript b/bindings/python/wscript
index d33fdf381..6d39fe62d 100644
--- a/bindings/python/wscript
+++ b/bindings/python/wscript
@@ -445,6 +445,10 @@ def build(bld):
pymod.target = 'ns3/_ns3'
pymod.name = 'ns3module'
pymod.uselib_local = "ns3"
+ if pymod.env['ENABLE_STATIC_NS3']:
+ pymod.env.append_value('LINKFLAGS', '-Wl,--whole-archive,-Bstatic')
+ pymod.env.append_value('LINKFLAGS', '-lns3')
+ pymod.env.append_value('LINKFLAGS', '-Wl,-Bdynamic,--no-whole-archive')
defines = list(pymod.env['CXXDEFINES'])
defines.extend(['NS_DEPRECATED=', 'NS3_DEPRECATED_H'])
diff --git a/doc/manual/attributes.texi b/doc/manual/attributes.texi
index 5461d7172..e24e9caa7 100644
--- a/doc/manual/attributes.texi
+++ b/doc/manual/attributes.texi
@@ -3,7 +3,7 @@
@anchor{chap:Attributes}
@menu
-* Object Overview::
+* Object Overview::::
* Attribute Overview::
* Extending attributes::
* Adding new class type::
@@ -54,7 +54,6 @@ from @code{ns3::ObjectBase}.
Let's review a couple of properties of these objects.
-@node Smart pointers
@subsection Smart pointers
As introduced in the ns-3 tutorial, ns-3 objects are memory managed by a
@@ -69,10 +68,9 @@ For most basic usage (syntax), treat a smart pointer like a regular pointer:
// etc.
@end verbatim
-@node CreateObject
@subsection CreateObject
-As we discussed above in @ref{Object Creation},
+As we discussed above in @ref{Memory management and class Ptr},
at the lowest-level API, objects of type @code{ns3::Object} are
not instantiated using @code{operator new} as usual but instead by
a templated function called @code{CreateObject()}.
@@ -97,7 +95,6 @@ in the code;
this is because there are some helper objects in effect that
are doing the CreateObject()s for you.
-@node TypeId
@subsection TypeId
ns-3 classes that derive from class ns3::Object can include
@@ -110,7 +107,6 @@ manager systems:
@item the set of accessible constructors in the subclass
@end itemize
-@node Object Summary
@subsection Object Summary
Putting all of these concepts together, let's look at a specific
@@ -175,7 +171,6 @@ organized list of parameters that are settable on the node and its
constituent member objects, and help text and default values for
each parameter.
-@node Functional overview
@subsection Functional overview
We provide a way for users to access values deep in the system, without
@@ -244,7 +239,6 @@ strings such as "MaxPackets" and TypeId strings. In the next
section, we will provide an example script that shows how users
may manipulate these values.
-@node Basic usage
@subsection Basic usage
Let's look at how a user script might access these values.
@@ -379,7 +373,6 @@ effect as the previous Set())
limit.Get () << " packets");
@end verbatim
-@node Setting through constructors and helper classes
@subsection Setting through constructors helper classes
Arbitrary combinations of attributes can be set and fetched from
@@ -398,7 +391,6 @@ or from the higher-level helper APIs, such as:
"LayoutType", StringValue ("RowFirst"));
@end verbatim
-@node Value classes
@subsection Value classes
Readers will note the new FooValue classes which are subclasses of the
AttributeValue base class. These can be thought of as
diff --git a/doc/manual/callbacks.texi b/doc/manual/callbacks.texi
index 38a4f07a6..908fb0c52 100644
--- a/doc/manual/callbacks.texi
+++ b/doc/manual/callbacks.texi
@@ -129,7 +129,6 @@ to another C++ class member method or C++ function.
This is best observed via walking through an example, based on
@code{samples/main-callback.cc}.
-@node Using the Callback API with static functions
@subsection Using the Callback API with static functions
Consider a function:
@@ -205,7 +204,6 @@ is a function to call behind this callback. Then, @code{one()} returns the
same result as if @code{CbOne()} had been called directly.
-@node Using the Callback API with member functions
@subsection Using the Callback API with member functions
Generally, you will not be calling static functions but instead
@@ -267,7 +265,6 @@ int main ()
}
@end verbatim
-@node Building Null Callbacks
@subsection Building Null Callbacks
It is possible for callbacks to be null; hence it may be wise to
diff --git a/doc/manual/csma.texi b/doc/manual/csma.texi
index 73121817a..055306490 100644
--- a/doc/manual/csma.texi
+++ b/doc/manual/csma.texi
@@ -5,13 +5,13 @@ This is the introduction to CSMA NetDevice chapter, to complement the
Csma model doxygen.
@menu
-* Overview of the model::
+* Overview of the CSMA model::
* Using the CsmaNetDevice::
* CSMA Tracing::
@end menu
-@node Overview of the model
-@section Overview of the model
+@node Overview of the CSMA model
+@section Overview of the CSMA model
The ns-3 CSMA device models a simple bus network in the spirit of Ethernet.
Although it does not model any real physical network you could ever build
@@ -254,7 +254,7 @@ takes just one line of code.
NetDeviceContainer csmaDevices = csma.Install (csmaNodes);
@end verbatim
-@node Csma Tracing
+@node CSMA Tracing
@section CSMA Tracing
Like all ns-3 devices, the CSMA Model provides a number of trace sources.
diff --git a/doc/manual/emulation.texi b/doc/manual/emulation.texi
index 75b1d551c..2da41b556 100644
--- a/doc/manual/emulation.texi
+++ b/doc/manual/emulation.texi
@@ -4,7 +4,7 @@
ns-3 has been designed for integration into testbed and virtual machine
environments. We have addressed this need by providing two kinds of
-net devices. The first kind, which we call an @code{Emu} @code {NetDevice}
+net devices. The first kind, which we call an @code{Emu} @code{NetDevice}
allows ns-3 simulations to send data on a ``real'' network. The second kind,
called a @code{Tap} @code{NetDevice} allows a ``real'' host to participate
in an ns-3 simulation as if it were one of the simulated nodes. An ns-3
diff --git a/doc/manual/manual.texi b/doc/manual/manual.texi
index e99dbe3b6..ba1a18a59 100644
--- a/doc/manual/manual.texi
+++ b/doc/manual/manual.texi
@@ -64,11 +64,13 @@ along with this program. If not, see @uref{http://www.gnu.org/licenses/}.
@end titlepage
@c So the toc is printed at the start.
+@ifnottex
@anchor{Full Table of Contents}
-@contents
+@end ifnottex
+@shortcontents
@ifnottex
-@node Top, Overview, Full Table of Contents
+@node Top
@top ns-3 Manual (html version)
For a pdf version of this manual,
diff --git a/doc/manual/new-models.texi b/doc/manual/new-models.texi
index fd8dc29c5..a73e3e201 100644
--- a/doc/manual/new-models.texi
+++ b/doc/manual/new-models.texi
@@ -1,6 +1,14 @@
@node Creating a new ns-3 model
@chapter Creating a new ns-3 model
+@menu
+* Design-approach::
+* Scaffolding::
+* Initial Implementation::
+* Adding-a-sample-script::
+* Build-core-functions-and-unit-tests::
+@end menu
+
This chapter walks through the design process of an @command{ns-3} model.
In many research cases, users will not be satisfied to merely adapt
existing models, but may want to extend the core of the simulator in
@@ -399,7 +407,7 @@ LOG_COMPONENT_DEFINE is done outside the namespace ns3
@subsection Object Framework
-
+@verbatim
static const ClassId cid;
diff --git a/doc/manual/objects.texi b/doc/manual/objects.texi
index cf782be9b..5db0b34aa 100644
--- a/doc/manual/objects.texi
+++ b/doc/manual/objects.texi
@@ -5,6 +5,14 @@
@node Object model
@chapter Object model
+@menu
+* Object model::
+* Object-oriented behavior::
+* Object base classes::
+* Memory management and class Ptr::
+* Downcasting::
+@end menu
+
@command{ns-3} is fundamentally a C++ object system. Objects can
be declared and instantiated as usual, per C++ rules. ns-3 also
adds some features to traditional C++ objects, as described below,
@@ -129,7 +137,6 @@ memory leaks. These functions are really small convenience
functions and their goal is just is save you a small
bit of typing.
-@node CreateObject and Create
@subsection CreateObject and Create
Objects in C++ may be statically, dynamically, or automatically created.
@@ -155,7 +162,6 @@ a templated helper function is available and recommended to be used:
This is simply a wrapper around operator new that correctly handles
the reference counting system.
-@node Aggregation
@subsection Aggregation
The ns-3 object aggregation system is motivated in strong part by
diff --git a/doc/manual/point-to-point.texi b/doc/manual/point-to-point.texi
index 48faf05ae..aef61f4bd 100644
--- a/doc/manual/point-to-point.texi
+++ b/doc/manual/point-to-point.texi
@@ -5,13 +5,13 @@ This is the introduction to PointToPoint NetDevice chapter, to complement the
PointToPoint model doxygen.
@menu
-* Overview of the model::
+* Overview of the PointToPoint model::
* Using the PointToPointNetDevice::
* PointToPoint Tracing::
@end menu
-@node Overview of the model
-@section Overview of the model
+@node Overview of the PointToPoint model
+@section Overview of the PointToPoint model
The ns-3 point-to-point model is of a very simple point to point data link
connecting exactly two PointToPointNetDevice devices over an
diff --git a/doc/manual/random.texi b/doc/manual/random.texi
index ea083349c..d00ff5a10 100644
--- a/doc/manual/random.texi
+++ b/doc/manual/random.texi
@@ -2,6 +2,20 @@
@node Random variables
@chapter Random variables
+@menu
+* Quick Overview::
+* Background::
+* Seeding and independent replications::
+* class RandomVariable::
+* Base class public API::
+* Types of RandomVariables::
+* Semantics of RandomVariable objects::
+* Using other PRNG::
+* More advanced usage::
+* Publishing your results::
+* Summary::
+@end menu
+
ns-3 contains a built-in pseudo-random number generator (PRNG).
It is important for serious users of the simulator to understand
the functionality, configuration, and usage of this PRNG, and
diff --git a/doc/manual/realtime.texi b/doc/manual/realtime.texi
index e5d3c7d4b..5abcec0cf 100644
--- a/doc/manual/realtime.texi
+++ b/doc/manual/realtime.texi
@@ -77,8 +77,8 @@ fashion is governed by the attributes explained in the previous section.
The implementation is contained in the following files:
@itemize @bullet
-@item @code{src/simulator/realtime-simulator-impl.{cc,h}}
-@item @code{src/simulator/wall-clock-synchronizer.{cc,h}}
+@item @code{src/simulator/realtime-simulator-impl.@{cc,h@}}
+@item @code{src/simulator/wall-clock-synchronizer.@{cc,h@}}
@end itemize
In order to create a realtime scheduler, to a first approximation you
diff --git a/doc/manual/routing.texi b/doc/manual/routing.texi
index f7fc6d076..c39f4f4b1 100644
--- a/doc/manual/routing.texi
+++ b/doc/manual/routing.texi
@@ -1,6 +1,19 @@
@node Routing overview
@chapter Routing overview
+@menu
+* Routing-Overview::
+* Support for multiple routing protocols::
+* Roadmap and Future work::
+* Static routing::
+* Unicast routing::
+* Multicast routing::
+* Global centralized routing::
+* Global Unicast Routing API::
+* Global Routing Implementation::
+* Optimized Link State Routing (OLSR)::
+@end menu
+
This chapter describes the overall design of routing in the
@code{src/internet-stack}
module, and some details about the routing approachs currently
diff --git a/doc/manual/tcp.texi b/doc/manual/tcp.texi
index f21315837..5e9f9ef73 100644
--- a/doc/manual/tcp.texi
+++ b/doc/manual/tcp.texi
@@ -13,7 +13,7 @@ with minimal changes to the scripts.
There are two important abstract base classes:
@itemize @bullet
-@item @code{class TcpSocket}: This is defined in @code{src/node/tcp-socket.{cc,h}}. This class exists for hosting TcpSocket attributes that can be
+@item @code{class TcpSocket}: This is defined in @code{src/node/tcp-socket.@{cc,h@}}. This class exists for hosting TcpSocket attributes that can be
reused across different implementations. For instance,
@code{TcpSocket::SetInitialCwnd()} can be used for any of the implementations
that derive from @code{class TcpSocket}.
diff --git a/doc/manual/troubleshoot.texi b/doc/manual/troubleshoot.texi
index 6ac901d15..623420ae3 100644
--- a/doc/manual/troubleshoot.texi
+++ b/doc/manual/troubleshoot.texi
@@ -4,6 +4,11 @@
This chapter posts some information about possibly common errors in building
or running ns-3 programs.
+@menu
+* Build errors::
+* Run-time errors::
+@end menu
+
Please note that the wiki (@uref{http://www.nsnam.org/wiki/index.php/Troubleshooting}) may have contributed items.
@node Build errors
diff --git a/examples/emu-ping.cc b/examples/emu-ping.cc
new file mode 100644
index 000000000..b38461612
--- /dev/null
+++ b/examples/emu-ping.cc
@@ -0,0 +1,217 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+// Allow ns-3 to ping a real host somewhere, using emulation mode
+//
+// ------------
+// | node n0 |
+// | |
+// | --- |
+// | | | |
+// | |emu| |
+// | | | |
+// | --- |
+// | | |
+// ----|-------
+// |
+// (device on host system, set to promiscuous mode)
+// |
+// --------- (Internet) -------
+//
+// To use this example:
+// 1) You need to decide on a physical device on your real system, and either
+// overwrite the hard-configured device name below (eth0) or pass this
+// device name in as a command-line argument
+// 2) The host device must be set to promiscuous mode
+// (e.g. "sudo ifconfig eth0 promisc")
+// 3) Be aware that ns-3 will generate a fake mac address, and that in
+// some enterprise networks, this may be considered bad form to be
+// sending packets out of your device with "unauthorized" mac addresses
+// 4) You will need to assign an IP address to the ns-3 simulation node that
+// is consistent with the subnet that is active on the host device's link.
+// That is, you will have to assign an IP address to the ns-3 node as if
+// it were on your real subnet. Search for "Ipv4Address localIp" and
+// replace the string "1.2.3.4" with a valid IP address.
+// 5) You will need to configure a default route in the ns-3 node to tell it
+// how to get off of your subnet. One thing you could do is a
+// 'netstat -rn' command and find the IP address of the default gateway
+// on your host. Search for "Ipv4Address gateway" and replace the string
+// "1.2.3.4" string with the gateway IP address.
+
+#include "ns3/abort.h"
+#include "ns3/core-module.h"
+#include "ns3/simulator-module.h"
+#include "ns3/node-module.h"
+#include "ns3/internet-stack-module.h"
+#include "ns3/emu-module.h"
+#include "ns3/v4ping-module.h"
+#include "ns3/helper-module.h"
+
+using namespace ns3;
+
+NS_LOG_COMPONENT_DEFINE ("PingEmulationExample");
+
+static void
+PingRtt (std::string context, Time rtt)
+{
+ NS_LOG_UNCOND ("Received Response with RTT = " << rtt);
+}
+
+int
+main (int argc, char *argv[])
+{
+ NS_LOG_INFO ("Ping Emulation Example");
+
+ std::string deviceName ("eth0");
+ std::string remote ("208.77.188.166"); // example.com
+
+ //
+ // Allow the user to override any of the defaults at run-time, via
+ // command-line arguments
+ //
+ CommandLine cmd;
+ cmd.AddValue("deviceName", "Device name", deviceName);
+ cmd.AddValue("remote", "Remote IP address (dotted decimal only please)", remote);
+ cmd.Parse (argc, argv);
+
+ Ipv4Address remoteIp (remote.c_str ());
+ Ipv4Address localIp ("1.2.3.4");
+ NS_ABORT_MSG_IF (localIp == "1.2.3.4", "You must change the local IP address before running this example");
+
+ Ipv4Mask localMask ("255.255.255.0");
+
+ //
+ // Since we are using a real piece of hardware we need to use the realtime
+ // simulator.
+ //
+ GlobalValue::Bind ("SimulatorImplementationType", StringValue ("ns3::RealtimeSimulatorImpl"));
+
+ //
+ // Since we are going to be talking to real-world machines, we need to enable
+ // calculation of checksums in our protocols.
+ //
+ Config::SetDefault ("ns3::Ipv4L3Protocol::CalcChecksum", BooleanValue (true));
+ Config::SetDefault ("ns3::Icmpv4L4Protocol::CalcChecksum", BooleanValue (true));
+ Config::SetDefault ("ns3::TcpL4Protocol::CalcChecksum", BooleanValue (true));
+ Config::SetDefault ("ns3::UdpL4Protocol::CalcChecksum", BooleanValue (true));
+
+ //
+ // In such a simple topology, the use of the helper API can be a hindrance
+ // so we drop down into the low level API and do it manually.
+ //
+ // First we need a single node.
+ //
+ NS_LOG_INFO ("Create Node");
+ Ptr node = CreateObject ();
+
+ //
+ // Create an emu device, allocate a MAC address and point the device to the
+ // Linux device name. The device needs a transmit queueing discipline so
+ // create a droptail queue and give it to the device. Finally, "install"
+ // the device into the node.
+ //
+ // Do understand that the ns-3 allocated MAC address will be sent out over
+ // your network since the emu net device will spoof it. By default, this
+ // address will have an Organizationally Unique Identifier (OUI) of zero.
+ // The Internet Assigned Number Authority IANA
+ //
+ // http://www.iana.org/assignments/ethernet-numbers
+ //
+ // reports that this OUI is unassigned, and so should not conflict with
+ // real hardware on your net. It may raise all kinds of red flags in a
+ // real environment to have packets from a device with an obviously bogus
+ // OUI flying around. Be aware.
+ //
+ NS_LOG_INFO ("Create Device");
+ Ptr device = CreateObject ();
+ device->SetAttribute ("Address", Mac48AddressValue (Mac48Address::Allocate ()));
+ device->SetAttribute ("DeviceName", StringValue (deviceName));
+
+ Ptr queue = CreateObject ();
+ device->SetQueue (queue);
+ node->AddDevice (device);
+
+ //
+ // Add a default internet stack to the node. This gets us the ns-3 versions
+ // of ARP, IPv4, ICMP, UDP and TCP.
+ //
+ NS_LOG_INFO ("Add Internet Stack");
+ AddInternetStack (node);
+
+ NS_LOG_INFO ("Create IPv4 Interface");
+ Ptr ipv4 = node->GetObject ();
+ uint32_t interface = ipv4->AddInterface (device);
+ Ipv4InterfaceAddress address = Ipv4InterfaceAddress (localIp, localMask);
+ ipv4->AddAddress (interface, address);
+ ipv4->SetMetric (interface, 1);
+ ipv4->SetUp (interface);
+
+ //
+ // When the ping appliation sends its ICMP packet, it will happily send it
+ // down the ns-3 protocol stack. We set the IP address of the destination
+ // to the address corresponding to example.com above. This address is off
+ // our local network so we have got to provide some kind of default route
+ // to ns-3 to be able to get that ICMP packet forwarded off of our network.
+ //
+ // You have got to provide an IP address of a real host that you can send
+ // real packets to and have them forwarded off of your local network. One
+ // thing you could do is a 'netstat -rn' command and find the IP address of
+ // the default gateway on your host and add it below, replacing the
+ // "1.2.3.4" string.
+ //
+ Ipv4Address gateway ("1.2.3.4");
+ NS_ABORT_MSG_IF (gateway == "1.2.3.4", "You must change the gateway IP address before running this example");
+
+ ipv4->SetDefaultRoute (gateway, interface);
+
+ //
+ // Create the ping application. This application knows how to send
+ // ICMP echo requests. Setting up the packet sink manually is a bit
+ // of a hassle and since there is no law that says we cannot mix the
+ // helper API with the low level API, let's just use the helper.
+ //
+ NS_LOG_INFO ("Create V4Ping Appliation");
+ Ptr app = CreateObject ();
+ app->SetAttribute ("Remote", Ipv4AddressValue (remoteIp));
+ node->AddApplication (app);
+ app->Start (Seconds (1.0));
+ app->Stop (Seconds (5.0));
+
+ //
+ // Give the application a name. This makes life much easier when constructing
+ // config paths.
+ //
+ Names::Add ("app", app);
+
+ //
+ // Hook a trace to print something when the response comes back.
+ //
+ Config::Connect ("/Names/app/Rtt", MakeCallback (&PingRtt));
+
+ //
+ // Enable a promiscuous pcap trace to see what is coming and going on our device.
+ //
+ EmuHelper::EnablePcap ("emu-ping", device, true);
+
+ //
+ // Now, do the actual emulation.
+ //
+ NS_LOG_INFO ("Run Emulation.");
+ Simulator::Stop (Seconds (5.0));
+ Simulator::Run ();
+ Simulator::Destroy ();
+ NS_LOG_INFO ("Done.");
+}
diff --git a/examples/mesh.cc b/examples/mesh.cc
index c8c96534a..9169dcb39 100644
--- a/examples/mesh.cc
+++ b/examples/mesh.cc
@@ -44,7 +44,7 @@ main (int argc, char *argv[])
double step = 100.0;
double randomStart = 0.1;
double totalTime = 100.0;
- double packetInterval = 0.001;
+ double packetInterval = 0.1;
uint16_t packetSize = 1024;
uint32_t nIfaces = 1;
bool chan = true;
diff --git a/examples/mixed-wireless.cc b/examples/mixed-wireless.cc
index 355dfa344..eafe01a67 100644
--- a/examples/mixed-wireless.cc
+++ b/examples/mixed-wireless.cc
@@ -144,13 +144,14 @@ main (int argc, char *argv[])
// our container
//
WifiHelper wifi;
- wifi.SetMac ("ns3::AdhocWifiMac");
+ NqosWifiMacHelper mac = NqosWifiMacHelper::Default ();
+ mac.SetType ("ns3::AdhocWifiMac");
wifi.SetRemoteStationManager ("ns3::ConstantRateWifiManager",
"DataMode", StringValue ("wifia-54mbs"));
YansWifiPhyHelper wifiPhy = YansWifiPhyHelper::Default ();
YansWifiChannelHelper wifiChannel = YansWifiChannelHelper::Default ();
wifiPhy.SetChannel (wifiChannel.Create ());
- NetDeviceContainer backboneDevices = wifi.Install (wifiPhy, backbone);
+ NetDeviceContainer backboneDevices = wifi.Install (wifiPhy, mac, backbone);
//
// Add the IPv4 protocol stack to the nodes in our container
//
@@ -258,6 +259,7 @@ main (int argc, char *argv[])
// Create an infrastructure network
//
WifiHelper wifiInfra = WifiHelper::Default ();
+ NqosWifiMacHelper macInfra = NqosWifiMacHelper::Default ();
wifiPhy.SetChannel (wifiChannel.Create ());
// Create unique ssids for these networks
std::string ssidString("wifi-infra");
@@ -267,15 +269,15 @@ main (int argc, char *argv[])
Ssid ssid = Ssid (ssidString);
wifiInfra.SetRemoteStationManager ("ns3::ArfWifiManager");
// setup stas
- wifiInfra.SetMac ("ns3::NqstaWifiMac",
+ macInfra.SetType ("ns3::NqstaWifiMac",
"Ssid", SsidValue (ssid),
"ActiveProbing", BooleanValue (false));
- NetDeviceContainer staDevices = wifiInfra.Install (wifiPhy, stas);
+ NetDeviceContainer staDevices = wifiInfra.Install (wifiPhy, macInfra, stas);
// setup ap.
- wifiInfra.SetMac ("ns3::NqapWifiMac", "Ssid", SsidValue (ssid),
+ macInfra.SetType ("ns3::NqapWifiMac", "Ssid", SsidValue (ssid),
"BeaconGeneration", BooleanValue (true),
"BeaconInterval", TimeValue (Seconds (2.5)));
- NetDeviceContainer apDevices = wifiInfra.Install (wifiPhy, backbone.Get (i));
+ NetDeviceContainer apDevices = wifiInfra.Install (wifiPhy, macInfra, backbone.Get (i));
// Collect all of these new devices
NetDeviceContainer infraDevices (apDevices, staDevices);
diff --git a/examples/simple-wifi-frame-aggregation.cc b/examples/simple-wifi-frame-aggregation.cc
new file mode 100644
index 000000000..765b108ca
--- /dev/null
+++ b/examples/simple-wifi-frame-aggregation.cc
@@ -0,0 +1,151 @@
+/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2009 MIRKO BANCHI
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ * Author: Mirko Banchi
+ */
+#include "ns3/core-module.h"
+#include "ns3/simulator-module.h"
+#include "ns3/node-module.h"
+#include "ns3/helper-module.h"
+#include "ns3/global-routing-module.h"
+#include "ns3/wifi-module.h"
+#include "ns3/mobility-module.h"
+
+//This is a simple example in order to show how 802.11n frame aggregation feature (A-MSDU) works.
+//
+//Network topology:
+//
+// Wifi 192.168.1.0
+//
+// AP
+// * * *
+// | | |
+// n1 n2 n3
+//
+//Packets in this simulation aren't marked with a QosTag so they are considered
+//belonging to BestEffort Access Class (AC_BE).
+
+using namespace ns3;
+
+NS_LOG_COMPONENT_DEFINE ("SimpleWifiFrameAggregation");
+
+int main (int argc, char *argv[])
+{
+ //LogComponentEnable ("EdcaTxopN", LOG_LEVEL_DEBUG);
+ LogComponentEnable ("MsduAggregator", LOG_LEVEL_INFO);
+ LogComponentEnable ("UdpEchoClientApplication", LOG_LEVEL_INFO);
+ LogComponentEnable ("UdpEchoServerApplication", LOG_LEVEL_INFO);
+
+ uint32_t nWifi = 1;
+ CommandLine cmd;
+ cmd.AddValue ("nWifi", "Number of wifi STA devices", nWifi);
+ cmd.Parse (argc,argv);
+
+ NodeContainer wifiNodes;
+ wifiNodes.Create (2);
+ NodeContainer wifiApNode;
+ wifiApNode.Create (1);
+
+ YansWifiChannelHelper channel = YansWifiChannelHelper::Default ();
+ YansWifiPhyHelper phy = YansWifiPhyHelper::Default ();
+ phy.SetChannel (channel.Create ());
+
+ WifiHelper wifi = WifiHelper::Default ();
+ QosWifiMacHelper mac = QosWifiMacHelper::Default ();
+ wifi.SetRemoteStationManager ("ns3::AarfWifiManager", "FragmentationThreshold", UintegerValue (2500));
+
+ Ssid ssid = Ssid ("ns-3-802.11n");
+ mac.SetType ("ns3::QstaWifiMac",
+ "Ssid", SsidValue (ssid),
+ "ActiveProbing", BooleanValue (false));
+ mac.SetMsduAggregatorForAc (AC_BE, "ns3::MsduStandardAggregator",
+ "MaxAmsduSize", UintegerValue (3839));
+
+ NetDeviceContainer staDevices;
+ staDevices = wifi.Install (phy, mac, wifiNodes);
+
+ mac.SetType ("ns3::QapWifiMac",
+ "Ssid", SsidValue (ssid),
+ "BeaconGeneration", BooleanValue (true),
+ "BeaconInterval", TimeValue (Seconds (2.5)));
+ mac.SetMsduAggregatorForAc (AC_BE, "ns3::MsduStandardAggregator",
+ "MaxAmsduSize", UintegerValue (7935));
+
+ NetDeviceContainer apDevice;
+ apDevice = wifi.Install (phy, mac, wifiApNode);
+
+ /* Setting mobility model */
+ MobilityHelper mobility;
+
+ mobility.SetPositionAllocator ("ns3::GridPositionAllocator",
+ "MinX", DoubleValue (0.0),
+ "MinY", DoubleValue (0.0),
+ "DeltaX", DoubleValue (5.0),
+ "DeltaY", DoubleValue (10.0),
+ "GridWidth", UintegerValue (3),
+ "LayoutType", StringValue ("RowFirst"));
+
+ mobility.SetMobilityModel ("ns3::RandomWalk2dMobilityModel",
+ "Bounds", RectangleValue (Rectangle (-50, 50, -50, 50)));
+ mobility.Install (wifiNodes);
+
+ mobility.SetMobilityModel ("ns3::ConstantPositionMobilityModel");
+ mobility.Install (wifiApNode);
+
+ /* Internet stack*/
+ InternetStackHelper stack;
+ stack.Install (wifiApNode);
+ stack.Install (wifiNodes);
+
+ Ipv4AddressHelper address;
+
+ address.SetBase ("192.168.1.0", "255.255.255.0");
+ Ipv4InterfaceContainer wifiNodesInterfaces;
+ Ipv4InterfaceContainer apNodeInterface;
+
+ wifiNodesInterfaces = address.Assign (staDevices);
+ apNodeInterface = address.Assign (apDevice);
+
+ /* Setting applications */
+ UdpEchoServerHelper echoServer (9);
+
+ ApplicationContainer serverApps = echoServer.Install (wifiNodes.Get (1));
+ serverApps.Start (Seconds (1.0));
+ serverApps.Stop (Seconds (10.0));
+
+ UdpEchoClientHelper echoClient (wifiNodesInterfaces.GetAddress (1), 9);
+ echoClient.SetAttribute ("MaxPackets", UintegerValue (3));
+ echoClient.SetAttribute ("Interval", TimeValue (Seconds (0.000001)));
+ echoClient.SetAttribute ("PacketSize", UintegerValue (1500));
+
+ ApplicationContainer clientApps =
+ echoClient.Install (wifiNodes.Get (0));
+ clientApps.Start (Seconds (2.0));
+ clientApps.Stop (Seconds (10.0));
+
+ GlobalRouteManager::PopulateRoutingTables ();
+
+ Simulator::Stop (Seconds (10.0));
+
+ YansWifiPhyHelper::EnablePcap ("test-802.11n",
+ wifiNodes.Get (nWifi - 1)->GetId (), 0);
+
+ Simulator::Run ();
+ Simulator::Destroy ();
+
+ return 0;
+}
diff --git a/examples/stats/wifi-example-sim.cc b/examples/stats/wifi-example-sim.cc
index f0c1fdebc..63044c701 100644
--- a/examples/stats/wifi-example-sim.cc
+++ b/examples/stats/wifi-example-sim.cc
@@ -128,11 +128,12 @@ int main(int argc, char *argv[]) {
NS_LOG_INFO("Installing WiFi and Internet stack.");
WifiHelper wifi = WifiHelper::Default ();
- wifi.SetMac("ns3::AdhocWifiMac");
+ NqosWifiMacHelper wifiMac = NqosWifiMacHelper::Default ();
+ wifiMac.SetType ("ns3::AdhocWifiMac");
YansWifiPhyHelper wifiPhy = YansWifiPhyHelper::Default ();
YansWifiChannelHelper wifiChannel = YansWifiChannelHelper::Default ();
wifiPhy.SetChannel (wifiChannel.Create ());
- NetDeviceContainer nodeDevices = wifi.Install(wifiPhy, nodes);
+ NetDeviceContainer nodeDevices = wifi.Install(wifiPhy, wifiMac, nodes);
InternetStackHelper internet;
internet.Install(nodes);
diff --git a/examples/tap-wifi-dumbbell.cc b/examples/tap-wifi-dumbbell.cc
index c149b6248..3930e5325 100644
--- a/examples/tap-wifi-dumbbell.cc
+++ b/examples/tap-wifi-dumbbell.cc
@@ -151,19 +151,20 @@ main (int argc, char *argv[])
Ssid ssid = Ssid ("left");
WifiHelper wifi = WifiHelper::Default ();
+ NqosWifiMacHelper wifiMac = NqosWifiMacHelper::Default ();
wifi.SetRemoteStationManager ("ns3::ArfWifiManager");
- wifi.SetMac ("ns3::NqapWifiMac",
- "Ssid", SsidValue (ssid),
- "BeaconGeneration", BooleanValue (true),
- "BeaconInterval", TimeValue (Seconds (2.5)));
- NetDeviceContainer devicesLeft = wifi.Install (wifiPhy, nodesLeft.Get (0));
+ wifiMac.SetType ("ns3::NqapWifiMac",
+ "Ssid", SsidValue (ssid),
+ "BeaconGeneration", BooleanValue (true),
+ "BeaconInterval", TimeValue (Seconds (2.5)));
+ NetDeviceContainer devicesLeft = wifi.Install (wifiPhy, wifiMac, nodesLeft.Get (0));
- wifi.SetMac ("ns3::NqstaWifiMac",
- "Ssid", SsidValue (ssid),
- "ActiveProbing", BooleanValue (false));
- devicesLeft.Add (wifi.Install (wifiPhy, NodeContainer (nodesLeft.Get (1), nodesLeft.Get (2), nodesLeft.Get (3))));
+ wifiMac.SetType ("ns3::NqstaWifiMac",
+ "Ssid", SsidValue (ssid),
+ "ActiveProbing", BooleanValue (false));
+ devicesLeft.Add (wifi.Install (wifiPhy, wifiMac, NodeContainer (nodesLeft.Get (1), nodesLeft.Get (2), nodesLeft.Get (3))));
MobilityHelper mobility;
mobility.Install (nodesLeft);
diff --git a/examples/third.cc b/examples/third.cc
index b6a5551bc..f655dc21d 100644
--- a/examples/third.cc
+++ b/examples/third.cc
@@ -89,21 +89,23 @@ main (int argc, char *argv[])
WifiHelper wifi = WifiHelper::Default ();
wifi.SetRemoteStationManager ("ns3::AarfWifiManager");
+ NqosWifiMacHelper mac = NqosWifiMacHelper::Default ();
+
Ssid ssid = Ssid ("ns-3-ssid");
- wifi.SetMac ("ns3::NqstaWifiMac",
+ mac.SetType ("ns3::NqstaWifiMac",
"Ssid", SsidValue (ssid),
"ActiveProbing", BooleanValue (false));
NetDeviceContainer staDevices;
- staDevices = wifi.Install (phy, wifiStaNodes);
+ staDevices = wifi.Install (phy, mac, wifiStaNodes);
- wifi.SetMac ("ns3::NqapWifiMac",
+ mac.SetType ("ns3::NqapWifiMac",
"Ssid", SsidValue (ssid),
"BeaconGeneration", BooleanValue (true),
"BeaconInterval", TimeValue (Seconds (2.5)));
NetDeviceContainer apDevices;
- apDevices = wifi.Install (phy, wifiApNode);
+ apDevices = wifi.Install (phy, mac, wifiApNode);
MobilityHelper mobility;
diff --git a/examples/wifi-adhoc.cc b/examples/wifi-adhoc.cc
index 6f0e0bc54..d24ca101e 100644
--- a/examples/wifi-adhoc.cc
+++ b/examples/wifi-adhoc.cc
@@ -36,7 +36,8 @@ class Experiment
public:
Experiment ();
Experiment (std::string name);
- Gnuplot2dDataset Run (const WifiHelper &wifi, const YansWifiPhyHelper &wifiPhy, const YansWifiChannelHelper &wifiChannel);
+ Gnuplot2dDataset Run (const WifiHelper &wifi, const YansWifiPhyHelper &wifiPhy,
+ const NqosWifiMacHelper &wifiMac, const YansWifiChannelHelper &wifiChannel);
private:
void ReceivePacket (Ptr socket);
void SetPosition (Ptr node, Vector position);
@@ -109,7 +110,8 @@ Experiment::SetupPacketReceive (Ptr node)
}
Gnuplot2dDataset
-Experiment::Run (const WifiHelper &wifi, const YansWifiPhyHelper &wifiPhy, const YansWifiChannelHelper &wifiChannel)
+Experiment::Run (const WifiHelper &wifi, const YansWifiPhyHelper &wifiPhy,
+ const NqosWifiMacHelper &wifiMac, const YansWifiChannelHelper &wifiChannel)
{
m_bytesTotal = 0;
@@ -121,7 +123,9 @@ Experiment::Run (const WifiHelper &wifi, const YansWifiPhyHelper &wifiPhy, const
YansWifiPhyHelper phy = wifiPhy;
phy.SetChannel (wifiChannel.Create ());
- NetDeviceContainer devices = wifi.Install (phy, c);
+
+ NqosWifiMacHelper mac = wifiMac;
+ NetDeviceContainer devices = wifi.Install (phy, mac, c);
MobilityHelper mobility;
Ptr positionAlloc = CreateObject ();
@@ -170,66 +174,67 @@ int main (int argc, char *argv[])
Experiment experiment;
WifiHelper wifi = WifiHelper::Default ();
+ NqosWifiMacHelper wifiMac = NqosWifiMacHelper::Default ();
YansWifiPhyHelper wifiPhy = YansWifiPhyHelper::Default ();
YansWifiChannelHelper wifiChannel = YansWifiChannelHelper::Default ();
Gnuplot2dDataset dataset;
- wifi.SetMac ("ns3::AdhocWifiMac");
+ wifiMac.SetType ("ns3::AdhocWifiMac");
NS_LOG_DEBUG ("54");
experiment = Experiment ("54mb");
wifi.SetRemoteStationManager ("ns3::ConstantRateWifiManager",
"DataMode", StringValue ("wifia-54mbs"));
- dataset = experiment.Run (wifi, wifiPhy, wifiChannel);
+ dataset = experiment.Run (wifi, wifiPhy, wifiMac, wifiChannel);
gnuplot.AddDataset (dataset);
NS_LOG_DEBUG ("48");
experiment = Experiment ("48mb");
wifi.SetRemoteStationManager ("ns3::ConstantRateWifiManager",
"DataMode", StringValue ("wifia-48mbs"));
- dataset = experiment.Run (wifi, wifiPhy, wifiChannel);
+ dataset = experiment.Run (wifi, wifiPhy, wifiMac, wifiChannel);
gnuplot.AddDataset (dataset);
NS_LOG_DEBUG ("36");
experiment = Experiment ("36mb");
wifi.SetRemoteStationManager ("ns3::ConstantRateWifiManager",
"DataMode", StringValue ("wifia-36mbs"));
- dataset = experiment.Run (wifi, wifiPhy, wifiChannel);
+ dataset = experiment.Run (wifi, wifiPhy, wifiMac, wifiChannel);
gnuplot.AddDataset (dataset);
NS_LOG_DEBUG ("24");
experiment = Experiment ("24mb");
wifi.SetRemoteStationManager ("ns3::ConstantRateWifiManager",
"DataMode", StringValue ("wifia-24mbs"));
- dataset = experiment.Run (wifi, wifiPhy, wifiChannel);
+ dataset = experiment.Run (wifi, wifiPhy, wifiMac, wifiChannel);
gnuplot.AddDataset (dataset);
NS_LOG_DEBUG ("18");
experiment = Experiment ("18mb");
wifi.SetRemoteStationManager ("ns3::ConstantRateWifiManager",
"DataMode", StringValue ("wifia-18mbs"));
- dataset = experiment.Run (wifi, wifiPhy, wifiChannel);
+ dataset = experiment.Run (wifi, wifiPhy, wifiMac, wifiChannel);
gnuplot.AddDataset (dataset);
NS_LOG_DEBUG ("12");
experiment = Experiment ("12mb");
wifi.SetRemoteStationManager ("ns3::ConstantRateWifiManager",
"DataMode", StringValue ("wifia-12mbs"));
- dataset = experiment.Run (wifi, wifiPhy, wifiChannel);
+ dataset = experiment.Run (wifi, wifiPhy, wifiMac, wifiChannel);
gnuplot.AddDataset (dataset);
NS_LOG_DEBUG ("9");
experiment = Experiment ("9mb");
wifi.SetRemoteStationManager ("ns3::ConstantRateWifiManager",
"DataMode", StringValue ("wifia-9mbs"));
- dataset = experiment.Run (wifi, wifiPhy, wifiChannel);
+ dataset = experiment.Run (wifi, wifiPhy, wifiMac, wifiChannel);
gnuplot.AddDataset (dataset);
NS_LOG_DEBUG ("6");
experiment = Experiment ("6mb");
wifi.SetRemoteStationManager ("ns3::ConstantRateWifiManager",
"DataMode", StringValue ("wifia-6mbs"));
- dataset = experiment.Run (wifi, wifiPhy, wifiChannel);
+ dataset = experiment.Run (wifi, wifiPhy, wifiMac, wifiChannel);
gnuplot.AddDataset (dataset);
gnuplot.GenerateOutput (std::cout);
@@ -242,37 +247,37 @@ int main (int argc, char *argv[])
NS_LOG_DEBUG ("arf");
experiment = Experiment ("arf");
wifi.SetRemoteStationManager ("ns3::ArfWifiManager");
- dataset = experiment.Run (wifi, wifiPhy, wifiChannel);
+ dataset = experiment.Run (wifi, wifiPhy, wifiMac, wifiChannel);
gnuplot.AddDataset (dataset);
NS_LOG_DEBUG ("aarf");
experiment = Experiment ("aarf");
wifi.SetRemoteStationManager ("ns3::AarfWifiManager");
- dataset = experiment.Run (wifi, wifiPhy, wifiChannel);
+ dataset = experiment.Run (wifi, wifiPhy, wifiMac, wifiChannel);
gnuplot.AddDataset (dataset);
NS_LOG_DEBUG ("aarf-cd");
experiment = Experiment ("aarf-cd");
wifi.SetRemoteStationManager ("ns3::AarfcdWifiManager");
- dataset = experiment.Run (wifi, wifiPhy, wifiChannel);
+ dataset = experiment.Run (wifi, wifiPhy, wifiMac, wifiChannel);
gnuplot.AddDataset (dataset);
NS_LOG_DEBUG ("cara");
experiment = Experiment ("cara");
wifi.SetRemoteStationManager ("ns3::CaraWifiManager");
- dataset = experiment.Run (wifi, wifiPhy, wifiChannel);
+ dataset = experiment.Run (wifi, wifiPhy, wifiMac, wifiChannel);
gnuplot.AddDataset (dataset);
NS_LOG_DEBUG ("rraa");
experiment = Experiment ("rraa");
wifi.SetRemoteStationManager ("ns3::RraaWifiManager");
- dataset = experiment.Run (wifi, wifiPhy, wifiChannel);
+ dataset = experiment.Run (wifi, wifiPhy, wifiMac, wifiChannel);
gnuplot.AddDataset (dataset);
NS_LOG_DEBUG ("ideal");
experiment = Experiment ("ideal");
wifi.SetRemoteStationManager ("ns3::IdealWifiManager");
- dataset = experiment.Run (wifi, wifiPhy, wifiChannel);
+ dataset = experiment.Run (wifi, wifiPhy, wifiMac, wifiChannel);
gnuplot.AddDataset (dataset);
gnuplot.GenerateOutput (std::cout);
diff --git a/examples/wifi-ap.cc b/examples/wifi-ap.cc
index e5cc5d84e..39d91ee7d 100644
--- a/examples/wifi-ap.cc
+++ b/examples/wifi-ap.cc
@@ -131,21 +131,22 @@ int main (int argc, char *argv[])
packetSocket.Install (stas);
packetSocket.Install (ap);
+ NqosWifiMacHelper wifiMac = NqosWifiMacHelper::Default ();
YansWifiPhyHelper wifiPhy = YansWifiPhyHelper::Default ();
YansWifiChannelHelper wifiChannel = YansWifiChannelHelper::Default ();
wifiPhy.SetChannel (wifiChannel.Create ());
Ssid ssid = Ssid ("wifi-default");
wifi.SetRemoteStationManager ("ns3::ArfWifiManager");
// setup stas.
- wifi.SetMac ("ns3::NqstaWifiMac",
+ wifiMac.SetType ("ns3::NqstaWifiMac",
"Ssid", SsidValue (ssid),
"ActiveProbing", BooleanValue (false));
- staDevs = wifi.Install (wifiPhy, stas);
+ staDevs = wifi.Install (wifiPhy, wifiMac, stas);
// setup ap.
- wifi.SetMac ("ns3::NqapWifiMac", "Ssid", SsidValue (ssid),
+ wifiMac.SetType ("ns3::NqapWifiMac", "Ssid", SsidValue (ssid),
"BeaconGeneration", BooleanValue (true),
"BeaconInterval", TimeValue (Seconds (2.5)));
- wifi.Install (wifiPhy, ap);
+ wifi.Install (wifiPhy, wifiMac, ap);
// mobility.
mobility.Install (stas);
diff --git a/examples/wifi-wired-bridging.cc b/examples/wifi-wired-bridging.cc
index 0ce26cab5..78e968c60 100644
--- a/examples/wifi-wired-bridging.cc
+++ b/examples/wifi-wired-bridging.cc
@@ -104,6 +104,7 @@ int main (int argc, char *argv[])
MobilityHelper mobility;
BridgeHelper bridge;
WifiHelper wifi = WifiHelper::Default ();
+ NqosWifiMacHelper wifiMac = NqosWifiMacHelper::Default ();
YansWifiPhyHelper wifiPhy = YansWifiPhyHelper::Default ();
YansWifiChannelHelper wifiChannel = YansWifiChannelHelper::Default ();
wifiPhy.SetChannel (wifiChannel.Create ());
@@ -121,11 +122,11 @@ int main (int argc, char *argv[])
// setup the AP.
mobility.SetMobilityModel ("ns3::ConstantPositionMobilityModel");
mobility.Install (backboneNodes.Get (i));
- wifi.SetMac ("ns3::NqapWifiMac",
+ wifiMac.SetType ("ns3::NqapWifiMac",
"Ssid", SsidValue (ssid),
"BeaconGeneration", BooleanValue (true),
"BeaconInterval", TimeValue (Seconds (2.5)));
- apDev = wifi.Install (wifiPhy, backboneNodes.Get (i));
+ apDev = wifi.Install (wifiPhy, wifiMac, backboneNodes.Get (i));
NetDeviceContainer bridgeDev;
bridgeDev = bridge.Install (backboneNodes.Get (i), NetDeviceContainer (apDev, backboneDevices.Get (i)));
@@ -141,10 +142,10 @@ int main (int argc, char *argv[])
"Speed", StringValue ("Constant:1.0"),
"Bounds", RectangleValue (Rectangle (wifiX, wifiX+5.0,0.0, (nStas+1)*5.0)));
mobility.Install (sta);
- wifi.SetMac ("ns3::NqstaWifiMac",
+ wifiMac.SetType ("ns3::NqstaWifiMac",
"Ssid", SsidValue (ssid),
"ActiveProbing", BooleanValue (false));
- staDev = wifi.Install (wifiPhy, sta);
+ staDev = wifi.Install (wifiPhy, wifiMac, sta);
staInterface = ip.Assign (staDev);
// save everything in containers.
diff --git a/examples/wscript b/examples/wscript
index e65a40aa8..478923196 100644
--- a/examples/wscript
+++ b/examples/wscript
@@ -145,11 +145,17 @@ def build(bld):
env = bld.env_of_name('default')
if env['ENABLE_EMU']:
- obj = bld.create_ns3_program('emu-udp-echo',
- ['emu', 'internet-stack'])
+ obj = bld.create_ns3_program('emu-udp-echo', ['emu', 'internet-stack'])
obj.source = 'emu-udp-echo.cc'
+ obj = bld.create_ns3_program('emu-ping', ['emu', 'internet-stack'])
+ obj.source = 'emu-ping.cc'
+
if env['ENABLE_TAP']:
obj = bld.create_ns3_program('tap-wifi-dumbbell',
['wifi', 'csma', 'point-to-point', 'tap-bridge', 'internet-stack'])
obj.source = 'tap-wifi-dumbbell.cc'
+
+ obj = bld.create_ns3_program('simple-wifi-frame-aggregation',
+ ['core', 'simulator', 'mobility', 'wifi'])
+ obj.source = 'simple-wifi-frame-aggregation.cc'
diff --git a/src/applications/udp-echo/udp-echo-client.cc b/src/applications/udp-echo/udp-echo-client.cc
index d92779aa3..4e34020b6 100644
--- a/src/applications/udp-echo/udp-echo-client.cc
+++ b/src/applications/udp-echo/udp-echo-client.cc
@@ -76,6 +76,7 @@ UdpEchoClient::UdpEchoClient ()
UdpEchoClient::~UdpEchoClient()
{
NS_LOG_FUNCTION_NOARGS ();
+ m_socket = 0;
}
void
@@ -117,6 +118,7 @@ UdpEchoClient::StopApplication ()
if (m_socket != 0)
{
+ m_socket->Close ();
m_socket->SetRecvCallback(MakeNullCallback > ());
}
diff --git a/src/applications/udp-echo/udp-echo-server.cc b/src/applications/udp-echo/udp-echo-server.cc
index cc7a24a57..b1b111481 100644
--- a/src/applications/udp-echo/udp-echo-server.cc
+++ b/src/applications/udp-echo/udp-echo-server.cc
@@ -55,6 +55,7 @@ UdpEchoServer::UdpEchoServer ()
UdpEchoServer::~UdpEchoServer()
{
NS_LOG_FUNCTION_NOARGS ();
+ m_socket = 0;
}
void
@@ -87,6 +88,7 @@ UdpEchoServer::StopApplication ()
if (m_socket != 0)
{
+ m_socket->Close ();
m_socket->SetRecvCallback(MakeNullCallback > ());
}
}
diff --git a/src/devices/csma/csma-net-device.cc b/src/devices/csma/csma-net-device.cc
index dc953e7b6..4267371f7 100644
--- a/src/devices/csma/csma-net-device.cc
+++ b/src/devices/csma/csma-net-device.cc
@@ -722,20 +722,6 @@ CsmaNetDevice::Receive (Ptr packet, Ptr senderDevice)
NS_LOG_FUNCTION (packet << senderDevice);
NS_LOG_LOGIC ("UID is " << packet->GetUid ());
- /* IPv6 support*/
- uint8_t mac[6];
- Mac48Address multicast6AllNodes("33:33:00:00:00:01");
- Mac48Address multicast6AllRouters("33:33:00:00:00:02");
- Mac48Address multicast6AllHosts("33:33:00:00:00:03");
- Mac48Address multicast6Node; /* multicast address addressed to our MAC address */
-
- /* generate IPv6 multicast ethernet destination that nodes will accept */
- GetAddress().CopyTo(mac);
- mac[0]=0x33;
- mac[1]=0x33;
- /* mac[2]=0xff; */
- multicast6Node.CopyFrom(mac);
-
//
// We never forward up packets that we sent. Real devices don't do this since
// their receivers are disabled during send, so we don't.
@@ -805,16 +791,12 @@ CsmaNetDevice::Receive (Ptr packet, Ptr senderDevice)
// Classify the packet based on its destination.
//
PacketType packetType;
-
+
if (header.GetDestination ().IsBroadcast ())
{
packetType = PACKET_BROADCAST;
}
- else if (header.GetDestination ().IsMulticast () ||
- header.GetDestination() == multicast6Node ||
- header.GetDestination() == multicast6AllNodes ||
- header.GetDestination() == multicast6AllRouters ||
- header.GetDestination() == multicast6AllHosts)
+ else if (header.GetDestination ().IsGroup ())
{
packetType = PACKET_MULTICAST;
}
diff --git a/src/devices/emu/emu-net-device.cc b/src/devices/emu/emu-net-device.cc
index 6b57baf53..93eab5939 100644
--- a/src/devices/emu/emu-net-device.cc
+++ b/src/devices/emu/emu-net-device.cc
@@ -385,7 +385,10 @@ EmuNetDevice::CreateSocket (void)
//
// Execute the socket creation process image.
//
- status = ::execl (FindCreator ().c_str (), "emu-sock-creator", oss.str ().c_str (), (char *)NULL);
+ status = ::execl (FindCreator ("emu-sock-creator").c_str (),
+ "emu-sock-creator", // argv[0] (filename)
+ oss.str ().c_str (), // argv[1] (-p locations;
- if (::stat (optimized.c_str (), &st) == 0)
+ // The path to the bits if we're sitting there with them
+ locations.push_back ("./");
+ locations.push_back ("./");
+
+ // The path to the bits if we're sitting in the root of the repo
+ locations.push_back ("./build/optimized/src/devices/emu/");
+ locations.push_back ("./build/debug/src/devices/emu/");
+
+ // if at the level of src (or build)
+ locations.push_back ("../build/optimized/src/devices/emu/");
+ locations.push_back ("../build/debug/src/devices/emu/");
+
+ // src/devices (or build/debug)
+ locations.push_back ("../../build/optimized/src/devices/emu/");
+ locations.push_back ("../../build/debug/src/devices/emu/");
+
+ // src/devices/emu (or build/debug/examples)
+ locations.push_back ("../../../build/optimized/src/devices/emu/");
+ locations.push_back ("../../../build/debug/src/devices/emu/");
+
+ for (std::list::const_iterator i = locations.begin (); i != locations.end (); ++i)
{
- return optimized;
+ struct stat st;
+
+ if (::stat ((*i + creatorName).c_str (), &st) == 0)
+ {
+ NS_LOG_INFO ("Found Creator " << *i + creatorName);
+ return *i + creatorName;
+ }
}
NS_FATAL_ERROR ("EmuNetDevice::FindCreator(): Couldn't find creator");
@@ -560,19 +584,6 @@ EmuNetDevice::ForwardUp (uint8_t *buf, uint32_t len)
{
NS_LOG_FUNCTION (buf << len);
- /* IPv6 support*/
- uint8_t mac[6];
- Mac48Address multicast6AllNodes("33:33:00:00:00:01");
- Mac48Address multicast6AllRouters("33:33:00:00:00:02");
- Mac48Address multicast6AllHosts("33:33:00:00:00:03");
- Mac48Address multicast6Node; /* multicast address addressed to our MAC address */
-
- /* generate IPv6 multicast ethernet destination that nodes will accept */
- GetAddress().CopyTo(mac);
- mac[0]=0x33;
- mac[1]=0x33;
- multicast6Node.CopyFrom(mac);
-
//
// Create a packet out of the buffer we received and free that buffer.
//
@@ -586,13 +597,6 @@ EmuNetDevice::ForwardUp (uint8_t *buf, uint32_t len)
//
Ptr originalPacket = packet->Copy ();
- //
- // Checksum the packet
- //
- EthernetTrailer trailer;
- packet->RemoveTrailer (trailer);
- trailer.CheckFcs (packet);
-
EthernetHeader header (false);
packet->RemoveHeader (header);
@@ -619,16 +623,12 @@ EmuNetDevice::ForwardUp (uint8_t *buf, uint32_t len)
}
PacketType packetType;
-
+
if (header.GetDestination ().IsBroadcast ())
{
packetType = NS3_PACKET_BROADCAST;
}
- else if (header.GetDestination ().IsMulticast () ||
- header.GetDestination() == multicast6Node ||
- header.GetDestination() == multicast6AllNodes ||
- header.GetDestination() == multicast6AllRouters ||
- header.GetDestination() == multicast6AllHosts)
+ else if (header.GetDestination ().IsGroup ())
{
packetType = NS3_PACKET_MULTICAST;
}
diff --git a/src/devices/emu/emu-net-device.h b/src/devices/emu/emu-net-device.h
index 189a81833..4dbb3ffa6 100644
--- a/src/devices/emu/emu-net-device.h
+++ b/src/devices/emu/emu-net-device.h
@@ -196,7 +196,7 @@ private:
/**
* Figure out where the raw socket creation process lives on the system.
*/
- std::string FindCreator (void);
+ std::string FindCreator (std::string creatorName);
/**
* Get a copy of the attached Queue.
diff --git a/src/devices/mesh/mesh-point-device.cc b/src/devices/mesh/mesh-point-device.cc
index 4d67e963e..c67ab0b91 100644
--- a/src/devices/mesh/mesh-point-device.cc
+++ b/src/devices/mesh/mesh-point-device.cc
@@ -87,7 +87,7 @@ MeshPointDevice::ReceiveFromDevice (Ptr incomingPort, PtrCopy (), protocol, src48, dst48);
diff --git a/src/devices/wifi/adhoc-wifi-mac.cc b/src/devices/wifi/adhoc-wifi-mac.cc
index d7539d738..89462a3ee 100644
--- a/src/devices/wifi/adhoc-wifi-mac.cc
+++ b/src/devices/wifi/adhoc-wifi-mac.cc
@@ -46,7 +46,8 @@ AdhocWifiMac::GetTypeId (void)
.AddConstructor ()
.AddAttribute ("DcaTxop", "The DcaTxop object",
PointerValue (),
- MakePointerAccessor (&AdhocWifiMac::DoGetDcaTxop),
+ MakePointerAccessor (&AdhocWifiMac::GetDcaTxop,
+ &AdhocWifiMac::SetDcaTxop),
MakePointerChecker ())
;
return tid;
@@ -63,10 +64,6 @@ AdhocWifiMac::AdhocWifiMac ()
m_dcfManager = new DcfManager ();
m_dcfManager->SetupLowListener (m_low);
-
- m_dca = CreateObject ();
- m_dca->SetLow (m_low);
- m_dca->SetManager (m_dcfManager);
}
AdhocWifiMac::~AdhocWifiMac ()
{}
@@ -250,9 +247,18 @@ AdhocWifiMac::ForwardUp (Ptr packet, WifiMacHeader const *hdr)
m_upCallback (packet, hdr->GetAddr2 (), hdr->GetAddr1 ());
}
Ptr
-AdhocWifiMac::DoGetDcaTxop(void) const
+AdhocWifiMac::GetDcaTxop(void) const
{
return m_dca;
}
+void
+AdhocWifiMac::SetDcaTxop (Ptr dcaTxop)
+{
+ m_dca = dcaTxop;
+ m_dca->SetLow (m_low);
+ m_dca->SetManager (m_dcfManager);
+}
+
+
} // namespace ns3
diff --git a/src/devices/wifi/adhoc-wifi-mac.h b/src/devices/wifi/adhoc-wifi-mac.h
index 047798376..b1b70b73c 100644
--- a/src/devices/wifi/adhoc-wifi-mac.h
+++ b/src/devices/wifi/adhoc-wifi-mac.h
@@ -86,7 +86,8 @@ private:
void ForwardUp (Ptr packet, WifiMacHeader const*hdr);
AdhocWifiMac (const AdhocWifiMac & ctor_arg);
AdhocWifiMac &operator = (const AdhocWifiMac &o);
- Ptr DoGetDcaTxop(void) const;
+ Ptr GetDcaTxop(void) const;
+ void SetDcaTxop (Ptr dcaTxop);
Ptr m_dca;
Callback, Mac48Address, Mac48Address> m_upCallback;
diff --git a/src/devices/wifi/amsdu-subframe-header.cc b/src/devices/wifi/amsdu-subframe-header.cc
new file mode 100644
index 000000000..f30278bf3
--- /dev/null
+++ b/src/devices/wifi/amsdu-subframe-header.cc
@@ -0,0 +1,116 @@
+/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2009 MIRKO BANCHI
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ * Author: Mirko Banchi
+ */
+#include "amsdu-subframe-header.h"
+#include "ns3/address-utils.h"
+
+namespace ns3 {
+
+NS_OBJECT_ENSURE_REGISTERED (AmsduSubframeHeader);
+
+TypeId
+AmsduSubframeHeader::GetTypeId ()
+{
+ static TypeId tid = TypeId ("ns3::AmsduSubframeHeader")
+ .SetParent ()
+ .AddConstructor ()
+ ;
+ return tid;
+}
+
+TypeId
+AmsduSubframeHeader::GetInstanceTypeId (void) const
+{
+ return GetTypeId ();
+}
+
+AmsduSubframeHeader::AmsduSubframeHeader ()
+ : m_length (0)
+{}
+
+AmsduSubframeHeader::~AmsduSubframeHeader ()
+{}
+
+uint32_t
+AmsduSubframeHeader::GetSerializedSize () const
+{
+ return (6 + 6 + 2);
+}
+
+void
+AmsduSubframeHeader::Serialize (Buffer::Iterator i) const
+{
+ WriteTo (i, m_da);
+ WriteTo (i, m_sa);
+ i.WriteHtonU16 (m_length);
+}
+
+uint32_t
+AmsduSubframeHeader::Deserialize (Buffer::Iterator start)
+{
+ Buffer::Iterator i = start;
+ ReadFrom (i, m_da);
+ ReadFrom (i, m_sa);
+ m_length = i.ReadNtohU16 ();
+ return i.GetDistanceFrom (start);
+}
+
+void
+AmsduSubframeHeader::Print (std::ostream &os) const
+{
+ os << "DA = " << m_da << ", SA = " << m_sa << ", length = " << m_length;
+}
+
+void
+AmsduSubframeHeader::SetDestinationAddr (Mac48Address to)
+{
+ m_da = to;
+}
+
+void
+AmsduSubframeHeader::SetSourceAddr (Mac48Address from)
+{
+ m_sa = from;
+}
+
+void
+AmsduSubframeHeader::SetLength (uint16_t length)
+{
+ m_length = length;
+}
+
+Mac48Address
+AmsduSubframeHeader::GetDestinationAddr (void) const
+{
+ return m_da;
+}
+
+Mac48Address
+AmsduSubframeHeader::GetSourceAddr (void) const
+{
+ return m_sa;
+}
+
+uint16_t
+AmsduSubframeHeader::GetLength (void) const
+{
+ return m_length;
+}
+
+} //namespace ns3
diff --git a/src/devices/wifi/amsdu-subframe-header.h b/src/devices/wifi/amsdu-subframe-header.h
new file mode 100644
index 000000000..a19dfcc77
--- /dev/null
+++ b/src/devices/wifi/amsdu-subframe-header.h
@@ -0,0 +1,57 @@
+/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2009 MIRKO BANCHI
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ * Author: Mirko Banchi
+ */
+#ifndef AMSDU_SUBFRAME_HEADER_H
+#define AMSDU_SUBFRAME_HEADER_H
+
+#include "ns3/header.h"
+#include "ns3/mac48-address.h"
+
+namespace ns3 {
+
+class AmsduSubframeHeader : public Header
+{
+public:
+
+ AmsduSubframeHeader ();
+ virtual ~AmsduSubframeHeader ();
+
+ static TypeId GetTypeId (void);
+ virtual TypeId GetInstanceTypeId (void) const;
+ virtual void Print (std::ostream &os) const;
+ virtual uint32_t GetSerializedSize (void) const;
+ virtual void Serialize (Buffer::Iterator start) const;
+ virtual uint32_t Deserialize (Buffer::Iterator start);
+
+ void SetDestinationAddr (Mac48Address to);
+ void SetSourceAddr (Mac48Address to);
+ void SetLength (uint16_t);
+ Mac48Address GetDestinationAddr (void) const;
+ Mac48Address GetSourceAddr (void) const;
+ uint16_t GetLength (void) const;
+
+private:
+ Mac48Address m_da;
+ Mac48Address m_sa;
+ uint16_t m_length;
+};
+
+} //namespace ns3
+
+#endif /* AMSDU_SUBFRAME_HEADER_H */
diff --git a/src/devices/wifi/dca-txop.cc b/src/devices/wifi/dca-txop.cc
index 023774f31..c20bca9fe 100644
--- a/src/devices/wifi/dca-txop.cc
+++ b/src/devices/wifi/dca-txop.cc
@@ -93,10 +93,12 @@ private:
DcaTxop *m_txop;
};
+NS_OBJECT_ENSURE_REGISTERED (DcaTxop);
+
TypeId
DcaTxop::GetTypeId (void)
{
- static TypeId tid = TypeId ("DcaTxop")
+ static TypeId tid = TypeId ("ns3::DcaTxop")
.SetParent ()
.AddConstructor ()
.AddAttribute ("MinCw", "The minimum value of the contention window.",
diff --git a/src/devices/wifi/dca-txop.h b/src/devices/wifi/dca-txop.h
index 3f588e1a5..8bd38bfca 100644
--- a/src/devices/wifi/dca-txop.h
+++ b/src/devices/wifi/dca-txop.h
@@ -115,6 +115,9 @@ private:
friend class TransmissionListener;
friend class WifiRemoteStation;
+ DcaTxop &operator = (const DcaTxop &);
+ DcaTxop (const DcaTxop &o);
+
// Inherited from ns3::Object
Ptr Low (void);
diff --git a/src/devices/wifi/edca-txop-n.cc b/src/devices/wifi/edca-txop-n.cc
new file mode 100644
index 000000000..dc5052c7a
--- /dev/null
+++ b/src/devices/wifi/edca-txop-n.cc
@@ -0,0 +1,691 @@
+/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2006, 2009 INRIA
+ * Copyright (c) 2009 MIRKO BANCHI
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ * Author: Mathieu Lacage
+ * Author: Mirko Banchi
+ */
+#include "ns3/log.h"
+#include "ns3/assert.h"
+
+#include "edca-txop-n.h"
+#include "mac-low.h"
+#include "dcf-manager.h"
+#include "mac-tx-middle.h"
+#include "wifi-mac-trailer.h"
+#include "wifi-mac.h"
+#include "random-stream.h"
+#include "wifi-mac-queue.h"
+#include "msdu-aggregator.h"
+
+NS_LOG_COMPONENT_DEFINE ("EdcaTxopN");
+
+#define MY_DEBUG(x) \
+ NS_LOG_DEBUG (m_low->GetAddress () << " " << x)
+
+namespace ns3 {
+
+class EdcaTxopN::Dcf : public DcfState
+{
+public:
+ Dcf (EdcaTxopN *txop)
+ : m_txop (txop)
+ {}
+private:
+ virtual void DoNotifyAccessGranted (void) {
+ m_txop->NotifyAccessGranted ();
+ }
+ virtual void DoNotifyInternalCollision (void) {
+ m_txop->NotifyInternalCollision ();
+ }
+ virtual void DoNotifyCollision (void) {
+ m_txop->NotifyCollision ();
+ }
+ EdcaTxopN *m_txop;
+};
+
+class EdcaTxopN::TransmissionListener : public MacLowTransmissionListener
+{
+public:
+ TransmissionListener (EdcaTxopN *txop)
+ : MacLowTransmissionListener (),
+ m_txop (txop) {}
+
+ virtual ~TransmissionListener () {}
+
+ virtual void GotCts (double snr, WifiMode txMode) {
+ m_txop->GotCts (snr, txMode);
+ }
+ virtual void MissedCts (void) {
+ m_txop->MissedCts ();
+ }
+ virtual void GotAck (double snr, WifiMode txMode) {
+ m_txop->GotAck (snr, txMode);
+ }
+ virtual void MissedAck (void) {
+ m_txop->MissedAck ();
+ }
+ virtual void StartNext (void) {
+ m_txop->StartNext ();
+ }
+ virtual void Cancel (void) {
+ m_txop->Cancel ();
+ }
+
+private:
+ EdcaTxopN *m_txop;
+};
+
+NS_OBJECT_ENSURE_REGISTERED (EdcaTxopN);
+
+TypeId
+EdcaTxopN::GetTypeId (void)
+{
+ static TypeId tid = TypeId ("ns3::EdcaTxopN")
+ .SetParent ()
+ .AddConstructor ()
+ .AddAttribute ("MinCw", "The minimun value of the contention window.",
+ UintegerValue (31),
+ MakeUintegerAccessor (&EdcaTxopN::SetMinCw,
+ &EdcaTxopN::GetMinCw),
+ MakeUintegerChecker ())
+ .AddAttribute ("MaxCw", "The maximum value of the contention window.",
+ UintegerValue (1023),
+ MakeUintegerAccessor (&EdcaTxopN::SetMaxCw,
+ &EdcaTxopN::GetMaxCw),
+ MakeUintegerChecker ())
+ .AddAttribute ("Aifsn", "The AIFSN: the default value conforms to simple DCA.",
+ UintegerValue (3),
+ MakeUintegerAccessor (&EdcaTxopN::SetAifsn,
+ &EdcaTxopN::GetAifsn),
+ MakeUintegerChecker ())
+ ;
+ return tid;
+}
+
+EdcaTxopN::EdcaTxopN ()
+ : m_manager (0),
+ m_currentPacket(0),
+ m_aggregator (0)
+{
+ NS_LOG_FUNCTION (this);
+ m_transmissionListener = new EdcaTxopN::TransmissionListener (this);
+ m_dcf = new EdcaTxopN::Dcf (this);
+ m_queue = CreateObject ();
+ m_rng = new RealRandomStream ();
+}
+
+EdcaTxopN::~EdcaTxopN ()
+{
+ NS_LOG_FUNCTION (this);
+}
+
+void
+EdcaTxopN::DoDispose (void)
+{
+ NS_LOG_FUNCTION (this);
+ m_queue = 0;
+ m_low = 0;
+ m_stationManager = 0;
+ delete m_transmissionListener;
+ delete m_dcf;
+ delete m_rng;
+ m_transmissionListener = 0;
+ m_dcf = 0;
+ m_rng = 0;
+ m_txMiddle = 0;
+ m_aggregator = 0;
+}
+
+void
+EdcaTxopN::SetManager (DcfManager *manager)
+{
+ NS_LOG_FUNCTION (this << manager);
+ m_manager = manager;
+ m_manager->Add (m_dcf);
+}
+
+void
+EdcaTxopN::SetTxOkCallback (TxOk callback)
+{
+ m_txOkCallback = callback;
+}
+
+void
+EdcaTxopN::SetTxFailedCallback (TxFailed callback)
+{
+ m_txFailedCallback = callback;
+}
+
+void
+EdcaTxopN::SetWifiRemoteStationManager (Ptr remoteManager)
+{
+ NS_LOG_FUNCTION (this << remoteManager);
+ m_stationManager = remoteManager;
+}
+void
+EdcaTxopN::SetTypeOfStation (enum TypeOfStation type)
+{
+ NS_LOG_FUNCTION (this << type);
+ m_typeOfStation = type;
+}
+
+enum TypeOfStation
+EdcaTxopN::GetTypeOfStation (void) const
+{
+ return m_typeOfStation;
+}
+
+void
+EdcaTxopN::SetMaxQueueSize (uint32_t size)
+{
+ NS_LOG_FUNCTION (this << size);
+ m_queue->SetMaxSize (size);
+}
+
+void
+EdcaTxopN::SetMaxQueueDelay (Time delay)
+{
+ NS_LOG_FUNCTION (this << delay);
+ m_queue->SetMaxDelay (delay);
+}
+
+void
+EdcaTxopN::SetMinCw (uint32_t minCw)
+{
+ NS_LOG_FUNCTION (this << minCw);
+ m_dcf->SetCwMin (minCw);
+}
+
+void
+EdcaTxopN::SetMaxCw (uint32_t maxCw)
+{
+ NS_LOG_FUNCTION (this << maxCw);
+ m_dcf->SetCwMax (maxCw);
+}
+
+void
+EdcaTxopN::SetAifsn (uint32_t aifsn)
+{
+ NS_LOG_FUNCTION (this << aifsn);
+ m_dcf->SetAifsn (aifsn);
+}
+
+uint32_t
+EdcaTxopN::GetMinCw (void) const
+{
+ return m_dcf->GetCwMin ();
+}
+
+uint32_t
+EdcaTxopN::GetMaxCw (void) const
+{
+ return m_dcf->GetCwMax ();
+}
+
+uint32_t
+EdcaTxopN::GetAifsn (void) const
+{
+ return m_dcf->GetAifsn ();
+}
+
+void
+EdcaTxopN::SetTxMiddle (MacTxMiddle *txMiddle)
+{
+ m_txMiddle = txMiddle;
+}
+
+Ptr
+EdcaTxopN::Low (void)
+{
+ return m_low;
+}
+
+void
+EdcaTxopN::SetLow(Ptr low)
+{
+ NS_LOG_FUNCTION (this << low);
+ m_low = low;
+}
+
+bool
+EdcaTxopN::NeedsAccess (void) const
+{
+ return !m_queue->IsEmpty () || m_currentPacket != 0;
+}
+
+void
+EdcaTxopN::NotifyAccessGranted (void)
+{
+ NS_LOG_FUNCTION (this);
+ if (m_currentPacket == 0)
+ {
+ if (m_queue->IsEmpty ())
+ {
+ MY_DEBUG ("queue is empty");
+ return;
+ }
+ m_currentPacket = m_queue->Dequeue (&m_currentHdr);
+ NS_ASSERT (m_currentPacket != 0);
+
+ uint16_t sequence = m_txMiddle->GetNextSequenceNumberfor (&m_currentHdr);
+ m_currentHdr.SetSequenceNumber (sequence);
+ m_currentHdr.SetFragmentNumber (0);
+ m_currentHdr.SetNoMoreFragments ();
+ m_currentHdr.SetNoRetry ();
+ m_fragmentNumber = 0;
+ MY_DEBUG ("dequeued size="<GetSize ()<<
+ ", to="< fragment = GetFragmentPacket (&hdr);
+ if (IsLastFragment ())
+ {
+ MY_DEBUG ("fragmenting last fragment size=" << fragment->GetSize ());
+ params.DisableNextData ();
+ }
+ else
+ {
+ MY_DEBUG ("fragmenting size=" << fragment->GetSize ());
+ params.EnableNextData (GetNextFragmentSize ());
+ }
+ m_low->StartTransmission (fragment, &hdr, params,
+ m_transmissionListener);
+ }
+ else
+ {
+ WifiMacHeader peekedHdr;
+ if (m_currentHdr.IsQosData () &&
+ m_queue->PeekByTidAndAddress (&peekedHdr, m_currentHdr.GetQosTid (),
+ WifiMacHeader::ADDR1, m_currentHdr.GetAddr1 ()) &&
+ !m_currentHdr.GetAddr1 ().IsBroadcast () &&
+ m_aggregator != 0)
+ {
+ /* here is performed aggregation */
+ Ptr currentAggregatedPacket = Create ();
+ m_aggregator->Aggregate (m_currentPacket, currentAggregatedPacket,
+ MapSrcAddressForAggregation (peekedHdr),
+ MapDestAddressForAggregation (peekedHdr));
+ bool aggregated = false;
+ bool isAmsdu = false;
+ Ptr peekedPacket = m_queue->PeekByTidAndAddress (&peekedHdr, m_currentHdr.GetQosTid (),
+ WifiMacHeader::ADDR1,
+ m_currentHdr.GetAddr1 ());
+ while (peekedPacket != 0)
+ {
+ aggregated = m_aggregator->Aggregate (peekedPacket, currentAggregatedPacket,
+ MapSrcAddressForAggregation (peekedHdr),
+ MapDestAddressForAggregation (peekedHdr));
+ if (aggregated)
+ {
+ isAmsdu = true;
+ m_queue->Remove (peekedPacket);
+ }
+ else
+ {
+ break;
+ }
+ peekedPacket = m_queue->PeekByTidAndAddress (&peekedHdr, m_currentHdr.GetQosTid (),
+ WifiMacHeader::ADDR1, m_currentHdr.GetAddr1 ());
+ }
+ if (isAmsdu)
+ {
+ m_currentHdr.SetQosAmsdu ();
+ m_currentHdr.SetAddr3 (m_low->GetBssid ());
+ m_currentPacket = currentAggregatedPacket;
+ currentAggregatedPacket = 0;
+ MY_DEBUG ("tx unicast A-MSDU");
+ }
+ }
+ if (NeedRts ())
+ {
+ params.EnableRts ();
+ MY_DEBUG ("tx unicast rts");
+ }
+ else
+ {
+ params.DisableRts ();
+ MY_DEBUG ("tx unicast");
+ }
+ params.DisableNextData ();
+ m_low->StartTransmission (m_currentPacket, &m_currentHdr,
+ params, m_transmissionListener);
+ }
+ }
+}
+
+void EdcaTxopN::NotifyInternalCollision (void)
+{
+ NS_LOG_FUNCTION (this);
+ NotifyCollision ();
+}
+
+void
+EdcaTxopN::NotifyCollision (void)
+{
+ NS_LOG_FUNCTION (this);
+ m_dcf->StartBackoffNow (m_rng->GetNext (0, m_dcf->GetCw ()));
+ RestartAccessIfNeeded ();
+}
+
+void
+EdcaTxopN::GotCts (double snr, WifiMode txMode)
+{
+ NS_LOG_FUNCTION (this << snr << txMode);
+ MY_DEBUG ("got cts");
+}
+
+void
+EdcaTxopN::MissedCts (void)
+{
+ NS_LOG_FUNCTION (this);
+ MY_DEBUG ("missed cts");
+ if (!NeedRtsRetransmission ())
+ {
+ MY_DEBUG ("Cts Fail");
+ WifiRemoteStation *station = GetStation (m_currentHdr.GetAddr1 ());
+ station->ReportFinalRtsFailed ();
+ if (!m_txFailedCallback.IsNull ())
+ {
+ m_txFailedCallback (m_currentHdr);
+ }
+ // to reset the dcf.
+ m_currentPacket = 0;
+ m_dcf->ResetCw ();
+ }
+ else
+ {
+ m_dcf->UpdateFailedCw ();
+ }
+ m_dcf->StartBackoffNow (m_rng->GetNext (0, m_dcf->GetCw ()));
+ RestartAccessIfNeeded ();
+}
+
+void
+EdcaTxopN::Queue (Ptr packet, WifiMacHeader const &hdr)
+{
+ NS_LOG_FUNCTION (this << packet << &hdr);
+ WifiMacTrailer fcs;
+ uint32_t fullPacketSize = hdr.GetSerializedSize () + packet->GetSize () + fcs.GetSerializedSize ();
+ WifiRemoteStation *station = GetStation (hdr.GetAddr1 ());
+ station->PrepareForQueue (packet, fullPacketSize);
+ m_queue->Enqueue (packet, hdr);
+ StartAccessIfNeeded ();
+}
+
+void
+EdcaTxopN::GotAck (double snr, WifiMode txMode)
+{
+ NS_LOG_FUNCTION (this << snr << txMode);
+ if (!NeedFragmentation () ||
+ IsLastFragment () ||
+ m_currentHdr.IsQosAmsdu ())
+ {
+ MY_DEBUG ("got ack. tx done.");
+ if (!m_txOkCallback.IsNull ())
+ {
+ m_txOkCallback (m_currentHdr);
+ }
+ m_currentPacket = 0;
+
+ m_dcf->ResetCw ();
+ m_dcf->StartBackoffNow (m_rng->GetNext (0, m_dcf->GetCw ()));
+ RestartAccessIfNeeded ();
+ }
+ else
+ {
+ MY_DEBUG ("got ack. tx not done, size="<GetSize ());
+ }
+}
+
+void
+EdcaTxopN::MissedAck (void)
+{
+ NS_LOG_FUNCTION (this);
+ MY_DEBUG ("missed ack");
+ if (!NeedDataRetransmission ())
+ {
+ MY_DEBUG ("Ack Fail");
+ WifiRemoteStation *station = GetStation (m_currentHdr.GetAddr1 ());
+ station->ReportFinalDataFailed ();
+ if (!m_txFailedCallback.IsNull ())
+ {
+ m_txFailedCallback (m_currentHdr);
+ }
+ // to reset the dcf.
+ m_currentPacket = 0;
+ m_dcf->ResetCw ();
+ }
+ else
+ {
+ MY_DEBUG ("Retransmit");
+ m_currentHdr.SetRetry ();
+ m_dcf->UpdateFailedCw ();
+ }
+ m_dcf->StartBackoffNow (m_rng->GetNext (0, m_dcf->GetCw ()));
+ RestartAccessIfNeeded ();
+}
+
+Ptr
+EdcaTxopN::GetMsduAggregator (void) const
+{
+ return m_aggregator;
+}
+
+void
+EdcaTxopN::RestartAccessIfNeeded (void)
+{
+ NS_LOG_FUNCTION (this);
+ if ((m_currentPacket != 0 ||
+ !m_queue->IsEmpty ()) &&
+ !m_dcf->IsAccessRequested ())
+ {
+ m_manager->RequestAccess (m_dcf);
+ }
+}
+
+void
+EdcaTxopN::StartAccessIfNeeded (void)
+{
+ NS_LOG_FUNCTION (this);
+ if (m_currentPacket == 0 &&
+ !m_queue->IsEmpty () &&
+ !m_dcf->IsAccessRequested ())
+ {
+ m_manager->RequestAccess (m_dcf);
+ }
+}
+
+bool
+EdcaTxopN::NeedRts (void)
+{
+ WifiRemoteStation *station = GetStation (m_currentHdr.GetAddr1 ());
+ return station->NeedRts (m_currentPacket);
+}
+
+bool
+EdcaTxopN::NeedRtsRetransmission (void)
+{
+ WifiRemoteStation *station = GetStation (m_currentHdr.GetAddr1 ());
+ return station->NeedRtsRetransmission (m_currentPacket);
+}
+
+bool
+EdcaTxopN::NeedDataRetransmission (void)
+{
+ WifiRemoteStation *station = GetStation (m_currentHdr.GetAddr1 ());
+ return station->NeedDataRetransmission (m_currentPacket);
+}
+
+void
+EdcaTxopN::NextFragment (void)
+{
+ m_fragmentNumber++;
+}
+
+void
+EdcaTxopN::StartNext (void)
+{
+ NS_LOG_FUNCTION (this);
+ MY_DEBUG ("start next packet fragment");
+ /* this callback is used only for fragments. */
+ NextFragment ();
+ WifiMacHeader hdr;
+ Ptr fragment = GetFragmentPacket (&hdr);
+ MacLowTransmissionParameters params;
+ params.EnableAck ();
+ params.DisableRts ();
+ params.DisableOverrideDurationId ();
+ if (IsLastFragment ())
+ {
+ params.DisableNextData ();
+ }
+ else
+ {
+ params.EnableNextData (GetNextFragmentSize ());
+ }
+ Low ()->StartTransmission (fragment, &hdr, params, m_transmissionListener);
+}
+
+void
+EdcaTxopN::Cancel (void)
+{
+ NS_LOG_FUNCTION (this);
+ MY_DEBUG ("transmission cancelled");
+}
+
+bool
+EdcaTxopN::NeedFragmentation (void) const
+{
+ WifiRemoteStation *station = GetStation (m_currentHdr.GetAddr1 ());
+ return station->NeedFragmentation (m_currentPacket);
+}
+
+uint32_t
+EdcaTxopN::GetFragmentSize (void)
+{
+ WifiRemoteStation *station = GetStation (m_currentHdr.GetAddr1 ());
+ return station->GetFragmentSize (m_currentPacket, m_fragmentNumber);
+}
+
+uint32_t
+EdcaTxopN::GetNextFragmentSize (void)
+{
+ WifiRemoteStation *station = GetStation (m_currentHdr.GetAddr1 ());
+ return station->GetFragmentSize (m_currentPacket, m_fragmentNumber + 1);
+}
+
+uint32_t
+EdcaTxopN::GetFragmentOffset (void)
+{
+ WifiRemoteStation *station = GetStation (m_currentHdr.GetAddr1 ());
+ return station->GetFragmentOffset (m_currentPacket, m_fragmentNumber);
+}
+
+WifiRemoteStation *
+EdcaTxopN::GetStation (Mac48Address ad) const
+{
+ return m_stationManager->Lookup (ad);
+}
+
+bool
+EdcaTxopN::IsLastFragment (void) const
+{
+ WifiRemoteStation *station = GetStation (m_currentHdr.GetAddr1 ());
+ return station->IsLastFragment (m_currentPacket, m_fragmentNumber);
+}
+
+Ptr
+EdcaTxopN::GetFragmentPacket (WifiMacHeader *hdr)
+{
+ *hdr = m_currentHdr;
+ hdr->SetFragmentNumber (m_fragmentNumber);
+ uint32_t startOffset = GetFragmentOffset ();
+ Ptr fragment;
+ if (IsLastFragment ())
+ {
+ hdr->SetNoMoreFragments ();
+ }
+ else
+ {
+ hdr->SetMoreFragments ();
+ }
+ fragment = m_currentPacket->CreateFragment (startOffset,
+ GetFragmentSize ());
+ return fragment;
+}
+
+Mac48Address
+EdcaTxopN::MapSrcAddressForAggregation (WifiMacHeader const &hdr)
+{
+ if (m_typeOfStation == STA || m_typeOfStation == ADHOC_STA)
+ {
+ return hdr.GetAddr2 ();
+ }
+ else
+ {
+ return hdr.GetAddr3 ();
+ }
+}
+
+Mac48Address
+EdcaTxopN::MapDestAddressForAggregation (WifiMacHeader const &hdr)
+{
+ if (m_typeOfStation == AP || m_typeOfStation == ADHOC_STA)
+ {
+ return hdr.GetAddr1 ();
+ }
+ else
+ {
+ return hdr.GetAddr3 ();
+ }
+}
+
+void
+EdcaTxopN::SetMsduAggregator (Ptr aggr)
+{
+ m_aggregator = aggr;
+}
+
+} //namespace ns3
diff --git a/src/devices/wifi/edca-txop-n.h b/src/devices/wifi/edca-txop-n.h
new file mode 100644
index 000000000..a89b5292d
--- /dev/null
+++ b/src/devices/wifi/edca-txop-n.h
@@ -0,0 +1,172 @@
+/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2006, 2009 INRIA
+ * Copyright (c) 2009 MIRKO BANCHI
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ * Author: Mathieu Lacage
+ * Author: Mirko Banchi
+ */
+#ifndef EDCA_TXOP_N_H
+#define EDCA_TXOP_N_H
+
+#include "ns3/object.h"
+#include "ns3/mac48-address.h"
+#include "ns3/packet.h"
+
+#include "wifi-mode.h"
+#include "wifi-mac.h"
+#include "wifi-mac-header.h"
+#include "qos-utils.h"
+
+#include
+#include