src/devices/wifi/yans-error-rate-model.h
changeset 4038 c6f634d0fc6f
parent 3905 99c9346b5d71
child 4470 51b5c1a272d3
equal deleted inserted replaced
4037:a8f42518c058 4038:c6f634d0fc6f
       
     1 /* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
       
     2 /*
       
     3  * Copyright (c) 2005,2006 INRIA
       
     4  *
       
     5  * This program is free software; you can redistribute it and/or modify
       
     6  * it under the terms of the GNU General Public License version 2 as 
       
     7  * published by the Free Software Foundation;
       
     8  *
       
     9  * This program is distributed in the hope that it will be useful,
       
    10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
       
    11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
       
    12  * GNU General Public License for more details.
       
    13  *
       
    14  * You should have received a copy of the GNU General Public License
       
    15  * along with this program; if not, write to the Free Software
       
    16  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
       
    17  *
       
    18  * Author: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
       
    19  */
       
    20 #ifndef YANS_ERROR_RATE_MODEL_H
       
    21 #define YANS_ERROR_RATE_MODEL_H
       
    22 
       
    23 #include <stdint.h>
       
    24 #include "wifi-mode.h"
       
    25 #include "error-rate-model.h"
       
    26 
       
    27 namespace ns3 {
       
    28 
       
    29 class YansErrorRateModel : public ErrorRateModel
       
    30 {
       
    31 public:
       
    32   static TypeId GetTypeId (void);
       
    33 
       
    34   YansErrorRateModel ();
       
    35 
       
    36   virtual double GetChunkSuccessRate (WifiMode mode, double snr, uint32_t nbits) const;
       
    37 
       
    38 private:
       
    39   double Log2 (double val) const;
       
    40   double GetBpskBer (double snr, uint32_t signalSpread, uint32_t phyRate) const;
       
    41   double GetQamBer (double snr, unsigned int m, uint32_t signalSpread, uint32_t phyRate) const;
       
    42   uint32_t Factorial (uint32_t k) const;
       
    43   double Binomial (uint32_t k, double p, uint32_t n) const;
       
    44   double CalculatePdOdd (double ber, unsigned int d) const;
       
    45   double CalculatePdEven (double ber, unsigned int d) const;
       
    46   double CalculatePd (double ber, unsigned int d) const;
       
    47   double GetFecBpskBer (double snr, double nbits, 
       
    48                         uint32_t signalSpread, uint32_t phyRate,
       
    49                         uint32_t dFree, uint32_t adFree) const;
       
    50   double GetFecQamBer (double snr, uint32_t nbits, 
       
    51                        uint32_t signalSpread,
       
    52                        uint32_t phyRate,
       
    53                        uint32_t m, uint32_t dfree,
       
    54                        uint32_t adFree, uint32_t adFreePlusOne) const;
       
    55 };
       
    56 
       
    57 
       
    58 } // namespace ns3
       
    59 
       
    60 #endif /* YANS_ERROR_RATE_MODEL_H */