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));
148 dev->
Send (p, remoteAddress, 1);
155 WifiTxVector txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
168 for (
int i = 0; i < 10; i++)
170 manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, packet->
GetSize ());
173 txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
186 manager->ReportDataFailed (remoteAddress, &packetHeader, packet->
GetSize ());
188 txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
201 for (
int i = 0; i < 7; i++)
203 manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, packet->
GetSize ());
204 manager->ReportDataFailed (remoteAddress, &packetHeader, packet->
GetSize ());
206 manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, packet->
GetSize ());
208 txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
221 manager->ReportDataFailed (remoteAddress, &packetHeader, packet->
GetSize ());
223 txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
236 manager->ReportDataFailed (remoteAddress, &packetHeader, packet->
GetSize ());
237 manager->ReportDataFailed (remoteAddress, &packetHeader, packet->
GetSize ());
239 txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
252 for (
int i = 0; i < 10; i++)
254 manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, packet->
GetSize ());
257 txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
270 manager->ReportDataFailed (remoteAddress, &packetHeader, packet->
GetSize ());
272 txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
285 for (
int i = 0; i < 10; i++)
287 manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, packet->
GetSize ());
290 txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
303 for (
int i = 0; i < 10; i++)
305 manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, packet->
GetSize ());
308 txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
321 manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, packet->
GetSize ());
323 for (
int i = 0; i < 2; i++)
325 manager->ReportDataFailed (remoteAddress,&packetHeader, packet->
GetSize ());
328 txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
335 Simulator::Destroy ();
350 manager->SetAttribute (
"SuccessThreshold2",
UintegerValue (10));
368 dev->
Send (p, remoteAddress, 1);
375 WifiTxVector txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
389 for (
int i = 0; i < 3; i++)
391 manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, packet->
GetSize ());
394 txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
407 manager->ReportDataFailed (remoteAddress, &packetHeader, packet->
GetSize ());
409 txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
423 for (
int i = 0; i < 10; i++)
425 manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, packet->
GetSize ());
428 txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
442 for (
int i = 0; i < 3; i++)
444 manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, packet->
GetSize ());
447 txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
460 for (
int i = 0; i < 16 * 3; i++)
462 manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, packet->
GetSize ());
465 txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
478 manager->ReportDataFailed (remoteAddress,&packetHeader, packet->
GetSize ());
480 txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
493 for (
int i = 0; i < 16; i++)
495 manager->ReportDataFailed (remoteAddress,&packetHeader, packet->
GetSize ());
498 txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
512 manager->ReportDataFailed (remoteAddress,&packetHeader, packet->
GetSize ());
514 txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
527 for (
int i = 0; i < 3; i++)
529 manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, packet->
GetSize ());
532 txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
547 for (
int i = 0; i < 9 * 3; i++)
549 manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, packet->
GetSize ());
552 txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
559 for (
int i = 0; i < 3; i++)
561 manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, packet->
GetSize ());
564 txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
571 Simulator::Destroy ();
586 manager->SetAttribute (
"Alpha",
DoubleValue (1.25));
588 manager->SetAttribute (
"Tau",
DoubleValue (0.015));
610 dev->
Send (p, remoteAddress, 1);
643 WifiTxVector txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
660 for (
int i = 0; i < 6; i++)
662 manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, packet->
GetSize ());
665 txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
675 manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, packet->
GetSize ());
677 txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
690 for (
int i = 0; i < 4; i++)
692 manager->ReportDataFailed (remoteAddress,&packetHeader, packet->
GetSize ());
695 txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
702 manager->ReportDataFailed (remoteAddress,&packetHeader, packet->
GetSize ());
704 txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
717 for (
int i = 0; i < 7; i++)
719 manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, packet->
GetSize ());
722 txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
729 for (
int i = 0; i < 10; i++)
731 manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, packet->
GetSize ());
734 txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
741 for (
int i = 0; i < 13; i++)
743 manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, packet->
GetSize ());
746 txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
753 for (
int i = 0; i < 19; i++)
755 manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, packet->
GetSize ());
758 txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
765 for (
int i = 0; i < 23; i++)
767 manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, packet->
GetSize ());
770 txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
777 for (
int i = 0; i < 33; i++)
779 manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, packet->
GetSize ());
782 txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
789 for (
int i = 0; i < 43; i++)
791 manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, packet->
GetSize ());
794 txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
809 for (
int i = 0; i < 49; i++)
811 manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, packet->
GetSize ());
814 txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
821 manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, packet->
GetSize ());
823 txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
837 for (
int i = 0; i < 16 * 50; i++)
839 manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, packet->
GetSize ());
842 txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
855 for (
int i = 0; i < 6; i++)
857 manager->ReportDataFailed (remoteAddress,&packetHeader, packet->
GetSize ());
860 txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
873 for (
int i = 0; i < 16 * 6; i++)
875 manager->ReportDataFailed (remoteAddress,&packetHeader, packet->
GetSize ());
878 txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
891 for (
int i = 0; i < 6; i++)
893 manager->ReportDataFailed (remoteAddress,&packetHeader, packet->
GetSize ());
896 txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
907 for (
int i = 0; i < 11; i++)
909 manager->ReportDataFailed (remoteAddress,&packetHeader, packet->
GetSize ());
912 txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
927 for (
int i = 0; i < 25; i++)
929 manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, packet->
GetSize ());
932 txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
939 for (
int i = 0; i < 5; i++)
941 manager->ReportDataFailed (remoteAddress,&packetHeader, packet->
GetSize ());
944 txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
951 for (
int i = 0; i < 5; i++)
953 manager->ReportDataFailed (remoteAddress,&packetHeader, packet->
GetSize ());
956 txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
963 for (
int i = 0; i < 25; i++)
965 manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, packet->
GetSize ());
968 txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
981 for (
int i = 0; i < 16; i++)
983 for (
int j = 0; j < 25; j++)
985 manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, packet->
GetSize ());
988 for (
int j = 0; j < 5; j++)
990 manager->ReportDataFailed (remoteAddress,&packetHeader, packet->
GetSize ());
994 txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
1001 Simulator::Stop (
Seconds (10.0));
1004 Simulator::Destroy ();
1030 :
TestSuite (
"power-rate-adaptation-wifi", 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.
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
WifiMode GetMode(void) const
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.
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