00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef YANS_ERROR_RATE_MODEL_H
00021 #define YANS_ERROR_RATE_MODEL_H
00022
00023 #include <stdint.h>
00024 #include "wifi-mode.h"
00025 #include "error-rate-model.h"
00026
00027 namespace ns3 {
00028
00029 class YansErrorRateModel : public ErrorRateModel
00030 {
00031 public:
00032 static TypeId GetTypeId (void);
00033
00034 YansErrorRateModel ();
00035
00036 virtual double GetChunkSuccessRate (WifiMode mode, double snr, uint32_t nbits) const;
00037
00038 private:
00039 double Log2 (double val) const;
00040 double GetBpskBer (double snr, uint32_t signalSpread, uint32_t phyRate) const;
00041 double GetQamBer (double snr, unsigned int m, uint32_t signalSpread, uint32_t phyRate) const;
00042 uint32_t Factorial (uint32_t k) const;
00043 double Binomial (uint32_t k, double p, uint32_t n) const;
00044 double CalculatePdOdd (double ber, unsigned int d) const;
00045 double CalculatePdEven (double ber, unsigned int d) const;
00046 double CalculatePd (double ber, unsigned int d) const;
00047 double GetFecBpskBer (double snr, double nbits,
00048 uint32_t signalSpread, uint32_t phyRate,
00049 uint32_t dFree, uint32_t adFree) const;
00050 double GetFecQamBer (double snr, uint32_t nbits,
00051 uint32_t signalSpread,
00052 uint32_t phyRate,
00053 uint32_t m, uint32_t dfree,
00054 uint32_t adFree, uint32_t adFreePlusOne) const;
00055 };
00056
00057
00058 }
00059
00060 #endif