24 #include "ns3/yans-wifi-helper.h"
25 #include "ns3/mobility-helper.h"
26 #include "ns3/wifi-net-device.h"
27 #include "ns3/adhoc-wifi-mac.h"
28 #include "ns3/propagation-delay-model.h"
29 #include "ns3/propagation-loss-model.h"
30 #include "ns3/yans-error-rate-model.h"
31 #include "ns3/constant-position-mobility-model.h"
33 #include "ns3/pointer.h"
34 #include "ns3/rng-seed-manager.h"
35 #include "ns3/config.h"
36 #include "ns3/string.h"
37 #include "ns3/packet-socket-server.h"
38 #include "ns3/packet-socket-client.h"
39 #include "ns3/packet-socket-helper.h"
48 int64_t currentStream = stream;
86 virtual void DoRun (
void);
132 phy->SetErrorRateModel (error);
133 phy->SetChannel (channel);
134 phy->SetDevice (dev);
140 mac->SetAddress (Mac48Address::Allocate ());
143 dev->SetRemoteStationManager (manager);
158 CreateOne (Vector (0.0, 0.0, 0.0), channel);
159 CreateOne (Vector (5.0, 0.0, 0.0), channel);
160 CreateOne (Vector (5.0, 0.0, 0.0), channel);
162 Simulator::Stop (
Seconds (10.0));
165 Simulator::Destroy ();
242 virtual void DoRun (
void);
270 :
TestCase (
"InterferenceHelperSequence")
299 phy->SetErrorRateModel (error);
300 phy->SetChannel (channel);
301 phy->SetDevice (dev);
302 phy->SetMobility (mobility);
308 mac->SetAddress (Mac48Address::Allocate ());
311 dev->SetRemoteStationManager (manager);
335 propLoss->SetDefaultLoss (999);
337 Simulator::Schedule (
Seconds (1.0),
339 DynamicCast<WifiNetDevice> (senderB->
GetDevice (0)));
341 Simulator::Schedule (
Seconds (1.0000001),
343 DynamicCast<WifiNetDevice> (rxOnly->
GetDevice (0)));
345 Simulator::Schedule (
Seconds (5.0),
347 DynamicCast<WifiNetDevice> (senderA->
GetDevice (0)));
349 Simulator::Schedule (
Seconds (7.0),
351 DynamicCast<WifiNetDevice> (senderB->
GetDevice (0)));
353 Simulator::Stop (
Seconds (100.0));
356 Simulator::Destroy ();
416 virtual void DoRun (
void);
442 :
TestCase (
"Test case for DCF immediate access with broadcast frames")
477 RngSeedManager::SetSeed (1);
478 RngSeedManager::SetRun (40);
486 Ptr<Node> txNode = CreateObject<Node> ();
499 txPhy->SetErrorRateModel (txError);
500 txPhy->SetChannel (channel);
501 txPhy->SetDevice (txDev);
502 txPhy->SetMobility (txMobility);
509 txMac->SetAddress (Mac48Address::Allocate ());
510 txDev->SetMac (txMac);
511 txDev->SetPhy (txPhy);
522 Simulator::Stop (
Seconds (2.0));
524 Simulator::Destroy ();
530 uint32_t expectedWait1 = 1408 + (1 * 9) + 16 + (2 * 9);
557 virtual void DoRun (
void);
574 :
TestCase (
"Test case for Bug 730"),
618 mac.
SetType (
"ns3::StaWifiMac",
623 staDevices = wifi.
Install (phy, mac, wifiStaNode);
630 apDevices = wifi.
Install (phy, mac, wifiApNode);
635 positionAlloc->
Add (Vector (0.0, 0.0, 0.0));
636 positionAlloc->
Add (Vector (1.0, 0.0, 0.0));
641 mobility.
Install (wifiStaNode);
648 socket.SetPhysicalAddress (ap_device->
GetAddress ());
649 socket.SetProtocol (1);
653 packetSocket.
Install (wifiStaNode);
654 packetSocket.
Install (wifiApNode);
671 Simulator::Schedule (
Seconds (10.0),
Config::Set,
"/NodeList/0/DeviceList/0/RemoteStationManager/FragmentationThreshold",
StringValue (
"800"));
673 Simulator::Stop (
Seconds (55));
676 Simulator::Destroy ();
679 NS_TEST_ASSERT_MSG_EQ (result,
true,
"packet reception unexpectedly stopped after adapting fragmentation threshold!");
693 virtual void DoRun (
void);
707 :
TestCase (
"Test case for setting WifiPhy channel and frequency")
733 ssid =
Ssid (
"wifi-phy-configuration");
735 macSta.
SetType (
"ns3::StaWifiMac",
745 phySta = CreateObject<YansWifiPhy> ();
756 staDevice = wifi.
Install (phy, macSta, wifiStaNode.
Get (0));
767 staDevice = wifi.
Install (phy, macSta, wifiStaNode.
Get (0));
778 staDevice = wifi.
Install (phy, macSta, wifiStaNode.
Get (0));
790 staDevice = wifi.
Install (phy, macSta, wifiStaNode.
Get (0));
801 staDevice = wifi.
Install (phy, macSta, wifiStaNode.
Get (0));
812 staDevice = wifi.
Install (phy, macSta, wifiStaNode.
Get (0));
823 staDevice = wifi.
Install (phy, macSta, wifiStaNode.
Get (0));
834 staDevice = wifi.
Install (phy, macSta, wifiStaNode.
Get (0));
845 staDevice = wifi.
Install (phy, macSta, wifiStaNode.
Get (0));
858 staDevice = wifi.
Install (phy, macSta, wifiStaNode.
Get (0));
869 staDevice = wifi.
Install (phy, macSta, wifiStaNode.
Get (0));
872 Config::Set (
"/NodeList/*/DeviceList/*/$ns3::WifiNetDevice/Phy/$ns3::YansWifiPhy/ChannelNumber",
UintegerValue (40));
882 staDevice = wifi.
Install (phy, macSta, wifiStaNode.
Get (0));
885 Config::Set (
"/NodeList/*/DeviceList/*/$ns3::WifiNetDevice/Phy/$ns3::YansWifiPhy/ChannelWidth",
UintegerValue (40));
898 staDevice = wifi.
Install (phy, macSta, wifiStaNode.
Get (0));
902 Config::Set (
"/NodeList/*/DeviceList/*/$ns3::WifiNetDevice/Phy/$ns3::YansWifiPhy/ChannelWidth",
UintegerValue (40));
916 staDevice = wifi.
Install (phy, macSta, wifiStaNode.
Get (0));
929 staDevice = wifi.
Install (phy, macSta, wifiStaNode.
Get (0));
944 staDevice = wifi.
Install (phy, macSta, wifiStaNode.
Get (0));
957 staDevice = wifi.
Install (phy, macSta, wifiStaNode.
Get (0));
985 staDevice = wifi.
Install (phy, macSta, wifiStaNode.
Get (0));
1019 Simulator::Destroy ();
1037 virtual void DoRun (
void);
1054 :
TestCase (
"Test case for Bug 2222"),
1055 m_countInternalCollisions (0)
1077 RngSeedManager::SetSeed (1);
1078 RngSeedManager::SetRun (2);
1079 int64_t streamNumber = 100;
1094 mac.
SetType (
"ns3::AdhocWifiMac",
1098 wifiDevices = wifi.
Install (phy, mac, wifiNodes);
1106 positionAlloc->
Add (Vector (0.0, 0.0, 0.0));
1107 positionAlloc->
Add (Vector (10.0, 0.0, 0.0));
1118 socket.SetPhysicalAddress (device2->GetAddress ());
1119 socket.SetProtocol (1);
1122 packetSocket.
Install (wifiNodes);
1150 Simulator::Stop (
Seconds (2.0));
1152 Simulator::Destroy ();
ERP-OFDM PHY (Clause 19, Section 19.5)
void RunOne(void)
Run one function.
void Set(std::string name, const AttributeValue &v)
uint32_t AddApplication(Ptr< Application > application)
Associate an Application to this Node.
uint8_t GetChannelNumber(void) const
Return current channel number.
void SetStopTime(Time stop)
Specify application stop time.
Simulation virtual time values and global simulation resolution.
virtual ~Bug730TestCase()
Smart pointer class similar to boost::intrusive_ptr.
OFDM PHY for the 5 GHz band (Clause 17 with 5 MHz channel bandwidth)
void PopulateArpCache()
Populate ARP cache function.
AttributeValue implementation for Boolean.
void SetLocal(PacketSocketAddress addr)
set the local address and protocol to be used
void SetPropagationLossModel(const Ptr< PropagationLossModel > loss)
HT PHY for the 5 GHz band (clause 20)
void Receive(std::string context, Ptr< const Packet > p, const Address &adr)
Receive function.
Ptr< YansWifiChannel > Create(void) const
void SetRemoteStationManager(std::string type, std::string n0="", const AttributeValue &v0=EmptyAttributeValue(), std::string n1="", const AttributeValue &v1=EmptyAttributeValue(), std::string n2="", const AttributeValue &v2=EmptyAttributeValue(), std::string n3="", const AttributeValue &v3=EmptyAttributeValue(), std::string n4="", const AttributeValue &v4=EmptyAttributeValue(), std::string n5="", const AttributeValue &v5=EmptyAttributeValue(), std::string n6="", const AttributeValue &v6=EmptyAttributeValue(), std::string n7="", const AttributeValue &v7=EmptyAttributeValue())
Ptr< T > GetObject(void) const
Get a pointer to the requested aggregated Object.
Hold variables of type string.
Ptr< NetDevice > Get(uint32_t i) const
Get the Ptr stored in this container at a given index.
Make it easy to create and manage PHY objects for the yans model.
void Set(std::string path, const AttributeValue &value)
void AggregateObject(Ptr< Object > other)
Aggregate two Objects together.
Address GetAddress(void) const
an address for a packet socket
Time MilliSeconds(uint64_t value)
Construct a Time in the indicated unit.
void SetTypeId(TypeId tid)
Set the TypeId of the Objects to be created by this factory.
#define NS_TEST_EXPECT_MSG_EQ(actual, limit, msg)
Test that an actual and expected (limit) value are equal and report if not.
uint32_t GetSize(void) const
Returns the the size in bytes of the packet (including the zero-filled initial payload).
OFDM PHY for the 5 GHz band (Clause 17 with 10 MHz channel bandwidth)
void ConfigureStandard(WifiPhyStandard standard)
bool QosUtilsIsOldPacket(uint16_t startingSeq, uint16_t seqNumber)
This function checks if packet with sequence number seqNumber is an "old" packet. ...
HT PHY for the 2.4 GHz band (clause 20)
Qos Utils Is Old Packet Test.
int64_t AssignStreams(int64_t stream)
Assign a fixed random variable stream number to the random variables used by this model...
Make sure that when changing the fragmentation threshold during the simulation, the TCP transmission ...
helps to create WifiNetDevice objects
InterferenceHelperSequenceTest()
uint16_t GetFrequency(void) const
Give ns3::PacketSocket powers to ns3::Node.
void SetSingleDevice(uint32_t device)
Set the address to match only a specified NetDevice.
a polymophic address class
Keep track of the current position and velocity of an object.
void SetChannel(Ptr< YansWifiChannel > channel)
Ptr< WifiPhy > GetPhy(void) const
Ptr< Node > CreateOne(Vector pos, Ptr< YansWifiChannel > channel)
Create one function.
This queue contains packets for a particular access class.
void SetPropagationDelayModel(const Ptr< PropagationDelayModel > delay)
void Install(Ptr< Node > node) const
"Layout" a single node according to the current position allocator type.
void AddTestCase(TestCase *testCase, TestDuration duration=QUICK)
Add an individual child TestCase to this test suite.
Ptr< Object > Create(void) const
Create an Object instance of the configured TypeId.
base class for all MAC-level wifi objects.
uint32_t m_countInternalCollisions
count internal collisions
Hold an unsigned integer type.
#define NS_TEST_ASSERT_MSG_EQ(actual, limit, msg)
Test that an actual and expected (limit) value are equal and report and abort if not.
QosUtilsIsOldPacketTest()
holds a vector of ns3::NetDevice pointers
virtual void SetStandard(enum WifiPhyStandard standard)
Ptr< YansWifiPhy > GetYansWifiPhyPtr(const NetDeviceContainer &nc) const
Get yans wifi phy function.
virtual NetDeviceContainer Install(const WifiPhyHelper &phy, const WifiMacHelper &mac, NodeContainer::Iterator first, NodeContainer::Iterator last) const
calculate a propagation delay.
int64_t AssignStreams(NetDeviceContainer c, int64_t stream)
Assign a fixed random variable stream number to the random variables used by the Phy and Mac aspects ...
Ptr< NetDevice > GetDevice(uint32_t index) const
Retrieve the index-th NetDevice associated to this node.
Hold together all Wifi-related objects.
Callback< R > MakeCallback(R(T::*memPtr)(void), OBJ objPtr)
virtual void DoRun(void)
Implementation to actually run this TestCase.
virtual void DoRun(void)
Implementation to actually run this TestCase.
hold a list of per-remote-station state.
void Connect(std::string path, const CallbackBase &cb)
This is intended to be the configuration used in this paper: Gavin Holland, Nitin Vaidya and Paramvir...
virtual void DoRun(void)
Implementation to actually run this TestCase.
void SwitchCh(Ptr< WifiNetDevice > dev)
Switch channel function.
virtual void DoRun(void)
Implementation to actually run this TestCase.
OFDM PHY for the 5 GHz band (Clause 17)
Every class exported by the ns3 library is enclosed in the ns3 namespace.
keep track of a set of node pointers.
Hold objects of type Ptr.
static WifiTestSuite g_wifiTestSuite
the test suite
802.11 PHY layer modelThis PHY implements a model of 802.11a.
bool Send(Ptr< Packet > packet, const Address &dest, uint16_t protocolNumber)
DSSS PHY (Clause 15) and HR/DSSS PHY (Clause 18)
void SetMobilityModel(std::string type, std::string n1="", const AttributeValue &v1=EmptyAttributeValue(), std::string n2="", const AttributeValue &v2=EmptyAttributeValue(), std::string n3="", const AttributeValue &v3=EmptyAttributeValue(), std::string n4="", const AttributeValue &v4=EmptyAttributeValue(), std::string n5="", const AttributeValue &v5=EmptyAttributeValue(), std::string n6="", const AttributeValue &v6=EmptyAttributeValue(), std::string n7="", const AttributeValue &v7=EmptyAttributeValue(), std::string n8="", const AttributeValue &v8=EmptyAttributeValue(), std::string n9="", const AttributeValue &v9=EmptyAttributeValue())
virtual void DoRun(void)
Implementation to actually run this TestCase.
uint32_t GetIfIndex(void) const
virtual ~Bug2222TestCase()
virtual void SetChannelNumber(uint8_t id)
Set channel number.
manage and create wifi channel objects for the yans model.
ObjectFactory m_propDelay
propagation delay
void Install(Ptr< Node > node) const
Aggregate an instance of a ns3::PacketSocketFactory onto the provided node.
void GetAttribute(std::string name, AttributeValue &value) const
Get the value of an attribute, raising fatal errors if unsuccessful.
create MAC layers for a ns3::WifiNetDevice.
void SendOnePacket(Ptr< LrWpanPhy > sender, Ptr< LrWpanPhy > receiver)
void SetPosition(const Vector &position)
The IEEE 802.11 SSID Information Element.
ObjectFactory m_propDelay
propagation delay
Make sure that when virtual collision occurs the wifi remote station manager is triggered and the ret...
virtual void SetType(std::string type, std::string n0="", const AttributeValue &v0=EmptyAttributeValue(), std::string n1="", const AttributeValue &v1=EmptyAttributeValue(), std::string n2="", const AttributeValue &v2=EmptyAttributeValue(), std::string n3="", const AttributeValue &v3=EmptyAttributeValue(), std::string n4="", const AttributeValue &v4=EmptyAttributeValue(), std::string n5="", const AttributeValue &v5=EmptyAttributeValue(), std::string n6="", const AttributeValue &v6=EmptyAttributeValue(), std::string n7="", const AttributeValue &v7=EmptyAttributeValue(), std::string n8="", const AttributeValue &v8=EmptyAttributeValue(), std::string n9="", const AttributeValue &v9=EmptyAttributeValue(), std::string n10="", const AttributeValue &v10=EmptyAttributeValue())
#define NS_ASSERT_MSG(condition, message)
At runtime, in debugging builds, if this condition is not true, the program prints the message to out...
uint8_t GetChannelWidth(void) const
Helper class used to assign positions and mobility models to nodes.
Address GetBroadcast(void) const
ObjectFactory m_manager
manager
Instantiate subclasses of ns3::Object.
uint32_t AddDevice(Ptr< NetDevice > device)
Associate a NetDevice to this node.
void SetRemote(PacketSocketAddress addr)
set the remote address and protocol to be used
static void AssignWifiRandomStreams(Ptr< WifiMac > mac, int64_t stream)
Ptr< Node > Get(uint32_t i) const
Get the Ptr stored in this container at a given index.
Time Seconds(double value)
Construct a Time in the indicated unit.
AttributeValue implementation for Ssid.
ObjectFactory m_manager
manager
void SetDefault(std::string name, const AttributeValue &value)
uint32_t m_received
received
void Add(Vector v)
Add a position to the list of positions.
void SendOnePacket(Ptr< WifiNetDevice > dev)
Send one packet function.
bool DefineChannelNumber(uint8_t channelNumber, WifiPhyStandard standard, uint16_t frequency, uint8_t channelWidth)
Add a channel definition to the WifiPhy.
void SendOnePacket(Ptr< WifiNetDevice > dev)
Send one packet function.
Time MicroSeconds(uint64_t value)
Construct a Time in the indicated unit.
SetChannelFrequencyTest()
Time Now(void)
create an ns3::Time instance which contains the current simulation time.
void Create(uint32_t n)
Create n nodes and append pointers to them to the end of this NodeContainer.
void TxDataFailedTrace(std::string context, Mac48Address adr)
Transmit data failed function.
void SetPositionAllocator(Ptr< PositionAllocator > allocator)
Set the position allocator which will be used to allocate the initial position of every node initiali...
handle packet fragmentation and retransmissions.
void SetAttribute(std::string name, const AttributeValue &value)
Set a single attribute, raising fatal errors if unsuccessful.
void SetStartTime(Time start)
Specify application start time.
void CreateOne(Vector pos, Ptr< YansWifiChannel > channel)
Create one function.
Set Channel Frequency Test.
virtual void DoRun(void)
Implementation to actually run this TestCase.