28 #include "ns3/gnuplot.h"    29 #include "ns3/command-line.h"    30 #include "ns3/yans-error-rate-model.h"    31 #include "ns3/nist-error-rate-model.h"    32 #include "ns3/wifi-tx-vector.h"    36 int main (
int argc, 
char *argv[])
    38   uint32_t FrameSize = 1500; 
    39   std::ofstream yansfile (
"yans-frame-success-rate-ofdm.plt");
    40   std::ofstream nistfile (
"nist-frame-success-rate-ofdm.plt");
    41   std::vector <std::string> modes;
    43   modes.push_back (
"OfdmRate6Mbps");
    44   modes.push_back (
"OfdmRate9Mbps");
    45   modes.push_back (
"OfdmRate12Mbps");
    46   modes.push_back (
"OfdmRate18Mbps");
    47   modes.push_back (
"OfdmRate24Mbps");
    48   modes.push_back (
"OfdmRate36Mbps");
    49   modes.push_back (
"OfdmRate48Mbps");
    50   modes.push_back (
"OfdmRate54Mbps");
    53   cmd.AddValue (
"FrameSize", 
"The frame size in bytes", FrameSize);
    54   cmd.Parse (argc, argv);
    63   for (uint32_t i = 0; i < modes.size (); i++)
    65       std::cout << modes[i] << std::endl;
    68       txVector.SetMode (modes[i]);
    70       for (
double snr = -5.0; snr <= 30.0; snr += 0.1)
    73           if (ps < 0.0 || ps > 1.0)
    78           yansdataset.Add (snr, ps);
    80           ps = nist->GetChunkSuccessRate (
WifiMode (modes[i]), txVector, std::pow (10.0,snr / 10.0), FrameSize * 8);
    81           if (ps < 0.0 || ps > 1.0)
    86           nistdataset.Add (snr, ps);
    93   yansplot.
SetTerminal (
"postscript eps color enh \"Times-BoldItalic\"");
    94   yansplot.
SetLegend (
"SNR(dB)", 
"Frame Success Rate");
    95   yansplot.
SetExtra  (
"set xrange [-5:30]\n\    97 set style line 1 linewidth 5\n\    98 set style line 2 linewidth 5\n\    99 set style line 3 linewidth 5\n\   100 set style line 4 linewidth 5\n\   101 set style line 5 linewidth 5\n\   102 set style line 6 linewidth 5\n\   103 set style line 7 linewidth 5\n\   104 set style line 8 linewidth 5\n\   105 set style increment user"                                                                                                                                                                                                                                                                                                                                   );
   109   nistplot.
SetTerminal (
"postscript eps color enh \"Times-BoldItalic\"");
   110   nistplot.
SetLegend (
"SNR(dB)", 
"Frame Success Rate");
   111   nistplot.
SetExtra  (
"set xrange [-5:30]\n\   112 set yrange [0:1.2]\n\   113 set style line 1 linewidth 5\n\   114 set style line 2 linewidth 5\n\   115 set style line 3 linewidth 5\n\   116 set style line 4 linewidth 5\n\   117 set style line 5 linewidth 5\n\   118 set style line 6 linewidth 5\n\   119 set style line 7 linewidth 5\n\   120 set style line 8 linewidth 5\n\   121 set style increment user"                                                                                                                                                                                                                                                                                                                                   );
 Smart pointer class similar to boost::intrusive_ptr. 
 
This class mimics the TXVECTOR which is to be passed to the PHY in order to define the parameters whi...
 
Class to represent a 2D points plot. 
 
void AddDataset(const GnuplotDataset &dataset)
 
represent a single transmission modeA WifiMode is implemented by a single integer which is used to lo...
 
a simple class to generate gnuplot-ready plotting commands from a set of datasets. 
 
void GenerateOutput(std::ostream &os)
Writes gnuplot commands and data values to a single output stream. 
 
Parse command-line arguments. 
 
void SetLegend(const std::string &xLegend, const std::string &yLegend)
 
Every class exported by the ns3 library is enclosed in the ns3 namespace. 
 
virtual double GetChunkSuccessRate(WifiMode mode, WifiTxVector txVector, double snr, uint64_t nbits) const
A pure virtual method that must be implemented in the subclass. 
 
void SetExtra(const std::string &extra)
 
void SetTerminal(const std::string &terminal)