21 #include "ns3/wifi-net-device.h"
22 #include "ns3/yans-wifi-channel.h"
23 #include "ns3/adhoc-wifi-mac.h"
24 #include "ns3/constant-position-mobility-model.h"
25 #include "ns3/simulator.h"
27 #include "ns3/double.h"
42 virtual void DoRun (
void);
88 phy->SetChannel (channel);
90 phy->SetMobility (mobility);
96 phy->SetNTxPower (18);
97 phy->SetTxPowerStart (0);
98 phy->SetTxPowerEnd (17);
109 mac->SetAddress (Mac48Address::Allocate ());
112 dev->SetRemoteStationManager (manager);
130 manager->SetAttribute (
"SuccessThreshold",
UintegerValue (10));
146 dev->
Send (p, remoteAddress, 1);
153 WifiTxVector txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
166 for (
int i = 0; i < 10; i++)
168 manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0);
171 txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
184 manager->ReportDataFailed (remoteAddress, &packetHeader);
186 txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
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);
219 manager->ReportDataFailed (remoteAddress, &packetHeader);
221 txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
234 manager->ReportDataFailed (remoteAddress, &packetHeader);
235 manager->ReportDataFailed (remoteAddress, &packetHeader);
237 txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
250 for (
int i = 0; i < 10; i++)
252 manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0);
255 txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
268 manager->ReportDataFailed (remoteAddress, &packetHeader);
270 txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
283 for (
int i = 0; i < 10; i++)
285 manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0);
288 txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
301 for (
int i = 0; i < 10; i++)
303 manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0);
306 txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
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);
333 Simulator::Destroy ();
348 manager->SetAttribute (
"SuccessThreshold2",
UintegerValue (10));
366 dev->
Send (p, remoteAddress, 1);
373 WifiTxVector txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
387 for (
int i = 0; i < 3; i++)
389 manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0);
392 txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
405 manager->ReportDataFailed (remoteAddress, &packetHeader);
407 txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
421 for (
int i = 0; i < 10; i++)
423 manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0);
426 txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
440 for (
int i = 0; i < 3; i++)
442 manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0);
445 txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
458 for (
int i = 0; i < 16 * 3; i++)
460 manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0);
463 txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
476 manager->ReportDataFailed (remoteAddress,&packetHeader);
478 txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
491 for (
int i = 0; i < 16; i++)
493 manager->ReportDataFailed (remoteAddress,&packetHeader);
496 txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
510 manager->ReportDataFailed (remoteAddress,&packetHeader);
512 txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
525 for (
int i = 0; i < 3; i++)
527 manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0);
530 txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
545 for (
int i = 0; i < 9 * 3; i++)
547 manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0);
550 txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
557 for (
int i = 0; i < 3; i++)
559 manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0);
562 txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
569 Simulator::Destroy ();
584 manager->SetAttribute (
"Alpha",
DoubleValue (1.25));
586 manager->SetAttribute (
"Tau",
DoubleValue (0.015));
608 dev->
Send (p, remoteAddress, 1);
641 WifiTxVector txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
658 for (
int i = 0; i < 6; i++)
660 manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0);
663 txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
673 manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0);
675 txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
688 for (
int i = 0; i < 4; i++)
690 manager->ReportDataFailed (remoteAddress,&packetHeader);
693 txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
700 manager->ReportDataFailed (remoteAddress,&packetHeader);
702 txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
715 for (
int i = 0; i < 7; i++)
717 manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0);
720 txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
727 for (
int i = 0; i < 10; i++)
729 manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0);
732 txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
739 for (
int i = 0; i < 13; i++)
741 manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0);
744 txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
751 for (
int i = 0; i < 19; i++)
753 manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0);
756 txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
763 for (
int i = 0; i < 23; i++)
765 manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0);
768 txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
775 for (
int i = 0; i < 33; i++)
777 manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0);
780 txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
787 for (
int i = 0; i < 43; i++)
789 manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0);
792 txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
807 for (
int i = 0; i < 49; i++)
809 manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0);
812 txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
819 manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0);
821 txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
835 for (
int i = 0; i < 16 * 50; i++)
837 manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0);
840 txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
853 for (
int i = 0; i < 6; i++)
855 manager->ReportDataFailed (remoteAddress,&packetHeader);
858 txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
871 for (
int i = 0; i < 16 * 6; i++)
873 manager->ReportDataFailed (remoteAddress,&packetHeader);
876 txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
889 for (
int i = 0; i < 6; i++)
891 manager->ReportDataFailed (remoteAddress,&packetHeader);
894 txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
905 for (
int i = 0; i < 11; i++)
907 manager->ReportDataFailed (remoteAddress,&packetHeader);
910 txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
925 for (
int i = 0; i < 25; i++)
927 manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0);
930 txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
937 for (
int i = 0; i < 5; i++)
939 manager->ReportDataFailed (remoteAddress,&packetHeader);
942 txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
949 for (
int i = 0; i < 5; i++)
951 manager->ReportDataFailed (remoteAddress,&packetHeader);
954 txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
961 for (
int i = 0; i < 25; i++)
963 manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0);
966 txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
979 for (
int i = 0; i < 16; i++)
981 for (
int j = 0; j < 25; j++)
983 manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0);
986 for (
int j = 0; j < 5; j++)
988 manager->ReportDataFailed (remoteAddress,&packetHeader);
992 txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
999 Simulator::Stop (
Seconds (10.0));
1002 Simulator::Destroy ();
1028 :
TestSuite (
"power-rate-adaptation-wifi", UNIT)
uint16_t GetGuardInterval(void) const
PowerRateAdaptationTest()
PowerRateAdaptationTestSuite()
AttributeValue implementation for Boolean.
This class mimics the TXVECTOR which is to be passed to the PHY in order to define the parameters whi...
void TestAparf()
Test aparf function.
void SetTypeId(TypeId tid)
Set the TypeId of the Objects to be created by this factory.
Power Rate Adaptation Test.
represent a single transmission modeA WifiMode is implemented by a single integer which is used to lo...
uint8_t GetTxPowerLevel(void) const
Power Rate Adaptation Test Suite.
uint8_t GetChannelWidth(void) const
Ptr< WifiRemoteStationManager > GetRemoteStationManager(void) const
static PowerRateAdaptationTestSuite g_powerRateAdaptationTestSuite
the test suite
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.
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.
uint64_t GetDataRate(uint8_t channelWidth, uint16_t guardInterval, uint8_t nss) const
ObjectFactory m_manager
manager
Ptr< NetDevice > GetDevice(uint32_t index) const
Retrieve the index-th NetDevice associated to this node.
hold a list of per-remote-station state.
OFDM PHY for the 5 GHz band (Clause 17)
Every class exported by the ns3 library is enclosed in the ns3 namespace.
bool Send(Ptr< Packet > packet, const Address &dest, uint16_t protocolNumber)
Ptr< Node > ConfigureNode()
Configure nde function.
void TestParf()
Test parf function.
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
This class can be used to hold variables of floating point type such as 'double' or 'float'...
void TestRrpaa()
Test rrpaa function.
void SetAttribute(std::string name, const AttributeValue &value)
Set a single attribute, raising fatal errors if unsuccessful.