src/wifi/model/yans-error-rate-model.h
author Tom Henderson <tomh@tomh.org>
Mon, 28 Sep 2015 20:27:25 -0700
changeset 11676 05ea1489e509
parent 11628 243b71de25a0
permissions -rw-r--r--
bug 2184: Integer overflow in MacLow
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
7385
10beb0e53130 standardize emacs c++ mode comments
Vedran Miletić <rivanvx@gmail.com>
parents: 7141
diff changeset
     1
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
3903
714f93024a37 add missing license headers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3902
diff changeset
     2
/*
714f93024a37 add missing license headers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3902
diff changeset
     3
 * Copyright (c) 2005,2006 INRIA
714f93024a37 add missing license headers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3902
diff changeset
     4
 *
714f93024a37 add missing license headers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3902
diff changeset
     5
 * This program is free software; you can redistribute it and/or modify
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7139
diff changeset
     6
 * it under the terms of the GNU General Public License version 2 as
3903
714f93024a37 add missing license headers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3902
diff changeset
     7
 * published by the Free Software Foundation;
714f93024a37 add missing license headers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3902
diff changeset
     8
 *
714f93024a37 add missing license headers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3902
diff changeset
     9
 * This program is distributed in the hope that it will be useful,
714f93024a37 add missing license headers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3902
diff changeset
    10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
714f93024a37 add missing license headers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3902
diff changeset
    11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
714f93024a37 add missing license headers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3902
diff changeset
    12
 * GNU General Public License for more details.
714f93024a37 add missing license headers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3902
diff changeset
    13
 *
714f93024a37 add missing license headers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3902
diff changeset
    14
 * You should have received a copy of the GNU General Public License
714f93024a37 add missing license headers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3902
diff changeset
    15
 * along with this program; if not, write to the Free Software
714f93024a37 add missing license headers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3902
diff changeset
    16
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
714f93024a37 add missing license headers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3902
diff changeset
    17
 *
714f93024a37 add missing license headers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3902
diff changeset
    18
 * Author: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
714f93024a37 add missing license headers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3902
diff changeset
    19
 */
11446
d13686a57ef0 cleanup yans-wifi-channel, yans-error-rate-model and nist-error-rate-model
Sébastien Deronne <sebastien.deronne@gmail.com>
parents: 10483
diff changeset
    20
4038
c6f634d0fc6f virtualize ErrorRateModel
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3905
diff changeset
    21
#ifndef YANS_ERROR_RATE_MODEL_H
c6f634d0fc6f virtualize ErrorRateModel
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3905
diff changeset
    22
#define YANS_ERROR_RATE_MODEL_H
3902
9e048e073cf0 split the error rate model from the yans phy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    23
9e048e073cf0 split the error rate model from the yans phy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    24
#include <stdint.h>
9e048e073cf0 split the error rate model from the yans phy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    25
#include "wifi-mode.h"
4038
c6f634d0fc6f virtualize ErrorRateModel
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3905
diff changeset
    26
#include "error-rate-model.h"
6357
5d6d511ce4e9 Factor out DSSS error rate functions to separate class
Gary Pei <guangyu.pei@boeing.com>
parents: 4477
diff changeset
    27
