21 #include "ns3/wifi-net-device.h"
22 #include "ns3/yans-wifi-channel.h"
23 #include "ns3/adhoc-wifi-mac.h"
24 #include "ns3/yans-wifi-phy.h"
25 #include "ns3/parf-wifi-manager.h"
26 #include "ns3/propagation-delay-model.h"
27 #include "ns3/propagation-loss-model.h"
28 #include "ns3/error-rate-model.h"
29 #include "ns3/yans-error-rate-model.h"
30 #include "ns3/constant-position-mobility-model.h"
32 #include "ns3/simulator.h"
34 #include "ns3/object-factory.h"
35 #include "ns3/dca-txop.h"
36 #include "ns3/mac-rx-middle.h"
37 #include "ns3/pointer.h"
38 #include "ns3/rng-seed-manager.h"
39 #include "ns3/edca-txop-n.h"
40 #include "ns3/config.h"
41 #include "ns3/boolean.h"
50 virtual void DoRun (
void);
90 phy->SetMobility (mobility);
97 phy->SetTxPowerStart(0);
98 phy->SetTxPowerEnd(17);
109 mac->SetAddress (Mac48Address::Allocate ());
112 dev->SetRemoteStationManager (manager);
146 dev->
Send (p, remoteAddress, 1);
153 WifiTxVector txVector = manager->GetDataTxVector(remoteAddress,&packetHeader,packet,packet->
GetSize());
166 for(
int i = 0; i<10; i++)
168 manager->ReportDataOk(remoteAddress, &packetHeader, 0, ackMode, 0);
171 txVector = manager->GetDataTxVector(remoteAddress,&packetHeader,packet,packet->
GetSize());
184 manager->ReportDataFailed(remoteAddress,&packetHeader);
186 txVector = manager->GetDataTxVector(remoteAddress,&packetHeader,packet,packet->
GetSize());
199 for(
int i = 0; i<7; i++)
201 manager->ReportDataOk(remoteAddress, &packetHeader, 0, ackMode, 0);
202 manager->ReportDataFailed(remoteAddress,&packetHeader);
204 manager->ReportDataOk(remoteAddress, &packetHeader, 0, ackMode, 0);
206 txVector = manager->GetDataTxVector(remoteAddress,&packetHeader,packet,packet->
GetSize());
219 manager->ReportDataFailed(remoteAddress,&packetHeader);
221 txVector = manager->GetDataTxVector(remoteAddress,&packetHeader,packet,packet->
GetSize());
234 manager->ReportDataFailed(remoteAddress,&packetHeader);
235 manager->ReportDataFailed(remoteAddress,&packetHeader);
237 txVector = manager->GetDataTxVector(remoteAddress,&packetHeader,packet,packet->
GetSize());
250 for(
int i = 0; i<10; i++)
252 manager->ReportDataOk(remoteAddress, &packetHeader, 0, ackMode, 0);
255 txVector = manager->GetDataTxVector(remoteAddress,&packetHeader,packet,packet->
GetSize());
268 manager->ReportDataFailed(remoteAddress,&packetHeader);
270 txVector = manager->GetDataTxVector(remoteAddress,&packetHeader,packet,packet->
GetSize());
283 for(
int i = 0; i<10; i++)
285 manager->ReportDataOk(remoteAddress, &packetHeader, 0, ackMode, 0);
288 txVector = manager->GetDataTxVector(remoteAddress,&packetHeader,packet,packet->
GetSize());
301 for(
int i = 0; i<10; i++)
303 manager->ReportDataOk(remoteAddress, &packetHeader, 0, ackMode, 0);
306 txVector = manager->GetDataTxVector(remoteAddress,&packetHeader,packet,packet->
GetSize());
319 manager->ReportDataOk(remoteAddress, &packetHeader, 0, ackMode, 0);
321 for(
int i = 0; i<2; i++)
323 manager->ReportDataFailed(remoteAddress,&packetHeader);
326 txVector = manager->GetDataTxVector(remoteAddress,&packetHeader,packet,packet->
GetSize());
333 Simulator::Stop (
Seconds (10.0));
336 Simulator::Destroy ();
352 manager->SetAttribute(
"SuccessThreshold 2",
UintegerValue(10));
370 dev->
Send (p, remoteAddress, 1);
377 WifiTxVector txVector = manager->GetDataTxVector(remoteAddress,&packetHeader,packet,packet->
GetSize());
391 for(
int i = 0; i<3; i++)
393 manager->ReportDataOk(remoteAddress, &packetHeader, 0, ackMode, 0);
396 txVector = manager->GetDataTxVector(remoteAddress,&packetHeader,packet,packet->
GetSize());
409 manager->ReportDataFailed(remoteAddress,&packetHeader);
411 txVector = manager->GetDataTxVector(remoteAddress,&packetHeader,packet,packet->
GetSize());
425 for(
int i = 0; i<10; i++)
427 manager->ReportDataOk(remoteAddress, &packetHeader, 0, ackMode, 0);
430 txVector = manager->GetDataTxVector(remoteAddress,&packetHeader,packet,packet->
GetSize());
444 for(
int i = 0; i<3; i++)
446 manager->ReportDataOk(remoteAddress, &packetHeader, 0, ackMode, 0);
449 txVector = manager->GetDataTxVector(remoteAddress,&packetHeader,packet,packet->
GetSize());
462 for(
int i = 0; i<16*3; i++)
464 manager->ReportDataOk(remoteAddress, &packetHeader, 0, ackMode, 0);
467 txVector = manager->GetDataTxVector(remoteAddress,&packetHeader,packet,packet->
GetSize());
480 manager->ReportDataFailed(remoteAddress,&packetHeader);
482 txVector = manager->GetDataTxVector(remoteAddress,&packetHeader,packet,packet->
GetSize());
495 for(
int i = 0; i<16; i++)
497 manager->ReportDataFailed(remoteAddress,&packetHeader);
500 txVector = manager->GetDataTxVector(remoteAddress,&packetHeader,packet,packet->
GetSize());
514 manager->ReportDataFailed(remoteAddress,&packetHeader);
516 txVector = manager->GetDataTxVector(remoteAddress,&packetHeader,packet,packet->
GetSize());
529 for(
int i = 0; i<3; i++)
531 manager->ReportDataOk(remoteAddress, &packetHeader, 0, ackMode, 0);
534 txVector = manager->GetDataTxVector(remoteAddress,&packetHeader,packet,packet->
GetSize());
549 for(
int i = 0; i<9*3; i++)
551 manager->ReportDataOk(remoteAddress, &packetHeader, 0, ackMode, 0);
554 txVector = manager->GetDataTxVector(remoteAddress,&packetHeader,packet,packet->
GetSize());
561 for(
int i = 0; i<3; i++)
563 manager->ReportDataOk(remoteAddress, &packetHeader, 0, ackMode, 0);
566 txVector = manager->GetDataTxVector(remoteAddress,&packetHeader,packet,packet->
GetSize());
573 Simulator::Stop (
Seconds (10.0));
576 Simulator::Destroy ();
596 :
TestSuite (
"power-rate-adaptation-wifi", UNIT)
PowerRateAdaptationTest()
PowerRateAdaptationTestSuite()
This class mimics the TXVECTOR which is to be passed to the PHY in order to define the parameters whi...
void SetTypeId(TypeId tid)
Set the TypeId of the Objects to be created by this factory.
uint32_t GetSize(void) const
Returns the the size in bytes of the packet (including the zero-filled initial payload).
represent a single transmission modeA WifiMode is implemented by a single integer which is used to lo...
uint8_t GetTxPowerLevel(void) const
Ptr< WifiRemoteStationManager > GetRemoteStationManager(void) const
void AddTestCase(TestCase *testCase, enum TestDuration duration)
Add an individual child TestCase to this test suite.
static PowerRateAdaptationTestSuite g_powerRateAdaptationTestSuite
Ptr< Object > Create(void) const
Create an Object instance of the configured TypeId.
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.
Ptr< NetDevice > GetDevice(uint32_t index) const
Retrieve the index-th NetDevice associated to this node.
hold a list of per-remote-station state.
void SetChannel(Ptr< YansWifiChannel > channel)
Set the YansWifiChannel this YansWifiPhy is to be connected to.
OFDM PHY for the 5 GHz band (Clause 17)
Every class exported by the ns3 library is enclosed in the ns3 namespace.
virtual bool Send(Ptr< Packet > packet, const Address &dest, uint16_t protocolNumber)
Ptr< Node > ConfigureNode()
Instantiate subclasses of ns3::Object.
uint32_t AddDevice(Ptr< NetDevice > device)
Associate a NetDevice to this node.
Time Seconds(double value)
Construct a Time in the indicated unit.
virtual void DoRun(void)
Implementation to actually run this TestCase.
WifiMode GetMode(void) const
void SetAttribute(std::string name, const AttributeValue &value)
Set a single attribute, raising fatal errors if unsuccessful.
uint64_t GetDataRate(void) const