/* ---------------------------------------------------------------------------- SchedMCore - A MultiCore Scheduling Framework Copyright (C) 2009-2011, ONERA, Toulouse, FRANCE - LIFL, Lille, FRANCE This file is part of Prelude Prelude is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation ; either version 2 of the License, or (at your option) any later version. Prelude is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY ; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program ; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ---------------------------------------------------------------------------- */ /* This program is part of the TACLeBench benchmark suite. Version V 1.9 Name: assemblage.c Author: Unknown Function: Source: https://svn.onera.fr/schedmcore/branches/ROSACE_CaseStudy/ c_posix_implementation/ Original name: assemblage.c Changes: No major functional changes. License: See the terms above. */ #include "assemblage.h" #include "assemblage_includes.h" // Definition of true and false here instead of using stdbool.h #define true 1 #define false 0 double aircraft_dynamics495_Va_Va_filter_100449_Va[ 2 ]; double Vz_control_50483_delta_e_c_elevator489_delta_e_c; double Va_filter_100449_Va_f_Va_control_50474_Va_f[ 2 ]; double Vz_filter_100452_Vz_f_Va_control_50474_Vz_f[ 2 ]; double q_filter_100455_q_f_Va_control_50474_q_f[ 2 ]; double Va_c_Va_control_50474_Va_c; double h_filter_100446_h_f_altitude_hold_50464_h_f[ 2 ]; double h_c_altitude_hold_50464_h_c; double Va_control_50474_delta_th_c_delta_th_c; double aircraft_dynamics495_az_az_filter_100458_az[ 2 ]; double aircraft_dynamics495_Vz_Vz_filter_100452_Vz[ 2 ]; double aircraft_dynamics495_q_q_filter_100455_q[ 2 ]; double elevator489_delta_e_aircraft_dynamics495_delta_e[ 3 ] = {0.0120096156525, 0.0120096156525, 0.0120096156525}; double engine486_T_aircraft_dynamics495_T[ 3 ] = {41813.9211946, 41813.9211946, 41813.9211946}; double aircraft_dynamics495_h_h_filter_100446_h[ 2 ]; double Va_control_50474_delta_th_c_engine486_delta_th_c; double Vz_filter_100452_Vz_f_Vz_control_50483_Vz_f[ 2 ]; double altitude_hold_50464_Vz_c_Vz_control_50483_Vz_c; double q_filter_100455_q_f_Vz_control_50483_q_f[ 2 ]; double az_filter_100458_az_f_Vz_control_50483_az_f[ 2 ]; double Vz_control_50483_delta_e_c_delta_e_c; int Va_filter_100449_fun( void *args ) { double Va_f; static int Va_rcell = 0; const struct write_proto_t Va_f_Va_control_50474_Va_f_write = { NULL, 0, ( int [] ){ true, false }, 2 }; static int Va_f_Va_control_50474_Va_f_wcell = 0; static int instance = 0; Va_f = Va_filter_100( aircraft_dynamics495_Va_Va_filter_100449_Va[ Va_rcell ] ); Va_rcell = ( Va_rcell + 1 ) % 2; if ( must_write( Va_f_Va_control_50474_Va_f_write, instance ) ) { Va_filter_100449_Va_f_Va_control_50474_Va_f[ Va_f_Va_control_50474_Va_f_wcell ] = Va_f; Va_f_Va_control_50474_Va_f_wcell = ( Va_f_Va_control_50474_Va_f_wcell + 1 ) % 2; } instance++; return 0; } int elevator489_fun( void *args ) { double delta_e; static int delta_e_aircraft_dynamics495_delta_e_wcell = 1; static int instance = 0; delta_e = elevator( Vz_control_50483_delta_e_c_elevator489_delta_e_c ); elevator489_delta_e_aircraft_dynamics495_delta_e[ delta_e_aircraft_dynamics495_delta_e_wcell ] = delta_e; delta_e_aircraft_dynamics495_delta_e_wcell = ( delta_e_aircraft_dynamics495_delta_e_wcell + 1 ) % 3; instance++; return 0; } int Va_control_50474_fun( void *args ) { double delta_th_c; static int Va_f_rcell = 0; static int Vz_f_rcell = 0; static int q_f_rcell = 0; static int instance = 0; delta_th_c = Va_control_50( Va_filter_100449_Va_f_Va_control_50474_Va_f[ Va_f_rcell ], Vz_filter_100452_Vz_f_Va_control_50474_Vz_f[ Vz_f_rcell ], q_filter_100455_q_f_Va_control_50474_q_f[ q_f_rcell ], Va_c_Va_control_50474_Va_c ); Va_f_rcell = ( Va_f_rcell + 1 ) % 2; Vz_f_rcell = ( Vz_f_rcell + 1 ) % 2; q_f_rcell = ( q_f_rcell + 1 ) % 2; Va_control_50474_delta_th_c_engine486_delta_th_c = delta_th_c; Va_control_50474_delta_th_c_delta_th_c = delta_th_c; instance++; return 0; } int Va_c0_fun( void *args ) { double Va_c; static int instance = 0; Va_c = input_Va_c(); Va_c_Va_control_50474_Va_c = Va_c; instance++; return 0; } int altitude_hold_50464_fun( void *args ) { double Vz_c; static int h_f_rcell = 0; static int instance = 0; Vz_c = altitude_hold_50( h_filter_100446_h_f_altitude_hold_50464_h_f[ h_f_rcell ], h_c_altitude_hold_50464_h_c ); h_f_rcell = ( h_f_rcell + 1 ) % 2; altitude_hold_50464_Vz_c_Vz_control_50483_Vz_c = Vz_c; instance++; return 0; } int delta_th_c0_fun( void *args ) { static int instance = 0; output_delta_th_c( Va_control_50474_delta_th_c_delta_th_c ); instance++; return 0; } int az_filter_100458_fun( void *args ) { double az_f; static int az_rcell = 0; const struct write_proto_t az_f_Vz_control_50483_az_f_write = { NULL, 0, ( int [] ){ true, false }, 2 }; static int az_f_Vz_control_50483_az_f_wcell = 0; static int instance = 0; az_f = az_filter_100( aircraft_dynamics495_az_az_filter_100458_az[ az_rcell ] ); az_rcell = ( az_rcell + 1 ) % 2; if ( must_write( az_f_Vz_control_50483_az_f_write, instance ) ) { az_filter_100458_az_f_Vz_control_50483_az_f[ az_f_Vz_control_50483_az_f_wcell ] = az_f; az_f_Vz_control_50483_az_f_wcell = ( az_f_Vz_control_50483_az_f_wcell + 1 ) % 2; } instance++; return 0; } int Vz_filter_100452_fun( void *args ) { double Vz_f; static int Vz_rcell = 0; const struct write_proto_t Vz_f_Va_control_50474_Vz_f_write = { NULL, 0, ( int [] ){ true, false }, 2 }; static int Vz_f_Va_control_50474_Vz_f_wcell = 0; const struct write_proto_t Vz_f_Vz_control_50483_Vz_f_write = { NULL, 0, ( int [] ){ true, false }, 2 }; static int Vz_f_Vz_control_50483_Vz_f_wcell = 0; static int instance = 0; Vz_f = Vz_filter_100( aircraft_dynamics495_Vz_Vz_filter_100452_Vz[ Vz_rcell ] ); Vz_rcell = ( Vz_rcell + 1 ) % 2; if ( must_write( Vz_f_Va_control_50474_Vz_f_write, instance ) ) { Vz_filter_100452_Vz_f_Va_control_50474_Vz_f[ Vz_f_Va_control_50474_Vz_f_wcell ] = Vz_f; Vz_f_Va_control_50474_Vz_f_wcell = ( Vz_f_Va_control_50474_Vz_f_wcell + 1 ) % 2; } if ( must_write( Vz_f_Vz_control_50483_Vz_f_write, instance ) ) { Vz_filter_100452_Vz_f_Vz_control_50483_Vz_f[ Vz_f_Vz_control_50483_Vz_f_wcell ] = Vz_f; Vz_f_Vz_control_50483_Vz_f_wcell = ( Vz_f_Vz_control_50483_Vz_f_wcell + 1 ) % 2; } instance++; return 0; } int q_filter_100455_fun( void *args ) { double q_f; static int q_rcell = 0; const struct write_proto_t q_f_Va_control_50474_q_f_write = { NULL, 0, ( int [] ){ true, false }, 2 }; static int q_f_Va_control_50474_q_f_wcell = 0; const struct write_proto_t q_f_Vz_control_50483_q_f_write = { NULL, 0, ( int [] ){ true, false }, 2 }; static int q_f_Vz_control_50483_q_f_wcell = 0; static int instance = 0; q_f = q_filter_100( aircraft_dynamics495_q_q_filter_100455_q[ q_rcell ] ); q_rcell = ( q_rcell + 1 ) % 2; if ( must_write( q_f_Va_control_50474_q_f_write, instance ) ) { q_filter_100455_q_f_Va_control_50474_q_f[ q_f_Va_control_50474_q_f_wcell ] = q_f; q_f_Va_control_50474_q_f_wcell = ( q_f_Va_control_50474_q_f_wcell + 1 ) % 2; } if ( must_write( q_f_Vz_control_50483_q_f_write, instance ) ) { q_filter_100455_q_f_Vz_control_50483_q_f[ q_f_Vz_control_50483_q_f_wcell ] = q_f; q_f_Vz_control_50483_q_f_wcell = ( q_f_Vz_control_50483_q_f_wcell + 1 ) % 2; } instance++; return 0; } int aircraft_dynamics495_fun( void *args ) { struct aircraft_dynamics_outs_t aircraft_dynamics495_fun_outs; static int delta_e_rcell = 0; static int T_rcell = 0; const struct write_proto_t Va_Va_filter_100449_Va_write = { NULL, 0, ( int [] ){ true, false }, 2 }; static int Va_Va_filter_100449_Va_wcell = 0; const struct write_proto_t Vz_Vz_filter_100452_Vz_write = { NULL, 0, ( int [] ){ true, false }, 2 }; static int Vz_Vz_filter_100452_Vz_wcell = 0; const struct write_proto_t q_q_filter_100455_q_write = { NULL, 0, ( int [] ){ true, false }, 2 }; static int q_q_filter_100455_q_wcell = 0; const struct write_proto_t az_az_filter_100458_az_write = { NULL, 0, ( int [] ){ true, false }, 2 }; static int az_az_filter_100458_az_wcell = 0; const struct write_proto_t h_h_filter_100446_h_write = { NULL, 0, ( int [] ){ true, false }, 2 }; static int h_h_filter_100446_h_wcell = 0; static int instance = 0; aircraft_dynamics( elevator489_delta_e_aircraft_dynamics495_delta_e[ delta_e_rcell ], engine486_T_aircraft_dynamics495_T[ T_rcell ], &aircraft_dynamics495_fun_outs ); delta_e_rcell = ( delta_e_rcell + 1 ) % 3; T_rcell = ( T_rcell + 1 ) % 3; if ( must_write( Va_Va_filter_100449_Va_write, instance ) ) { aircraft_dynamics495_Va_Va_filter_100449_Va[ Va_Va_filter_100449_Va_wcell ] = aircraft_dynamics495_fun_outs.Va; Va_Va_filter_100449_Va_wcell = ( Va_Va_filter_100449_Va_wcell + 1 ) % 2; } if ( must_write( Vz_Vz_filter_100452_Vz_write, instance ) ) { aircraft_dynamics495_Vz_Vz_filter_100452_Vz[ Vz_Vz_filter_100452_Vz_wcell ] = aircraft_dynamics495_fun_outs.Vz; Vz_Vz_filter_100452_Vz_wcell = ( Vz_Vz_filter_100452_Vz_wcell + 1 ) % 2; } if ( must_write( q_q_filter_100455_q_write, instance ) ) { aircraft_dynamics495_q_q_filter_100455_q[ q_q_filter_100455_q_wcell ] = aircraft_dynamics495_fun_outs.q; q_q_filter_100455_q_wcell = ( q_q_filter_100455_q_wcell + 1 ) % 2; } if ( must_write( az_az_filter_100458_az_write, instance ) ) { aircraft_dynamics495_az_az_filter_100458_az[ az_az_filter_100458_az_wcell ] = aircraft_dynamics495_fun_outs.az; az_az_filter_100458_az_wcell = ( az_az_filter_100458_az_wcell + 1 ) % 2; } if ( must_write( h_h_filter_100446_h_write, instance ) ) { aircraft_dynamics495_h_h_filter_100446_h[ h_h_filter_100446_h_wcell ] = aircraft_dynamics495_fun_outs.h; h_h_filter_100446_h_wcell = ( h_h_filter_100446_h_wcell + 1 ) % 2; } instance++; return 0; } int h_filter_100446_fun( void *args ) { double h_f; static int h_rcell = 0; const struct write_proto_t h_f_altitude_hold_50464_h_f_write = { NULL, 0, ( int [] ){ true, false }, 2 }; static int h_f_altitude_hold_50464_h_f_wcell = 0; static int instance = 0; h_f = h_filter_100( aircraft_dynamics495_h_h_filter_100446_h[ h_rcell ] ); h_rcell = ( h_rcell + 1 ) % 2; if ( must_write( h_f_altitude_hold_50464_h_f_write, instance ) ) { h_filter_100446_h_f_altitude_hold_50464_h_f[ h_f_altitude_hold_50464_h_f_wcell ] = h_f; h_f_altitude_hold_50464_h_f_wcell = ( h_f_altitude_hold_50464_h_f_wcell + 1 ) % 2; } instance++; return 0; } int engine486_fun( void *args ) { double T; static int T_aircraft_dynamics495_T_wcell = 1; static int instance = 0; T = engine( Va_control_50474_delta_th_c_engine486_delta_th_c ); engine486_T_aircraft_dynamics495_T[ T_aircraft_dynamics495_T_wcell ] = T; T_aircraft_dynamics495_T_wcell = ( T_aircraft_dynamics495_T_wcell + 1 ) % 3; instance++; return 0; } int Vz_control_50483_fun( void *args ) { double delta_e_c; static int Vz_f_rcell = 0; static int q_f_rcell = 0; static int az_f_rcell = 0; static int instance = 0; delta_e_c = Vz_control_50( Vz_filter_100452_Vz_f_Vz_control_50483_Vz_f[ Vz_f_rcell ], altitude_hold_50464_Vz_c_Vz_control_50483_Vz_c, q_filter_100455_q_f_Vz_control_50483_q_f[ q_f_rcell ], az_filter_100458_az_f_Vz_control_50483_az_f[ az_f_rcell ] ); Vz_f_rcell = ( Vz_f_rcell + 1 ) % 2; q_f_rcell = ( q_f_rcell + 1 ) % 2; az_f_rcell = ( az_f_rcell + 1 ) % 2; Vz_control_50483_delta_e_c_delta_e_c = delta_e_c; Vz_control_50483_delta_e_c_elevator489_delta_e_c = delta_e_c; instance++; return 0; } int delta_e_c0_fun( void *args ) { static int instance = 0; output_delta_e_c( Vz_control_50483_delta_e_c_delta_e_c ); instance++; return 0; } int h_c0_fun( void *args ) { double h_c; static int instance = 0; h_c = input_h_c(); h_c_altitude_hold_50464_h_c = h_c; instance++; return 0; } #define PLUD_TASK_NUMBER 15 static struct nonencoded_task_params static_task_set[ PLUD_TASK_NUMBER ] = { { "h_c0", 1000, 0, 1, 1000, h_c0_fun }, { "delta_e_c0", 200, 0, 1, 200, delta_e_c0_fun }, { "Vz_control_50483", 200, 0, 1, 200, Vz_control_50483_fun }, { "engine486", 50, 0, 1, 50, engine486_fun }, { "h_filter_100446", 100, 0, 1, 100, h_filter_100446_fun }, { "aircraft_dynamics495", 50, 0, 1, 50, aircraft_dynamics495_fun }, { "q_filter_100455", 100, 0, 1, 100, q_filter_100455_fun }, { "Vz_filter_100452", 100, 0, 1, 100, Vz_filter_100452_fun }, { "az_filter_100458", 100, 0, 1, 100, az_filter_100458_fun }, { "delta_th_c0", 200, 0, 1, 200, delta_th_c0_fun }, { "altitude_hold_50464", 200, 0, 1, 200, altitude_hold_50464_fun }, { "Va_c0", 1000, 0, 1, 1000, Va_c0_fun }, { "Va_control_50474", 200, 0, 1, 200, Va_control_50474_fun }, { "elevator489", 50, 0, 1, 50, elevator489_fun }, { "Va_filter_100449", 100, 0, 1, 100, Va_filter_100449_fun } }; void get_task_set ( int *task_number, struct nonencoded_task_params **task_set ) { *task_number = PLUD_TASK_NUMBER; *task_set = static_task_set; } static struct job_prec engine486_aircraft_dynamics495_pcpat[ 1 ] = { {0, 1} }; static struct job_prec Va_filter_100449_Va_control_50474_pcpat[ 1 ] = { {0, 0} }; static struct job_prec q_filter_100455_Va_control_50474_pcpat[ 1 ] = { {0, 0} }; static struct job_prec q_filter_100455_Vz_control_50483_pcpat[ 1 ] = { {0, 0} }; static struct job_prec aircraft_dynamics495_q_filter_100455_pcpat[ 1 ] = { {0, 0} }; static struct job_prec Va_c0_Va_control_50474_pcpat[ 1 ] = { {0, 0} }; static struct job_prec Vz_control_50483_delta_e_c0_pcpat[ 1 ] = { {0, 0} }; static struct job_prec Vz_control_50483_elevator489_pcpat[ 1 ] = { {0, 0} }; static struct job_prec Vz_filter_100452_Va_control_50474_pcpat[ 1 ] = { {0, 0} }; static struct job_prec Vz_filter_100452_Vz_control_50483_pcpat[ 1 ] = { {0, 0} }; static struct job_prec h_filter_100446_altitude_hold_50464_pcpat[ 1 ] = { {0, 0} }; static struct job_prec aircraft_dynamics495_az_filter_100458_pcpat[ 1 ] = { {0, 0} }; static struct job_prec elevator489_aircraft_dynamics495_pcpat[ 1 ] = { {0, 1} }; static struct job_prec aircraft_dynamics495_Vz_filter_100452_pcpat[ 1 ] = { {0, 0} }; static struct job_prec az_filter_100458_Vz_control_50483_pcpat[ 1 ] = { {0, 0} }; static struct job_prec h_c0_altitude_hold_50464_pcpat[ 1 ] = { {0, 0} }; static struct job_prec altitude_hold_50464_Vz_control_50483_pcpat[ 1 ] = { {0, 0} }; static struct job_prec aircraft_dynamics495_Va_filter_100449_pcpat[ 1 ] = { {0, 0} }; static struct job_prec aircraft_dynamics495_h_filter_100446_pcpat[ 1 ] = { {0, 0} }; static struct job_prec Va_control_50474_engine486_pcpat[ 1 ] = { {0, 0} }; static struct job_prec Va_control_50474_delta_th_c0_pcpat[ 1 ] = { {0, 0} }; #define PLUD_PREC_NUMBER 21 static struct multirate_precedence static_prec_set[ PLUD_PREC_NUMBER ] = { { "engine486", "aircraft_dynamics495", 0, 1, NULL, engine486_aircraft_dynamics495_pcpat }, { "Va_filter_100449", "Va_control_50474", 0, 1, NULL, Va_filter_100449_Va_control_50474_pcpat }, { "q_filter_100455", "Va_control_50474", 0, 1, NULL, q_filter_100455_Va_control_50474_pcpat }, { "q_filter_100455", "Vz_control_50483", 0, 1, NULL, q_filter_100455_Vz_control_50483_pcpat }, { "aircraft_dynamics495", "q_filter_100455", 0, 1, NULL, aircraft_dynamics495_q_filter_100455_pcpat }, { "Va_c0", "Va_control_50474", 0, 1, NULL, Va_c0_Va_control_50474_pcpat }, { "Vz_control_50483", "delta_e_c0", 0, 1, NULL, Vz_control_50483_delta_e_c0_pcpat }, { "Vz_control_50483", "elevator489", 0, 1, NULL, Vz_control_50483_elevator489_pcpat }, { "Vz_filter_100452", "Va_control_50474", 0, 1, NULL, Vz_filter_100452_Va_control_50474_pcpat }, { "Vz_filter_100452", "Vz_control_50483", 0, 1, NULL, Vz_filter_100452_Vz_control_50483_pcpat }, { "h_filter_100446", "altitude_hold_50464", 0, 1, NULL, h_filter_100446_altitude_hold_50464_pcpat }, { "aircraft_dynamics495", "az_filter_100458", 0, 1, NULL, aircraft_dynamics495_az_filter_100458_pcpat }, { "elevator489", "aircraft_dynamics495", 0, 1, NULL, elevator489_aircraft_dynamics495_pcpat }, { "aircraft_dynamics495", "Vz_filter_100452", 0, 1, NULL, aircraft_dynamics495_Vz_filter_100452_pcpat }, { "az_filter_100458", "Vz_control_50483", 0, 1, NULL, az_filter_100458_Vz_control_50483_pcpat }, { "h_c0", "altitude_hold_50464", 0, 1, NULL, h_c0_altitude_hold_50464_pcpat }, { "altitude_hold_50464", "Vz_control_50483", 0, 1, NULL, altitude_hold_50464_Vz_control_50483_pcpat }, { "aircraft_dynamics495", "Va_filter_100449", 0, 1, NULL, aircraft_dynamics495_Va_filter_100449_pcpat }, { "aircraft_dynamics495", "h_filter_100446", 0, 1, NULL, aircraft_dynamics495_h_filter_100446_pcpat }, { "Va_control_50474", "engine486", 0, 1, NULL, Va_control_50474_engine486_pcpat }, { "Va_control_50474", "delta_th_c0", 0, 1, NULL, Va_control_50474_delta_th_c0_pcpat } }; void get_precedence_set ( int *prec_number, struct multirate_precedence **prec_set ) { *prec_number = PLUD_PREC_NUMBER; *prec_set = static_prec_set; }