/*2019-05-14T12:02:17-01:00*/

/********************************************************************
 * manipulateur.c
 * 
 * generated by: plcgen 3.0.331
 ********************************************************************/

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

#include "manipulateur.h"
#include "sfp/functional/graf_mdl_manipulateur/graf_mdl_manipulateur.h"
#include "sfp/functional/deplacement/deplacement.h"


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

CB_Index manipulateur__num = 0;
CB_Mem_Bool *manipulateur_acq;
CB_Mem_Bool *manipulateur_au;
CB_Mem_Int *manipulateur_Pos_depart;
CB_Mem_Int *manipulateur_Pos_arrivee;
CB_Mem_Bool *manipulateur_DCY;
CB_Mem_Bool *manipulateur_FCGXS;
CB_Mem_Bool *manipulateur_FCGXR;
CB_Mem_Bool *manipulateur_FCPXS;
CB_Mem_Bool *manipulateur_FCPXR;
CB_Mem_Bool *manipulateur_FCVRS;
CB_Mem_Bool *manipulateur_FCVRR;
CB_Mem_Bool *manipulateur_FCVZH;
CB_Mem_Bool *manipulateur_FCVZB;
CB_Mem_Bool *manipulateur_vacuostat;
CB_Mem_Bool *manipulateur_Def_Manip;
CB_Mem_Bool *manipulateur_OKcycle;
CB_Mem_Bool *manipulateur_EVGXR;
CB_Mem_Bool *manipulateur_EVGXS;
CB_Mem_Bool *manipulateur_EVPXR;
CB_Mem_Bool *manipulateur_EVPXS;
CB_Mem_Bool *manipulateur_EVVRR;
CB_Mem_Bool *manipulateur_EVVRS;
CB_Mem_Bool *manipulateur_EVVZ;
CB_Mem_Bool *manipulateur_EVVTA;
CB_Mem_Bool *manipulateur_EVVTM;

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



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

static CB_Offset sfp__manipulateur_offset_graf_mdl_manipulateur1;
static CB_Offset sfp__manipulateur_offset_deplacement1;
static CB_Offset sfp__manipulateur_offset__end = {0, 0, 0, 0};


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

int _sfp__manipulateur_init(void)
{
	CB_Object __start = self;
	self.Bool+=7;
	self.Int+=2;

	/*initialize child graf_mdl_manipulateur1 (sfp.graf_mdl_manipulateur):*/
	self_num++;
	sfp__manipulateur_offset_graf_mdl_manipulateur1.Bool = self.Bool - __start.Bool;
	sfp__manipulateur_offset_graf_mdl_manipulateur1.Int = self.Int - __start.Int;
	sfp__manipulateur_offset_graf_mdl_manipulateur1.Float = self.Float - __start.Float;
	sfp__manipulateur_offset_graf_mdl_manipulateur1.Char = self.Char - __start.Char;
	graf_mdl_manipulateur_CR_pos = __start.Int+0; /*manipulateur__cn_4*/
	graf_mdl_manipulateur_def_depl = __start.Bool+5; /*manipulateur__cn_3*/
	graf_mdl_manipulateur_Pos_depart = manipulateur_Pos_depart;
	graf_mdl_manipulateur_Pos_arrivee = manipulateur_Pos_arrivee;
	graf_mdl_manipulateur_DCY = manipulateur_DCY;
	graf_mdl_manipulateur_AU = manipulateur_au;
	graf_mdl_manipulateur_acq = manipulateur_acq;
	graf_mdl_manipulateur_OKprise = __start.Bool+4; /*manipulateur__cn_5*/
	graf_mdl_manipulateur_OKpose = __start.Bool+3; /*manipulateur__cn_6*/
	graf_mdl_manipulateur_def_prisepose = __start.Bool+2; /*manipulateur__cn_7*/
	graf_mdl_manipulateur_Demande_pos = __start.Int+1; /*manipulateur__cn_2*/
	graf_mdl_manipulateur_GO = __start.Bool+6; /*manipulateur__cn_1*/
	graf_mdl_manipulateur_Def_Manip = manipulateur_Def_Manip;
	graf_mdl_manipulateur_OKcycle = manipulateur_OKcycle;
	graf_mdl_manipulateur_Dprise = __start.Bool+1; /*manipulateur__cn_8*/
	graf_mdl_manipulateur_Dpose = __start.Bool+0; /*manipulateur__cn_9*/
	_sfp__graf_mdl_manipulateur_init();

	/*initialize child deplacement1 (sfp.deplacement):*/
	self_num++;
	sfp__manipulateur_offset_deplacement1.Bool = self.Bool - __start.Bool;
	sfp__manipulateur_offset_deplacement1.Int = self.Int - __start.Int;
	sfp__manipulateur_offset_deplacement1.Float = self.Float - __start.Float;
	sfp__manipulateur_offset_deplacement1.Char = self.Char - __start.Char;
	deplacement_Dem_Pos = __start.Int+1; /*manipulateur__cn_2*/
	deplacement_acq = manipulateur_acq;
	deplacement_au = manipulateur_au;
	deplacement_GO = __start.Bool+6; /*manipulateur__cn_1*/
	deplacement_FCGXS = manipulateur_FCGXS;
	deplacement_FCGXR = manipulateur_FCGXR;
	deplacement_FCPXS = manipulateur_FCPXS;
	deplacement_FCPXR = manipulateur_FCPXR;
	deplacement_FCVRR = manipulateur_FCVRR;
	deplacement_FCVRS = manipulateur_FCVRS;
	deplacement_CR_Pos = __start.Int+0; /*manipulateur__cn_4*/
	deplacement_Def_Depl = __start.Bool+5; /*manipulateur__cn_3*/
	deplacement_EVGXS = manipulateur_EVGXS;
	deplacement_EVGXR = manipulateur_EVGXR;
	deplacement_EVPXS = manipulateur_EVPXS;
	deplacement_EVPXR = manipulateur_EVPXR;
	deplacement_EVVRR = manipulateur_EVVRR;
	deplacement_EVVRS = manipulateur_EVVRS;
	_sfp__deplacement_init();

	sfp__manipulateur_offset__end.Bool = self.Bool - __start.Bool;
	sfp__manipulateur_offset__end.Int = self.Int - __start.Int;
	sfp__manipulateur_offset__end.Float = self.Float - __start.Float;
	sfp__manipulateur_offset__end.Char = self.Char - __start.Char;

	return 0;
}


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

