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

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

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

#include "logique_ou.h"



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

CB_Index logique_ou__num = 0;
CB_Mem_Bool *logique_ou_bitEntree1;
CB_Mem_Bool *logique_ou_bitEntree2;
CB_Mem_Bool *logique_ou_bitSortie;
CB_Mem_Bool *logique_ou_logiqueEntree1;
CB_Mem_Bool *logique_ou_logiqueEntree2;
CB_Mem_Bool *logique_ou_logiqueSortie;
CB_Mem_Bool *logique_ou_d_sortie;
CB_Mem_Bool *logique_ou_v_d_sortie;

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

#define bitEntree1 (logique_ou_bitEntree1->CB_current_value)
#define bitEntree2 (logique_ou_bitEntree2->CB_current_value)
#define bitSortie (logique_ou_bitSortie->CB_current_value)
#define logiqueEntree1 (logique_ou_logiqueEntree1->CB_current_value)
#define logiqueEntree2 (logique_ou_logiqueEntree2->CB_current_value)
#define logiqueSortie (logique_ou_logiqueSortie->CB_current_value)
#define d_sortie (logique_ou_d_sortie->CB_current_value)
#define v_d_sortie (logique_ou_v_d_sortie->CB_current_value)


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


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

int _bibliotheque_epo__logique_ou_init(void)
{
	(self.Bool+0)->CB_current_value = 1; /*logiqueEntree1*/
	(self.Bool+1)->CB_current_value = 1; /*logiqueEntree2*/
	(self.Bool+2)->CB_current_value = 1; /*logiqueSortie*/
	self.Bool+=5;


	return 0;
}


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

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

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

		logique_ou_logiqueEntree1 = self.Bool+0;
		logique_ou_logiqueEntree2 = self.Bool+1;
		logique_ou_logiqueSortie = self.Bool+2;
		logique_ou_d_sortie = self.Bool+3;
		logique_ou_v_d_sortie = self.Bool+4;

		/********************* 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 réalise une opération logique de type OU sur 		*/
			/*     deux entrées et restitue son résultat sur un booléen.		*/
			/* La sortie peut être forcée à une valeur par l'utilisateur		*/
			/* -----------------------------------------------------------------	*/
			
			if (d_sortie) bitSortie = v_d_sortie;
			else
				bitSortie = ((bitEntree1 ^ ! logiqueEntree1) | (bitEntree2 ^ ! logiqueEntree2)) ^ ! logiqueSortie;
			
			
					}

		CB_post_bool(logique_ou_bitSortie);

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

		/*no Post-conditions*/
	}

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

	self.Bool += 5;

	return 0;
}

