Binary Conter

Explication du code
Attributs du modèle

Comme pour le modèle Generator, mDuration est un paramètre qui va nous permettre de stocker le pas de temps entre la réception d'un évènement et sa réplication. mSigma va nous permettre de calculer le temps restant entre chaque événement reçu pour continuer à générer ses événements à pas régulier et mLastTime servira à stocker la date du dernier évènement. mCounter2 sera celui qui récupérera l'entrée et nous permettra alors de voir s'il s'agit d'un 1 ou non. mCounter, sera égal à 1 si deux 1 on été récupéré pendant le laps de temps donné.

Constructeur / Destructeur

Ce sont exactement les mêmes que pour le modèle Generator, le constructeur récupère le paramètre duration. Et le destructeur est vide mais obligatoire.

Init

On initialise l'attribut mSigma au paramètre duration, mLastTime à la date de départ. Au début de la simulation, nous sommes en attente d'une entrée, on initialise donc mState à PASSIVE. On initialise mCounter et mCounter2 à 0. Enfin on retourne mDuration pour attendre la durée passée en paramètre.

Output

Si mCounter est égal à 1, c'est que nous avons reçu deux 1 en entrée pendant le laps de temps donné, nous pouvons donc retourner un 1, sinon on ne renvois rien.

TimeAdvance (Ta)

Si nous n'avons encore rien reçu nous attendons juste la durée donnée en paramètre (mDuration). Si nous avons déjà reçu un 1, nous attendons seulement le temps restant avant la fin de la durée donnée en paramètre.

InternalTransition

L'internalTransition a lieu à chaque laps de temps donné en paramètre. Elle attribut la valeur time à mLastTime ce qui va ensuite nous offrir la possibilité de mettre à jour mSigma si c'est une externalTransition. Il réinitialise ensuite sigma avec le paramètre mduration défini par l'utilisateur et repasse mState à PASSIVE et réinitialise mCounter et mCounter2 à 0.

ExternalTransition

Lorsque nous n'avons pas encore reçu de 1 de generator, nous somme dans l'état PASSIVE. Dès que l'on reçois quelque chose nous regardons s'il s'agit d'un 1 et si c'est le cas, nous passons dans l'état ACTIVE. Que l'on reçoive où non un 1 nous mettons à jour le Sigma ainsi que le lastTime.

Si nous avons déjà reçu un 1 nous somme alors dans l'état ACTIVE. Nous regardons alors si nous recevons un autre 1 et si c'est le cas nous mettons mCounter à 1. Là encore, que l'on reçoive où non un 1, nous mettons à jour le Sigma ainsi que le lastTime.