WOW !! MUCH LOVE ! SO WORLD PEACE !
Fond bitcoin pour l'amélioration du site: 1memzGeKS7CB3ECNkzSn2qHwxU6NZoJ8o
  Dogecoin (tips/pourboires): DCLoo9Dd4qECqpMLurdgGnaoqbftj16Nvp


Home | Publier un mémoire | Une page au hasard

 > 

Extensions du simulateur Omnet++ pour la validation de mécanismes de transmission multimédia dans les réseaux IEEE 802.11

( Télécharger le fichier original )
par Ahmed Ayadi
Ecole Nationale des Sciences de l'Informatique - Ingénieur informatique 2007
  

précédent sommaire suivant

Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy

2.1.2. La classe SnrEval80211a

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

Parameters:

debug: bool

headerLength: numeric transmitterPower : numeric carrierFrequency: numeric thermalNoise: numeric pathLossAlpha: numeric publishRSSIAlways : bool propagationModelType: numeric systemLoss : numeric

ht : numeric

hr : numeric

pathLossExponent : numeric shadowingVariance : numeric shadowingNumberofSamples : numeric

 

Gates:

in: uppergateIn

out: uppergateOut in: radioIn

out: upperControlOut

Figure 3.7 Le module SnrEval80211a

2.1.3. La classe Decider80211a

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

Parameters:

debug : bool

snirThreshold: numeric

typeOfChannelForBer: numeric isErrorMaskGenerated: numeric isFadingChannelUsed: numeric fadingNumberOfSamples: numeric simulationBaudRate: numeric normalizedDopplerFrequency: numeric averagePowerProfileDb: numeric fadingChannelRicianFactor: numeric typeOfChannelForBER: numeric minSnrForOutageProbInSlowFading: numeric perCalculationMethod: numeric phyReceiverNoiseLevel: numeric

Gates:

out: uppergateOut, upperControlOut in: lowergateIn, lowerControlIn;

 

Figure 3.9 Le module Decider80211a

précédent sommaire suivant






Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy








"Ceux qui vivent sont ceux qui luttent"   Victor Hugo