#include "dsss-error-rate-model.h"
3902
9e048e073cf0 split the error rate model from the yans phy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    28
9e048e073cf0 split the error rate model from the yans phy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    29
namespace ns3 {
9e048e073cf0 split the error rate model from the yans phy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    30
4470
51b5c1a272d3 802.11b PHY support
Gary Pei <guangyu.pei@boeing.com>
parents: 4038
diff changeset
    31
/**
51b5c1a272d3 802.11b PHY support
Gary Pei <guangyu.pei@boeing.com>
parents: 4038
diff changeset
    32
 * \brief Model the error rate for different modulations.
7139
79dd02ed46ec doxygen wifi module grouping all wifi classes
Nicola Baldo <nbaldo@cttc.es>
parents: 6852
diff changeset
    33
 * \ingroup wifi
4470
51b5c1a272d3 802.11b PHY support
Gary Pei <guangyu.pei@boeing.com>
parents: 4038
diff changeset
    34
 *
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7139
diff changeset
    35
 * A packet of interest (e.g., a packet can potentially be received by the MAC)
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7139
diff changeset
    36
 * is divided into chunks. Each chunk is related to an start/end receiving event.
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7139
diff changeset
    37
 * For each chunk, it calculates the ratio (SINR) between received power of packet
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7139
diff changeset
    38
 * of interest and summation of noise and interfering power of all the other incoming
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7139
diff changeset
    39
 * packets. Then, it will calculate the success rate of the chunk based on
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7139
diff changeset
    40
 * BER of the modulation. The success reception rate of the packet is derived from
4470
51b5c1a272d3 802.11b PHY support
Gary Pei <guangyu.pei@boeing.com>
parents: 4038
diff changeset
    41
 * the success rate of all chunks.
51b5c1a272d3 802.11b PHY support
Gary Pei <guangyu.pei@boeing.com>
parents: 4038
diff changeset
    42
 *
51b5c1a272d3 802.11b PHY support
Gary Pei <guangyu.pei@boeing.com>
parents: 4038
diff changeset
    43
 * The 802.11b modulations:
51b5c1a272d3 802.11b PHY support
Gary Pei <guangyu.pei@boeing.com>
parents: 4038
diff changeset
    44
 *    - 1 Mbps mode is based on DBPSK. BER is from equation 5.2-69 from John G. Proakis
51b5c1a272d3 802.11b PHY support
Gary Pei <guangyu.pei@boeing.com>
parents: 4038
diff changeset
    45
 *      Digitial Communications, 2001 edition
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7139
diff changeset
    46
 *    - 2 Mbps model is based on DQPSK. Equation 8 from "Tight bounds and accurate
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7139
diff changeset
    47
 *      approximations for dqpsk transmission bit error rate", G. Ferrari and G.E. Corazza
4470
51b5c1a272d3 802.11b PHY support
Gary Pei <guangyu.pei@boeing.com>
parents: 4038
diff changeset
    48
 *      ELECTRONICS LETTERS, 40(20):1284-1285, September 2004
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7139
diff changeset
    49
 *    - 5.5 Mbps and 11 Mbps are based on equations (18) and (17) from "Properties and
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7139
diff changeset
    50
 *      performance of the ieee 802.11b complementarycode-key signal sets",
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7139
diff changeset
    51
 *      Michael B. Pursley and Thomas C. Royster. IEEE TRANSACTIONS ON COMMUNICATIONS,
4470
51b5c1a272d3 802.11b PHY support
Gary Pei <guangyu.pei@boeing.com>
parents: 4038
diff changeset
    52
 *      57(2):440-449, February 2009.
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7139
diff changeset
    53
 *    - More detailed description and validation can be found in
4470
51b5c1a272d3 802.11b PHY support
Gary Pei <guangyu.pei@boeing.com>
parents: 4038
diff changeset
    54
 *      http://www.nsnam.org/~pei/80211b.pdf
51b5c1a272d3 802.11b PHY support
Gary Pei <guangyu.pei@boeing.com>
parents: 4038
diff changeset
    55
 */
4038
c6f634d0fc6f virtualize ErrorRateModel
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3905
diff changeset
    56
class YansErrorRateModel : public ErrorRateModel
3902
9e048e073cf0 split the error rate model from the yans phy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    57
{
9e048e073cf0 split the error rate model from the yans phy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    58
public:
9e048e073cf0 split the error rate model from the yans phy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    59
  static TypeId GetTypeId (void);
9e048e073cf0 split the error rate model from the yans phy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    60
4038
c6f634d0fc6f virtualize ErrorRateModel
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3905
diff changeset
    61
  YansErrorRateModel ();
3902
9e048e073cf0 split the error rate model from the yans phy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    62
11628
243b71de25a0 add support for IEEE 802.11ac
Sébastien Deronne <sebastien.deronne@gmail.com>
parents: 11450
diff changeset
    63
  virtual double GetChunkSuccessRate (WifiMode mode, WifiTxVector txVector, double snr, uint32_t nbits) const;
3902
9e048e073cf0 split the error rate model from the yans phy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    64
11446
d13686a57ef0 cleanup yans-wifi-channel, yans-error-rate-model and nist-error-rate-model
Sébastien Deronne <sebastien.deronne@gmail.com>
parents: 10483
diff changeset
    65
3902
9e048e073cf0 split the error rate model from the yans phy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    66
private:
10424
9d29c9a5ddcb doxygen warnings for wifi module
Daniel Lertpratchya <nikkipui@gmail.com>
parents: 7385
diff changeset
    67
  /**
9d29c9a5ddcb doxygen warnings for wifi module
Daniel Lertpratchya <nikkipui@gmail.com>
parents: 7385
diff changeset
    68
   * Return the logarithm of the given value to base 2.
9d29c9a5ddcb doxygen warnings for wifi module
Daniel Lertpratchya <nikkipui@gmail.com>
parents: 7385
diff changeset
    69
   *
9d29c9a5ddcb doxygen warnings for wifi module
Daniel Lertpratchya <nikkipui@gmail.com>
parents: 7385
diff changeset
    70
   * \param val
11446
d13686a57ef0 cleanup yans-wifi-channel, yans-error-rate-model and nist-error-rate-model
Sébastien Deronne <sebastien.deronne@gmail.com>
parents: 10483
diff changeset
    71
   *
10424
9d29c9a5ddcb doxygen warnings for wifi module
Daniel Lertpratchya <nikkipui@gmail.com>
parents: 7385
diff changeset
    72
   * \return the logarithm of val to base 2.
9d29c9a5ddcb doxygen warnings for wifi module
Daniel Lertpratchya <nikkipui@gmail.com>
parents: 7385
diff changeset
    73
   */
3902
9e048e073cf0 split the error rate model from the yans phy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    74
  double Log2 (double val) const;
10424
9d29c9a5ddcb doxygen warnings for wifi module
Daniel Lertpratchya <nikkipui@gmail.com>
parents: 7385
diff changeset
    75
  /**
9d29c9a5ddcb doxygen warnings for wifi module
Daniel Lertpratchya <nikkipui@gmail.com>
parents: 7385
diff changeset
    76
   * Return BER of BPSK with the given parameters.
9d29c9a5ddcb doxygen warnings for wifi module
Daniel Lertpratchya <nikkipui@gmail.com>
parents: 7385
diff changeset
    77
   *
9d29c9a5ddcb doxygen warnings for wifi module
Daniel Lertpratchya <nikkipui@gmail.com>
parents: 7385
diff changeset
    78
   * \param snr snr value
9d29c9a5ddcb doxygen warnings for wifi module
Daniel Lertpratchya <nikkipui@gmail.com>
parents: 7385
diff changeset
    79
   * \param signalSpread
9d29c9a5ddcb doxygen warnings for wifi module
Daniel Lertpratchya <nikkipui@gmail.com>
parents: 7385
diff changeset
    80
   * \param phyRate
11446
d13686a57ef0 cleanup yans-wifi-channel, yans-error-rate-model and nist-error-rate-model
Sébastien Deronne <sebastien.deronne@gmail.com>
parents: 10483
diff changeset
    81
   *
10424
9d29c9a5ddcb doxygen warnings for wifi module
Daniel Lertpratchya <nikkipui@gmail.com>
parents: 7385
diff changeset
    82
   * \return BER of BPSK at the given SNR
9d29c9a5ddcb doxygen warnings for wifi module
Daniel Lertpratchya <nikkipui@gmail.com>
parents: 7385
diff changeset
    83
   */
3902
9e048e073cf0 split the error rate model from the yans phy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    84
  double GetBpskBer (double snr, uint32_t signalSpread, uint32_t phyRate) const;
10424
9d29c9a5ddcb doxygen warnings for wifi module
Daniel Lertpratchya <nikkipui@gmail.com>
parents: 7385
diff changeset
    85
  /**
9d29c9a5ddcb doxygen warnings for wifi module
Daniel Lertpratchya <nikkipui@gmail.com>
parents: 7385
diff changeset
    86
   * Return BER of QAM-m with the given parameters.
9d29c9a5ddcb doxygen warnings for wifi module
Daniel Lertpratchya <nikkipui@gmail.com>
parents: 7385
diff changeset
    87
   *
9d29c9a5ddcb doxygen warnings for wifi module
Daniel Lertpratchya <nikkipui@gmail.com>
parents: 7385
diff changeset
    88
   * \param snr snr value
9d29c9a5ddcb doxygen warnings for wifi module
Daniel Lertpratchya <nikkipui@gmail.com>
parents: 7385
diff changeset
    89
   * \param m
9d29c9a5ddcb doxygen warnings for wifi module
Daniel Lertpratchya <nikkipui@gmail.com>
parents: 7385
diff changeset
    90
   * \param signalSpread
9d29c9a5ddcb doxygen warnings for wifi module
Daniel Lertpratchya <nikkipui@gmail.com>
parents: 7385
diff changeset
    91
   * \param phyRate
11446
d13686a57ef0 cleanup yans-wifi-channel, yans-error-rate-model and nist-error-rate-model
Sébastien Deronne <sebastien.deronne@gmail.com>
parents: 10483
diff changeset
    92
   *
10424
9d29c9a5ddcb doxygen warnings for wifi module
Daniel Lertpratchya <nikkipui@gmail.com>
parents: 7385
diff changeset
    93
   * \return BER of BPSK at the given SNR
9d29c9a5ddcb doxygen warnings for wifi module
Daniel Lertpratchya <nikkipui@gmail.com>
parents: 7385
diff changeset
    94
   */
3902
9e048e073cf0 split the error rate model from the yans phy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    95
  double GetQamBer (double snr, unsigned int m, uint32_t signalSpread, uint32_t phyRate) const;
10424
9d29c9a5ddcb doxygen warnings for wifi module
Daniel Lertpratchya <nikkipui@gmail.com>
parents: 7385
diff changeset
    96
  /**
9d29c9a5ddcb doxygen warnings for wifi module
Daniel Lertpratchya <nikkipui@gmail.com>
parents: 7385
diff changeset
    97
   * Return k!
9d29c9a5ddcb doxygen warnings for wifi module
Daniel Lertpratchya <nikkipui@gmail.com>
parents: 7385
diff changeset
    98
   *
10483
e3a02ed14587 [doxygen] wifi module
Daniel Lertpratchya <nikkipui@gmail.com>
parents: 10424
diff changeset
    99
   * \param k
11446
d13686a57ef0 cleanup yans-wifi-channel, yans-error-rate-model and nist-error-rate-model
Sébastien Deronne <sebastien.deronne@gmail.com>
parents: 10483
diff changeset
   100
   *
10424
9d29c9a5ddcb doxygen warnings for wifi module
Daniel Lertpratchya <nikkipui@gmail.com>
parents: 7385
diff changeset
   101
   * \return k!
9d29c9a5ddcb doxygen warnings for wifi module
Daniel Lertpratchya <nikkipui@gmail.com>
parents: 7385
diff changeset
   102
   */
3902
9e048e073cf0 split the error rate model from the yans phy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   103
  uint32_t Factorial (uint32_t k) const;
10424
9d29c9a5ddcb doxygen warnings for wifi module
Daniel Lertpratchya <nikkipui@gmail.com>
parents: 7385
diff changeset
   104
  /**
9d29c9a5ddcb doxygen warnings for wifi module
Daniel Lertpratchya <nikkipui@gmail.com>
parents: 7385
diff changeset
   105
   * Return Binomial distribution for a given k, p, and n
11450
9f4ae69f12b7 cleanup wifi module
Sébastien Deronne <sebastien.deronne@gmail.com>
parents: 11446
diff changeset
   106
   *
10424
9d29c9a5ddcb doxygen warnings for wifi module
Daniel Lertpratchya <nikkipui@gmail.com>
parents: 7385
diff changeset
   107
   * \param k
9d29c9a5ddcb doxygen warnings for wifi module
Daniel Lertpratchya <nikkipui@gmail.com>
parents: 7385
diff changeset
   108
   * \param p
9d29c9a5ddcb doxygen warnings for wifi module
Daniel Lertpratchya <nikkipui@gmail.com>
parents: 7385
diff changeset
   109
   * \param n
11446
d13686a57ef0 cleanup yans-wifi-channel, yans-error-rate-model and nist-error-rate-model
Sébastien Deronne <sebastien.deronne@gmail.com>
parents: 10483
diff changeset
   110
   *
10424
9d29c9a5ddcb doxygen warnings for wifi module
Daniel Lertpratchya <nikkipui@gmail.com>
parents: 7385
diff changeset
   111
   * \return a Binomial distribution
9d29c9a5ddcb doxygen warnings for wifi module
Daniel Lertpratchya <nikkipui@gmail.com>
parents: 7385
diff changeset
   112
   */
3902
9e048e073cf0 split the error rate model from the yans phy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   113
  double Binomial (uint32_t k, double p, uint32_t n) const;
10483
e3a02ed14587 [doxygen] wifi module
Daniel Lertpratchya <nikkipui@gmail.com>
parents: 10424
diff changeset
   114
  /**
e3a02ed14587 [doxygen] wifi module
Daniel Lertpratchya <nikkipui@gmail.com>
parents: 10424
diff changeset
   115
   * \param ber
e3a02ed14587 [doxygen] wifi module
Daniel Lertpratchya <nikkipui@gmail.com>
parents: 10424
diff changeset
   116
   * \param d
11446
d13686a57ef0 cleanup yans-wifi-channel, yans-error-rate-model and nist-error-rate-model
Sébastien Deronne <sebastien.deronne@gmail.com>
parents: 10483
diff changeset
   117
   *
10483
e3a02ed14587 [doxygen] wifi module
Daniel Lertpratchya <nikkipui@gmail.com>
parents: 10424
diff changeset
   118
   * \return double
e3a02ed14587 [doxygen] wifi module
Daniel Lertpratchya <nikkipui@gmail.com>
parents: 10424
diff changeset
   119
   */
3902
9e048e073cf0 split the error rate model from the yans phy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   120
  double CalculatePdOdd (double ber, unsigned int d) const;
10483
e3a02ed14587 [doxygen] wifi module
Daniel Lertpratchya <nikkipui@gmail.com>
parents: 10424
diff changeset
   121
  /**
e3a02ed14587 [doxygen] wifi module
Daniel Lertpratchya <nikkipui@gmail.com>
parents: 10424
diff changeset
   122
   * \param ber
e3a02ed14587 [doxygen] wifi module
Daniel Lertpratchya <nikkipui@gmail.com>
parents: 10424
diff changeset
   123
   * \param d
11446
d13686a57ef0 cleanup yans-wifi-channel, yans-error-rate-model and nist-error-rate-model
Sébastien Deronne <sebastien.deronne@gmail.com>
parents: 10483
diff changeset
   124
   *
10483
e3a02ed14587 [doxygen] wifi module
Daniel Lertpratchya <nikkipui@gmail.com>
parents: 10424
diff changeset
   125
   * \return double
e3a02ed14587 [doxygen] wifi module
Daniel Lertpratchya <nikkipui@gmail.com>
parents: 10424
diff changeset
   126
   */
3902
9e048e073cf0 split the error rate model from the yans phy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   127
  double CalculatePdEven (double ber, unsigned int d) const;
10483
e3a02ed14587 [doxygen] wifi module
Daniel Lertpratchya <nikkipui@gmail.com>
parents: 10424
diff changeset
   128
  /**
e3a02ed14587 [doxygen] wifi module
Daniel Lertpratchya <nikkipui@gmail.com>
parents: 10424
diff changeset
   129
   * \param ber
e3a02ed14587 [doxygen] wifi module
Daniel Lertpratchya <nikkipui@gmail.com>
parents: 10424
diff changeset
   130
   * \param d
11446
d13686a57ef0 cleanup yans-wifi-channel, yans-error-rate-model and nist-error-rate-model
Sébastien Deronne <sebastien.deronne@gmail.com>
parents: 10483
diff changeset
   131
   *
10483
e3a02ed14587 [doxygen] wifi module
Daniel Lertpratchya <nikkipui@gmail.com>
parents: 10424
diff changeset
   132
   * \return double
e3a02ed14587 [doxygen] wifi module
Daniel Lertpratchya <nikkipui@gmail.com>
parents: 10424
diff changeset
   133
   */
3902
9e048e073cf0 split the error rate model from the yans phy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   134
  double CalculatePd (double ber, unsigned int d) const;
10483
e3a02ed14587 [doxygen] wifi module
Daniel Lertpratchya <nikkipui@gmail.com>
parents: 10424
diff changeset
   135
  /**
e3a02ed14587 [doxygen] wifi module
Daniel Lertpratchya <nikkipui@gmail.com>
parents: 10424
diff changeset
   136
   * \param snr
e3a02ed14587 [doxygen] wifi module
Daniel Lertpratchya <nikkipui@gmail.com>
parents: 10424
diff changeset
   137
   * \param nbits
e3a02ed14587 [doxygen] wifi module
Daniel Lertpratchya <nikkipui@gmail.com>
parents: 10424
diff changeset
   138
   * \param signalSpread
e3a02ed14587 [doxygen] wifi module
Daniel Lertpratchya <nikkipui@gmail.com>
parents: 10424
diff changeset
   139
   * \param phyRate
e3a02ed14587 [doxygen] wifi module
Daniel Lertpratchya <nikkipui@gmail.com>
parents: 10424
diff changeset
   140
   * \param dFree
e3a02ed14587 [doxygen] wifi module
Daniel Lertpratchya <nikkipui@gmail.com>
parents: 10424
diff changeset
   141
   * \param adFree
11446
d13686a57ef0 cleanup yans-wifi-channel, yans-error-rate-model and nist-error-rate-model
Sébastien Deronne <sebastien.deronne@gmail.com>
parents: 10483
diff changeset
   142
   *
10483
e3a02ed14587 [doxygen] wifi module
Daniel Lertpratchya <nikkipui@gmail.com>
parents: 10424
diff changeset
   143
   * \return double
e3a02ed14587 [doxygen] wifi module
Daniel Lertpratchya <nikkipui@gmail.com>
parents: 10424
diff changeset
   144
   */
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7139
diff changeset
   145
  double GetFecBpskBer (double snr, double nbits,
3902
9e048e073cf0 split the error rate model from the yans phy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   146
                        uint32_t signalSpread, uint32_t phyRate,
9e048e073cf0 split the error rate model from the yans phy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   147
                        uint32_t dFree, uint32_t adFree) const;
10483
e3a02ed14587 [doxygen] wifi module
Daniel Lertpratchya <nikkipui@gmail.com>
parents: 10424
diff changeset
   148
  /**
e3a02ed14587 [doxygen] wifi module
Daniel Lertpratchya <nikkipui@gmail.com>
parents: 10424
diff changeset
   149
   * \param snr
e3a02ed14587 [doxygen] wifi module
Daniel Lertpratchya <nikkipui@gmail.com>
parents: 10424
diff changeset
   150
   * \param nbits
e3a02ed14587 [doxygen] wifi module
Daniel Lertpratchya <nikkipui@gmail.com>
parents: 10424
diff changeset
   151
   * \param signalSpread
e3a02ed14587 [doxygen] wifi module
Daniel Lertpratchya <nikkipui@gmail.com>
parents: 10424
diff changeset
   152
   * \param phyRate
e3a02ed14587 [doxygen] wifi module
Daniel Lertpratchya <nikkipui@gmail.com>
parents: 10424
diff changeset
   153
   * \param m
e3a02ed14587 [doxygen] wifi module
Daniel Lertpratchya <nikkipui@gmail.com>
parents: 10424
diff changeset
   154
   * \param dfree
e3a02ed14587 [doxygen] wifi module
Daniel Lertpratchya <nikkipui@gmail.com>
parents: 10424
diff changeset
   155
   * \param adFree
e3a02ed14587 [doxygen] wifi module
Daniel Lertpratchya <nikkipui@gmail.com>
parents: 10424
diff changeset
   156
   * \param adFreePlusOne
11446
d13686a57ef0 cleanup yans-wifi-channel, yans-error-rate-model and nist-error-rate-model
Sébastien Deronne <sebastien.deronne@gmail.com>
parents: 10483
diff changeset
   157
   *
10483
e3a02ed14587 [doxygen] wifi module
Daniel Lertpratchya <nikkipui@gmail.com>
parents: 10424
diff changeset
   158
   * \return double
e3a02ed14587 [doxygen] wifi module
Daniel Lertpratchya <nikkipui@gmail.com>
parents: 10424
diff changeset
   159
   */
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7139
diff changeset
   160
  double GetFecQamBer (double snr, uint32_t nbits,
3902
9e048e073cf0 split the error rate model from the yans phy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   161
                       uint32_t signalSpread,
9e048e073cf0 split the error rate model from the yans phy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   162
                       uint32_t phyRate,
9e048e073cf0 split the error rate model from the yans phy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   163
                       uint32_t m, uint32_t dfree,
9e048e073cf0 split the error rate model from the yans phy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   164
                       uint32_t adFree, uint32_t adFreePlusOne) const;
9e048e073cf0 split the error rate model from the yans phy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   165
};
9e048e073cf0 split the error rate model from the yans phy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   166
11450
9f4ae69f12b7 cleanup wifi module
Sébastien Deronne <sebastien.deronne@gmail.com>
parents: 11446
diff changeset
   167
} //namespace ns3
3902
9e048e073cf0 split the error rate model from the yans phy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   168
4038
c6f634d0fc6f virtualize ErrorRateModel
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3905
diff changeset
   169
#endif /* YANS_ERROR_RATE_MODEL_H */