A Discrete-Event Network Simulator
API
Loading...
Searching...
No Matches
dsss-error-rate-model.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2010 The Boeing Company
3 *
4 * SPDX-License-Identifier: GPL-2.0-only
5 *
6 * Author: Gary Pei <guangyu.pei@boeing.com>
7 */
8
9#ifndef DSSS_ERROR_RATE_MODEL_H
10#define DSSS_ERROR_RATE_MODEL_H
11
12#include <cstdint>
13
14namespace ns3
15{
16
17#ifdef HAVE_GSL
18/**
19 * Structure for integral function parameters
20 */
21struct FunctionParameters
22{
23 double beta; ///< Beta parameter
24 double n; ///< n parameter
25};
26
27/**
28 * Integral function using GSL library
29 *
30 * \param x the input x variable
31 * \param params a pointer to FunctionParameters struct
32 *
33 * \return the integral function
34 */
35double IntegralFunction(double x, void* params);
36#endif
37
38/**
39 * \brief an implementation of DSSS error rate model
40 * \ingroup wifi
41 *
42 * The 802.11b modulations:
43 * - 1 Mbps mode is based on DBPSK. BER is from equation 5.2-69 from John G. Proakis
44 * Digital Communications, 2001 edition
45 * - 2 Mbps model is based on DQPSK. Equation 8 from "Tight bounds and accurate
46 * approximations for DQPSK transmission bit error rate", G. Ferrari and G.E. Corazza
47 * ELECTRONICS LETTERS, 40(20):1284-1285, September 2004
48 * - 5.5 Mbps and 11 Mbps are based on equations (18) and (17) from "Properties and
49 * performance of the IEEE 802.11b complementarycode-key signal sets",
50 * Michael B. Pursley and Thomas C. Royster. IEEE TRANSACTIONS ON COMMUNICATIONS,
51 * 57(2):440-449, February 2009.
52 *
53 * This model is designed to run with highest accuracy using the GNU
54 * Scientific Library (GSL), but if GSL is not installed on the platform,
55 * will fall back to (slightly less accurate) Matlab-derived models for
56 * the CCK modulation types.
57 *
58 * More detailed description and validation can be found in
59 * http://www.nsnam.org/~pei/80211b.pdf
60 */
62{
63 public:
64 /**
65 * A function DQPSK
66 *
67 * \param x the input variable
68 *
69 * \return DQPSK (x)
70 */
71 static double DqpskFunction(double x);
72 /**
73 * Return the chunk success rate of the differential BPSK.
74 *
75 * \param sinr the SINR ratio (not dB) of the chunk
76 * \param nbits the size of the chunk
77 *
78 * \return the chunk success rate of the differential BPSK
79 */
80 static double GetDsssDbpskSuccessRate(double sinr, uint64_t nbits);
81 /**
82 * Return the chunk success rate of the differential encoded QPSK.
83 *
84 * \param sinr the SINR ratio (not dB) of the chunk
85 * \param nbits the size of the chunk
86 *
87 * \return the chunk success rate of the differential encoded QPSK.
88 */
89 static double GetDsssDqpskSuccessRate(double sinr, uint64_t nbits);
90 /**
91 * Return the chunk success rate of the differential encoded QPSK for
92 * 5.5Mbps data rate.
93 *
94 * \param sinr the SINR ratio (not dB) of the chunk
95 * \param nbits the size of the chunk
96 *
97 * \return the chunk success rate of the differential encoded QPSK for
98 */
99 static double GetDsssDqpskCck5_5SuccessRate(double sinr, uint64_t nbits);
100 /**
101 * Return the chunk success rate of the differential encoded QPSK for
102 * 11Mbps data rate.
103 *
104 * \param sinr the SINR ratio (not dB) of the chunk
105 * \param nbits the size of the chunk
106 *
107 * \return the chunk success rate of the differential encoded QPSK for
108 */
109 static double GetDsssDqpskCck11SuccessRate(double sinr, uint64_t nbits);
110#ifdef HAVE_GSL
111 static double SymbolErrorProb16Cck(double e2); /// equation (18) in Pursley's paper
112 static double SymbolErrorProb256Cck(double e1); /// equation (17) in Pursley's paper
113#else
114
115 protected:
116 /// WLAN perfect
117 static const double WLAN_SIR_PERFECT;
118 /// WLAN impossible
119 static const double WLAN_SIR_IMPOSSIBLE;
120#endif
121};
122
123} // namespace ns3
124
125#endif /* DSSS_ERROR_RATE_MODEL_H */
an implementation of DSSS error rate model
static double GetDsssDqpskSuccessRate(double sinr, uint64_t nbits)
Return the chunk success rate of the differential encoded QPSK.
static const double WLAN_SIR_PERFECT
WLAN perfect.
static double GetDsssDbpskSuccessRate(double sinr, uint64_t nbits)
Return the chunk success rate of the differential BPSK.
static double GetDsssDqpskCck5_5SuccessRate(double sinr, uint64_t nbits)
Return the chunk success rate of the differential encoded QPSK for 5.5Mbps data rate.
static double GetDsssDqpskCck11SuccessRate(double sinr, uint64_t nbits)
Return the chunk success rate of the differential encoded QPSK for 11Mbps data rate.
static const double WLAN_SIR_IMPOSSIBLE
WLAN impossible.
static double DqpskFunction(double x)
A function DQPSK.
Every class exported by the ns3 library is enclosed in the ns3 namespace.