samples/main-propagation-loss.cc
author Florian Westphal <fw@strlen.de>
Wed, 03 Sep 2008 23:24:59 +0200
changeset 3595 693faf7f4e9b
parent 2965 4b28e9740e3b
child 3680 ff830e19eced
permissions -rw-r--r--
nsc: Fix build problem if gtk config store is disabled gtk config store pulled in libdl.so for us, so things fail to link of the config store isn't enabled. This makes nsc pull in libdl itself when its enabled.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2066
4477ee7d0798 test propagation losses
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     1
/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
4477ee7d0798 test propagation losses
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     2
/*
4477ee7d0798 test propagation losses
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     3
 * Copyright (c) 2007 INRIA
4477ee7d0798 test propagation losses
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     4
 *
4477ee7d0798 test propagation losses
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     5
 * This program is free software; you can redistribute it and/or modify
4477ee7d0798 test propagation losses
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     6
 * it under the terms of the GNU General Public License version 2 as
4477ee7d0798 test propagation losses
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     7
 * published by the Free Software Foundation;
4477ee7d0798 test propagation losses
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     8
 *
4477ee7d0798 test propagation losses
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     9
 * This program is distributed in the hope that it will be useful,
4477ee7d0798 test propagation losses
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
4477ee7d0798 test propagation losses
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
4477ee7d0798 test propagation losses
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    12
 * GNU General Public License for more details.
4477ee7d0798 test propagation losses
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    13
 *
4477ee7d0798 test propagation losses
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    14
 * You should have received a copy of the GNU General Public License
4477ee7d0798 test propagation losses
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    15
 * along with this program; if not, write to the Free Software
4477ee7d0798 test propagation losses
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    16
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
4477ee7d0798 test propagation losses
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    17
 *
4477ee7d0798 test propagation losses
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    18
 * Author: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
4477ee7d0798 test propagation losses
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    19
 */
4477ee7d0798 test propagation losses
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    20
#include "ns3/propagation-loss-model.h"
4477ee7d0798 test propagation losses
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    21
#include "ns3/static-mobility-model.h"
2577
5b41cb5c3fcf kill DefaultValue
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2549
diff changeset
    22
#include "ns3/config.h"
5b41cb5c3fcf kill DefaultValue
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2549
diff changeset
    23
#include "ns3/string.h"
2066
4477ee7d0798 test propagation losses
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    24
4477ee7d0798 test propagation losses
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    25
using namespace ns3;
4477ee7d0798 test propagation losses
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    26
4477ee7d0798 test propagation losses
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    27
static void
4477ee7d0798 test propagation losses
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    28
PrintOne (double minTxpower, double maxTxpower, double stepTxpower, double min, double max, double step)
4477ee7d0798 test propagation losses
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    29
{
2230
9f13ac3291e0 add CreateObject<> to instanciate subclasses of the Object base class. Replaces Create<>.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2115
diff changeset
    30
  Ptr<StaticMobilityModel> a = CreateObject<StaticMobilityModel> ();
9f13ac3291e0 add CreateObject<> to instanciate subclasses of the Object base class. Replaces Create<>.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2115
diff changeset
    31
  Ptr<StaticMobilityModel> b = CreateObject<StaticMobilityModel> ();
2592
3ebf97150166 get rid of CreateObjectWith
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2577
diff changeset
    32
  Ptr<LogDistancePropagationLossModel> log = CreateObject<LogDistancePropagationLossModel> ();
3ebf97150166 get rid of CreateObjectWith
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2577
diff changeset
    33
  log->SetReferenceModel (CreateObject<FriisPropagationLossModel> ());
2549
fe90cf0b2c63 port propagation models and channel to attributes.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2230
diff changeset
    34
fe90cf0b2c63 port propagation models and channel to attributes.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2230
diff changeset
    35
  Ptr<PropagationLossModel> model = log;
2066
4477ee7d0798 test propagation losses
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    36
2115
4be7e10e471e merge with Position -> Vector rename
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2067
diff changeset
    37
  a->SetPosition (Vector (0.0, 0.0, 0.0));
2066
4477ee7d0798 test propagation losses
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    38
  for (double x = min; x < max; x+= step)
4477ee7d0798 test propagation losses
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    39
    {
2115
4be7e10e471e merge with Position -> Vector rename
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2067
diff changeset
    40
      b->SetPosition (Vector (x, 0.0, 0.0));
2066
4477ee7d0798 test propagation losses
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    41
      std::cout << x << " ";
4477ee7d0798 test propagation losses
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    42
      for (double txpower = minTxpower; txpower < maxTxpower; txpower += stepTxpower)
4477ee7d0798 test propagation losses
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    43
        {
2677
28dfd0c7510d PropagationLossModel::GetRxPower -> PropagationLossModel::GetLoss
Federico Maguolo <maguolof@dei.unipd.it>
parents: 2592
diff changeset
    44
          double rxPowerDbm = txpower + model->GetLoss (a, b);
2066
4477ee7d0798 test propagation losses
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    45
          std::cout << rxPowerDbm << " ";
4477ee7d0798 test propagation losses
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    46
        }
4477ee7d0798 test propagation losses
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    47
      std::cout << std::endl;
4477ee7d0798 test propagation losses
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    48
    }
4477ee7d0798 test propagation losses
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    49
}
4477ee7d0798 test propagation losses
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    50
4477ee7d0798 test propagation losses
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    51
int main (int argc, char *argv[])
4477ee7d0798 test propagation losses
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    52
{
4477ee7d0798 test propagation losses
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    53
2965
4b28e9740e3b get rid of Attribute class. Use AttributeValue subclasses directly.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2677
diff changeset
    54
  Config::SetGlobal ("LogDistancePropagationLossModel::ReferenceDistance", StringValue ("1.0"));
4b28e9740e3b get rid of Attribute class. Use AttributeValue subclasses directly.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2677
diff changeset
    55
  Config::SetGlobal ("LogDistancePropagationLossModel::Exponent", StringValue ("4"));
2066
4477ee7d0798 test propagation losses
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    56
4477ee7d0798 test propagation losses
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    57
  PrintOne (-10, 20, 5, 0, 10000, 2);
4477ee7d0798 test propagation losses
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    58
4477ee7d0798 test propagation losses
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    59
  return 0;
4477ee7d0798 test propagation losses
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    60
}