src/devices/wifi/propagation-loss-model.h
author Michael Nowatkowski <nowatkom@gmail.com>
Wed, 18 Nov 2009 10:52:28 +0100
changeset 5747 a171e73c4dae
parent 4481 9250a25ee683
permissions -rw-r--r--
add support for 802.11p PHY and MAC parameters
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2034
8664ab76ff85 add missing headers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2032
diff changeset
     1
/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
8664ab76ff85 add missing headers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2032
diff changeset
     2
/*
8664ab76ff85 add missing headers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2032
diff changeset
     3
 * Copyright (c) 2005,2006,2007 INRIA
8664ab76ff85 add missing headers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2032
diff changeset
     4
 *
8664ab76ff85 add missing headers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2032
diff changeset
     5
 * This program is free software; you can redistribute it and/or modify
8664ab76ff85 add missing headers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2032
diff changeset
     6
 * it under the terms of the GNU General Public License version 2 as 
8664ab76ff85 add missing headers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2032
diff changeset
     7
 * published by the Free Software Foundation;
8664ab76ff85 add missing headers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2032
diff changeset
     8
 *
8664ab76ff85 add missing headers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2032
diff changeset
     9
 * This program is distributed in the hope that it will be useful,
8664ab76ff85 add missing headers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2032
diff changeset
    10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
8664ab76ff85 add missing headers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2032
diff changeset
    11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
8664ab76ff85 add missing headers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2032
diff changeset
    12
 * GNU General Public License for more details.
8664ab76ff85 add missing headers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2032
diff changeset
    13
 *
8664ab76ff85 add missing headers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2032
diff changeset
    14
 * You should have received a copy of the GNU General Public License
8664ab76ff85 add missing headers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2032
diff changeset
    15
 * along with this program; if not, write to the Free Software
8664ab76ff85 add missing headers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2032
diff changeset
    16
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
8664ab76ff85 add missing headers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2032
diff changeset
    17
 *
8664ab76ff85 add missing headers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2032
diff changeset
    18
 * Author: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
4059
251351372d8d PropagationLossModel::GetLoss -> CalcRxPower. Add ThreeLogDistancePropagationLossModel.
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 3909
diff changeset
    19
 * Contributions: Timo Bingmann <timo.bingmann@student.kit.edu>
4469
af124ed35b94 Fixed propagation loss model
Gary Pei <guangyu.pei@boeing.com>
parents: 4464
diff changeset
    20
 * Contributions: Gary Pei <guangyu.pei@boeing.com> for fixed RSS
2034
8664ab76ff85 add missing headers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2032
diff changeset
    21
 */
4059
251351372d8d PropagationLossModel::GetLoss -> CalcRxPower. Add ThreeLogDistancePropagationLossModel.
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 3909
diff changeset
    22
1882
061f7f7f9992 start of work towards port of wifi code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    23
#ifndef PROPAGATION_LOSS_MODEL_H
061f7f7f9992 start of work towards port of wifi code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    24
#define PROPAGATION_LOSS_MODEL_H
061f7f7f9992 start of work towards port of wifi code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    25
061f7f7f9992 start of work towards port of wifi code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    26
#include "ns3/object.h"
2336
28ce210b91bb bug 133: automate RandomVariable memory management.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2072
diff changeset
    27
