26#include <ns3/callback.h>
27#include <ns3/command-line.h>
28#include <ns3/constant-position-mobility-model.h>
29#include <ns3/gnuplot.h>
31#include <ns3/lr-wpan-error-model.h>
32#include <ns3/lr-wpan-mac.h>
33#include <ns3/lr-wpan-net-device.h>
34#include <ns3/lr-wpan-spectrum-value-helper.h>
35#include <ns3/mac16-address.h>
36#include <ns3/multi-model-spectrum-channel.h>
37#include <ns3/net-device.h>
39#include <ns3/nstime.h>
40#include <ns3/packet.h>
41#include <ns3/propagation-loss-model.h>
42#include <ns3/simulator.h>
43#include <ns3/single-model-spectrum-channel.h>
44#include <ns3/spectrum-value.h>
46#include <ns3/uinteger.h>
71main(
int argc,
char* argv[])
73 std::ostringstream os;
74 std::ofstream berfile(
"802.15.4-psr-distance.plt");
77 int maxDistance = 200;
79 int maxPackets = 1000;
86 cmd.AddValue(
"txPower",
"transmit power (dBm)", txPower);
87 cmd.AddValue(
"packetSize",
"packet (MSDU) size (bytes)",
packetSize);
88 cmd.AddValue(
"channelNumber",
"channel number", channelNumber);
90 cmd.Parse(argc, argv);
92 os <<
"Packet (MSDU) size = " <<
packetSize <<
" bytes; tx power = " << txPower
93 <<
" dBm; channel = " << channelNumber;
106 channel->AddPropagationLossModel(model);
112 dev0->
GetPhy()->SetMobility(mob0);
114 dev1->
GetPhy()->SetMobility(mob1);
118 dev0->
GetPhy()->SetTxPowerSpectralDensity(psd);
122 dev1->
GetMac()->SetMcpsDataIndicationCallback(cb0);
133 mob0->SetPosition(
Vector(0, 0, 0));
134 mob1->SetPosition(
Vector(minDistance, 0, 0));
135 for (
int j = minDistance; j < maxDistance;)
137 for (
int i = 0; i < maxPackets; i++)
140 Simulator::Schedule(
Seconds(i), &LrWpanMac::McpsDataRequest, dev0->
GetMac(), params, p);
147 mob1->SetPosition(
Vector(j, 0, 0));
153 psrplot.
SetTerminal(
"postscript eps color enh \"Times-BoldItalic\"");
154 psrplot.
SetLegend(
"distance (m)",
"Packet Success Rate (PSR)");
155 psrplot.
SetExtra(
"set xrange [0:200]\n\
158set style line 1 linewidth 5\n\
159set style increment user");
163 Simulator::Destroy();
Parse command-line arguments.
Class to represent a 2D points plot.
a simple class to generate gnuplot-ready plotting commands from a set of datasets.
void AddDataset(const GnuplotDataset &dataset)
void SetLegend(const std::string &xLegend, const std::string &yLegend)
void SetTerminal(const std::string &terminal)
void GenerateOutput(std::ostream &os)
Writes gnuplot commands and data values to a single output stream.
void SetExtra(const std::string &extra)
void SetTitle(const std::string &title)
void SetChannel(Ptr< SpectrumChannel > channel)
Set the channel to which the NetDevice, and therefore the PHY, should be attached to.
Ptr< LrWpanMac > GetMac() const
Get the MAC used by this NetDevice.
Ptr< LrWpanPhy > GetPhy() const
Get the PHY used by this NetDevice.
void SetAddress(Address address) override
This method indirects to LrWpanMac::SetShortAddress ()
This class defines all functions to create spectrum model for LrWpan.
Ptr< SpectrumValue > CreateTxPowerSpectralDensity(double txPower, uint32_t channel)
create spectrum value
This class can contain 16 bit addresses.
uint32_t AddDevice(Ptr< NetDevice > device)
Associate a NetDevice to this node.
Vector3D Vector
Vector alias typedef for compatibility with mobility models.
#define NS_LOG_COMPONENT_DEFINE(name)
Define a Log component with a specific name.
#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.
static uint32_t g_received
number of packets received
static void LrWpanErrorDistanceCallback(McpsDataIndicationParams params, Ptr< Packet > p)
Function called when a Data indication is invoked.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
Callback< R, Args... > MakeCallback(R(T::*memPtr)(Args...), OBJ objPtr)
Build Callbacks for class method members which take varying numbers of arguments and potentially retu...
MCPS-DATA.indication params.
MCPS-DATA.request params.
LrWpanAddressMode m_srcAddrMode
Source address mode.
LrWpanAddressMode m_dstAddrMode
Destination address mode.
uint16_t m_dstPanId
Destination PAN identifier.
Mac16Address m_dstAddr
Destination address.
uint8_t m_msduHandle
MSDU handle.
uint8_t m_txOptions
Tx Options (bitfield)
static const uint32_t packetSize
Packet size generated at the AP.