/*2011-01-03T15:23:14-01:00*/

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

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

#include "echelle_entier_reel.h"



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

CB_Index echelle_entier_reel__num = 0;
CB_Mem_Int *echelle_entier_reel_valeurEntree;
CB_Mem_Float *echelle_entier_reel_valeurSortie;
CB_Mem_Float *echelle_entier_reel_coefficient;
CB_Mem_Bool *echelle_entier_reel_d_echelle;
CB_Mem_Float *echelle_entier_reel_v_d_echelle;

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

#define valeurEntree (echelle_entier_reel_valeurEntree->CB_current_value)
#define valeurSortie (echelle_entier_reel_valeurSortie->CB_current_value)
#define coefficient (echelle_entier_reel_coefficient->CB_current_value)
#define d_echelle (echelle_entier_reel_d_echelle->CB_current_value)
#define v_d_echelle (echelle_entier_reel_v_d_echelle->CB_current_value)


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


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

int _bibliotheque_epo__echelle_entier_reel_init(void)
{
	(self.Float+0)->CB_current_value = 1.0; /*coefficient*/
	(self.Float+1)->CB_current_value = 10.0; /*v_d_echelle*/
	self.Bool+=1;
	self.Float+=2;


	return 0;
}


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

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

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

		echelle_entier_reel_coefficient = self.Float+0;
		echelle_entier_reel_d_echelle = self.Bool+0;
		echelle_entier_reel_v_d_echelle = self.Float+1;

		/********************* 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 représente la mise à l'échelle d'un entier en réel	*/
			/*	en le multipliant par un coefficient donné en paramètre.	*/
			/* L'équation de mise à l'échelle est de la forme  y = k x		*/
			/* -----------------------------------------------------------------	*/
			
			if (d_echelle )
				valeurSortie = v_d_echelle;
			else
				valeurSortie = valeurEntree * coefficient;
		}

		CB_post_float(echelle_entier_reel_valeurSortie);

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

		/*no Post-conditions*/
	}

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

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

	return 0;
}

