21 #include "ns3/rng-seed-manager.h"
22 #include "ns3/config.h"
23 #include "ns3/data-rate.h"
24 #include "ns3/vector.h"
25 #include "ns3/string.h"
27 #include "ns3/packet-socket-address.h"
28 #include "ns3/mobility-model.h"
29 #include "ns3/yans-wifi-helper.h"
30 #include "ns3/position-allocator.h"
31 #include "ns3/packet-socket-helper.h"
32 #include "ns3/mobility-helper.h"
33 #include "ns3/nqos-wifi-mac-helper.h"
34 #include "ns3/wifi-net-device.h"
35 #include "ns3/packet-socket-server.h"
36 #include "ns3/packet-socket-client.h"
39 #include "ns3/ocb-wifi-mac.h"
40 #include "ns3/wifi-80211p-helper.h"
41 #include "ns3/wave-mac-helper.h"
49 int64_t currentStream = stream;
82 virtual void DoRun (
void);
87 Vector GetCurrentPosition (uint32_t i);
90 void PreRandomConfiguration (
void);
111 :
TestCase (
"Association time: Ap+Sta mode vs Adhoc mode vs Ocb mode")
210 "ControlMode",
StringValue (
"OfdmRate6MbpsBW10MHz"));
211 wifi.
Install (wifiPhy, wifiStaMac, mobile_node);
212 wifi.
Install (wifiPhy, wifiApMac, static_node);
223 wifiMac.
SetType (
"ns3::AdhocWifiMac");
229 "ControlMode",
StringValue (
"OfdmRate6MbpsBW10MHz"));
230 wifi.
Install (wifiPhy, wifiMac, mobile_node);
231 wifi.
Install (wifiPhy, wifiMac, static_node);
246 "ControlMode",
StringValue (
"OfdmRate6MbpsBW10MHz"));
247 wifi80211p.
Install (wifiPhy, wifi80211pMac, mobile_node);
248 wifi80211p.
Install (wifiPhy, wifi80211pMac, static_node);
268 mobility.
Install (mobile_node);
269 mobility.Install (static_node);
283 packetSocket.
Install (static_node);
284 packetSocket.
Install (mobile_node);
322 std::cout <<
"test time point for Ap-Sta mode" << std::endl;
330 Simulator::Stop (
Seconds (71.0));
332 Simulator::Destroy ();
342 std::cout <<
"test time point for Adhoc mode" << std::endl;
350 Simulator::Stop (
Seconds (71.0));
352 Simulator::Destroy ();
362 std::cout <<
"test time point for Ocb mode" << std::endl;
370 Simulator::Stop (
Seconds (71.0));
372 Simulator::Destroy ();
383 RngSeedManager::SetSeed (1);
384 RngSeedManager::SetRun (17);
uint32_t AddApplication(Ptr< Application > application)
Associate an Application to this Node.
helps to create wifi 802.11p objects of WifiNetDevice class
double x
x coordinate of vector
void SetStopTime(Time stop)
Specify application stop time.
Simulation virtual time values and global simulation resolution.
smart pointer class similar to boost::intrusive_ptr
void SetLocal(PacketSocketAddress addr)
set the local address and protocol to be used
static void AdvancePosition(Ptr< Node > node)
void MacAssoc(std::string context, Mac48Address bssid)
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())
hold variables of type string
Make it easy to create and manage PHY objects for the yans model.
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())
virtual Address GetAddress(void) const
an address for a packet socket
#define NS_ASSERT(condition)
At runtime, in debugging builds, if this condition is not true, the program prints the source file...
Vector GetPosition(void) const
OFDM PHY for the 5 GHz band (Clause 17 with 10 MHz channel bandwidth)
void ConfigureOcbMode(Ptr< Node > static_node, Ptr< Node > mobile_node)
int64_t AssignStreams(int64_t stream)
Assign a fixed random variable stream number to the random variables used by this model...
void Connect(std::string path, const CallbackBase &cb)
static OcbTestSuite ocbTestSuite
void PhyTxTrace(std::string context, Ptr< const Packet > packet, WifiMode mode, WifiPreamble preamble, uint8_t txPower)
helps to create WifiNetDevice objects
represent a single transmission modeA WifiMode is implemented by a single integer which is used to lo...
Give ns3::PacketSocket powers to ns3::Node.
void SetSingleDevice(uint32_t device)
Set the address to match only a specified NetDevice.
virtual NetDeviceContainer Install(const WifiPhyHelper &phy, const WifiMacHelper &mac, NodeContainer c) const
WifiPreamble
The type of preamble to be used by an IEEE 802.11 transmission.
Keep track of the current position and velocity of an object.
void SetChannel(Ptr< YansWifiChannel > channel)
This queue contains packets for a particular access class.
void Install(Ptr< Node > node) const
"Layout" a single node according to the current position allocator 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.
virtual ~OcbWifiMacTestCase(void)
virtual void SetStandard(enum WifiPhyStandard standard)
Vector GetCurrentPosition(uint32_t i)
Ptr< NetDevice > GetDevice(uint32_t index) const
Retrieve the index-th NetDevice associated to this node.
Callback< R > MakeCallback(R(T::*memPtr)(void), OBJ objPtr)
void PhyRxOkTrace(std::string context, Ptr< const Packet > packet, double snr, WifiMode mode, enum WifiPreamble preamble)
void PhyRxOkTrace(std::string context, Ptr< const Packet > packet, double snr, WifiMode mode, enum WifiPreamble preamble)
int64_t AssignStreams(int64_t stream)
Assign a fixed random variable stream number to the random variables used by this model...
create non QoS-enabled MAC layers for a ns3::WifiNetDevice.
uint32_t PeekHeader(Header &header) const
Deserialize but does not remove the header from the internal buffer.
void AdvancePosition(Ptr< Node > node)
virtual NetDeviceContainer Install(const WifiPhyHelper &phy, const WifiMacHelper &macHelper, NodeContainer c) const
void SetPhysicalAddress(const Address address)
Set the destination address.
keep track of a set of node pointers.
void PhyTxTrace(std::string context, Ptr< const Packet > packet, WifiMode mode, WifiPreamble preamble, uint8_t txPower)
void PostDeviceConfiguration(Ptr< Node > static_node, Ptr< Node > mobile_node)
virtual void DoRun(void)
static-node:0 <-— mobile-node:1
manage and create wifi channel objects for the yans model.
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
void AddTestCase(TestCase *testCase) NS_DEPRECATED
Add an individual child TestCase case to this TestCase.
void SetPosition(const Vector &position)
The IEEE 802.11 SSID Information Element.
int64_t GetNanoSeconds(void) const
Get an approximation of the time stored in this instance in the indicated unit.
static void AssignWifiRandomStreams(Ptr< WifiMac > mac, int64_t stream)
Helper class used to assign positions and mobility models to nodes.
void ConfigureApStaMode(Ptr< Node > static_node, Ptr< Node > mobile_node)
void SetRemote(PacketSocketAddress addr)
set the remote address and protocol to be used
Time Now(void)
create an ns3::Time instance which contains the current simulation time.
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.
hold objects of type ns3::Ssid
void SetProtocol(uint16_t protocol)
Set the protocol.
Ptr< WifiMac > GetMac(void) const
void Create(uint32_t n)
Create n nodes and append pointers to them to the end of this NodeContainer.
void PreRandomConfiguration(void)
handle packet fragmentation and retransmissions.
#define NS_TEST_ASSERT_MSG_GT(actual, limit, msg)
Test that an actual value is greater than a limit and report and abort if not.
void ConfigureAdhocMode(Ptr< Node > static_node, Ptr< Node > mobile_node)
Ptr< T > GetObject(void) const
void SetStartTime(Time start)
Specify application start time.
#define NS_TEST_ASSERT_MSG_LT(actual, limit, msg)
Test that an actual value is less than a limit and report and abort if not.