28 #include <ns3/callback.h>
29 #include <ns3/packet.h>
30 #include <ns3/simulator.h>
31 #include <ns3/lr-wpan-error-model.h>
32 #include <ns3/propagation-loss-model.h>
33 #include <ns3/lr-wpan-net-device.h>
34 #include <ns3/spectrum-value.h>
35 #include <ns3/lr-wpan-spectrum-value-helper.h>
36 #include <ns3/lr-wpan-mac.h>
38 #include <ns3/net-device.h>
39 #include <ns3/single-model-spectrum-channel.h>
40 #include <ns3/multi-model-spectrum-channel.h>
41 #include <ns3/mac16-address.h>
42 #include <ns3/constant-position-mobility-model.h>
43 #include <ns3/uinteger.h>
44 #include <ns3/nstime.h>
45 #include <ns3/abort.h>
46 #include <ns3/command-line.h>
47 #include <ns3/gnuplot.h>
67 int main (
int argc,
char *argv[])
69 std::ostringstream os;
70 std::ofstream berfile (
"802.15.4-psr-distance.plt");
73 int maxDistance = 200;
75 int maxPackets = 1000;
78 uint32_t channelNumber = 11;
82 cmd.
AddValue (
"txPower",
"transmit power (dBm)", txPower);
83 cmd.
AddValue (
"packetSize",
"packet (MSDU) size (bytes)", packetSize);
84 cmd.
AddValue (
"channelNumber",
"channel number", channelNumber);
86 cmd.
Parse (argc, argv);
88 os <<
"Packet (MSDU) size = " << packetSize <<
" bytes; tx power = " << txPower <<
" dBm; channel = " << channelNumber;
102 dev0->SetChannel (channel);
103 dev1->SetChannel (channel);
105 n1->AddDevice (dev1);
107 dev0->GetPhy ()->SetMobility (mob0);
109 dev1->GetPhy ()->SetMobility (mob1);
113 dev0->GetPhy ()->SetTxPowerSpectralDensity (psd);
117 dev1->GetMac ()->SetMcpsDataIndicationCallback (cb0);
130 for (
int j = minDistance; j < maxDistance; )
132 for (
int i = 0; i < maxPackets; i++)
137 dev0->GetMac (), params, p);
150 psrplot.
SetTerminal (
"postscript eps color enh \"Times-BoldItalic\"");
151 psrplot.
SetLegend (
"distance (m)",
"Packet Success Rate (PSR)");
152 psrplot.
SetExtra (
"set xrange [0:200]\n\
155 set style line 1 linewidth 5\n\
156 set style increment user");
uint16_t m_dstPanId
Destination PAN identifier.
Class to represent a 2D points plot.
Mac16Address m_dstAddr
Destination address.
static void Run(void)
Run the simulation.
#define NS_LOG_COMPONENT_DEFINE(name)
Define a Log component with a specific name.
virtual void AddPropagationLossModel(Ptr< PropagationLossModel > loss)
set the single-frequency propagation loss model to be used
void AddDataset(const GnuplotDataset &dataset)
static EventId Schedule(Time const &time, MEM mem_ptr, OBJ obj)
Schedule an event to expire at the relative time "time" is reached.
void McpsDataRequest(McpsDataRequestParams params, Ptr< Packet > p)
IEEE 802.15.4-2006, section 7.1.1.1 MCPS-DATA.request Request to transfer a MSDU. ...
uint8_t m_msduHandle
MSDU handle.
a simple class to generate gnuplot-ready plotting commands from a set of datasets.
void SetTitle(const std::string &title)
This class defines all functions to create spectrum model for LrWpan.
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.
uint8_t m_txOptions
Tx Options (bitfield)
Parse command-line arguments.
void SetLegend(const std::string &xLegend, const std::string &yLegend)
static void Destroy(void)
Execute the events scheduled with ScheduleDestroy().
LrWpanAddressMode m_srcAddrMode
Source address mode.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
LrWpanAddressMode m_dstAddrMode
Destination address mode.
This class can contain 16 bit addresses.
void SetExtra(const std::string &extra)
void SetPosition(const Vector &position)
static void LrWpanErrorDistanceCallback(McpsDataIndicationParams params, Ptr< Packet > p)
uint32_t AddDevice(Ptr< NetDevice > device)
Associate a NetDevice to this node.
void AddValue(const std::string &name, const std::string &help, T &value)
Add a program argument, assigning to POD.
Ptr< SpectrumValue > CreateTxPowerSpectralDensity(double txPower, uint32_t channel)
create spectrum value
#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.
void Parse(int argc, char *argv[])
Parse the program arguments.
static const uint32_t packetSize
MCPS-DATA.request params.
void SetTerminal(const std::string &terminal)
static uint32_t g_received
MCPS-DATA.indication params.