/*2011-01-03T15:22:58-01:00*/

/********************************************************************
 * moyenne_5_cov.c
 * 
 * generated by: plcgen 2.1.201
 ********************************************************************/

#include "cb_comp.h"
#include "cb_covs.h"
#include "iec_1131.h"

#include "moyenne_5.h"



/**************************** Variables *****************************/

CB_Index moyenne_5__num = 0;
CB_Mem_Float *moyenne_5_valeurEntree1;
CB_Mem_Float *moyenne_5_valeurEntree2;
CB_Mem_Float *moyenne_5_valeurEntree3;
CB_Mem_Float *moyenne_5_valeurEntree4;
CB_Mem_Float *moyenne_5_valeurEntree5;
CB_Mem_Float *moyenne_5_valeurSortie;
CB_Mem_Int *moyenne_5_nombreEntree;
CB_Mem_Bool *moyenne_5_d_moyenne;
CB_Mem_Float *moyenne_5_v_d_moyenne;

/**************************** Variables *****************************/

#define valeurEntree1 (moyenne_5_valeurEntree1->CB_current_value)
#define valeurEntree2 (moyenne_5_valeurEntree2->CB_current_value)
#define valeurEntree3 (moyenne_5_valeurEntree3->CB_current_value)
#define valeurEntree4 (moyenne_5_valeurEntree4->CB_current_value)
#define valeurEntree5 (moyenne_5_valeurEntree5->CB_current_value)
#define valeurSortie (moyenne_5_valeurSortie->CB_current_value)
#define nombreEntree (moyenne_5_nombreEntree->CB_current_value)
#define d_moyenne (moyenne_5_d_moyenne->CB_current_value)
#define v_d_moyenne (moyenne_5_v_d_moyenne->CB_current_value)


/************************ Components offsets ************************/


/********************* Initialization function **********************/

int _bibliotheque_epo__moyenne_5_init(void)
{
	(self.Int+0)->CB_current_value = 2; /*nombreEntree*/
	self.Bool+=1;
	self.Int+=1;
	self.Float+=1;


	return 0;
}


/************************ Behavior function *************************/

int bibliotheque_epo__moyenne_5(void)
{
	static char *__comp_name = "bibliotheque_epo.moyenne_5";
	if (exec_term_node(self_num)) {

		/*********************** Internals variables ************************/

		moyenne_5_nombreEntree = self.Int+0;
		moyenne_5_d_moyenne = self.Bool+0;
		moyenne_5_v_d_moyenne = self.Float+0;

		/********************* Pre-conditions execution *********************/

		/*no Pre-conditions*/

		/************************ Behavior execution ************************/

		{
			/* -----------------------------------------------------------------	*/
			/* Type : Modèle de Comportement Opératif					*/
			/* Catégorie :  Boite à outils						*/
			/* Auteur : Techniques Nouvelles d'Informatique				*/
			/* Date de révision : Octobre 2002						*/
			/* -----------------------------------------------------------------	*/
			/* Ce module donne, en résultat, un réel correspondant à la 		*/
			/*	valeur moyenne de deux à cinq variables réelles.		*/
			/* -----------------------------------------------------------------	*/
			
			if (d_moyenne ) valeurSortie = v_d_moyenne;
			else {
				switch(nombreEntree) {
					case 2 : valeurSortie = valeurEntree1 + valeurEntree2;
						break;
					case 3 : valeurSortie = valeurEntree1 + valeurEntree2 + valeurEntree3;
						break;
					case 4 : valeurSortie = valeurEntree1 + valeurEntree2 + valeurEntree3 + valeurEntree4;
						break;
					case 5 : valeurSortie = valeurEntree1 + valeurEntree2 + valeurEntree3 + valeurEntree4 + valeurEntree5; 
						break;
					default : valeurSortie = 0.0;
					
						break;
				}
			
				if (nombreEntree > 0) valeurSortie = valeurSortie / nombreEntree;
			}
					}

		CB_post_float(moyenne_5_valeurSortie);

		/******************** Post-conditions execution *********************/

		/*no Post-conditions*/
	}

	/*************************** self update ****************************/

	self.Bool += 1;
	self.Int += 1;
	self.Float += 1;

	return 0;
}

