src/devices/wifi/wifi-phy-test.cc
author Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
Tue, 10 Jun 2008 16:22:21 -0700
changeset 3883 091bb8fef41f
parent 3881 d3f8cf4d2c2a
child 3884 260d8acdbd01
permissions -rw-r--r--
do a binary search for the range boundary.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
3881
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     1
#include "wifi-phy.h"
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     2
#include "wifi-channel.h"
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     3
#include "propagation-loss-model.h"
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     4
#include "propagation-delay-model.h"
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     5
#include "ns3/ptr.h"
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     6
#include "ns3/mobility-model.h"
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     7
#include "ns3/static-mobility-model.h"
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     8
#include "ns3/vector.h"
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     9
#include "ns3/packet.h"
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    10
#include "ns3/simulator.h"
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    11
#include "ns3/nstime.h"
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    12
#include "ns3/command-line.h"
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    13
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    14
using namespace ns3;
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    15
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    16
class PsrExperiment
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    17
{
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    18
public:
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    19
  struct Input
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    20
  {
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    21
    double distance;
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    22
    std::string txMode;
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    23
    uint8_t txPowerLevel;
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    24
    uint32_t packetSize;
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    25
    uint32_t nPackets;
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    26
  };
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    27
  struct Output
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    28
  {
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    29
    uint32_t received;
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    30
  };
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    31
  PsrExperiment ();
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    32
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    33
  static struct PsrExperiment::Input GetDefaultInput (void);
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    34
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    35
  struct PsrExperiment::Output Run (struct PsrExperiment::Input input);
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    36
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    37
private:
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    38
  void Send (void);
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    39
  typedef Callback<void,Ptr<Packet>, double, WifiMode, enum WifiPreamble> SyncOkCallback;
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    40
  void Receive (Ptr<Packet> p, double snr, WifiMode mode, enum WifiPreamble preamble);
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    41
  Ptr<WifiPhy> m_tx;
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    42
  struct Input m_input;
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    43
  struct Output m_output;
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    44
};
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    45
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    46
void 
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    47
PsrExperiment::Send (void)
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    48
{
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    49
  Ptr<Packet> p = Create<Packet> (m_input.packetSize);
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    50
  WifiMode mode = WifiMode (m_input.txMode);
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    51
  m_tx->SendPacket (p, mode, WIFI_PREAMBLE_SHORT, m_input.txPowerLevel);
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    52
}
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    53
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    54
void 
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    55
PsrExperiment::Receive (Ptr<Packet> p, double snr, WifiMode mode, enum WifiPreamble preamble)
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    56
{
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    57
  m_output.received++;
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    58
}
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    59
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    60
PsrExperiment::PsrExperiment ()
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    61
{}
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    62
struct PsrExperiment::Input 
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    63
PsrExperiment::GetDefaultInput (void)
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    64
{
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    65
  struct PsrExperiment::Input  input;
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    66
  input.distance = 5.0;
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    67
  input.packetSize = 2304;
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    68
  input.nPackets = 400;
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    69
  input.txPowerLevel = 0;
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    70
  input.txMode = "wifia-6mbs";
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    71
  return input;
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    72
}
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    73
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    74
struct PsrExperiment::Output
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    75
PsrExperiment::Run (struct PsrExperiment::Input input)
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    76
{
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    77
  m_output.received = 0;
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    78
  m_input = input;
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    79
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    80
  Ptr<MobilityModel> posTx = CreateObject<StaticMobilityModel> ();
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    81
  posTx->SetPosition (Vector (0.0, 0.0, 0.0));
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    82
  Ptr<MobilityModel> posRx = CreateObject<StaticMobilityModel> ();
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    83
  posRx->SetPosition (Vector (m_input.distance, 0.0, 0.0));
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    84
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    85
  Ptr<WifiPhy> tx = CreateObject<WifiPhy> ();
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    86
  Ptr<WifiPhy> rx = CreateObject<WifiPhy> ();
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    87
  rx->SetReceiveOkCallback (MakeCallback (&PsrExperiment::Receive, this));
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    88
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    89
  Ptr<WifiChannel> channel = CreateObject<WifiChannel> ();
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    90
  channel->SetPropagationDelayModel (CreateObject<ConstantSpeedPropagationDelayModel> ());
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    91
  Ptr<LogDistancePropagationLossModel> log = CreateObject<LogDistancePropagationLossModel> ();
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    92
  log->SetReferenceModel (CreateObject<FriisPropagationLossModel> ());
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    93
  channel->SetPropagationLossModel (log);
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    94
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    95
  channel->Add (0, tx, posTx);
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    96
  channel->Add (0, rx, posRx);
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    97
  tx->SetChannel (channel);
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    98
  rx->SetChannel (channel);
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    99
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   100
  for (uint32_t i = 0; i < m_input.nPackets; ++i)
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   101
    {
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   102
      Simulator::Schedule (Seconds (i), &PsrExperiment::Send, this);
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   103
    }
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   104
  m_tx = tx;
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   105
  Simulator::Run ();
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   106
  return m_output;
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   107
}
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   108
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   109
static void PrintPsr (int argc, char *argv[])
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   110
{
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   111
  PsrExperiment experiment;
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   112
  struct PsrExperiment::Input input = experiment.GetDefaultInput ();
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   113
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   114
  CommandLine cmd;
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   115
  cmd.AddValue ("Distance", "The distance between two phys", input.distance);
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   116
  cmd.AddValue ("PacketSize", "The size of each packet sent", input.packetSize);
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   117
  cmd.AddValue ("TxMode", "The mode to use to send each packet", input.txMode);
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   118
  cmd.AddValue ("NPackets", "The number of packets to send", input.nPackets);
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   119
  cmd.AddValue ("TxPowerLevel", "The power level index to use to send each packet", input.txPowerLevel);
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   120
  cmd.Parse (argc, argv);
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   121
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   122
  struct PsrExperiment::Output output;
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   123
  output = experiment.Run (input);
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   124
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   125
  double psr = output.received;
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   126
  psr /= input.nPackets ;
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   127
  
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   128
  std::cout << psr << std::endl;
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   129
}
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   130
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   131
double CalcPsr (struct PsrExperiment::Output output, struct PsrExperiment::Input input)
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   132
{
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   133
  double psr = output.received;
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   134
  psr /= input.nPackets ;
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   135
  return psr;
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   136
}
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   137
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   138
static void PrintPsrVsDistance (int argc, char *argv[])
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   139
{
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   140
  struct PsrExperiment::Input input = PsrExperiment::GetDefaultInput ();
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   141
  CommandLine cmd;
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   142
  cmd.AddValue ("TxPowerLevel", "The power level index to use to send each packet", input.txPowerLevel);  
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   143
  cmd.AddValue ("TxMode", "The mode to use to send each packet", input.txMode);
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   144
  cmd.AddValue ("NPackets", "The number of packets to send", input.nPackets);
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   145
  cmd.AddValue ("PacketSize", "The size of each packet sent", input.packetSize);
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   146
  cmd.Parse (argc, argv);
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   147
  for (input.distance = 1.0; input.distance < 165; input.distance += 2.0)
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   148
    {
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   149
      std::cout << input.distance;
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   150
      PsrExperiment experiment;
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   151
      struct PsrExperiment::Output output;
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   152
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   153
      input.txMode = "wifia-6mbs";
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   154
      output = experiment.Run (input);
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   155
      std::cout << " " << CalcPsr (output, input);
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   156
    
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   157
      input.txMode = "wifia-9mbs";
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   158
      output = experiment.Run (input);
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   159
      std::cout << " " << CalcPsr (output, input);
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   160
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   161
      input.txMode = "wifia-12mbs";
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   162
      output = experiment.Run (input);
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   163
      std::cout << " " << CalcPsr (output, input);
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   164
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   165
      input.txMode = "wifia-18mbs";
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   166
      output = experiment.Run (input);
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   167
      std::cout << " " << CalcPsr (output, input);
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   168
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   169
      input.txMode = "wifia-24mbs";
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   170
      output = experiment.Run (input);
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   171
      std::cout << " " << CalcPsr (output, input);
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   172
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   173
      input.txMode = "wifia-36mbs";
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   174
      output = experiment.Run (input);
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   175
      std::cout << " " << CalcPsr (output, input);
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   176
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   177
      input.txMode = "wifia-48mbs";
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   178
      output = experiment.Run (input);
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   179
      std::cout << " " << CalcPsr (output, input);
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   180
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   181
      input.txMode = "wifia-54mbs";
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   182
      output = experiment.Run (input);
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   183
      std::cout << " " << CalcPsr (output, input);
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   184
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   185
      std::cout << std::endl;
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   186
    }
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   187
}
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   188
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   189
static void PrintSizeVsRange (int argc, char *argv[])
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   190
{
3883
091bb8fef41f do a binary search for the range boundary.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3881
diff changeset
   191
  double minPsr = 0.05;
3881
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   192
  struct PsrExperiment::Input input = PsrExperiment::GetDefaultInput ();
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   193
  CommandLine cmd;
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   194
  cmd.AddValue ("TxPowerLevel", "The power level index to use to send each packet", input.txPowerLevel);  
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   195
  cmd.AddValue ("TxMode", "The mode to use to send each packet", input.txMode);
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   196
  cmd.AddValue ("NPackets", "The number of packets to send", input.nPackets);
3883
091bb8fef41f do a binary search for the range boundary.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3881
diff changeset
   197
  cmd.AddValue ("LowPsr", "The minimum psr needed to assume that we are within range", minPsr);
3881
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   198
  cmd.Parse (argc, argv);
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   199
  for (input.packetSize = 10; input.packetSize < 3000; input.packetSize += 40)
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   200
    {
3883
091bb8fef41f do a binary search for the range boundary.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3881
diff changeset
   201
      double precision = 0.1;
091bb8fef41f do a binary search for the range boundary.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3881
diff changeset
   202
      double low = 1.0;
091bb8fef41f do a binary search for the range boundary.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3881
diff changeset
   203
      double high = 200.0;
091bb8fef41f do a binary search for the range boundary.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3881
diff changeset
   204
      while (high - low > precision)
3881
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   205
	{
3883
091bb8fef41f do a binary search for the range boundary.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3881
diff changeset
   206
	  double middle = low + (high - low) / 2;
3881
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   207
	  struct PsrExperiment::Output output;
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   208
	  PsrExperiment experiment;
3883
091bb8fef41f do a binary search for the range boundary.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3881
diff changeset
   209
	  input.distance = middle;
3881
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   210
	  output = experiment.Run (input);
3883
091bb8fef41f do a binary search for the range boundary.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3881
diff changeset
   211
	  double psr = CalcPsr (output, input);
091bb8fef41f do a binary search for the range boundary.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3881
diff changeset
   212
	  if (psr >= minPsr)
3881
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   213
	    {
3883
091bb8fef41f do a binary search for the range boundary.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3881
diff changeset
   214
	      low = middle;
091bb8fef41f do a binary search for the range boundary.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3881
diff changeset
   215
	    }
091bb8fef41f do a binary search for the range boundary.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3881
diff changeset
   216
	  else
091bb8fef41f do a binary search for the range boundary.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3881
diff changeset
   217
	    {
091bb8fef41f do a binary search for the range boundary.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3881
diff changeset
   218
	      high = middle;
3881
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   219
	    }
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   220
	}
3883
091bb8fef41f do a binary search for the range boundary.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3881
diff changeset
   221
      std::cout << input.packetSize << " " << input.distance << std::endl;
3881
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   222
    }
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   223
}
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   224
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   225
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   226
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   227
int main (int argc, char *argv[])
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   228
{
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   229
  if (argc <= 1)
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   230
    {
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   231
      std::cout << "Available experiments: "
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   232
		<< "Psr "
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   233
		<< "SizeVsRange "
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   234
		<< "PsrVsDistance "
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   235
		<< std::endl;
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   236
      return -1;
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   237
    }
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   238
  std::string type = argv[1];
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   239
  argc--;
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   240
  argv[1] = argv[0];
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   241
  argv++;
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   242
  if (type == "Psr")
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   243
    {
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   244
      PrintPsr (argc, argv);
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   245
    }
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   246
  else if (type == "SizeVsRange")
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   247
    {
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   248
      PrintSizeVsRange (argc, argv);
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   249
    }
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   250
  else if (type == "PsrVsDistance")
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   251
    {
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   252
      PrintPsrVsDistance (argc, argv);
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   253
    }
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   254
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   255
  return 0;
d3f8cf4d2c2a PHY-layer test scripts
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   256
}