22 #include "ns3/wifi-net-device.h" 23 #include "ns3/yans-wifi-channel.h" 24 #include "ns3/yans-wifi-phy.h" 25 #include "ns3/adhoc-wifi-mac.h" 26 #include "ns3/constant-position-mobility-model.h" 27 #include "ns3/simulator.h" 43 virtual void DoRun (
void);
98 phy->SetNTxPower (18);
99 phy->SetTxPowerStart (0);
100 phy->SetTxPowerEnd (17);
111 mac->SetAddress (Mac48Address::Allocate ());
114 dev->SetRemoteStationManager (manager);
115 node->AddDevice (dev);
132 manager->SetAttribute (
"SuccessThreshold",
UintegerValue (10));
139 packetHeader.
SetAddr1 (remoteAddress);
149 dev->
Send (p, remoteAddress, 1);
156 WifiTxVector txVector = manager->GetDataTxVector (packetHeader);
169 for (
int i = 0; i < 10; i++)
171 manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, txVector, packet->
GetSize ());
174 txVector = manager->GetDataTxVector (packetHeader);
187 manager->ReportDataFailed (remoteAddress, &packetHeader, packet->
GetSize ());
189 txVector = manager->GetDataTxVector (packetHeader);
202 for (
int i = 0; i < 7; i++)
204 manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, txVector, packet->
GetSize ());
205 manager->ReportDataFailed (remoteAddress, &packetHeader, packet->
GetSize ());
207 manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, txVector, packet->
GetSize ());
209 txVector = manager->GetDataTxVector (packetHeader);
222 manager->ReportDataFailed (remoteAddress, &packetHeader, packet->
GetSize ());
224 txVector = manager->GetDataTxVector (packetHeader);
237 manager->ReportDataFailed (remoteAddress, &packetHeader, packet->
GetSize ());
238 manager->ReportDataFailed (remoteAddress, &packetHeader, packet->
GetSize ());
240 txVector = manager->GetDataTxVector (packetHeader);
253 for (
int i = 0; i < 10; i++)
255 manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, txVector, packet->
GetSize ());
258 txVector = manager->GetDataTxVector (packetHeader);
271 manager->ReportDataFailed (remoteAddress, &packetHeader, packet->
GetSize ());
273 txVector = manager->GetDataTxVector (packetHeader);
286 for (
int i = 0; i < 10; i++)
288 manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, txVector, packet->
GetSize ());
291 txVector = manager->GetDataTxVector (packetHeader);
304 for (
int i = 0; i < 10; i++)
306 manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, txVector, packet->
GetSize ());
309 txVector = manager->GetDataTxVector (packetHeader);
322 manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, txVector, packet->
GetSize ());
324 for (
int i = 0; i < 2; i++)
326 manager->ReportDataFailed (remoteAddress,&packetHeader, packet->
GetSize ());
329 txVector = manager->GetDataTxVector (packetHeader);
336 Simulator::Destroy ();
351 manager->SetAttribute (
"SuccessThreshold2",
UintegerValue (10));
360 packetHeader.
SetAddr1 (remoteAddress);
370 dev->
Send (p, remoteAddress, 1);
377 WifiTxVector txVector = manager->GetDataTxVector (packetHeader);
391 for (
int i = 0; i < 3; i++)
393 manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, txVector, packet->
GetSize ());
396 txVector = manager->GetDataTxVector (packetHeader);
409 manager->ReportDataFailed (remoteAddress, &packetHeader, packet->
GetSize ());
411 txVector = manager->GetDataTxVector (packetHeader);
425 for (
int i = 0; i < 10; i++)
427 manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, txVector, packet->
GetSize ());
430 txVector = manager->GetDataTxVector (packetHeader);
444 for (
int i = 0; i < 3; i++)
446 manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, txVector, packet->
GetSize ());
449 txVector = manager->GetDataTxVector (packetHeader);
462 for (
int i = 0; i < 16 * 3; i++)
464 manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, txVector, packet->
GetSize ());
467 txVector = manager->GetDataTxVector (packetHeader);
480 manager->ReportDataFailed (remoteAddress,&packetHeader, packet->
GetSize ());
482 txVector = manager->GetDataTxVector (packetHeader);
495 for (
int i = 0; i < 16; i++)
497 manager->ReportDataFailed (remoteAddress,&packetHeader, packet->
GetSize ());
500 txVector = manager->GetDataTxVector (packetHeader);
514 manager->ReportDataFailed (remoteAddress,&packetHeader, packet->
GetSize ());
516 txVector = manager->GetDataTxVector (packetHeader);
529 for (
int i = 0; i < 3; i++)
531 manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, txVector, packet->
GetSize ());
534 txVector = manager->GetDataTxVector (packetHeader);
549 for (
int i = 0; i < 9 * 3; i++)
551 manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, txVector, packet->
GetSize ());
554 txVector = manager->GetDataTxVector (packetHeader);
561 for (
int i = 0; i < 3; i++)
563 manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, txVector, packet->
GetSize ());
566 txVector = manager->GetDataTxVector (packetHeader);
573 Simulator::Destroy ();
588 manager->SetAttribute (
"Alpha",
DoubleValue (1.25));
590 manager->SetAttribute (
"Tau",
DoubleValue (0.015));
603 packetHeader.
SetAddr1 (remoteAddress);
613 dev->
Send (p, remoteAddress, 1);
646 WifiTxVector txVector = manager->GetDataTxVector (packetHeader);
663 for (
int i = 0; i < 6; i++)
665 manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, txVector, packet->
GetSize ());
668 txVector = manager->GetDataTxVector (packetHeader);
678 manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, txVector, packet->
GetSize ());
680 txVector = manager->GetDataTxVector (packetHeader);
693 for (
int i = 0; i < 4; i++)
695 manager->ReportDataFailed (remoteAddress,&packetHeader, packet->
GetSize ());
698 txVector = manager->GetDataTxVector (packetHeader);
705 manager->ReportDataFailed (remoteAddress,&packetHeader, packet->
GetSize ());
707 txVector = manager->GetDataTxVector (packetHeader);
720 for (
int i = 0; i < 7; i++)
722 manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, txVector, packet->
GetSize ());
725 txVector = manager->GetDataTxVector (packetHeader);
732 for (
int i = 0; i < 10; i++)
734 manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, txVector, packet->
GetSize ());
737 txVector = manager->GetDataTxVector (packetHeader);
744 for (
int i = 0; i < 13; i++)
746 manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, txVector, packet->
GetSize ());
749 txVector = manager->GetDataTxVector (packetHeader);
756 for (
int i = 0; i < 19; i++)
758 manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, txVector, packet->
GetSize ());
761 txVector = manager->GetDataTxVector (packetHeader);
768 for (
int i = 0; i < 23; i++)
770 manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, txVector, packet->
GetSize ());
773 txVector = manager->GetDataTxVector (packetHeader);
780 for (
int i = 0; i < 33; i++)
782 manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, txVector, packet->
GetSize ());
785 txVector = manager->GetDataTxVector (packetHeader);
792 for (
int i = 0; i < 43; i++)
794 manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, txVector, packet->
GetSize ());
797 txVector = manager->GetDataTxVector (packetHeader);
812 for (
int i = 0; i < 49; i++)
814 manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, txVector, packet->
GetSize ());
817 txVector = manager->GetDataTxVector (packetHeader);
824 manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, txVector, packet->
GetSize ());
826 txVector = manager->GetDataTxVector (packetHeader);
840 for (
int i = 0; i < 16 * 50; i++)
842 manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, txVector, packet->
GetSize ());
845 txVector = manager->GetDataTxVector (packetHeader);
858 for (
int i = 0; i < 6; i++)
860 manager->ReportDataFailed (remoteAddress,&packetHeader, packet->
GetSize ());
863 txVector = manager->GetDataTxVector (packetHeader);
876 for (
int i = 0; i < 16 * 6; i++)
878 manager->ReportDataFailed (remoteAddress,&packetHeader, packet->
GetSize ());
881 txVector = manager->GetDataTxVector (packetHeader);
894 for (
int i = 0; i < 6; i++)
896 manager->ReportDataFailed (remoteAddress,&packetHeader, packet->
GetSize ());
899 txVector = manager->GetDataTxVector (packetHeader);
910 for (
int i = 0; i < 11; i++)
912 manager->ReportDataFailed (remoteAddress,&packetHeader, packet->
GetSize ());
915 txVector = manager->GetDataTxVector (packetHeader);
930 for (
int i = 0; i < 25; i++)
932 manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, txVector, packet->
GetSize ());
935 txVector = manager->GetDataTxVector (packetHeader);
942 for (
int i = 0; i < 5; i++)
944 manager->ReportDataFailed (remoteAddress,&packetHeader, packet->
GetSize ());
947 txVector = manager->GetDataTxVector (packetHeader);
954 for (
int i = 0; i < 5; i++)
956 manager->ReportDataFailed (remoteAddress,&packetHeader, packet->
GetSize ());
959 txVector = manager->GetDataTxVector (packetHeader);
966 for (
int i = 0; i < 25; i++)
968 manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, txVector, packet->
GetSize ());
971 txVector = manager->GetDataTxVector (packetHeader);
984 for (
int i = 0; i < 16; i++)
986 for (
int j = 0; j < 25; j++)
988 manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, txVector, packet->
GetSize ());
991 for (
int j = 0; j < 5; j++)
993 manager->ReportDataFailed (remoteAddress,&packetHeader, packet->
GetSize ());
997 txVector = manager->GetDataTxVector (packetHeader);
1004 Simulator::Stop (
Seconds (10.0));
1007 Simulator::Destroy ();
1033 :
TestSuite (
"wifi-power-rate-adaptation", UNIT)
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...
uint32_t GetSize(void) const
Returns the the size in bytes of the packet (including the zero-filled initial payload).
void TestAparf()
Test aparf function.
Ptr< NetDevice > GetDevice(uint32_t index) const
Retrieve the index-th NetDevice associated to this node.
void SetTypeId(TypeId tid)
Set the TypeId of the Objects to be created by this factory.
Power Rate Adaptation Test.
uint16_t GetGuardInterval(void) const
represent a single transmission modeA WifiMode is implemented by a single integer which is used to lo...
Power Rate Adaptation Test Suite.
WifiMode GetMode(uint16_t staId=SU_STA_ID) const
If this TX vector is associated with an SU PPDU, return the selected payload transmission mode...
Ptr< WifiRemoteStationManager > GetRemoteStationManager(void) const
Ptr< Object > Create(void) const
Create an Object instance of the configured TypeId.
static PowerRateAdaptationTestSuite g_powerRateAdaptationTestSuite
the test suite
void AddTestCase(TestCase *testCase, TestDuration duration=QUICK)
Add an individual child TestCase to this test suite.
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.
ObjectFactory m_manager
manager
hold a list of per-remote-station state.
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.
Time Seconds(double value)
Construct a Time in the indicated unit.
virtual void DoRun(void)
Implementation to actually run this TestCase.
uint8_t GetTxPowerLevel(void) const
uint16_t GetChannelWidth(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.
uint64_t GetDataRate(uint16_t channelWidth, uint16_t guardInterval, uint8_t nss) const