int sfp__manipulateur(void)
{
	CB_Object __start = self;
	int __ret;
	if (exec_mac_node(self_num)) {

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

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

		/*no Pre-conditions*/

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

		{
			self.Bool = __start.Bool + sfp__manipulateur_offset_graf_mdl_manipulateur1.Bool;
			self.Int = __start.Int + sfp__manipulateur_offset_graf_mdl_manipulateur1.Int;
			self.Float = __start.Float + sfp__manipulateur_offset_graf_mdl_manipulateur1.Float;
			self.Char = __start.Char + sfp__manipulateur_offset_graf_mdl_manipulateur1.Char;

			/***************** graf_mdl_manipulateur1 execution *****************/

			self_num++;
			if (graf_mdl_manipulateur__num != self_num) {
				graf_mdl_manipulateur__num = self_num;
				graf_mdl_manipulateur_CR_pos = __start.Int+0; /*manipulateur__cn_4*/
				graf_mdl_manipulateur_def_depl = __start.Bool+5; /*manipulateur__cn_3*/
				graf_mdl_manipulateur_Pos_depart = manipulateur_Pos_depart;
				graf_mdl_manipulateur_Pos_arrivee = manipulateur_Pos_arrivee;
				graf_mdl_manipulateur_DCY = manipulateur_DCY;
				graf_mdl_manipulateur_AU = manipulateur_au;
				graf_mdl_manipulateur_acq = manipulateur_acq;
				graf_mdl_manipulateur_OKprise = __start.Bool+4; /*manipulateur__cn_5*/
				graf_mdl_manipulateur_OKpose = __start.Bool+3; /*manipulateur__cn_6*/
				graf_mdl_manipulateur_def_prisepose = __start.Bool+2; /*manipulateur__cn_7*/
				graf_mdl_manipulateur_Demande_pos = __start.Int+1; /*manipulateur__cn_2*/
				graf_mdl_manipulateur_GO = __start.Bool+6; /*manipulateur__cn_1*/
				graf_mdl_manipulateur_Def_Manip = manipulateur_Def_Manip;
				graf_mdl_manipulateur_OKcycle = manipulateur_OKcycle;
				graf_mdl_manipulateur_Dprise = __start.Bool+1; /*manipulateur__cn_8*/
				graf_mdl_manipulateur_Dpose = __start.Bool+0; /*manipulateur__cn_9*/
			}
			__ret = sfp__graf_mdl_manipulateur();
			if (__ret != 0) {
				return __ret; /*child execution failure*/
			}

			/********************** deplacement1 execution **********************/

			self_num++;
			if (deplacement__num != self_num) {
				deplacement__num = self_num;
				deplacement_Dem_Pos = __start.Int+1; /*manipulateur__cn_2*/
				deplacement_acq = manipulateur_acq;
				deplacement_au = manipulateur_au;
				deplacement_GO = __start.Bool+6; /*manipulateur__cn_1*/
				deplacement_FCGXS = manipulateur_FCGXS;
				deplacement_FCGXR = manipulateur_FCGXR;
				deplacement_FCPXS = manipulateur_FCPXS;
				deplacement_FCPXR = manipulateur_FCPXR;
				deplacement_FCVRR = manipulateur_FCVRR;
				deplacement_FCVRS = manipulateur_FCVRS;
				deplacement_CR_Pos = __start.Int+0; /*manipulateur__cn_4*/
				deplacement_Def_Depl = __start.Bool+5; /*manipulateur__cn_3*/
				deplacement_EVGXS = manipulateur_EVGXS;
				deplacement_EVGXR = manipulateur_EVGXR;
				deplacement_EVPXS = manipulateur_EVPXS;
				deplacement_EVPXR = manipulateur_EVPXR;
				deplacement_EVVRR = manipulateur_EVVRR;
				deplacement_EVVRS = manipulateur_EVVRS;
			}
			__ret = sfp__deplacement();
			if (__ret != 0) {
				return __ret; /*child execution failure*/
			}

		}


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

		/*no Post-conditions*/
	}

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

	self.Bool = __start.Bool + sfp__manipulateur_offset__end.Bool;
	self.Int = __start.Int + sfp__manipulateur_offset__end.Int;
	self.Float = __start.Float + sfp__manipulateur_offset__end.Float;
	self.Char = __start.Char + sfp__manipulateur_offset__end.Char;

	return 0;
}

