|
A Discrete-Event Network Simulator
|
API
|
Go to the documentation of this file.
82 #include "ns3/command-line.h"
83 #include "ns3/config.h"
84 #include "ns3/double.h"
85 #include "ns3/string.h"
87 #include "ns3/yans-wifi-helper.h"
89 #include "ns3/mobility-helper.h"
90 #include "ns3/yans-wifi-channel.h"
91 #include "ns3/mobility-model.h"
92 #include "ns3/internet-stack-helper.h"
102 std::ostringstream oss;
104 while (socket->
Recv ())
109 oss <<
"Received one packet! Socket: " << iaddr.
GetIpv4 () <<
" port: " << iaddr.
GetPort ();
121 uint32_t pktCount,
Time pktInterval )
127 socket,
pktSize,pktCount - 1, pktInterval);
135 int main (
int argc,
char *argv[])
137 std::string phyMode (
"DsssRate1Mbps");
141 uint32_t PpacketSize = 1000;
142 uint32_t IpacketSize = 1000;
146 uint32_t numPackets = 1;
147 double interval = 1.0;
149 double distanceToRx = 100.0;
154 cmd.AddValue (
"phyMode",
"Wifi Phy mode", phyMode);
155 cmd.AddValue (
"Prss",
"Intended primary received signal strength (dBm)", Prss);
156 cmd.AddValue (
"Irss",
"Intended interfering received signal strength (dBm)", Irss);
157 cmd.AddValue (
"delta",
"time offset (microseconds) for interfering signal", delta);
158 cmd.AddValue (
"PpacketSize",
"size of application packet sent", PpacketSize);
159 cmd.AddValue (
"IpacketSize",
"size of interfering packet sent", IpacketSize);
160 cmd.AddValue (
"verbose",
"turn on all WifiNetDevice log components",
verbose);
161 cmd.Parse (argc, argv);
176 wifi.EnableLogComponents ();
192 wifi.SetRemoteStationManager (
"ns3::ConstantRateWifiManager",
196 wifiMac.
SetType (
"ns3::AdhocWifiMac");
209 positionAlloc->
Add (Vector (0.0, 0.0, 0.0));
210 positionAlloc->
Add (Vector (distanceToRx, 0.0, 0.0));
211 positionAlloc->
Add (Vector (-1 * distanceToRx, 0.0, 0.0));
212 mobility.SetPositionAllocator (positionAlloc);
213 mobility.SetMobilityModel (
"ns3::ConstantPositionMobilityModel");
222 recvSink->
Bind (local);
235 interferer->
Connect (interferingAddr);
241 NS_LOG_UNCOND (
"Primary packet RSS=" << Prss <<
" dBm and interferer RSS=" << Irss <<
" dBm at time offset=" << delta <<
" ms");
245 source, PpacketSize, numPackets, interPacketInterval);
249 interferer, IpacketSize, numPackets, interPacketInterval);
holds a vector of ns3::NetDevice pointers
a unique identifier for an interface.
#define NS_LOG_COMPONENT_DEFINE(name)
Define a Log component with a specific name.
Make it easy to create and manage PHY objects for the YANS model.
Parse command-line arguments.
virtual bool SetAllowBroadcast(bool allowBroadcast)=0
Configure whether broadcast datagram transmissions are allowed.
void Add(Vector v)
Add a position to the list of positions.
void SetPropagationDelay(std::string name, 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())
void EnablePcap(std::string prefix, Ptr< NetDevice > nd, bool promiscuous=false, bool explicitFilename=false)
Enable pcap output the indicated net device.
virtual int Bind(const Address &address)=0
Allocate a local endpoint for this socket.
static void ScheduleWithContext(uint32_t context, Time const &delay, FUNC f, Ts &&... args)
Schedule an event with the given context.
uint32_t GetId(void) const
uint16_t GetPort(void) const
Every class exported by the ns3 library is enclosed in the ns3 namespace.
helps to create WifiNetDevice objects
virtual Ptr< Node > GetNode(void) const =0
Return the node this socket is associated with.
void AddPropagationLoss(std::string name, 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())
Ipv4 addresses are stored in host order in this class.
@ DLT_IEEE802_11_RADIO
Include Radiotap link layer information.
static EventId Schedule(Time const &delay, FUNC f, Ts &&... args)
Schedule an event to expire after delay.
void SetChannel(Ptr< YansWifiChannel > channel)
static InetSocketAddress ConvertFrom(const Address &address)
Returns an InetSocketAddress which corresponds to the input Address.
This class can be used to hold variables of floating point type such as 'double' or 'float'.
void Create(uint32_t n)
Create n nodes and append pointers to them to the end of this NodeContainer.
virtual int Send(Ptr< Packet > p, uint32_t flags)=0
Send data (or dummy data) to the remote host.
void SetRecvCallback(Callback< void, Ptr< Socket > > receivedData)
Notify application when new data is available to be read.
Ptr< YansWifiChannel > Create(void) const
a polymophic address class
void Install(std::string nodeName) const
Aggregate implementations of the ns3::Ipv4, ns3::Ipv6, ns3::Udp, and ns3::Tcp classes onto the provid...
Ipv4Address GetIpv4(void) const
Ptr< Node > Get(uint32_t i) const
Get the Ptr<Node> stored in this container at a given index.
Simulation virtual time values and global simulation resolution.
virtual int Close(void)=0
Close a socket.
#define NS_LOG_UNCOND(msg)
Output the requested message unconditionally.
Callback< R, Ts... > MakeCallback(R(T::*memPtr)(Ts...), OBJ objPtr)
Build Callbacks for class method members which take varying numbers of arguments and potentially retu...
static void Run(void)
Run the simulation.
Hold variables of type string.
void SetPcapDataLinkType(SupportedPcapDataLinkTypes dlt)
Set the data link type of PCAP traces to be used.
static std::string PrintReceivedPacket(Ptr< Socket > socket)
virtual int Connect(const Address &address)=0
Initiate a connection to a remote host.
Time Seconds(double value)
Construct a Time in the indicated unit.
static void Destroy(void)
Execute the events scheduled with ScheduleDestroy().
uint32_t pktSize
packet size used for the simulation (in bytes)
keep track of a set of node pointers.
void SetType(std::string type, Args &&... args)
static Ptr< Socket > CreateSocket(Ptr< Node > node, TypeId tid)
This method wraps the creation of sockets that is performed on a given node by a SocketFactory specif...
manage and create wifi channel objects for the YANS model.
create MAC layers for a ns3::WifiNetDevice.
void SetDefault(std::string name, const AttributeValue &value)
static void GenerateTraffic(Ptr< Socket > socket, uint32_t pktSize, uint32_t pktCount, Time pktInterval)
virtual int GetSockName(Address &address) const =0
Get socket address.
static void ReceivePacket(Ptr< Socket > socket)
aggregate IP/TCP/UDP functionality to existing Nodes.
static TypeId LookupByName(std::string name)
Get a TypeId by name.
void Set(std::string name, const AttributeValue &v)
Helper class used to assign positions and mobility models to nodes.
virtual Ptr< Packet > Recv(uint32_t maxSize, uint32_t flags)=0
Read data from the socket.