#include "ns3/random-variable.h"
1882
061f7f7f9992 start of work towards port of wifi code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    28
061f7f7f9992 start of work towards port of wifi code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    29
namespace ns3 {
061f7f7f9992 start of work towards port of wifi code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    30
2031
567dbc2475fc replace distance by a pair of mobility models
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1985
diff changeset
    31
class MobilityModel;
567dbc2475fc replace distance by a pair of mobility models
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1985
diff changeset
    32
2032
dac45a8371f9 doxygen PropagationLossModel
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2031
diff changeset
    33
/**
dac45a8371f9 doxygen PropagationLossModel
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2031
diff changeset
    34
 * \brief Modelize the propagation loss through a transmission medium
dac45a8371f9 doxygen PropagationLossModel
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2031
diff changeset
    35
 *
4059
251351372d8d PropagationLossModel::GetLoss -> CalcRxPower. Add ThreeLogDistancePropagationLossModel.
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 3909
diff changeset
    36
 * Calculate the receive power (dbm) from a transmit power (dbm)
251351372d8d PropagationLossModel::GetLoss -> CalcRxPower. Add ThreeLogDistancePropagationLossModel.
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 3909
diff changeset
    37
 * and a mobility model for the source and destination positions.
2032
dac45a8371f9 doxygen PropagationLossModel
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2031
diff changeset
    38
 */
1882
061f7f7f9992 start of work towards port of wifi code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    39
class PropagationLossModel : public Object
061f7f7f9992 start of work towards port of wifi code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    40
{
061f7f7f9992 start of work towards port of wifi code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    41
public:
2940
8fb456039670 add missing TypeId in base class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2677
diff changeset
    42
  static TypeId GetTypeId (void);
8fb456039670 add missing TypeId in base class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2677
diff changeset
    43
3907
56e477db65b2 add composite capability to PropagationLossModel base class.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3388
diff changeset
    44
  PropagationLossModel ();
1882
061f7f7f9992 start of work towards port of wifi code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    45
  virtual ~PropagationLossModel ();
3907
56e477db65b2 add composite capability to PropagationLossModel base class.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3388
diff changeset
    46
56e477db65b2 add composite capability to PropagationLossModel base class.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3388
diff changeset
    47
  void SetNext (Ptr<PropagationLossModel> next);
56e477db65b2 add composite capability to PropagationLossModel base class.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3388
diff changeset
    48
2032
dac45a8371f9 doxygen PropagationLossModel
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2031
diff changeset
    49
  /**
4059
251351372d8d PropagationLossModel::GetLoss -> CalcRxPower. Add ThreeLogDistancePropagationLossModel.
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 3909
diff changeset
    50
   * \param txPowerDbm current transmission power (in dBm)
2032
dac45a8371f9 doxygen PropagationLossModel
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2031
diff changeset
    51
   * \param a the mobility model of the source
dac45a8371f9 doxygen PropagationLossModel
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2031
diff changeset
    52
   * \param b the mobility model of the destination
4059
251351372d8d PropagationLossModel::GetLoss -> CalcRxPower. Add ThreeLogDistancePropagationLossModel.
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 3909
diff changeset
    53
   * \returns the reception power after adding/multiplying propagation loss (in dBm)
2032
dac45a8371f9 doxygen PropagationLossModel
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2031
diff changeset
    54
   */
4059
251351372d8d PropagationLossModel::GetLoss -> CalcRxPower. Add ThreeLogDistancePropagationLossModel.
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 3909
diff changeset
    55
  double CalcRxPower (double txPowerDbm,
251351372d8d PropagationLossModel::GetLoss -> CalcRxPower. Add ThreeLogDistancePropagationLossModel.
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 3909
diff changeset
    56
                      Ptr<MobilityModel> a,
251351372d8d PropagationLossModel::GetLoss -> CalcRxPower. Add ThreeLogDistancePropagationLossModel.
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 3909
diff changeset
    57
                      Ptr<MobilityModel> b) const;
3907
56e477db65b2 add composite capability to PropagationLossModel base class.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3388
diff changeset
    58
private:
56e477db65b2 add composite capability to PropagationLossModel base class.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3388
diff changeset
    59
  PropagationLossModel (const PropagationLossModel &o);
56e477db65b2 add composite capability to PropagationLossModel base class.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3388
diff changeset
    60
  PropagationLossModel &operator = (const PropagationLossModel &o);
4059
251351372d8d PropagationLossModel::GetLoss -> CalcRxPower. Add ThreeLogDistancePropagationLossModel.
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 3909
diff changeset
    61
  virtual double DoCalcRxPower (double txPowerDbm,
251351372d8d PropagationLossModel::GetLoss -> CalcRxPower. Add ThreeLogDistancePropagationLossModel.
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 3909
diff changeset
    62
                                Ptr<MobilityModel> a,
251351372d8d PropagationLossModel::GetLoss -> CalcRxPower. Add ThreeLogDistancePropagationLossModel.
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 3909
diff changeset
    63
                                Ptr<MobilityModel> b) const = 0;
3907
56e477db65b2 add composite capability to PropagationLossModel base class.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3388
diff changeset
    64
56e477db65b2 add composite capability to PropagationLossModel base class.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3388
diff changeset
    65
  Ptr<PropagationLossModel> m_next;
1959
f64684973ea8 support DefaultValue
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1882
diff changeset
    66
};
f64684973ea8 support DefaultValue
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1882
diff changeset
    67
2032
dac45a8371f9 doxygen PropagationLossModel
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2031
diff changeset
    68
/**
4059
251351372d8d PropagationLossModel::GetLoss -> CalcRxPower. Add ThreeLogDistancePropagationLossModel.
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 3909
diff changeset
    69
 * \brief The propagation loss follows a random distribution.
2032
dac45a8371f9 doxygen PropagationLossModel
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2031
diff changeset
    70
 */ 
1959
f64684973ea8 support DefaultValue
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1882
diff changeset
    71
class RandomPropagationLossModel : public PropagationLossModel
f64684973ea8 support DefaultValue
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1882
diff changeset
    72
{
f64684973ea8 support DefaultValue
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1882
diff changeset
    73
public:
2549
fe90cf0b2c63 port propagation models and channel to attributes.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2336
diff changeset
    74
  static TypeId GetTypeId (void);
fe90cf0b2c63 port propagation models and channel to attributes.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2336
diff changeset
    75
1959
f64684973ea8 support DefaultValue
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1882
diff changeset
    76
  RandomPropagationLossModel ();
f64684973ea8 support DefaultValue
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1882
diff changeset
    77
  virtual ~RandomPropagationLossModel ();
f64684973ea8 support DefaultValue
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1882
diff changeset
    78
3907
56e477db65b2 add composite capability to PropagationLossModel base class.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3388
diff changeset
    79
private:
3908
232d52317a18 fix build.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3907
diff changeset
    80
  RandomPropagationLossModel (const RandomPropagationLossModel &o);
232d52317a18 fix build.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3907
diff changeset
    81
  RandomPropagationLossModel & operator = (const RandomPropagationLossModel &o);
4059
251351372d8d PropagationLossModel::GetLoss -> CalcRxPower. Add ThreeLogDistancePropagationLossModel.
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 3909
diff changeset
    82
  virtual double DoCalcRxPower (double txPowerDbm,
251351372d8d PropagationLossModel::GetLoss -> CalcRxPower. Add ThreeLogDistancePropagationLossModel.
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 3909
diff changeset
    83
                                Ptr<MobilityModel> a,
251351372d8d PropagationLossModel::GetLoss -> CalcRxPower. Add ThreeLogDistancePropagationLossModel.
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 3909
diff changeset
    84
                                Ptr<MobilityModel> b) const;
2336
28ce210b91bb bug 133: automate RandomVariable memory management.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2072
diff changeset
    85
  RandomVariable m_variable;
1882
061f7f7f9992 start of work towards port of wifi code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    86
};
061f7f7f9992 start of work towards port of wifi code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    87
2032
dac45a8371f9 doxygen PropagationLossModel
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2031
diff changeset
    88
/**
dac45a8371f9 doxygen PropagationLossModel
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2031
diff changeset
    89
 * \brief a Friis propagation loss model
dac45a8371f9 doxygen PropagationLossModel
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2031
diff changeset
    90
 *
2062
88302488c05b Document the friis propagation model.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2045
diff changeset
    91
 * The Friis propagation loss model was first described in
88302488c05b Document the friis propagation model.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2045
diff changeset
    92
 * "A Note on a Simple Transmission Formula", by 
88302488c05b Document the friis propagation model.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2045
diff changeset
    93
 * "Harald T. Friis".
88302488c05b Document the friis propagation model.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2045
diff changeset
    94
 * 
88302488c05b Document the friis propagation model.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2045
diff changeset
    95
 * The original equation was described as:
88302488c05b Document the friis propagation model.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2045
diff changeset
    96
 *  \f$ \frac{P_r}{P_t} = \frac{A_r A_t}{d^2\lambda^2} \f$
88302488c05b Document the friis propagation model.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2045
diff changeset
    97
 *  with the following equation for the case of an
88302488c05b Document the friis propagation model.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2045
diff changeset
    98
 *  isotropic antenna with no heat loss:
88302488c05b Document the friis propagation model.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2045
diff changeset
    99
 *  \f$ A_{isotr.} = \frac{\lambda^2}{4\pi} \f$
88302488c05b Document the friis propagation model.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2045
diff changeset
   100
 *
88302488c05b Document the friis propagation model.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2045
diff changeset
   101
 * The final equation becomes:
88302488c05b Document the friis propagation model.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2045
diff changeset
   102
 * \f$ \frac{P_r}{P_t} = \frac{\lambda^2}{(4 \pi d)^2} \f$
88302488c05b Document the friis propagation model.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2045
diff changeset
   103
 *
88302488c05b Document the friis propagation model.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2045
diff changeset
   104
 * Modern extensions to this original equation are:
88302488c05b Document the friis propagation model.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2045
diff changeset
   105
 * \f$ P_r = \frac{P_t G_t G_r \lambda^2}{(4 \pi d)^2 L}\f$
88302488c05b Document the friis propagation model.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2045
diff changeset
   106
 *
88302488c05b Document the friis propagation model.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2045
diff changeset
   107
 * With:
88302488c05b Document the friis propagation model.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2045
diff changeset
   108
 *  - \f$ P_r \f$ : reception power (W)
88302488c05b Document the friis propagation model.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2045
diff changeset
   109
 *  - \f$ P_t \f$ : transmission power (W)
88302488c05b Document the friis propagation model.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2045
diff changeset
   110
 *  - \f$ G_t \f$ : transmission gain (unit-less)
88302488c05b Document the friis propagation model.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2045
diff changeset
   111
 *  - \f$ G_r \f$ : reception gain (unit-less)
88302488c05b Document the friis propagation model.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2045
diff changeset
   112
 *  - \f$ \lambda \f$ : wavelength (m)
88302488c05b Document the friis propagation model.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2045
diff changeset
   113
 *  - \f$ d \f$ : distance (m)
88302488c05b Document the friis propagation model.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2045
diff changeset
   114
 *  - \f$ L \f$ : system loss (unit-less)
88302488c05b Document the friis propagation model.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2045
diff changeset
   115
 *
2064
a1adc9960e50 handle min distance for friis model in a saner way
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2063
diff changeset
   116
 *
a1adc9960e50 handle min distance for friis model in a saner way
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2063
diff changeset
   117
 * This model is invalid for small distance values.
a1adc9960e50 handle min distance for friis model in a saner way
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2063
diff changeset
   118
 * The current implementation returns the txpower as the rxpower
2595
b504951bcca8 fix doxygen errors
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2549
diff changeset
   119
 * for any distance smaller than MinDistance.
2032
dac45a8371f9 doxygen PropagationLossModel
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2031
diff changeset
   120
 */
1882
061f7f7f9992 start of work towards port of wifi code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   121
class FriisPropagationLossModel : public PropagationLossModel
061f7f7f9992 start of work towards port of wifi code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   122
{
061f7f7f9992 start of work towards port of wifi code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   123
public:
2549
fe90cf0b2c63 port propagation models and channel to attributes.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2336
diff changeset
   124
  static TypeId GetTypeId (void);
1882
061f7f7f9992 start of work towards port of wifi code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   125
  FriisPropagationLossModel ();
2032
dac45a8371f9 doxygen PropagationLossModel
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2031
diff changeset
   126
  /**
dac45a8371f9 doxygen PropagationLossModel
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2031
diff changeset
   127
   * \param frequency (Hz)
dac45a8371f9 doxygen PropagationLossModel
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2031
diff changeset
   128
   * \param speed (m/s)
dac45a8371f9 doxygen PropagationLossModel
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2031
diff changeset
   129
   *
dac45a8371f9 doxygen PropagationLossModel
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2031
diff changeset
   130
   * Set the main wavelength used in the Friis model 
dac45a8371f9 doxygen PropagationLossModel
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2031
diff changeset
   131
   * calculation.
dac45a8371f9 doxygen PropagationLossModel
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2031
diff changeset
   132
   */
1882
061f7f7f9992 start of work towards port of wifi code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   133
  void SetLambda (double frequency, double speed);
2032
dac45a8371f9 doxygen PropagationLossModel
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2031
diff changeset
   134
  /**
dac45a8371f9 doxygen PropagationLossModel
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2031
diff changeset
   135
   * \param lambda (m) the wavelength
dac45a8371f9 doxygen PropagationLossModel
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2031
diff changeset
   136
   *
dac45a8371f9 doxygen PropagationLossModel
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2031
diff changeset
   137
   * Set the main wavelength used in the Friis model 
dac45a8371f9 doxygen PropagationLossModel
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2031
diff changeset
   138
   * calculation.
dac45a8371f9 doxygen PropagationLossModel
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2031
diff changeset
   139
   */
1882
061f7f7f9992 start of work towards port of wifi code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   140
  void SetLambda (double lambda);
2032
dac45a8371f9 doxygen PropagationLossModel
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2031
diff changeset
   141
  /**
dac45a8371f9 doxygen PropagationLossModel
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2031
diff changeset
   142
   * \param systemLoss (dimension-less)
dac45a8371f9 doxygen PropagationLossModel
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2031
diff changeset
   143
   *
dac45a8371f9 doxygen PropagationLossModel
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2031
diff changeset
   144
   * Set the system loss used by the Friis propagation model.
dac45a8371f9 doxygen PropagationLossModel
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2031
diff changeset
   145
   */
1882
061f7f7f9992 start of work towards port of wifi code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   146
  void SetSystemLoss (double systemLoss);
2064
a1adc9960e50 handle min distance for friis model in a saner way
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2063
diff changeset
   147
a1adc9960e50 handle min distance for friis model in a saner way
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2063
diff changeset
   148
  /**
a1adc9960e50 handle min distance for friis model in a saner way
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2063
diff changeset
   149
   * \param minDistance the minimum distance
a1adc9960e50 handle min distance for friis model in a saner way
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2063
diff changeset
   150
   *
a1adc9960e50 handle min distance for friis model in a saner way
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2063
diff changeset
   151
   * Below this distance, the txpower is returned
a1adc9960e50 handle min distance for friis model in a saner way
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2063
diff changeset
   152
   * unmodified as the rxpower.
a1adc9960e50 handle min distance for friis model in a saner way
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2063
diff changeset
   153
   */
a1adc9960e50 handle min distance for friis model in a saner way
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2063
diff changeset
   154
  void SetMinDistance (double minDistance);
a1adc9960e50 handle min distance for friis model in a saner way
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2063
diff changeset
   155
2032
dac45a8371f9 doxygen PropagationLossModel
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2031
diff changeset
   156
  /**
3388
0258bd0793ab add missing implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2940
diff changeset
   157
   * \returns the minimum distance.
0258bd0793ab add missing implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2940
diff changeset
   158
   */
0258bd0793ab add missing implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2940
diff changeset
   159
  double GetMinDistance (void) const;
0258bd0793ab add missing implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2940
diff changeset
   160
0258bd0793ab add missing implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2940
diff changeset
   161
  /**
2032
dac45a8371f9 doxygen PropagationLossModel
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2031
diff changeset
   162
   * \returns the current wavelength (m)
dac45a8371f9 doxygen PropagationLossModel
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2031
diff changeset
   163
   */
1882
061f7f7f9992 start of work towards port of wifi code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   164
  double GetLambda (void) const;
2032
dac45a8371f9 doxygen PropagationLossModel
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2031
diff changeset
   165
  /**
dac45a8371f9 doxygen PropagationLossModel
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2031
diff changeset
   166
   * \returns the current system loss (dimention-less)
dac45a8371f9 doxygen PropagationLossModel
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2031
diff changeset
   167
   */
1882
061f7f7f9992 start of work towards port of wifi code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   168
  double GetSystemLoss (void) const;
061f7f7f9992 start of work towards port of wifi code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   169
061f7f7f9992 start of work towards port of wifi code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   170
private:
3908
232d52317a18 fix build.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3907
diff changeset
   171
  FriisPropagationLossModel (const FriisPropagationLossModel &o);
232d52317a18 fix build.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3907
diff changeset
   172
  FriisPropagationLossModel & operator = (const FriisPropagationLossModel &o);
4059
251351372d8d PropagationLossModel::GetLoss -> CalcRxPower. Add ThreeLogDistancePropagationLossModel.
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 3909
diff changeset
   173
  virtual double DoCalcRxPower (double txPowerDbm,
251351372d8d PropagationLossModel::GetLoss -> CalcRxPower. Add ThreeLogDistancePropagationLossModel.
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 3909
diff changeset
   174
                                Ptr<MobilityModel> a,
251351372d8d PropagationLossModel::GetLoss -> CalcRxPower. Add ThreeLogDistancePropagationLossModel.
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 3909
diff changeset
   175
                                Ptr<MobilityModel> b) const;
1882
061f7f7f9992 start of work towards port of wifi code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   176
  double DbmToW (double dbm) const;
061f7f7f9992 start of work towards port of wifi code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   177
  double DbmFromW (double w) const;
061f7f7f9992 start of work towards port of wifi code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   178
061f7f7f9992 start of work towards port of wifi code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   179
  static const double PI;
061f7f7f9992 start of work towards port of wifi code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   180
  double m_lambda;
061f7f7f9992 start of work towards port of wifi code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   181
  double m_systemLoss;
2064
a1adc9960e50 handle min distance for friis model in a saner way
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2063
diff changeset
   182
  double m_minDistance;
1882
061f7f7f9992 start of work towards port of wifi code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   183
};
061f7f7f9992 start of work towards port of wifi code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   184
2032
dac45a8371f9 doxygen PropagationLossModel
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2031
diff changeset
   185
/**
2063
8663fe258bce document log distance propagation loss model.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2062
diff changeset
   186
 * \brief a log distance propagation model.
8663fe258bce document log distance propagation loss model.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2062
diff changeset
   187
 *
8663fe258bce document log distance propagation loss model.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2062
diff changeset
   188
 * This model calculates the reception power with a so-called
8663fe258bce document log distance propagation loss model.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2062
diff changeset
   189
 * log-distance propagation model:
8663fe258bce document log distance propagation loss model.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2062
diff changeset
   190
 * \f$ L = L_0 + 10 n log_{10}(\frac{d}{d_0})\f$
2032
dac45a8371f9 doxygen PropagationLossModel
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2031
diff changeset
   191
 *
2063
8663fe258bce document log distance propagation loss model.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2062
diff changeset
   192
 * where:
8663fe258bce document log distance propagation loss model.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2062
diff changeset
   193
 *  - \f$ n \f$ : the path loss distance exponent
8663fe258bce document log distance propagation loss model.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2062
diff changeset
   194
 *  - \f$ d_0 \f$ : reference distance (m)
8663fe258bce document log distance propagation loss model.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2062
diff changeset
   195
 *  - \f$ L_0 \f$ : path loss at reference distance (dB)
8663fe258bce document log distance propagation loss model.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2062
diff changeset
   196
 *  - \f$ d \f$ : distance (m)
8663fe258bce document log distance propagation loss model.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2062
diff changeset
   197
 *  - \f$ L \f$ : path loss (dB)
8663fe258bce document log distance propagation loss model.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2062
diff changeset
   198
 *
8663fe258bce document log distance propagation loss model.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2062
diff changeset
   199
 * When the path loss is requested at a distance smaller than
8663fe258bce document log distance propagation loss model.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2062
diff changeset
   200
 * the reference distance, the tx power is returned.
8663fe258bce document log distance propagation loss model.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2062
diff changeset
   201
 *
2032
dac45a8371f9 doxygen PropagationLossModel
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2031
diff changeset
   202
 */
2063
8663fe258bce document log distance propagation loss model.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2062
diff changeset
   203
class LogDistancePropagationLossModel : public PropagationLossModel
1882
061f7f7f9992 start of work towards port of wifi code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   204
{
061f7f7f9992 start of work towards port of wifi code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   205
public:
2549
fe90cf0b2c63 port propagation models and channel to attributes.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2336
diff changeset
   206
  static TypeId GetTypeId (void);
2063
8663fe258bce document log distance propagation loss model.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2062
diff changeset
   207
  LogDistancePropagationLossModel ();
1882
061f7f7f9992 start of work towards port of wifi code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   208
2032
dac45a8371f9 doxygen PropagationLossModel
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2031
diff changeset
   209
  /**
dac45a8371f9 doxygen PropagationLossModel
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2031
diff changeset
   210
   * \param n the path loss exponent.
dac45a8371f9 doxygen PropagationLossModel
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2031
diff changeset
   211
   * Set the path loss exponent.
dac45a8371f9 doxygen PropagationLossModel
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2031
diff changeset
   212
   */
1882
061f7f7f9992 start of work towards port of wifi code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   213
  void SetPathLossExponent (double n);
2032
dac45a8371f9 doxygen PropagationLossModel
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2031
diff changeset
   214
  /** 
dac45a8371f9 doxygen PropagationLossModel
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2031
diff changeset
   215
   * \returns the current path loss exponent.
dac45a8371f9 doxygen PropagationLossModel
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2031
diff changeset
   216
   */
1882
061f7f7f9992 start of work towards port of wifi code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   217
  double GetPathLossExponent (void) const;
061f7f7f9992 start of work towards port of wifi code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   218
3909
4e7e594b0b7e get rid of reference model for log distance model
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3908
diff changeset
   219
  void SetReference (double referenceDistance, double referenceLoss);
1882
061f7f7f9992 start of work towards port of wifi code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   220
  
061f7f7f9992 start of work towards port of wifi code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   221
private:
3908
232d52317a18 fix build.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3907
diff changeset
   222
  LogDistancePropagationLossModel (const LogDistancePropagationLossModel &o);
232d52317a18 fix build.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3907
diff changeset
   223
  LogDistancePropagationLossModel & operator = (const LogDistancePropagationLossModel &o);
4059
251351372d8d PropagationLossModel::GetLoss -> CalcRxPower. Add ThreeLogDistancePropagationLossModel.
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 3909
diff changeset
   224
  virtual double DoCalcRxPower (double txPowerDbm,
251351372d8d PropagationLossModel::GetLoss -> CalcRxPower. Add ThreeLogDistancePropagationLossModel.
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 3909
diff changeset
   225
                                Ptr<MobilityModel> a,
251351372d8d PropagationLossModel::GetLoss -> CalcRxPower. Add ThreeLogDistancePropagationLossModel.
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 3909
diff changeset
   226
                                Ptr<MobilityModel> b) const;
1959
f64684973ea8 support DefaultValue
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1882
diff changeset
   227
  static Ptr<PropagationLossModel> CreateDefaultReference (void);
1882
061f7f7f9992 start of work towards port of wifi code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   228
061f7f7f9992 start of work towards port of wifi code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   229
  double m_exponent;
2063
8663fe258bce document log distance propagation loss model.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2062
diff changeset
   230
  double m_referenceDistance;
3909
4e7e594b0b7e get rid of reference model for log distance model
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3908
diff changeset
   231
  double m_referenceLoss;
1882
061f7f7f9992 start of work towards port of wifi code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   232
};
061f7f7f9992 start of work towards port of wifi code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   233
4059
251351372d8d PropagationLossModel::GetLoss -> CalcRxPower. Add ThreeLogDistancePropagationLossModel.
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 3909
diff changeset
   234
/**
251351372d8d PropagationLossModel::GetLoss -> CalcRxPower. Add ThreeLogDistancePropagationLossModel.
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 3909
diff changeset
   235
 * \brief A log distance path loss propagation model with three distance
251351372d8d PropagationLossModel::GetLoss -> CalcRxPower. Add ThreeLogDistancePropagationLossModel.
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 3909
diff changeset
   236
 * fields. This model is the same as ns3::LogDistancePropagationLossModel
251351372d8d PropagationLossModel::GetLoss -> CalcRxPower. Add ThreeLogDistancePropagationLossModel.
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 3909
diff changeset
   237
 * except that it has three distance fields: near, middle and far with
251351372d8d PropagationLossModel::GetLoss -> CalcRxPower. Add ThreeLogDistancePropagationLossModel.
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 3909
diff changeset
   238
 * different exponents.
251351372d8d PropagationLossModel::GetLoss -> CalcRxPower. Add ThreeLogDistancePropagationLossModel.
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 3909
diff changeset
   239
 *
251351372d8d PropagationLossModel::GetLoss -> CalcRxPower. Add ThreeLogDistancePropagationLossModel.
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 3909
diff changeset
   240
 * Within each field the reception power is calculated using the log-distance
251351372d8d PropagationLossModel::GetLoss -> CalcRxPower. Add ThreeLogDistancePropagationLossModel.
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 3909
diff changeset
   241
 * propagation equation:
251351372d8d PropagationLossModel::GetLoss -> CalcRxPower. Add ThreeLogDistancePropagationLossModel.
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 3909
diff changeset
   242
 * \f[ L = L_0 + 10 \cdot n_0 log_{10}(\frac{d}{d_0})\f]
251351372d8d PropagationLossModel::GetLoss -> CalcRxPower. Add ThreeLogDistancePropagationLossModel.
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 3909
diff changeset
   243
 * Each field begins where the previous ends and all together form a continuous function.
251351372d8d PropagationLossModel::GetLoss -> CalcRxPower. Add ThreeLogDistancePropagationLossModel.
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 3909
diff changeset
   244
 *
251351372d8d PropagationLossModel::GetLoss -> CalcRxPower. Add ThreeLogDistancePropagationLossModel.
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 3909
diff changeset
   245
 * There are three valid distance fields: near, middle, far. Actually four: the
251351372d8d PropagationLossModel::GetLoss -> CalcRxPower. Add ThreeLogDistancePropagationLossModel.
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 3909
diff changeset
   246
 * first from 0 to the reference distance is invalid and returns txPowerDbm.
251351372d8d PropagationLossModel::GetLoss -> CalcRxPower. Add ThreeLogDistancePropagationLossModel.
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 3909
diff changeset
   247
 *
251351372d8d PropagationLossModel::GetLoss -> CalcRxPower. Add ThreeLogDistancePropagationLossModel.
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 3909
diff changeset
   248
 * \f[ \underbrace{0 \cdots\cdots}_{=0} \underbrace{d_0 \cdots\cdots}_{n_0} \underbrace{d_1 \cdots\cdots}_{n_1} \underbrace{d_2 \cdots\cdots}_{n_2} \infty \f]
251351372d8d PropagationLossModel::GetLoss -> CalcRxPower. Add ThreeLogDistancePropagationLossModel.
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 3909
diff changeset
   249
 *
251351372d8d PropagationLossModel::GetLoss -> CalcRxPower. Add ThreeLogDistancePropagationLossModel.
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 3909
diff changeset
   250
 * Complete formula for the path loss in dB:
251351372d8d PropagationLossModel::GetLoss -> CalcRxPower. Add ThreeLogDistancePropagationLossModel.
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 3909
diff changeset
   251
 *
251351372d8d PropagationLossModel::GetLoss -> CalcRxPower. Add ThreeLogDistancePropagationLossModel.
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 3909
diff changeset
   252
 * \f[\displaystyle L =
251351372d8d PropagationLossModel::GetLoss -> CalcRxPower. Add ThreeLogDistancePropagationLossModel.
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 3909
diff changeset
   253
\begin{cases}
251351372d8d PropagationLossModel::GetLoss -> CalcRxPower. Add ThreeLogDistancePropagationLossModel.
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 3909
diff changeset
   254
0 & d < d_0 \\
251351372d8d PropagationLossModel::GetLoss -> CalcRxPower. Add ThreeLogDistancePropagationLossModel.
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 3909
diff changeset
   255
L_0 + 10 \cdot n_0 \log_{10}(\frac{d}{d_0}) & d_0 \leq d < d_1 \\
251351372d8d PropagationLossModel::GetLoss -> CalcRxPower. Add ThreeLogDistancePropagationLossModel.
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 3909
diff changeset
   256
L_0 + 10 \cdot n_0 \log_{10}(\frac{d_1}{d_0}) + 10 \cdot n_1 \log_{10}(\frac{d}{d_1}) & d_1 \leq d < d_2 \\
251351372d8d PropagationLossModel::GetLoss -> CalcRxPower. Add ThreeLogDistancePropagationLossModel.
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 3909
diff changeset
   257
L_0 + 10 \cdot n_0 \log_{10}(\frac{d_1}{d_0}) + 10 \cdot n_1 \log_{10}(\frac{d_2}{d_1}) + 10 \cdot n_2 \log_{10}(\frac{d}{d_2})& d_2 \leq d
251351372d8d PropagationLossModel::GetLoss -> CalcRxPower. Add ThreeLogDistancePropagationLossModel.
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 3909
diff changeset
   258
\end{cases}\f]
251351372d8d PropagationLossModel::GetLoss -> CalcRxPower. Add ThreeLogDistancePropagationLossModel.
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 3909
diff changeset
   259
 *
251351372d8d PropagationLossModel::GetLoss -> CalcRxPower. Add ThreeLogDistancePropagationLossModel.
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 3909
diff changeset
   260
 * where:
251351372d8d PropagationLossModel::GetLoss -> CalcRxPower. Add ThreeLogDistancePropagationLossModel.
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 3909
diff changeset
   261
 *  - \f$ L \f$ : resulting path loss (dB)
251351372d8d PropagationLossModel::GetLoss -> CalcRxPower. Add ThreeLogDistancePropagationLossModel.
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 3909
diff changeset
   262
 *  - \f$ d \f$ : distance (m)
251351372d8d PropagationLossModel::GetLoss -> CalcRxPower. Add ThreeLogDistancePropagationLossModel.
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 3909
diff changeset
   263
 *  - \f$ d_0, d_1, d_2 \f$ : three distance fields (m)
251351372d8d PropagationLossModel::GetLoss -> CalcRxPower. Add ThreeLogDistancePropagationLossModel.
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 3909
diff changeset
   264
 *  - \f$ n_0, n_1, n_2 \f$ : path loss distance exponent for each field (unitless)
251351372d8d PropagationLossModel::GetLoss -> CalcRxPower. Add ThreeLogDistancePropagationLossModel.
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 3909
diff changeset
   265
 *  - \f$ L_0 \f$ : path loss at reference distance (dB)
251351372d8d PropagationLossModel::GetLoss -> CalcRxPower. Add ThreeLogDistancePropagationLossModel.
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 3909
diff changeset
   266
 *
251351372d8d PropagationLossModel::GetLoss -> CalcRxPower. Add ThreeLogDistancePropagationLossModel.
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 3909
diff changeset
   267
 * When the path loss is requested at a distance smaller than the reference
251351372d8d PropagationLossModel::GetLoss -> CalcRxPower. Add ThreeLogDistancePropagationLossModel.
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 3909
diff changeset
   268
 * distance \f$ d_0 \f$, the tx power (with no path loss) is returned. The
251351372d8d PropagationLossModel::GetLoss -> CalcRxPower. Add ThreeLogDistancePropagationLossModel.
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 3909
diff changeset
   269
 * reference distance defaults to 1m and reference loss defaults to
251351372d8d PropagationLossModel::GetLoss -> CalcRxPower. Add ThreeLogDistancePropagationLossModel.
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 3909
diff changeset
   270
 * ns3::FriisPropagationLossModel with 5.15 GHz and is thus \f$ L_0 \f$ = 46.67 dB.
251351372d8d PropagationLossModel::GetLoss -> CalcRxPower. Add ThreeLogDistancePropagationLossModel.
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 3909
diff changeset
   271
 */
251351372d8d PropagationLossModel::GetLoss -> CalcRxPower. Add ThreeLogDistancePropagationLossModel.
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 3909
diff changeset
   272
251351372d8d PropagationLossModel::GetLoss -> CalcRxPower. Add ThreeLogDistancePropagationLossModel.
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 3909
diff changeset
   273
class ThreeLogDistancePropagationLossModel : public PropagationLossModel
251351372d8d PropagationLossModel::GetLoss -> CalcRxPower. Add ThreeLogDistancePropagationLossModel.
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 3909
diff changeset
   274
{
251351372d8d PropagationLossModel::GetLoss -> CalcRxPower. Add ThreeLogDistancePropagationLossModel.
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 3909
diff changeset
   275
public:
251351372d8d PropagationLossModel::GetLoss -> CalcRxPower. Add ThreeLogDistancePropagationLossModel.
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 3909
diff changeset
   276
  static TypeId GetTypeId (void);
251351372d8d PropagationLossModel::GetLoss -> CalcRxPower. Add ThreeLogDistancePropagationLossModel.
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 3909
diff changeset
   277
  ThreeLogDistancePropagationLossModel ();
251351372d8d PropagationLossModel::GetLoss -> CalcRxPower. Add ThreeLogDistancePropagationLossModel.
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 3909
diff changeset
   278
251351372d8d PropagationLossModel::GetLoss -> CalcRxPower. Add ThreeLogDistancePropagationLossModel.
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 3909
diff changeset
   279
  // Parameters are all accessible via attributes.
251351372d8d PropagationLossModel::GetLoss -> CalcRxPower. Add ThreeLogDistancePropagationLossModel.
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 3909
diff changeset
   280
251351372d8d PropagationLossModel::GetLoss -> CalcRxPower. Add ThreeLogDistancePropagationLossModel.
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 3909
diff changeset
   281
private:
251351372d8d PropagationLossModel::GetLoss -> CalcRxPower. Add ThreeLogDistancePropagationLossModel.
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 3909
diff changeset
   282
  ThreeLogDistancePropagationLossModel (const ThreeLogDistancePropagationLossModel& o);
251351372d8d PropagationLossModel::GetLoss -> CalcRxPower. Add ThreeLogDistancePropagationLossModel.
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 3909
diff changeset
   283
  ThreeLogDistancePropagationLossModel& operator= (const ThreeLogDistancePropagationLossModel& o);
251351372d8d PropagationLossModel::GetLoss -> CalcRxPower. Add ThreeLogDistancePropagationLossModel.
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 3909
diff changeset
   284
251351372d8d PropagationLossModel::GetLoss -> CalcRxPower. Add ThreeLogDistancePropagationLossModel.
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 3909
diff changeset
   285
  virtual double DoCalcRxPower (double txPowerDbm,
251351372d8d PropagationLossModel::GetLoss -> CalcRxPower. Add ThreeLogDistancePropagationLossModel.
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 3909
diff changeset
   286
                                Ptr<MobilityModel> a,
251351372d8d PropagationLossModel::GetLoss -> CalcRxPower. Add ThreeLogDistancePropagationLossModel.
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 3909
diff changeset
   287
                                Ptr<MobilityModel> b) const;
251351372d8d PropagationLossModel::GetLoss -> CalcRxPower. Add ThreeLogDistancePropagationLossModel.
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 3909
diff changeset
   288
251351372d8d PropagationLossModel::GetLoss -> CalcRxPower. Add ThreeLogDistancePropagationLossModel.
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 3909
diff changeset
   289
  double m_distance0;
251351372d8d PropagationLossModel::GetLoss -> CalcRxPower. Add ThreeLogDistancePropagationLossModel.
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 3909
diff changeset
   290
  double m_distance1;
251351372d8d PropagationLossModel::GetLoss -> CalcRxPower. Add ThreeLogDistancePropagationLossModel.
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 3909
diff changeset
   291
  double m_distance2;
251351372d8d PropagationLossModel::GetLoss -> CalcRxPower. Add ThreeLogDistancePropagationLossModel.
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 3909
diff changeset
   292
251351372d8d PropagationLossModel::GetLoss -> CalcRxPower. Add ThreeLogDistancePropagationLossModel.
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 3909
diff changeset
   293
  double m_exponent0;
251351372d8d PropagationLossModel::GetLoss -> CalcRxPower. Add ThreeLogDistancePropagationLossModel.
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 3909
diff changeset
   294
  double m_exponent1;
251351372d8d PropagationLossModel::GetLoss -> CalcRxPower. Add ThreeLogDistancePropagationLossModel.
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 3909
diff changeset
   295
  double m_exponent2;
251351372d8d PropagationLossModel::GetLoss -> CalcRxPower. Add ThreeLogDistancePropagationLossModel.
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 3909
diff changeset
   296
251351372d8d PropagationLossModel::GetLoss -> CalcRxPower. Add ThreeLogDistancePropagationLossModel.
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 3909
diff changeset
   297
  double m_referenceLoss;
251351372d8d PropagationLossModel::GetLoss -> CalcRxPower. Add ThreeLogDistancePropagationLossModel.
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 3909
diff changeset
   298
};
251351372d8d PropagationLossModel::GetLoss -> CalcRxPower. Add ThreeLogDistancePropagationLossModel.
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 3909
diff changeset
   299
4464
be1414b398a0 Nakagami propagation loss model from ns2
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 4059
diff changeset
   300
/**
be1414b398a0 Nakagami propagation loss model from ns2
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 4059
diff changeset
   301
 * \brief Nakagami-m fast fading propagation loss model.
be1414b398a0 Nakagami propagation loss model from ns2
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 4059
diff changeset
   302
 *
be1414b398a0 Nakagami propagation loss model from ns2
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 4059
diff changeset
   303
 * The Nakagami-m distribution is applied to the power level. The probability
be1414b398a0 Nakagami propagation loss model from ns2
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 4059
diff changeset
   304
 * density function is defined as
be1414b398a0 Nakagami propagation loss model from ns2
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 4059
diff changeset
   305
 * \f[ p(x; m, \omega) = \frac{2 m^m}{\Gamma(m) \omega^m} x^{2m - 1} e^{-\frac{m}{\omega} x^2} = 2 x \cdot p_{\text{Gamma}}(x^2, m, \frac{m}{\omega}) \f]
be1414b398a0 Nakagami propagation loss model from ns2
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 4059
diff changeset
   306
 * with \f$ m \f$ the fading depth parameter and \f$ \omega \f$ the average received power.
be1414b398a0 Nakagami propagation loss model from ns2
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 4059
diff changeset
   307
 *
be1414b398a0 Nakagami propagation loss model from ns2
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 4059
diff changeset
   308
 * It is implemented by either a ns3::GammaVariable or a ns3::ErlangVariable
be1414b398a0 Nakagami propagation loss model from ns2
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 4059
diff changeset
   309
 * random variable.
be1414b398a0 Nakagami propagation loss model from ns2
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 4059
diff changeset
   310
 *
be1414b398a0 Nakagami propagation loss model from ns2
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 4059
diff changeset
   311
 * Like in ns3::ThreeLogDistancePropagationLossModel, the m parameter is varied
be1414b398a0 Nakagami propagation loss model from ns2
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 4059
diff changeset
   312
 * over three distance fields:
be1414b398a0 Nakagami propagation loss model from ns2
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 4059
diff changeset
   313
 * \f[ \underbrace{0 \cdots\cdots}_{m_0} \underbrace{d_1 \cdots\cdots}_{m_1} \underbrace{d_2 \cdots\cdots}_{m_2} \infty \f]
be1414b398a0 Nakagami propagation loss model from ns2
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 4059
diff changeset
   314
 *
be1414b398a0 Nakagami propagation loss model from ns2
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 4059
diff changeset
   315
 * For m = 1 the Nakagami-m distribution equals the Rayleigh distribution. Thus
be1414b398a0 Nakagami propagation loss model from ns2
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 4059
diff changeset
   316
 * this model also implements Rayleigh distribution based fast fading.
be1414b398a0 Nakagami propagation loss model from ns2
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 4059
diff changeset
   317
 */
be1414b398a0 Nakagami propagation loss model from ns2
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 4059
diff changeset
   318
be1414b398a0 Nakagami propagation loss model from ns2
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 4059
diff changeset
   319
class NakagamiPropagationLossModel : public PropagationLossModel
be1414b398a0 Nakagami propagation loss model from ns2
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 4059
diff changeset
   320
{
be1414b398a0 Nakagami propagation loss model from ns2
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 4059
diff changeset
   321
public:
be1414b398a0 Nakagami propagation loss model from ns2
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 4059
diff changeset
   322
  static TypeId GetTypeId (void);
be1414b398a0 Nakagami propagation loss model from ns2
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 4059
diff changeset
   323
be1414b398a0 Nakagami propagation loss model from ns2
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 4059
diff changeset
   324
  NakagamiPropagationLossModel ();
be1414b398a0 Nakagami propagation loss model from ns2
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 4059
diff changeset
   325
be1414b398a0 Nakagami propagation loss model from ns2
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 4059
diff changeset
   326
  // Parameters are all accessible via attributes.
be1414b398a0 Nakagami propagation loss model from ns2
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 4059
diff changeset
   327
be1414b398a0 Nakagami propagation loss model from ns2
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 4059
diff changeset
   328
private:
be1414b398a0 Nakagami propagation loss model from ns2
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 4059
diff changeset
   329
  NakagamiPropagationLossModel (const NakagamiPropagationLossModel& o);
be1414b398a0 Nakagami propagation loss model from ns2
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 4059
diff changeset
   330
  NakagamiPropagationLossModel& operator= (const NakagamiPropagationLossModel& o);
be1414b398a0 Nakagami propagation loss model from ns2
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 4059
diff changeset
   331
be1414b398a0 Nakagami propagation loss model from ns2
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 4059
diff changeset
   332
  virtual double DoCalcRxPower (double txPowerDbm,
be1414b398a0 Nakagami propagation loss model from ns2
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 4059
diff changeset
   333
                                Ptr<MobilityModel> a,
be1414b398a0 Nakagami propagation loss model from ns2
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 4059
diff changeset
   334
                                Ptr<MobilityModel> b) const;
be1414b398a0 Nakagami propagation loss model from ns2
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 4059
diff changeset
   335
be1414b398a0 Nakagami propagation loss model from ns2
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 4059
diff changeset
   336
  double m_distance1;
be1414b398a0 Nakagami propagation loss model from ns2
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 4059
diff changeset
   337
  double m_distance2;
be1414b398a0 Nakagami propagation loss model from ns2
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 4059
diff changeset
   338
be1414b398a0 Nakagami propagation loss model from ns2
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 4059
diff changeset
   339
  double m_m0;
be1414b398a0 Nakagami propagation loss model from ns2
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 4059
diff changeset
   340
  double m_m1;
be1414b398a0 Nakagami propagation loss model from ns2
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 4059
diff changeset
   341
  double m_m2;
be1414b398a0 Nakagami propagation loss model from ns2
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 4059
diff changeset
   342
be1414b398a0 Nakagami propagation loss model from ns2
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 4059
diff changeset
   343
  ErlangVariable        m_erlangRandomVariable;
be1414b398a0 Nakagami propagation loss model from ns2
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 4059
diff changeset
   344
  GammaVariable         m_gammaRandomVariable;
be1414b398a0 Nakagami propagation loss model from ns2
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 4059
diff changeset
   345
};
be1414b398a0 Nakagami propagation loss model from ns2
Timo Bingmann <timo.bingmann@student.kit.edu>
parents: 4059
diff changeset
   346
4469
af124ed35b94 Fixed propagation loss model
Gary Pei <guangyu.pei@boeing.com>
parents: 4464
diff changeset
   347
/**
af124ed35b94 Fixed propagation loss model
Gary Pei <guangyu.pei@boeing.com>
parents: 4464
diff changeset
   348
 * \brief The propagation loss is fixed. The user can set received power level.
af124ed35b94 Fixed propagation loss model
Gary Pei <guangyu.pei@boeing.com>
parents: 4464
diff changeset
   349
 */ 
af124ed35b94 Fixed propagation loss model
Gary Pei <guangyu.pei@boeing.com>
parents: 4464
diff changeset
   350
class FixedRssLossModel : public PropagationLossModel
af124ed35b94 Fixed propagation loss model
Gary Pei <guangyu.pei@boeing.com>
parents: 4464
diff changeset
   351
{
af124ed35b94 Fixed propagation loss model
Gary Pei <guangyu.pei@boeing.com>
parents: 4464
diff changeset
   352
public:
af124ed35b94 Fixed propagation loss model
Gary Pei <guangyu.pei@boeing.com>
parents: 4464
diff changeset
   353
  static TypeId GetTypeId (void);
af124ed35b94 Fixed propagation loss model
Gary Pei <guangyu.pei@boeing.com>
parents: 4464
diff changeset
   354
af124ed35b94 Fixed propagation loss model
Gary Pei <guangyu.pei@boeing.com>
parents: 4464
diff changeset
   355
  FixedRssLossModel ();
af124ed35b94 Fixed propagation loss model
Gary Pei <guangyu.pei@boeing.com>
parents: 4464
diff changeset
   356
  virtual ~FixedRssLossModel ();
af124ed35b94 Fixed propagation loss model
Gary Pei <guangyu.pei@boeing.com>
parents: 4464
diff changeset
   357
  /**
4481
9250a25ee683 Doxygen cleanup
Tom Henderson <tomh@tomh.org>
parents: 4469
diff changeset
   358
   * \param rss (dBm) the received signal strength
4469
af124ed35b94 Fixed propagation loss model
Gary Pei <guangyu.pei@boeing.com>
parents: 4464
diff changeset
   359
   *
af124ed35b94 Fixed propagation loss model
Gary Pei <guangyu.pei@boeing.com>
parents: 4464
diff changeset
   360
   * Set the RSS.
af124ed35b94 Fixed propagation loss model
Gary Pei <guangyu.pei@boeing.com>
parents: 4464
diff changeset
   361
   */
af124ed35b94 Fixed propagation loss model
Gary Pei <guangyu.pei@boeing.com>
parents: 4464
diff changeset
   362
  void SetRss (double rss);
af124ed35b94 Fixed propagation loss model
Gary Pei <guangyu.pei@boeing.com>
parents: 4464
diff changeset
   363
af124ed35b94 Fixed propagation loss model
Gary Pei <guangyu.pei@boeing.com>
parents: 4464
diff changeset
   364
private:
af124ed35b94 Fixed propagation loss model
Gary Pei <guangyu.pei@boeing.com>
parents: 4464
diff changeset
   365
  FixedRssLossModel (const FixedRssLossModel &o);
af124ed35b94 Fixed propagation loss model
Gary Pei <guangyu.pei@boeing.com>
parents: 4464
diff changeset
   366
  FixedRssLossModel & operator = (const FixedRssLossModel &o);
af124ed35b94 Fixed propagation loss model
Gary Pei <guangyu.pei@boeing.com>
parents: 4464
diff changeset
   367
  virtual double DoCalcRxPower (double txPowerDbm,
af124ed35b94 Fixed propagation loss model
Gary Pei <guangyu.pei@boeing.com>
parents: 4464
diff changeset
   368
                                Ptr<MobilityModel> a,
af124ed35b94 Fixed propagation loss model
Gary Pei <guangyu.pei@boeing.com>
parents: 4464
diff changeset
   369
                                Ptr<MobilityModel> b) const;
af124ed35b94 Fixed propagation loss model
Gary Pei <guangyu.pei@boeing.com>
parents: 4464
diff changeset
   370
  double m_rss;
af124ed35b94 Fixed propagation loss model
Gary Pei <guangyu.pei@boeing.com>
parents: 4464
diff changeset
   371
};
af124ed35b94 Fixed propagation loss model
Gary Pei <guangyu.pei@boeing.com>
parents: 4464
diff changeset
   372
1882
061f7f7f9992 start of work towards port of wifi code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   373
} // namespace ns3
061f7f7f9992 start of work towards port of wifi code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   374
061f7f7f9992 start of work towards port of wifi code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   375
#endif /* PROPAGATION_LOSS_MODEL_H */