#include // For sleep() #include #include "types.h" #include "assemblage_includes.h" #include "assemblage.h" // This should be set to 1 to run in "real-time" in the sense // that the simulation time is close to the real world time #define RUN_WITH_REAL_TIME 0 // Task set struct nonencoded_task_params* tasks; // I/O output_t outs; uint64_t step_simu; uint64_t max_step_simu; // Barriers for thread synchro pthread_barrier_t cycle_start_b; pthread_barrier_t engine_elevator_b; pthread_barrier_t filter_b; pthread_barrier_t control_b; pthread_barrier_t output_b; // Output variables extern double aircraft_dynamics495_Va_Va_filter_100449_Va[2]; extern double aircraft_dynamics495_az_az_filter_100458_az[2]; extern double aircraft_dynamics495_Vz_Vz_filter_100452_Vz[2]; extern double aircraft_dynamics495_q_q_filter_100455_q[2]; extern double aircraft_dynamics495_h_h_filter_100446_h[2]; extern double Va_control_50474_delta_th_c_delta_th_c; extern double Vz_control_50483_delta_e_c_delta_e_c; void copy_output_vars(output_t* v, uint64_t step){ v->sig_outputs.Va = aircraft_dynamics495_Va_Va_filter_100449_Va[step%2]; v->sig_outputs.Vz = aircraft_dynamics495_Vz_Vz_filter_100452_Vz[step%2]; v->sig_outputs.q = aircraft_dynamics495_q_q_filter_100455_q[step%2]; v->sig_outputs.az = aircraft_dynamics495_az_az_filter_100458_az[step%2]; v->sig_outputs.h = aircraft_dynamics495_h_h_filter_100446_h[step%2]; v->sig_delta_th_c = Va_control_50474_delta_th_c_delta_th_c; v->sig_delta_e_c = Vz_control_50483_delta_e_c_delta_e_c; } void rosace_init() { // Init barriers pthread_barrier_init(&cycle_start_b, NULL, 5); pthread_barrier_init(&engine_elevator_b, NULL, 2); pthread_barrier_init(&filter_b, NULL, 5); pthread_barrier_init(&control_b, NULL, 2); pthread_barrier_init(&output_b, NULL, 2); // Initial values outs.sig_outputs.Va = 0; outs.sig_outputs.Vz = 0; outs.sig_outputs.q = 0; outs.sig_outputs.az = 0; outs.sig_outputs.h = 0; outs.t_simu = 0; step_simu = 0; // Get the task set (required for CALL() macro) int tmp; get_task_set(&tmp, &tasks); } #define CALL(val) tasks[(val)].ne_t_body(NULL) void* thread1(void* arg) { uint64_t mystep_simu = step_simu; while(step_simu