46 #include "ns3/core-module.h" 47 #include "ns3/network-module.h" 48 #include "ns3/mobility-module.h" 49 #include "ns3/stats-module.h" 50 #include "ns3/applications-module.h" 71 m_gnudatfile (
"uan-cw-example.gpl"),
72 m_asciitracefile (
"uan-cw-example.asc"),
73 m_bhCfgFile (
"uan-apps/dat/default.cfg")
90 double avgThroughput = 0.0;
91 for (uint32_t i=0; i<
m_avgs; i++)
101 SeedManager::SetRun (SeedManager::GetRun () + 1);
103 NS_LOG_DEBUG (
"Average for cw=" << cw <<
" over " <<
m_avgs <<
" runs: " << avgThroughput);
112 for (; it !=
nodes.End (); it++)
124 while ((packet = socket->
Recv ()))
144 #ifdef UAN_PROP_BH_INSTALLED 148 #endif //UAN_PROP_BH_INSTALLED 176 <<
" min. range " << minr);
178 mobility.SetPositionAllocator (pos);
179 mobility.SetMobilityModel (
"ns3::ConstantPositionMobilityModel");
205 for (uint32_t an = 0; an <
m_avgs; an++)
216 TypeId psfid = TypeId::LookupByName (
"ns3::PacketSocketFactory");
222 Ptr<Socket> sinkSocket = Socket::CreateSocket (sinkNode, psfid);
223 sinkSocket->
Bind (socket);
229 if (!ascii.is_open ())
242 for (uint32_t i=0; i < nc.
GetN (); i++)
246 for (uint32_t i=0; i <
sink.GetN (); i++)
251 for (uint32_t i=0; i <
devices.GetN (); i++)
255 for (uint32_t i=0; i < sinkdev.
GetN (); i++)
260 Simulator::Destroy ();
266 main (
int argc,
char **argv)
272 std::string gnudatfile (
"cwexpgnuout.dat");
273 std::string perModel =
"ns3::UanPhyPerGenDefault";
274 std::string sinrModel =
"ns3::UanPhyCalcSinrDefault";
277 cmd.AddValue (
"NumNodes",
"Number of transmitting nodes", exp.
m_numNodes);
278 cmd.AddValue (
"Depth",
"Depth of transmitting and sink nodes", exp.
m_depth);
279 cmd.AddValue (
"RegionSize",
"Size of boundary in meters", exp.
m_boundary);
280 cmd.AddValue (
"PacketSize",
"Generated packet size in bytes", exp.
m_packetSize);
281 cmd.AddValue (
"DataRate",
"DataRate in bps", exp.
m_dataRate);
282 cmd.AddValue (
"CwMin",
"Min CW to simulate", exp.
m_cwMin);
283 cmd.AddValue (
"CwMax",
"Max CW to simulate", exp.
m_cwMax);
284 cmd.AddValue (
"SlotTime",
"Slot time duration", exp.
m_slotTime);
285 cmd.AddValue (
"Averages",
"Number of topologies to test for each cw point", exp.
m_avgs);
286 cmd.AddValue (
"GnuFile",
"Name for GNU Plot output", exp.
m_gnudatfile);
287 cmd.AddValue (
"PerModel",
"PER model name", perModel);
288 cmd.AddValue (
"SinrModel",
"SINR model name", sinrModel);
289 cmd.AddValue (
"Quiet",
"Run in quiet mode (disable logging)", quiet);
290 cmd.Parse (argc, argv);
305 mode = UanTxModeFactory::CreateMode (UanTxMode::FSK, exp.
m_dataRate,
312 uan.SetPhy (
"ns3::UanPhyGen",
UAN configuration helper.
Helper class for UAN CW MAC example.
holds a vector of ns3::Application pointers.
Ptr< NetDevice > Get(uint32_t i) const
Get the Ptr<NetDevice> stored in this container at a given index.
Simulation virtual time values and global simulation resolution.
uint32_t m_bytesTotal
Total bytes received.
Vector GetPosition(Ptr< Node > node)
Class to represent a 2D points plot.
std::vector< Ptr< Node > >::const_iterator Iterator
Node container iterator.
uint32_t GetSize(void) const
Returns the the size in bytes of the packet (including the zero-filled initial payload).
Hold variables of type string.
void Set(std::string path, const AttributeValue &value)
void AggregateObject(Ptr< Object > other)
Aggregate two Objects together.
double GetSeconds(void) const
Get an approximation of the time stored in this instance in the indicated unit.
Time m_slotTime
Slot time duration.
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...
#define NS_LOG_COMPONENT_DEFINE(name)
Define a Log component with a specific name.
void SetTypeId(TypeId tid)
Set the TypeId of the Objects to be created by this factory.
void IncrementCw(uint32_t cw)
Compute average throughput for a set of runs, then increment CW.
void AddDataset(const GnuplotDataset &dataset)
Container for UanTxModes.
#define NS_FATAL_ERROR(msg)
Report a fatal error with a message and terminate.
uint32_t m_avgs
Number of topologies to test for each cw point.
void ReceivePacket(Ptr< Socket > socket)
Object to create transport layer instances that provide a socket API to applications.
A helper to make it easier to instantiate an ns3::OnOffApplication on a set of nodes.
Give ns3::PacketSocket powers to ns3::Node.
void SetSingleDevice(uint32_t device)
Set the address to match only a specified NetDevice.
std::string m_gnudatfile
Name for GNU Plot output, default uan-cw-example.gpl.
a polymophic address class
Keep track of the current position and velocity of an object.
double m_depth
Depth of transmitting and sink nodes.
ApplicationContainer Install(NodeContainer c) const
Install an ns3::OnOffApplication on each node of the input container configured with all the attribut...
double Run(Parameters params)
uint32_t m_cwMin
Min CW to simulate.
void LogComponentEnable(char const *name, enum LogLevel level)
Enable the logging output associated with that log component.
a simple class to generate gnuplot-ready plotting commands from a set of datasets.
void SetMac(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())
Set MAC attributes.
AttributeValue implementation for Time.
Ptr< Object > Create(void) const
Create an Object instance of the configured TypeId.
Hold an unsigned integer type.
Abstraction of packet modulation information.
holds a vector of ns3::NetDevice pointers
Callback< R > MakeCallback(R(T::*memPtr)(void), OBJ objPtr)
void GenerateOutput(std::ostream &os)
Writes gnuplot commands and data values to a single output stream.
Calculate packet error probability, based on received SINR and modulation (mode). ...
Gnuplot2dDataset m_data
Container for the simulation data.
void Add(double x, double y)
void SetRecvCallback(Callback< void, Ptr< Socket > >)
Notify application when new data is available to be read.
std::vector< double > m_throughputs
Throughput for each run.
void Start(Time start)
Arrange for all of the Applications in this container to Start() at the Time given as a parameter...
Parse command-line arguments.
uint32_t GetN(void) const
Get the number of Ptr<Node> stored in this container.
Ptr< T > GetObject(void) const
Get a pointer to the requested aggregated Object.
Time m_simTime
Simulation run time, default 1000 s.
virtual int Bind(const Address &address)=0
Allocate a local endpoint for this socket.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
void SetPhysicalAddress(const Address address)
Set the destination address.
std::string m_asciitracefile
Name for ascii trace file, default uan-cw-example.asc.
keep track of a set of node pointers.
Hold objects of type Ptr<T>.
virtual Ptr< Packet > Recv(uint32_t maxSize, uint32_t flags)=0
Read data from the socket.
static void EnableAsciiAll(std::ostream &os)
Enable ascii output on each device which is of the ns3::UanNetDevice type and dump that to the specif...
void SetPosition(const Vector &position)
Class used for calculating SINR of packet in UanPhy.
uint32_t m_cwMax
Max CW to simulate.
double m_boundary
Size of boundary in meters.
Helper class used to assign positions and mobility models to nodes.
Instantiate subclasses of ns3::Object.
void Stop(Time stop)
Arrange for all of the Applications in this container to Stop() at the Time given as a parameter...
uint32_t m_packetSize
Generated packet size in bytes.
AttributeValue implementation for DataRate.
#define NS_LOG_DEBUG(msg)
Use NS_LOG to output a message of level LOG_DEBUG.
Time Seconds(double value)
Construct a Time in the indicated unit.
uint32_t GetN(void) const
Get the number of Ptr<NetDevice> stored in this container.
void AppendMode(UanTxMode mode)
Add mode to this list.
uint32_t m_cwStep
CW step size, default 10.
void SetProtocol(uint16_t protocol)
Set the protocol.
void Add(Vector v)
Add a position to the list of positions.
Ptr< Node > Get(uint32_t i) const
Get the Ptr<Node> stored in this container at a given index.
void Install(Ptr< Node > node) const
Aggregate an instance of a ns3::PacketSocketFactory onto the provided node.
Time Now(void)
create an ns3::Time instance which contains the current simulation time.
void Create(uint32_t n)
Create n nodes and append pointers to them to the end of this NodeContainer.
uint32_t m_dataRate
DataRate in bps.
void UpdatePositions(NodeContainer &nodes)
Assign new random positions to a set of nodes.
a unique identifier for an interface.
NetDeviceContainer Install(NodeContainer c) const
This method creates a simple ns3::UanChannel (with a default ns3::UanNoiseModelDefault and ns3::UanPr...
void SetAttribute(std::string name, const AttributeValue &value)
Helper function used to set the underlying application attributes.
uint32_t m_numNodes
Number of transmitting nodes.
AttributeValue implementation for UanModesList.
void ResetData()
Save the throughput from a single run.