La classe SnrEval8021 1a est une classe dérivée
de la classe SnrEvala. Elle permet de calculer la durée de transmission
d'un paquet à l'aide de la méthode calcDuration() et aussi la
puissance reçue par la méthode calcRcvdPower(). Le calcul de la
puissance reçue dépend du model de propagation.
# snrInfo
# recvBuff
# radioState
# catRadioState
# rssi
# catRSSI
# publishRSSIAlways
# indication
# catIndication # nicModuleId # noiseLevel
# recvTime
# waveLength # thermalNoise
# pathLossAlphaHalf
# speedOfLight # useTorus
# playground # bitrate
# catBitrate # rGain
# propagationModelType
# ht
# hr
# systemLoss
# pathLossExponent
# shadowingVariance
# shadowing
# shadowingRandomNumberVectorIndex #
shadowingRandomNumberVector
: SnrStruct
: std::map<AirFrame*,double> : RadioState::States
: int
: RSSI
: int
: bool
: MediumIndication
: int
: int
: double : double : double : double : double : double :
bool
: Coord : double : int
: double : int
: double : double : double : double : double : double :
int
: itpp::vec
+ initialize ()
+ receiveBBItem ()
# handleLowerMsgStart ()
# handleLowerMsgEnd ()
# calcRcvdPower () # calcPathLoss ()
# addNewSnr ()
# handlePublish () # modifySnrList ()
# calcDuration (cMessage* m) # updateSensitivity ()
: int : int : int : int : int : int : int : int : int :
double : int
SnrEvala
Le module SnrEval8021 1 correspond à la classe
SnrEval8021 1a. Il a comme paramètre la taille de l'entête
headerLength et le bruit thermique thermalNoise, etc. Nous avons ajouté
à ce module de nouveaux paramètres comme propagationModelType qui
peut avoir trois valeurs possibles 0, 1, 2. La valeur 0 correspond au
modèle Free-Space. La valeur 1 correspond au modèle Two-Ray. La
valeur 2 correspond au modèle Shadowing. Nous avons aussi ajouté
les paramètres de chaque modèle de propagation comme
pathLossExponent, shadowingVaraince et shadowingNumberofSamples pour le
modèle Shadowing.
SnrEval80211a
Cette classe décide si le paquet est correctement
reçu à l'aide de la méthode isReceivedCorrectly(). Cette
dernière fait appel à la méthode packetOK() qui retourne
true si le paquet est correctement reçu et false dans le cas contraire.
La méthode packetOK() prend comme paramètre le débit avec
lequel a été envoyé le paquet afin de connaître la
modulation utilisée pour envoyer le payload. Selon la
modulation, elle calcule la probabilité de succès des deux
morceaux du paquet et ensuite le PER. Enfin, elle génère un
nombre aléatoire entre 0 et 1 et le compare au PER pour décider
s'il y a eu des erreurs de transmission. Cette classe génère les
masques d'erreur à l'aide de la méthode generate_error_masks().
L'appel à cette méthode se fait à chaque réception
d'un nouveau paquet.
Decider80211a
# bitrate
# snirThreshold
# typeOfChannelForBer # d_free
# ad_free
# Ck[10]
# puncturing_period # coderOutputBits
# FadingArrayIndex
# FadingArrayIndexInternal # codingRate
# error_masks
# CurrentGeneratedRandomNumberForMaskGeneration #
minSnrForOutageProbInSlowFading
# isErrorMaskGenerated # isFadingChannelUsed
# fadingNumberOfSamples # simulationBaudRate
# normalizedDopplerFrequency
# averagePowerProfileDb
# fadingChannelRicianFactor # typeOfChannelForBER
# perCalculationMethod # phyReceiverNoiseLevel #
FadingProcessCoeffs
: double
: double
: int
: uint32_t
: uint32_t
: uint32_t
: uint32_t
: uint32_t
: int : int : double
: FILE *
: double
: double
: int : int : int : double
: double
: int : int : int : int : int : itpp::cmat
+ initialize ( int) : void
+ finish () : void
# handleLowerMsg (cMessage * msg) : void
# handleUpperMsg (cMessage * msg) : void
# handleSelfMsg (cMessage * msg) : void
# handleLowerControl (cMessage * msg) : void
# dB2fraction ( double) : double
# packetOk (double SNR, int length, double bitrate) : bool
# bpskBER (double snirMin, double bitrate) : double
# QamBER (double snirMin, double bitrate, int m) : double
# Qfunction (double x) : double
# generate_error_masks (unsigned int nbits, double Pb, bool
error_distribution_type, FILE * error_masks, double EER, double snr) : void
# getSuccessRate (double snr, unsigned int nbits, FILE *
error_masks, double rate) : double
# getSuccessRateFecBpsk (double snr, unsigned int nbits, double
rate, double codingRate) : double
# getSuccessRateFecQam (double snr, unsigned int nbits, double
rate, double codingRate, int m) : double
# getSuccessRateNoFecBpsk (double snr, unsigned int nbits, double
rate, double codingRate) : double
# getSuccessRateNoFecQam () : double
# increaseFadingArrayIndex () : void
# getFadingFactor () : double
# getBitNumbersPerModulationSymbol ( int) : uint32_t
# erfc (double x) : double
Figure 3.8 La classe Decider80211a
Le module Decider8021 1a reçoit les paquets du module
SnrEval8021 1a et les transmet au module Mac8021 1a. Les paramètres
principaux de ce modules sont : isErrorMaskGenerated qui vaut 1 s'il y a
génération d'un fichier de masques d'erreur, isFadingChannelUsed
qui vaut 1 si le modèle fading est utilisé. Ce module contient
aussi d'autres paramètres pour le calcul du BER et du PER.
Decider80211a