/* This program is part of the TACLeBench benchmark suite. Version V 2.0 Name: statemate Author: Friedhelm Stappert, C-LAB, Paderborn, Germany Function: This code was automatically generated by the STAtechart Real-time-Code generator STARC which was developed at C-LAB. The original StateChart specifies an experimental car window lift control. Source: MRTC http://www.mrtc.mdh.se/projects/wcet/wcet_bench/statemate/statemate.c Changes: no major functional changes License: may be used, modified, and re-distributed freely */ /* Macro definitions */ // Wasm loop bounds __attribute__((import_module("__pragma"), import_name("loopbound"))) extern void __pragma_loopbound(unsigned int min_bound, unsigned int max_bound); #define SYS_bit_get(a, b) (a)[(b)] #define SYS_bit_clr(a, b) (a)[(b)] = 0 #define SYS_bit_set(a, b) (a)[(b)] = 1 #define SYS_bit_cpy(a1, i1, a2, i2) (a1)[(i1)] = (a2)[(i2)] #define active_KINDERSICHERUNG_CTRL_IDX 10 #define active_KINDERSICHERUNG_CTRL_copy_IDX 11 #define active_KINDERSICHERUNG_CTRL_old_IDX 12 #define active_FH_TUERMODUL_CTRL_IDX 13 #define active_FH_TUERMODUL_CTRL_copy_IDX 14 #define active_FH_TUERMODUL_CTRL_old_IDX 15 #define active_EINKLEMMSCHUTZ_CTRL_IDX 16 #define active_EINKLEMMSCHUTZ_CTRL_copy_IDX 17 #define active_EINKLEMMSCHUTZ_CTRL_old_IDX 18 #define active_BLOCK_ERKENNUNG_CTRL_IDX 19 #define active_BLOCK_ERKENNUNG_CTRL_copy_IDX 20 #define active_BLOCK_ERKENNUNG_CTRL_old_IDX 21 #define entered_EINSCHALTSTROM_MESSEN_BLOCK_ERKENNUNG_CTRL_IDX 0 #define entered_WIEDERHOLSPERRE_FH_TUERMODUL_CTRL_IDX 4 #define entered_WIEDERHOLSPERRE_FH_TUERMODUL_CTRL_copy_IDX 5 #define exited_BEREIT_FH_TUERMODUL_CTRL_IDX 6 #define exited_BEREIT_FH_TUERMODUL_CTRL_copy_IDX 7 #define FH_TUERMODUL_CTRL__END_REVERS_IDX 22 #define FH_TUERMODUL_CTRL__END_REVERS_copy_IDX 23 #define FH_TUERMODUL__EINKLEMMUNG_IDX 24 /* Forward declaration of functions */ __attribute__((always_inline)) static inline void statemate_init(void); __attribute__((always_inline)) static inline void statemate_interface(void); __attribute__((always_inline)) static inline void statemate_generic_KINDERSICHERUNG_CTRL(void); __attribute__((always_inline)) static inline void statemate_generic_FH_TUERMODUL_CTRL(void); __attribute__((always_inline)) static inline void statemate_generic_EINKLEMMSCHUTZ_CTRL(void); __attribute__((always_inline)) static inline void statemate_generic_BLOCK_ERKENNUNG_CTRL(void); __attribute__((always_inline)) static inline void statemate_FH_DU(void); __attribute__((noinline)) __attribute__((export_name("entrypoint"))) __attribute__((noinline)) __attribute__((export_name("entrypoint"))) void statemate_main(void); __attribute__((always_inline)) static inline int statemate_return(void); /* Declaration of global variables */ static char statemate_bitlist[64]; unsigned long statemate_tm_entered_EINSCHALTSTROM_MESSEN_BLOCK_ERKENNUNG_CTRLch_BLOCK_ERKENNUNG_CTRL__N_copy; unsigned long statemate_tm_entered_WIEDERHOLSPERRE_FH_TUERMODUL_CTRLexited_BEREIT_FH_TUERMODUL_CTRL; unsigned long statemate_tm_entered_WIEDERHOLSPERRE_FH_TUERMODUL_CTRL; unsigned long statemate_sc_FH_TUERMODUL_CTRL_2375_2; unsigned long statemate_sc_FH_TUERMODUL_CTRL_2352_1; unsigned long statemate_sc_FH_TUERMODUL_CTRL_2329_1; int statemate_FH_TUERMODUL_CTRL__N; int statemate_FH_TUERMODUL_CTRL__N_old; unsigned long statemate_sc_FH_TUERMODUL_CTRL_1781_10; unsigned long statemate_sc_FH_TUERMODUL_CTRL_1739_10; int statemate_FH_TUERMODUL__POSITION; int statemate_FH_TUERMODUL__I_EIN; int statemate_FH_TUERMODUL__I_EIN_old; int statemate_FH_DU__MFH; int statemate_FH_DU__MFH_copy; int statemate_FH_DU__POSITION; int statemate_FH_DU__I_EIN; int statemate_FH_DU__I_EIN_old; int statemate_BLOCK_ERKENNUNG_CTRL__I_EIN_MAX; int statemate_BLOCK_ERKENNUNG_CTRL__N; int statemate_BLOCK_ERKENNUNG_CTRL__N_old; char statemate_FH_TUERMODUL_CTRL__INREVERS2; char statemate_FH_TUERMODUL_CTRL__INREVERS2_copy; char statemate_FH_TUERMODUL_CTRL__INREVERS1; char statemate_FH_TUERMODUL_CTRL__INREVERS1_copy; char statemate_FH_TUERMODUL__SFHZ_ZENTRAL; char statemate_FH_TUERMODUL__SFHZ_ZENTRAL_old; char statemate_FH_TUERMODUL__SFHZ_MEC; char statemate_FH_TUERMODUL__SFHZ_MEC_old; char statemate_FH_TUERMODUL__SFHA_ZENTRAL; char statemate_FH_TUERMODUL__SFHA_ZENTRAL_old; char statemate_FH_TUERMODUL__SFHA_MEC; char statemate_FH_TUERMODUL__SFHA_MEC_old; char statemate_FH_TUERMODUL__KL_50; char statemate_FH_TUERMODUL__BLOCK; char statemate_FH_TUERMODUL__BLOCK_copy; char statemate_FH_TUERMODUL__BLOCK_old; char statemate_FH_TUERMODUL__FT; char statemate_FH_TUERMODUL__SFHZ; char statemate_FH_TUERMODUL__SFHZ_copy; char statemate_FH_TUERMODUL__SFHZ_old; char statemate_FH_TUERMODUL__SFHA; char statemate_FH_TUERMODUL__SFHA_copy; char statemate_FH_TUERMODUL__SFHA_old; char statemate_FH_TUERMODUL__MFHZ; char statemate_FH_TUERMODUL__MFHZ_copy; char statemate_FH_TUERMODUL__MFHZ_old; char statemate_FH_TUERMODUL__MFHA; char statemate_FH_TUERMODUL__MFHA_copy; char statemate_FH_TUERMODUL__MFHA_old; char statemate_FH_TUERMODUL__EKS_LEISTE_AKTIV; char statemate_FH_TUERMODUL__EKS_LEISTE_AKTIV_old; char statemate_FH_DU__KL_50; char statemate_FH_DU__S_FH_FTZU; char statemate_FH_DU__S_FH_FTAUF; char statemate_FH_DU__FT; char statemate_FH_DU__EKS_LEISTE_AKTIV; char statemate_FH_DU__EKS_LEISTE_AKTIV_old; char statemate_FH_DU__S_FH_TMBFAUFCAN; char statemate_FH_DU__S_FH_TMBFAUFCAN_old; char statemate_FH_DU__S_FH_TMBFZUCAN; char statemate_FH_DU__S_FH_TMBFZUCAN_old; char statemate_FH_DU__S_FH_TMBFZUDISC; char statemate_FH_DU__S_FH_TMBFZUDISC_old; char statemate_FH_DU__S_FH_TMBFAUFDISC; char statemate_FH_DU__S_FH_TMBFAUFDISC_old; char statemate_FH_DU__S_FH_ZUDISC; char statemate_FH_DU__S_FH_AUFDISC; char statemate_FH_DU__DOOR_ID; char statemate_FH_DU__BLOCK; char statemate_FH_DU__BLOCK_copy; char statemate_FH_DU__BLOCK_old; char statemate_FH_DU__MFHZ; char statemate_FH_DU__MFHZ_copy; char statemate_FH_DU__MFHZ_old; char statemate_FH_DU__MFHA; char statemate_FH_DU__MFHA_copy; char statemate_FH_DU__MFHA_old; unsigned long statemate_time; char statemate_stable; char statemate_step; char statemate_NICHT_INITIALISIERT_NICHT_INITIALISIERT_next_state; /** 2 bits **/ char statemate_ZENTRAL_KINDERSICHERUNG_CTRL_next_state; /** 1 bits **/ char statemate_MEC_KINDERSICHERUNG_CTRL_next_state; /** 1 bits **/ char statemate_KINDERSICHERUNG_CTRL_KINDERSICHERUNG_CTRL_next_state; /** 2 bits **/ char statemate_B_FH_TUERMODUL_CTRL_next_state; /** 2 bits **/ char statemate_A_FH_TUERMODUL_CTRL_next_state; /** 1 bits **/ char statemate_WIEDERHOLSPERRE_FH_TUERMODUL_CTRL_next_state; /** 1 bits **/ char statemate_INITIALISIERT_FH_TUERMODUL_CTRL_next_state; /** 2 bits **/ char statemate_TIPP_SCHLIESSEN_FH_TUERMODUL_CTRL_next_state; /** 2 bits **/ char statemate_MANUELL_SCHLIESSEN_FH_TUERMODUL_CTRL_next_state; /** 2 bits **/ char statemate_OEFFNEN_FH_TUERMODUL_CTRL_next_state; /** 2 bits **/ char statemate_SCHLIESSEN_FH_TUERMODUL_CTRL_next_state; /** 2 bits **/ char statemate_FH_STEUERUNG_DUMMY_FH_STEUERUNG_DUMMY_next_state; /** 2 bits **/ char statemate_EINKLEMMSCHUTZ_CTRL_EINKLEMMSCHUTZ_CTRL_next_state; /** 2 bits **/ char statemate_BEWEGUNG_BLOCK_ERKENNUNG_CTRL_next_state; /** 2 bits **/ char statemate_BLOCK_ERKENNUNG_CTRL_BLOCK_ERKENNUNG_CTRL_next_state; /** 2 bits **/ /* Initialization-related functions */ __attribute__((always_inline)) static inline void statemate_init(void) { statemate_tm_entered_EINSCHALTSTROM_MESSEN_BLOCK_ERKENNUNG_CTRLch_BLOCK_ERKENNUNG_CTRL__N_copy = 0; statemate_tm_entered_WIEDERHOLSPERRE_FH_TUERMODUL_CTRLexited_BEREIT_FH_TUERMODUL_CTRL = 0; statemate_tm_entered_WIEDERHOLSPERRE_FH_TUERMODUL_CTRL = 0; statemate_NICHT_INITIALISIERT_NICHT_INITIALISIERT_next_state = 0; statemate_ZENTRAL_KINDERSICHERUNG_CTRL_next_state = 0; statemate_MEC_KINDERSICHERUNG_CTRL_next_state = 0; statemate_KINDERSICHERUNG_CTRL_KINDERSICHERUNG_CTRL_next_state = 0; statemate_B_FH_TUERMODUL_CTRL_next_state = 0; statemate_A_FH_TUERMODUL_CTRL_next_state = 0; statemate_WIEDERHOLSPERRE_FH_TUERMODUL_CTRL_next_state = 0; statemate_INITIALISIERT_FH_TUERMODUL_CTRL_next_state = 0; statemate_TIPP_SCHLIESSEN_FH_TUERMODUL_CTRL_next_state = 0; statemate_MANUELL_SCHLIESSEN_FH_TUERMODUL_CTRL_next_state = 0; statemate_OEFFNEN_FH_TUERMODUL_CTRL_next_state = 0; statemate_SCHLIESSEN_FH_TUERMODUL_CTRL_next_state = 0; statemate_FH_STEUERUNG_DUMMY_FH_STEUERUNG_DUMMY_next_state = 0; statemate_EINKLEMMSCHUTZ_CTRL_EINKLEMMSCHUTZ_CTRL_next_state = 0; statemate_BEWEGUNG_BLOCK_ERKENNUNG_CTRL_next_state = 0; statemate_BLOCK_ERKENNUNG_CTRL_BLOCK_ERKENNUNG_CTRL_next_state = 0; statemate_interface(); } /** statemate_init **/ __attribute__((always_inline)) static inline void statemate_interface(void) { if (SYS_bit_get(statemate_bitlist, entered_WIEDERHOLSPERRE_FH_TUERMODUL_CTRL_IDX)) statemate_tm_entered_WIEDERHOLSPERRE_FH_TUERMODUL_CTRL = statemate_time; if (SYS_bit_get(statemate_bitlist, entered_WIEDERHOLSPERRE_FH_TUERMODUL_CTRL_IDX) || SYS_bit_get(statemate_bitlist, exited_BEREIT_FH_TUERMODUL_CTRL_IDX)) statemate_tm_entered_WIEDERHOLSPERRE_FH_TUERMODUL_CTRLexited_BEREIT_FH_TUERMODUL_CTRL = statemate_time; if ((statemate_sc_FH_TUERMODUL_CTRL_2375_2 != 0) && (statemate_time - statemate_sc_FH_TUERMODUL_CTRL_2375_2 >= 500)) { statemate_FH_TUERMODUL__MFHA_copy = 0; statemate_sc_FH_TUERMODUL_CTRL_2375_2 = 0; } if ((statemate_sc_FH_TUERMODUL_CTRL_2352_1 != 0) && (statemate_time - statemate_sc_FH_TUERMODUL_CTRL_2352_1 >= 500)) { statemate_FH_TUERMODUL__MFHZ_copy = 0; statemate_sc_FH_TUERMODUL_CTRL_2352_1 = 0; } if ((statemate_sc_FH_TUERMODUL_CTRL_2329_1 != 0) && (statemate_time - statemate_sc_FH_TUERMODUL_CTRL_2329_1 >= 500)) { statemate_FH_TUERMODUL__MFHZ_copy = 0; statemate_sc_FH_TUERMODUL_CTRL_2329_1 = 0; } if ((statemate_sc_FH_TUERMODUL_CTRL_1781_10 != 0) && (statemate_time - statemate_sc_FH_TUERMODUL_CTRL_1781_10 >= 500)) statemate_sc_FH_TUERMODUL_CTRL_1781_10 = 0; if ((statemate_sc_FH_TUERMODUL_CTRL_1739_10 != 0) && (statemate_time - statemate_sc_FH_TUERMODUL_CTRL_1739_10 >= 500)) statemate_sc_FH_TUERMODUL_CTRL_1739_10 = 0; if ((SYS_bit_get(statemate_bitlist, entered_EINSCHALTSTROM_MESSEN_BLOCK_ERKENNUNG_CTRL_IDX) || statemate_BLOCK_ERKENNUNG_CTRL__N != statemate_BLOCK_ERKENNUNG_CTRL__N_old)) statemate_tm_entered_EINSCHALTSTROM_MESSEN_BLOCK_ERKENNUNG_CTRLch_BLOCK_ERKENNUNG_CTRL__N_copy = statemate_time; } /** statemate_interface **/ /* Algorithm core functions */ __attribute__((always_inline)) static inline void statemate_generic_KINDERSICHERUNG_CTRL(void) { if (SYS_bit_get(statemate_bitlist, active_KINDERSICHERUNG_CTRL_IDX)) { switch ( statemate_KINDERSICHERUNG_CTRL_KINDERSICHERUNG_CTRL_next_state) { case 1: { /** state ZENTRAL in chart KINDERSICHERUNG_CTRL **/ if (!(statemate_FH_TUERMODUL__SFHA_ZENTRAL || statemate_FH_TUERMODUL__SFHZ_ZENTRAL)) { statemate_stable = 0; statemate_FH_TUERMODUL__SFHZ_copy = 0; statemate_FH_TUERMODUL__SFHA_copy = 0; statemate_KINDERSICHERUNG_CTRL_KINDERSICHERUNG_CTRL_next_state = 3; statemate_ZENTRAL_KINDERSICHERUNG_CTRL_next_state = 0; break; } switch (statemate_ZENTRAL_KINDERSICHERUNG_CTRL_next_state) { case 1: { /** state IN_ZENTRAL in chart KINDERSICHERUNG_CTRL **/ if ((statemate_FH_TUERMODUL__SFHA_ZENTRAL && !(statemate_FH_TUERMODUL__SFHA_ZENTRAL_old))) { statemate_stable = 0; statemate_FH_TUERMODUL__SFHA_copy = 1; statemate_ZENTRAL_KINDERSICHERUNG_CTRL_next_state = 1; break; } if ((statemate_FH_TUERMODUL__SFHZ_ZENTRAL && !(statemate_FH_TUERMODUL__SFHZ_ZENTRAL_old))) { statemate_stable = 0; statemate_FH_TUERMODUL__SFHZ_copy = 1; statemate_ZENTRAL_KINDERSICHERUNG_CTRL_next_state = 1; break; } if ((!(statemate_FH_TUERMODUL__SFHA_ZENTRAL) && statemate_FH_TUERMODUL__SFHA_ZENTRAL_old)) { statemate_stable = 0; statemate_FH_TUERMODUL__SFHA_copy = 0; statemate_ZENTRAL_KINDERSICHERUNG_CTRL_next_state = 1; break; } if ((!(statemate_FH_TUERMODUL__SFHZ_ZENTRAL) && statemate_FH_TUERMODUL__SFHZ_ZENTRAL_old)) { statemate_stable = 0; statemate_FH_TUERMODUL__SFHZ_copy = 0; statemate_ZENTRAL_KINDERSICHERUNG_CTRL_next_state = 1; break; } break; } default: { statemate_stable = 0; break; } } /** switch statemate_ZENTRAL_KINDERSICHERUNG_CTRL_next_state **/ break; } case 2: { /** state MEC in chart KINDERSICHERUNG_CTRL **/ if (!(statemate_FH_TUERMODUL__SFHA_MEC || statemate_FH_TUERMODUL__SFHZ_MEC)) { statemate_stable = 0; statemate_FH_TUERMODUL__SFHZ_copy = 0; statemate_FH_TUERMODUL__SFHA_copy = 0; statemate_KINDERSICHERUNG_CTRL_KINDERSICHERUNG_CTRL_next_state = 3; statemate_MEC_KINDERSICHERUNG_CTRL_next_state = 0; break; } switch (statemate_MEC_KINDERSICHERUNG_CTRL_next_state) { case 1: { /** state INMEC in chart KINDERSICHERUNG_CTRL **/ if ((statemate_FH_TUERMODUL__SFHA_MEC && !(statemate_FH_TUERMODUL__SFHA_MEC_old))) { statemate_stable = 0; statemate_FH_TUERMODUL__SFHA_copy = 1; statemate_MEC_KINDERSICHERUNG_CTRL_next_state = 1; break; } if ((statemate_FH_TUERMODUL__SFHZ_MEC && !(statemate_FH_TUERMODUL__SFHZ_MEC_old))) { statemate_stable = 0; statemate_FH_TUERMODUL__SFHZ_copy = 1; statemate_MEC_KINDERSICHERUNG_CTRL_next_state = 1; break; } if ((!(statemate_FH_TUERMODUL__SFHA_MEC) && statemate_FH_TUERMODUL__SFHA_MEC_old)) { statemate_stable = 0; statemate_FH_TUERMODUL__SFHA_copy = 0; statemate_MEC_KINDERSICHERUNG_CTRL_next_state = 1; break; } if ((!(statemate_FH_TUERMODUL__SFHZ_MEC) && statemate_FH_TUERMODUL__SFHZ_MEC_old)) { statemate_stable = 0; statemate_FH_TUERMODUL__SFHZ_copy = 0; statemate_MEC_KINDERSICHERUNG_CTRL_next_state = 1; break; } break; } default: { statemate_stable = 0; break; } } /** switch statemate_MEC_KINDERSICHERUNG_CTRL_next_state **/ break; } case 3: { /** state WAITING in chart KINDERSICHERUNG_CTRL **/ if ((!statemate_FH_TUERMODUL__KL_50) && (statemate_FH_TUERMODUL__SFHZ_MEC && statemate_FH_TUERMODUL__SFHA_MEC)) { statemate_stable = 0; statemate_FH_TUERMODUL__SFHZ_copy = 1; statemate_FH_TUERMODUL__SFHA_copy = 1; statemate_KINDERSICHERUNG_CTRL_KINDERSICHERUNG_CTRL_next_state = 2; break; } if ((!statemate_FH_TUERMODUL__KL_50) && (statemate_FH_TUERMODUL__SFHZ_MEC && !statemate_FH_TUERMODUL__SFHA_MEC)) { statemate_stable = 0; statemate_FH_TUERMODUL__SFHZ_copy = 1; statemate_KINDERSICHERUNG_CTRL_KINDERSICHERUNG_CTRL_next_state = 2; break; } if ((!statemate_FH_TUERMODUL__KL_50) && (!statemate_FH_TUERMODUL__SFHZ_MEC && statemate_FH_TUERMODUL__SFHA_MEC)) { statemate_stable = 0; statemate_FH_TUERMODUL__SFHA_copy = 1; statemate_KINDERSICHERUNG_CTRL_KINDERSICHERUNG_CTRL_next_state = 2; break; } if ((!statemate_FH_TUERMODUL__SFHZ_ZENTRAL && statemate_FH_TUERMODUL__SFHA_ZENTRAL && !statemate_FH_TUERMODUL__KL_50)) { statemate_stable = 0; statemate_FH_TUERMODUL__SFHA_copy = 1; statemate_KINDERSICHERUNG_CTRL_KINDERSICHERUNG_CTRL_next_state = 1; break; } if ((statemate_FH_TUERMODUL__SFHZ_ZENTRAL && statemate_FH_TUERMODUL__SFHA_ZENTRAL)) { statemate_stable = 0; statemate_FH_TUERMODUL__SFHA_copy = 1; statemate_FH_TUERMODUL__SFHZ_copy = 1; statemate_KINDERSICHERUNG_CTRL_KINDERSICHERUNG_CTRL_next_state = 1; break; } if ((statemate_FH_TUERMODUL__SFHZ_ZENTRAL && !statemate_FH_TUERMODUL__SFHA_ZENTRAL && !statemate_FH_TUERMODUL__KL_50)) { statemate_stable = 0; statemate_FH_TUERMODUL__SFHZ_copy = 1; statemate_KINDERSICHERUNG_CTRL_KINDERSICHERUNG_CTRL_next_state = 1; break; } break; } default: { statemate_stable = 0; statemate_KINDERSICHERUNG_CTRL_KINDERSICHERUNG_CTRL_next_state = 3; break; } } /** switch statemate_KINDERSICHERUNG_CTRL_KINDERSICHERUNG_CTRL_next_state **/ } } __attribute__((always_inline)) static inline void statemate_generic_FH_TUERMODUL_CTRL(void) { if (!SYS_bit_get(statemate_bitlist, active_FH_TUERMODUL_CTRL_IDX) && SYS_bit_get(statemate_bitlist, active_FH_TUERMODUL_CTRL_old_IDX) && !SYS_bit_get(statemate_bitlist, active_FH_TUERMODUL_CTRL_copy_IDX)) { SYS_bit_clr(statemate_bitlist, entered_WIEDERHOLSPERRE_FH_TUERMODUL_CTRL_IDX); SYS_bit_clr(statemate_bitlist, exited_BEREIT_FH_TUERMODUL_CTRL_IDX); } if (SYS_bit_get(statemate_bitlist, active_FH_TUERMODUL_CTRL_IDX)) { if (!SYS_bit_get(statemate_bitlist, active_KINDERSICHERUNG_CTRL_IDX)) statemate_KINDERSICHERUNG_CTRL_KINDERSICHERUNG_CTRL_next_state = 3; SYS_bit_clr(statemate_bitlist, active_KINDERSICHERUNG_CTRL_copy_IDX); if (!SYS_bit_get(statemate_bitlist, active_BLOCK_ERKENNUNG_CTRL_IDX)) { SYS_bit_clr(statemate_bitlist, entered_EINSCHALTSTROM_MESSEN_BLOCK_ERKENNUNG_CTRL_IDX); statemate_BLOCK_ERKENNUNG_CTRL_BLOCK_ERKENNUNG_CTRL_next_state = 1; } SYS_bit_clr(statemate_bitlist, active_BLOCK_ERKENNUNG_CTRL_copy_IDX); SYS_bit_set(statemate_bitlist, active_KINDERSICHERUNG_CTRL_copy_IDX); SYS_bit_set(statemate_bitlist, active_BLOCK_ERKENNUNG_CTRL_copy_IDX); switch (statemate_B_FH_TUERMODUL_CTRL_next_state) { case 1: { /** state ZAEHLER_WHSP_ZU_HOCH in chart FH_TUERMODUL_CTRL **/ if ((statemate_FH_TUERMODUL_CTRL__N == 59 && !(statemate_FH_TUERMODUL_CTRL__N_old == 59))) { statemate_stable = 0; statemate_B_FH_TUERMODUL_CTRL_next_state = 3; statemate_INITIALISIERT_FH_TUERMODUL_CTRL_next_state = 3; break; } break; } case 2: { /** state NICHT_INITIALISIERT in chart FH_TUERMODUL_CTRL **/ if (((statemate_FH_TUERMODUL__BLOCK && !(statemate_FH_TUERMODUL__BLOCK_old))) && ((statemate_FH_TUERMODUL__MFHZ))) { statemate_stable = 0; statemate_FH_TUERMODUL__MFHZ_copy = 0; statemate_sc_FH_TUERMODUL_CTRL_2329_1 = statemate_time; statemate_B_FH_TUERMODUL_CTRL_next_state = 3; statemate_INITIALISIERT_FH_TUERMODUL_CTRL_next_state = 3; break; } switch ( statemate_NICHT_INITIALISIERT_NICHT_INITIALISIERT_next_state) { case 1: { /** state SCHLIESSEN in chart NICHT_INITIALISIERT **/ if (!(statemate_FH_TUERMODUL__SFHZ)) { statemate_stable = 0; statemate_FH_TUERMODUL__MFHZ_copy = 0; statemate_NICHT_INITIALISIERT_NICHT_INITIALISIERT_next_state = 3; break; } break; } case 2: { /** state OEFFNEN in chart NICHT_INITIALISIERT **/ if (!(statemate_FH_TUERMODUL__SFHA)) { statemate_stable = 0; statemate_FH_TUERMODUL__MFHA_copy = 0; statemate_NICHT_INITIALISIERT_NICHT_INITIALISIERT_next_state = 3; break; } break; } case 3: { /** state BEREIT in chart NICHT_INITIALISIERT **/ if ((statemate_FH_TUERMODUL__SFHA)) { statemate_stable = 0; statemate_FH_TUERMODUL__MFHA_copy = 1; statemate_NICHT_INITIALISIERT_NICHT_INITIALISIERT_next_state = 2; break; } if ((statemate_FH_TUERMODUL__SFHZ)) { statemate_stable = 0; statemate_FH_TUERMODUL__MFHZ_copy = 1; statemate_NICHT_INITIALISIERT_NICHT_INITIALISIERT_next_state = 1; break; } break; } default: { statemate_stable = 0; statemate_NICHT_INITIALISIERT_NICHT_INITIALISIERT_next_state = 3; break; } } /** switch statemate_NICHT_INITIALISIERT_NICHT_INITIALISIERT_next_state **/ break; } case 3: { /** state INITIALISIERT in chart FH_TUERMODUL_CTRL **/ if (((statemate_FH_TUERMODUL_CTRL__N > 60 && !(statemate_FH_TUERMODUL_CTRL__N_old > 60))) && ((!(statemate_FH_TUERMODUL_CTRL__INREVERS1 || statemate_FH_TUERMODUL_CTRL__INREVERS2)))) { statemate_stable = 0; statemate_FH_TUERMODUL__MFHZ_copy = 0; statemate_FH_TUERMODUL__MFHA_copy = 0; statemate_B_FH_TUERMODUL_CTRL_next_state = 1; break; } if (((statemate_FH_TUERMODUL__BLOCK && !(statemate_FH_TUERMODUL__BLOCK_old))) && ((statemate_FH_TUERMODUL__MFHA))) { statemate_stable = 0; statemate_FH_TUERMODUL__MFHA_copy = 0; statemate_sc_FH_TUERMODUL_CTRL_2375_2 = statemate_time; statemate_B_FH_TUERMODUL_CTRL_next_state = 2; statemate_NICHT_INITIALISIERT_NICHT_INITIALISIERT_next_state = 3; break; } if (((statemate_FH_TUERMODUL__BLOCK && !(statemate_FH_TUERMODUL__BLOCK_old))) && ((statemate_FH_TUERMODUL__MFHZ))) { statemate_stable = 0; statemate_FH_TUERMODUL__MFHZ_copy = 0; statemate_sc_FH_TUERMODUL_CTRL_2352_1 = statemate_time; statemate_B_FH_TUERMODUL_CTRL_next_state = 2; statemate_NICHT_INITIALISIERT_NICHT_INITIALISIERT_next_state = 3; break; } switch (statemate_INITIALISIERT_FH_TUERMODUL_CTRL_next_state) { case 1: { /** state OEFFNEN in chart FH_TUERMODUL_CTRL **/ if ((statemate_FH_TUERMODUL__POSITION >= 405)) { statemate_stable = 0; statemate_FH_TUERMODUL__MFHA_copy = 0; statemate_INITIALISIERT_FH_TUERMODUL_CTRL_next_state = 3; break; } switch (statemate_OEFFNEN_FH_TUERMODUL_CTRL_next_state) { case 1: { /** state TIPP_OEFFNEN in chart FH_TUERMODUL_CTRL **/ if ((statemate_FH_TUERMODUL__SFHZ && !(statemate_FH_TUERMODUL__SFHZ_old)) || (statemate_FH_TUERMODUL__SFHA && !(statemate_FH_TUERMODUL__SFHA_old))) { statemate_stable = 0; statemate_FH_TUERMODUL__MFHA_copy = 0; statemate_INITIALISIERT_FH_TUERMODUL_CTRL_next_state = 3; statemate_OEFFNEN_FH_TUERMODUL_CTRL_next_state = 0; break; } break; } case 2: { /** state MAN_OEFFNEN in chart FH_TUERMODUL_CTRL **/ if ((statemate_FH_TUERMODUL__SFHZ && !(statemate_FH_TUERMODUL__SFHZ_old))) { statemate_stable = 0; statemate_OEFFNEN_FH_TUERMODUL_CTRL_next_state = 1; break; } if ((!(statemate_FH_TUERMODUL__SFHA) && statemate_FH_TUERMODUL__SFHA_old)) { statemate_stable = 0; statemate_FH_TUERMODUL__MFHA_copy = 0; statemate_INITIALISIERT_FH_TUERMODUL_CTRL_next_state = 3; statemate_OEFFNEN_FH_TUERMODUL_CTRL_next_state = 0; break; } break; } default: { statemate_stable = 0; statemate_OEFFNEN_FH_TUERMODUL_CTRL_next_state = 2; break; } } /** switch statemate_OEFFNEN_FH_TUERMODUL_CTRL_next_state **/ break; } case 2: { /** state SCHLIESSEN in chart FH_TUERMODUL_CTRL **/ if ((statemate_FH_TUERMODUL__POSITION <= 0)) { statemate_stable = 0; statemate_FH_TUERMODUL__MFHZ_copy = 0; statemate_INITIALISIERT_FH_TUERMODUL_CTRL_next_state = 3; break; } switch (statemate_SCHLIESSEN_FH_TUERMODUL_CTRL_next_state) { case 1: { /** state TIPP_SCHLIESSEN in chart FH_TUERMODUL_CTRL **/ if ((statemate_FH_TUERMODUL__SFHA && !(statemate_FH_TUERMODUL__SFHA_old)) || (statemate_FH_TUERMODUL__SFHZ && !(statemate_FH_TUERMODUL__SFHZ_old))) { statemate_stable = 0; statemate_FH_TUERMODUL__MFHZ_copy = 0; statemate_INITIALISIERT_FH_TUERMODUL_CTRL_next_state = 3; break; } switch ( statemate_TIPP_SCHLIESSEN_FH_TUERMODUL_CTRL_next_state) { case 1: { /** state REVERSIEREN2 in chart FH_TUERMODUL_CTRL **/ SYS_bit_clr(statemate_bitlist, FH_TUERMODUL_CTRL__END_REVERS_copy_IDX); if (SYS_bit_get(statemate_bitlist, FH_TUERMODUL_CTRL__END_REVERS_IDX)) { statemate_stable = 0; statemate_FH_TUERMODUL__MFHZ_copy = 1; statemate_FH_TUERMODUL_CTRL__INREVERS2_copy = 0; statemate_TIPP_SCHLIESSEN_FH_TUERMODUL_CTRL_next_state = 2; statemate_FH_TUERMODUL__MFHA_copy = 0; SYS_bit_set(statemate_bitlist, active_EINKLEMMSCHUTZ_CTRL_copy_IDX); break; } break; } case 2: { /** state TIPP_SCHLIESSEN1 in chart FH_TUERMODUL_CTRL **/ if (SYS_bit_get(statemate_bitlist, FH_TUERMODUL__EINKLEMMUNG_IDX)) { statemate_stable = 0; statemate_FH_TUERMODUL_CTRL__INREVERS2_copy = 1; SYS_bit_set(statemate_bitlist, FH_TUERMODUL_CTRL__END_REVERS_copy_IDX); statemate_TIPP_SCHLIESSEN_FH_TUERMODUL_CTRL_next_state = 1; SYS_bit_clr(statemate_bitlist, active_EINKLEMMSCHUTZ_CTRL_copy_IDX); statemate_FH_TUERMODUL__MFHZ_copy = 0; statemate_sc_FH_TUERMODUL_CTRL_1781_10 = statemate_time; statemate_FH_TUERMODUL__MFHA_copy = 1; break; } break; } default: { statemate_stable = 0; statemate_TIPP_SCHLIESSEN_FH_TUERMODUL_CTRL_next_state = 2; SYS_bit_set(statemate_bitlist, active_EINKLEMMSCHUTZ_CTRL_copy_IDX); break; } } /** switch statemate_TIPP_SCHLIESSEN_FH_TUERMODUL_CTRL_next_state **/ break; } case 2: { /** state MANUELL_SCHLIESSEN in chart FH_TUERMODUL_CTRL **/ if ((!(statemate_FH_TUERMODUL__SFHZ) && statemate_FH_TUERMODUL__SFHZ_old)) { statemate_stable = 0; statemate_FH_TUERMODUL__MFHZ_copy = 0; statemate_INITIALISIERT_FH_TUERMODUL_CTRL_next_state = 3; break; } switch ( statemate_MANUELL_SCHLIESSEN_FH_TUERMODUL_CTRL_next_state) { case 1: { /** state REVERSIEREN1 in chart FH_TUERMODUL_CTRL **/ SYS_bit_clr(statemate_bitlist, FH_TUERMODUL_CTRL__END_REVERS_copy_IDX); if (SYS_bit_get(statemate_bitlist, FH_TUERMODUL_CTRL__END_REVERS_IDX)) { statemate_stable = 0; statemate_FH_TUERMODUL_CTRL__INREVERS1_copy = 0; statemate_MANUELL_SCHLIESSEN_FH_TUERMODUL_CTRL_next_state = 2; statemate_FH_TUERMODUL__MFHA_copy = 0; SYS_bit_set(statemate_bitlist, active_EINKLEMMSCHUTZ_CTRL_copy_IDX); statemate_FH_TUERMODUL__MFHZ_copy = 1; break; } break; } case 2: { /** state MAN_SCHLIESSEN in chart FH_TUERMODUL_CTRL **/ if (SYS_bit_get(statemate_bitlist, FH_TUERMODUL__EINKLEMMUNG_IDX)) { statemate_stable = 0; statemate_FH_TUERMODUL__MFHZ_copy = 0; statemate_FH_TUERMODUL_CTRL__INREVERS1_copy = 1; SYS_bit_set(statemate_bitlist, FH_TUERMODUL_CTRL__END_REVERS_copy_IDX); statemate_MANUELL_SCHLIESSEN_FH_TUERMODUL_CTRL_next_state = 1; SYS_bit_clr(statemate_bitlist, active_EINKLEMMSCHUTZ_CTRL_copy_IDX); statemate_sc_FH_TUERMODUL_CTRL_1739_10 = statemate_time; statemate_FH_TUERMODUL__MFHA_copy = 1; break; } if ((statemate_FH_TUERMODUL__SFHA && !(statemate_FH_TUERMODUL__SFHA_old))) { statemate_stable = 0; statemate_SCHLIESSEN_FH_TUERMODUL_CTRL_next_state = 1; statemate_MANUELL_SCHLIESSEN_FH_TUERMODUL_CTRL_next_state = 0; break; } break; } default: { statemate_stable = 0; statemate_MANUELL_SCHLIESSEN_FH_TUERMODUL_CTRL_next_state = 2; SYS_bit_set(statemate_bitlist, active_EINKLEMMSCHUTZ_CTRL_copy_IDX); statemate_FH_TUERMODUL__MFHZ_copy = 1; break; } } /** switch statemate_MANUELL_SCHLIESSEN_FH_TUERMODUL_CTRL_next_state **/ break; } default: { statemate_stable = 0; statemate_SCHLIESSEN_FH_TUERMODUL_CTRL_next_state = 2; statemate_MANUELL_SCHLIESSEN_FH_TUERMODUL_CTRL_next_state = 2; SYS_bit_set(statemate_bitlist, active_EINKLEMMSCHUTZ_CTRL_copy_IDX); statemate_FH_TUERMODUL__MFHZ_copy = 1; break; } } /** switch statemate_SCHLIESSEN_FH_TUERMODUL_CTRL_next_state **/ break; } case 3: { /** state BEREIT in chart FH_TUERMODUL_CTRL **/ if (((statemate_FH_TUERMODUL__SFHZ && !(statemate_FH_TUERMODUL__SFHZ_old))) && ((statemate_FH_TUERMODUL__POSITION > 0))) { statemate_stable = 0; statemate_INITIALISIERT_FH_TUERMODUL_CTRL_next_state = 2; statemate_SCHLIESSEN_FH_TUERMODUL_CTRL_next_state = 2; statemate_MANUELL_SCHLIESSEN_FH_TUERMODUL_CTRL_next_state = 2; SYS_bit_set(statemate_bitlist, active_EINKLEMMSCHUTZ_CTRL_copy_IDX); statemate_FH_TUERMODUL__MFHZ_copy = 1; break; } if (((statemate_FH_TUERMODUL__SFHA && !(statemate_FH_TUERMODUL__SFHA_old))) && ((statemate_FH_TUERMODUL__POSITION < 405))) { statemate_stable = 0; statemate_FH_TUERMODUL__MFHA_copy = 1; statemate_INITIALISIERT_FH_TUERMODUL_CTRL_next_state = 1; statemate_OEFFNEN_FH_TUERMODUL_CTRL_next_state = 2; break; } break; } default: { statemate_stable = 0; statemate_INITIALISIERT_FH_TUERMODUL_CTRL_next_state = 3; break; } } /** switch statemate_INITIALISIERT_FH_TUERMODUL_CTRL_next_state **/ break; } default: { statemate_stable = 0; statemate_B_FH_TUERMODUL_CTRL_next_state = 2; break; } } /** switch statemate_B_FH_TUERMODUL_CTRL_next_state **/ switch (statemate_A_FH_TUERMODUL_CTRL_next_state) { case 1: { /** state WIEDERHOLSPERRE in chart FH_TUERMODUL_CTRL **/ SYS_bit_clr(statemate_bitlist, entered_WIEDERHOLSPERRE_FH_TUERMODUL_CTRL_copy_IDX); if ((statemate_step == 1 && statemate_tm_entered_WIEDERHOLSPERRE_FH_TUERMODUL_CTRLexited_BEREIT_FH_TUERMODUL_CTRL != 0 && (statemate_time - statemate_tm_entered_WIEDERHOLSPERRE_FH_TUERMODUL_CTRLexited_BEREIT_FH_TUERMODUL_CTRL == 1)) && ((statemate_FH_TUERMODUL__MFHZ || statemate_FH_TUERMODUL__MFHA))) { statemate_stable = 0; statemate_FH_TUERMODUL_CTRL__N = statemate_FH_TUERMODUL_CTRL__N + 1; statemate_A_FH_TUERMODUL_CTRL_next_state = 1; SYS_bit_set(statemate_bitlist, entered_WIEDERHOLSPERRE_FH_TUERMODUL_CTRL_copy_IDX); statemate_WIEDERHOLSPERRE_FH_TUERMODUL_CTRL_next_state = 1; break; } switch (statemate_WIEDERHOLSPERRE_FH_TUERMODUL_CTRL_next_state) { case 1: { /** state WDHSP in chart FH_TUERMODUL_CTRL **/ if ((statemate_step == 1 && statemate_tm_entered_WIEDERHOLSPERRE_FH_TUERMODUL_CTRL != 0 && (statemate_time - statemate_tm_entered_WIEDERHOLSPERRE_FH_TUERMODUL_CTRL == 3)) && (((!(statemate_FH_TUERMODUL__MFHZ || statemate_FH_TUERMODUL__MFHA)) && statemate_FH_TUERMODUL_CTRL__N > 0))) { statemate_stable = 0; statemate_FH_TUERMODUL_CTRL__N = statemate_FH_TUERMODUL_CTRL__N - 1; statemate_WIEDERHOLSPERRE_FH_TUERMODUL_CTRL_next_state = 1; break; } break; } default: { statemate_stable = 0; SYS_bit_set(statemate_bitlist, entered_WIEDERHOLSPERRE_FH_TUERMODUL_CTRL_copy_IDX); statemate_WIEDERHOLSPERRE_FH_TUERMODUL_CTRL_next_state = 1; break; } } /** switch statemate_WIEDERHOLSPERRE_FH_TUERMODUL_CTRL_next_state **/ break; } default: { statemate_stable = 0; statemate_FH_TUERMODUL_CTRL__N = 0; statemate_A_FH_TUERMODUL_CTRL_next_state = 1; SYS_bit_set(statemate_bitlist, entered_WIEDERHOLSPERRE_FH_TUERMODUL_CTRL_copy_IDX); statemate_WIEDERHOLSPERRE_FH_TUERMODUL_CTRL_next_state = 1; break; } } /** switch statemate_A_FH_TUERMODUL_CTRL_next_state **/ SYS_bit_cpy(statemate_bitlist, entered_WIEDERHOLSPERRE_FH_TUERMODUL_CTRL_copy_IDX, statemate_bitlist, entered_WIEDERHOLSPERRE_FH_TUERMODUL_CTRL_IDX); SYS_bit_cpy(statemate_bitlist, exited_BEREIT_FH_TUERMODUL_CTRL_copy_IDX, statemate_bitlist, exited_BEREIT_FH_TUERMODUL_CTRL_IDX); } } __attribute__((always_inline)) static inline void statemate_generic_EINKLEMMSCHUTZ_CTRL(void) { if (SYS_bit_get(statemate_bitlist, active_EINKLEMMSCHUTZ_CTRL_IDX)) { switch (statemate_EINKLEMMSCHUTZ_CTRL_EINKLEMMSCHUTZ_CTRL_next_state) { case 1: { /** state NORMALBETRIEB in chart EINKLEMMSCHUTZ_CTRL **/ if (((statemate_FH_TUERMODUL__EKS_LEISTE_AKTIV && !(statemate_FH_TUERMODUL__EKS_LEISTE_AKTIV_old))) && ((!(statemate_FH_TUERMODUL__SFHZ && statemate_FH_TUERMODUL__SFHA)))) { statemate_stable = 0; SYS_bit_set(statemate_bitlist, FH_TUERMODUL__EINKLEMMUNG_IDX); statemate_EINKLEMMSCHUTZ_CTRL_EINKLEMMSCHUTZ_CTRL_next_state = 2; break; } break; } case 2: { /** state EINKLEMMUNG in chart EINKLEMMSCHUTZ_CTRL **/ SYS_bit_clr(statemate_bitlist, FH_TUERMODUL__EINKLEMMUNG_IDX); if ((!(statemate_FH_TUERMODUL__EKS_LEISTE_AKTIV) && statemate_FH_TUERMODUL__EKS_LEISTE_AKTIV_old)) { statemate_stable = 0; statemate_EINKLEMMSCHUTZ_CTRL_EINKLEMMSCHUTZ_CTRL_next_state = 1; break; } break; } default: { statemate_stable = 0; statemate_EINKLEMMSCHUTZ_CTRL_EINKLEMMSCHUTZ_CTRL_next_state = 1; break; } } /** switch statemate_EINKLEMMSCHUTZ_CTRL_EINKLEMMSCHUTZ_CTRL_next_state **/ } } __attribute__((always_inline)) static inline void statemate_generic_BLOCK_ERKENNUNG_CTRL(void) { if (!SYS_bit_get(statemate_bitlist, active_BLOCK_ERKENNUNG_CTRL_IDX) && SYS_bit_get(statemate_bitlist, active_BLOCK_ERKENNUNG_CTRL_old_IDX) && !SYS_bit_get(statemate_bitlist, active_BLOCK_ERKENNUNG_CTRL_copy_IDX)) SYS_bit_clr(statemate_bitlist, entered_EINSCHALTSTROM_MESSEN_BLOCK_ERKENNUNG_CTRL_IDX); if (SYS_bit_get(statemate_bitlist, active_BLOCK_ERKENNUNG_CTRL_IDX)) { switch ( statemate_BLOCK_ERKENNUNG_CTRL_BLOCK_ERKENNUNG_CTRL_next_state) { case 1: { /** state KEINE_BEWEGUNG in chart BLOCK_ERKENNUNG_CTRL **/ if ((statemate_FH_TUERMODUL__I_EIN != statemate_FH_TUERMODUL__I_EIN_old) && ((statemate_FH_TUERMODUL__I_EIN > 0))) { statemate_stable = 0; statemate_FH_TUERMODUL__BLOCK_copy = 0; statemate_BLOCK_ERKENNUNG_CTRL_BLOCK_ERKENNUNG_CTRL_next_state = 2; statemate_BLOCK_ERKENNUNG_CTRL__N = 0; statemate_BLOCK_ERKENNUNG_CTRL__I_EIN_MAX = 2; statemate_BEWEGUNG_BLOCK_ERKENNUNG_CTRL_next_state = 3; SYS_bit_set( statemate_bitlist, entered_EINSCHALTSTROM_MESSEN_BLOCK_ERKENNUNG_CTRL_IDX); break; } break; } case 2: { /** state BEWEGUNG in chart BLOCK_ERKENNUNG_CTRL **/ if ((!(statemate_FH_TUERMODUL__MFHA) && statemate_FH_TUERMODUL__MFHA_old) || (!(statemate_FH_TUERMODUL__MFHZ) && statemate_FH_TUERMODUL__MFHZ_old)) { statemate_stable = 0; statemate_BLOCK_ERKENNUNG_CTRL_BLOCK_ERKENNUNG_CTRL_next_state = 1; statemate_BEWEGUNG_BLOCK_ERKENNUNG_CTRL_next_state = 0; break; } switch (statemate_BEWEGUNG_BLOCK_ERKENNUNG_CTRL_next_state) { case 1: { /** state FENSTER_BLOCKIERT in chart BLOCK_ERKENNUNG_CTRL **/ break; } case 2: { /** state FENSTER_BEWEGT_SICH in chart BLOCK_ERKENNUNG_CTRL **/ if ((statemate_FH_TUERMODUL__I_EIN > (statemate_BLOCK_ERKENNUNG_CTRL__I_EIN_MAX - 2))) { statemate_stable = 0; statemate_FH_TUERMODUL__BLOCK_copy = 1; statemate_BEWEGUNG_BLOCK_ERKENNUNG_CTRL_next_state = 1; break; } break; } case 3: { /** state EINSCHALTSTROM_MESSEN in chart BLOCK_ERKENNUNG_CTRL **/ SYS_bit_clr( statemate_bitlist, entered_EINSCHALTSTROM_MESSEN_BLOCK_ERKENNUNG_CTRL_IDX); if ((statemate_BLOCK_ERKENNUNG_CTRL__N == 11 && !(statemate_BLOCK_ERKENNUNG_CTRL__N_old == 11))) { statemate_stable = 0; statemate_BEWEGUNG_BLOCK_ERKENNUNG_CTRL_next_state = 2; break; } /** static reactions: **/ if (statemate_BEWEGUNG_BLOCK_ERKENNUNG_CTRL_next_state == 3) { if (statemate_step == 1 && statemate_tm_entered_EINSCHALTSTROM_MESSEN_BLOCK_ERKENNUNG_CTRLch_BLOCK_ERKENNUNG_CTRL__N_copy != 0 && (statemate_time - statemate_tm_entered_EINSCHALTSTROM_MESSEN_BLOCK_ERKENNUNG_CTRLch_BLOCK_ERKENNUNG_CTRL__N_copy == 2)) { statemate_BLOCK_ERKENNUNG_CTRL__N = statemate_BLOCK_ERKENNUNG_CTRL__N + 1; if ((statemate_FH_TUERMODUL__I_EIN > statemate_BLOCK_ERKENNUNG_CTRL__I_EIN_MAX)) statemate_BLOCK_ERKENNUNG_CTRL__I_EIN_MAX = statemate_FH_TUERMODUL__I_EIN; } } /** end static reactions **/ break; } default: { statemate_stable = 0; statemate_BLOCK_ERKENNUNG_CTRL__N = 0; statemate_BLOCK_ERKENNUNG_CTRL__I_EIN_MAX = 2; statemate_BEWEGUNG_BLOCK_ERKENNUNG_CTRL_next_state = 3; SYS_bit_set( statemate_bitlist, entered_EINSCHALTSTROM_MESSEN_BLOCK_ERKENNUNG_CTRL_IDX); break; } } /** switch statemate_BEWEGUNG_BLOCK_ERKENNUNG_CTRL_next_state **/ break; } default: { statemate_stable = 0; statemate_BLOCK_ERKENNUNG_CTRL_BLOCK_ERKENNUNG_CTRL_next_state = 1; break; } } /** switch statemate_BLOCK_ERKENNUNG_CTRL_BLOCK_ERKENNUNG_CTRL_next_state **/ } } __attribute__((always_inline)) static inline void statemate_FH_DU(void) { statemate_time = 1; /**SYS_get_clock()**/ statemate_stable = 0; statemate_step = 0; // patched for wcet: replacing while statement by for // while (!statemate_stable) int i; __pragma_loopbound(100, 100); for (i = 0; i < 100; i++) { statemate_stable = 1; statemate_step++; { switch ( statemate_FH_STEUERUNG_DUMMY_FH_STEUERUNG_DUMMY_next_state) { case 1: { /** state SCHLIESSEN in chart FH_STEUERUNG_DUMMY **/ if ((!(statemate_FH_DU__MFHZ) && statemate_FH_DU__MFHZ_old)) { statemate_stable = 0; statemate_FH_DU__MFH = 0; statemate_FH_STEUERUNG_DUMMY_FH_STEUERUNG_DUMMY_next_state = 2; break; } break; } case 2: { /** state BEREIT in chart FH_STEUERUNG_DUMMY **/ if ((statemate_FH_DU__MFHZ && !(statemate_FH_DU__MFHZ_old))) { statemate_stable = 0; statemate_FH_DU__MFH = -100; statemate_FH_STEUERUNG_DUMMY_FH_STEUERUNG_DUMMY_next_state = 1; break; } if ((statemate_FH_DU__MFHA && !(statemate_FH_DU__MFHA_old))) { statemate_stable = 0; statemate_FH_DU__MFH = 100; statemate_FH_STEUERUNG_DUMMY_FH_STEUERUNG_DUMMY_next_state = 3; break; } break; } case 3: { /** state OEFFNEN in chart FH_STEUERUNG_DUMMY **/ if ((!(statemate_FH_DU__MFHA) && statemate_FH_DU__MFHA_old)) { statemate_stable = 0; statemate_FH_DU__MFH = 0; statemate_FH_STEUERUNG_DUMMY_FH_STEUERUNG_DUMMY_next_state = 2; break; } break; } default: { statemate_stable = 0; statemate_FH_DU__MFH = 0; statemate_FH_STEUERUNG_DUMMY_FH_STEUERUNG_DUMMY_next_state = 2; break; } } /** switch statemate_FH_STEUERUNG_DUMMY_FH_STEUERUNG_DUMMY_next_state **/ } { { if (!SYS_bit_get(statemate_bitlist, active_KINDERSICHERUNG_CTRL_IDX)) statemate_KINDERSICHERUNG_CTRL_KINDERSICHERUNG_CTRL_next_state = 3; SYS_bit_clr(statemate_bitlist, active_KINDERSICHERUNG_CTRL_copy_IDX); if (!SYS_bit_get(statemate_bitlist, active_EINKLEMMSCHUTZ_CTRL_IDX)) statemate_EINKLEMMSCHUTZ_CTRL_EINKLEMMSCHUTZ_CTRL_next_state = 1; SYS_bit_clr(statemate_bitlist, active_EINKLEMMSCHUTZ_CTRL_copy_IDX); if (!SYS_bit_get(statemate_bitlist, active_BLOCK_ERKENNUNG_CTRL_IDX)) { SYS_bit_clr( statemate_bitlist, entered_EINSCHALTSTROM_MESSEN_BLOCK_ERKENNUNG_CTRL_IDX); statemate_BLOCK_ERKENNUNG_CTRL_BLOCK_ERKENNUNG_CTRL_next_state = 1; } SYS_bit_clr(statemate_bitlist, active_BLOCK_ERKENNUNG_CTRL_copy_IDX); if (!SYS_bit_get(statemate_bitlist, active_FH_TUERMODUL_CTRL_IDX)) { SYS_bit_clr(statemate_bitlist, entered_WIEDERHOLSPERRE_FH_TUERMODUL_CTRL_IDX); SYS_bit_clr(statemate_bitlist, exited_BEREIT_FH_TUERMODUL_CTRL_IDX); statemate_B_FH_TUERMODUL_CTRL_next_state = 2; statemate_FH_TUERMODUL_CTRL__N = 0; statemate_A_FH_TUERMODUL_CTRL_next_state = 1; SYS_bit_set( statemate_bitlist, entered_WIEDERHOLSPERRE_FH_TUERMODUL_CTRL_copy_IDX); statemate_WIEDERHOLSPERRE_FH_TUERMODUL_CTRL_next_state = 1; } SYS_bit_clr(statemate_bitlist, active_FH_TUERMODUL_CTRL_copy_IDX); SYS_bit_set(statemate_bitlist, active_KINDERSICHERUNG_CTRL_copy_IDX); SYS_bit_set(statemate_bitlist, active_EINKLEMMSCHUTZ_CTRL_copy_IDX); SYS_bit_set(statemate_bitlist, active_BLOCK_ERKENNUNG_CTRL_copy_IDX); SYS_bit_set(statemate_bitlist, active_FH_TUERMODUL_CTRL_copy_IDX); /** static reactions: **/ if (statemate_FH_DU__S_FH_TMBFZUCAN != statemate_FH_DU__S_FH_TMBFZUCAN_old) { if ((!statemate_FH_DU__DOOR_ID)) statemate_FH_DU__S_FH_FTZU = statemate_FH_DU__S_FH_TMBFZUCAN; } if (statemate_FH_DU__S_FH_TMBFZUDISC != statemate_FH_DU__S_FH_TMBFZUDISC_old) { if (statemate_FH_DU__DOOR_ID) statemate_FH_DU__S_FH_TMBFZUCAN = statemate_FH_DU__S_FH_TMBFZUDISC; } if (statemate_FH_DU__S_FH_TMBFAUFCAN != statemate_FH_DU__S_FH_TMBFAUFCAN_old) { if ((!statemate_FH_DU__DOOR_ID)) statemate_FH_DU__S_FH_FTAUF = statemate_FH_DU__S_FH_TMBFAUFCAN; } if (statemate_FH_DU__S_FH_TMBFAUFDISC != statemate_FH_DU__S_FH_TMBFAUFDISC_old) { if (statemate_FH_DU__DOOR_ID) statemate_FH_DU__S_FH_TMBFAUFCAN = statemate_FH_DU__S_FH_TMBFAUFDISC; } /** end static reactions **/ } } SYS_bit_cpy(statemate_bitlist, active_KINDERSICHERUNG_CTRL_IDX, statemate_bitlist, active_KINDERSICHERUNG_CTRL_old_IDX); SYS_bit_cpy(statemate_bitlist, active_FH_TUERMODUL_CTRL_IDX, statemate_bitlist, active_FH_TUERMODUL_CTRL_old_IDX); SYS_bit_cpy(statemate_bitlist, active_EINKLEMMSCHUTZ_CTRL_IDX, statemate_bitlist, active_EINKLEMMSCHUTZ_CTRL_old_IDX); SYS_bit_cpy(statemate_bitlist, active_BLOCK_ERKENNUNG_CTRL_IDX, statemate_bitlist, active_BLOCK_ERKENNUNG_CTRL_old_IDX); statemate_FH_TUERMODUL__SFHA_MEC = statemate_FH_DU__S_FH_AUFDISC; statemate_FH_TUERMODUL__SFHA_ZENTRAL = statemate_FH_DU__S_FH_FTAUF; statemate_FH_TUERMODUL__SFHZ_MEC = statemate_FH_DU__S_FH_ZUDISC; statemate_FH_TUERMODUL__SFHZ_ZENTRAL = statemate_FH_DU__S_FH_FTZU; statemate_generic_KINDERSICHERUNG_CTRL(); statemate_FH_DU__MFHA = statemate_FH_TUERMODUL__MFHA; statemate_FH_DU__MFHZ = statemate_FH_TUERMODUL__MFHZ; statemate_FH_DU__I_EIN = statemate_FH_TUERMODUL__I_EIN; statemate_FH_DU__EKS_LEISTE_AKTIV = statemate_FH_TUERMODUL__EKS_LEISTE_AKTIV; statemate_FH_DU__POSITION = statemate_FH_TUERMODUL__POSITION; statemate_FH_DU__FT = statemate_FH_TUERMODUL__FT; statemate_FH_DU__S_FH_AUFDISC = statemate_FH_TUERMODUL__SFHA_MEC; statemate_FH_DU__S_FH_FTAUF = statemate_FH_TUERMODUL__SFHA_ZENTRAL; statemate_FH_DU__S_FH_ZUDISC = statemate_FH_TUERMODUL__SFHZ_MEC; statemate_FH_DU__S_FH_FTZU = statemate_FH_TUERMODUL__SFHZ_ZENTRAL; statemate_FH_DU__KL_50 = statemate_FH_TUERMODUL__KL_50; statemate_FH_DU__BLOCK = statemate_FH_TUERMODUL__BLOCK; statemate_FH_TUERMODUL__SFHA_MEC = statemate_FH_DU__S_FH_AUFDISC; statemate_FH_TUERMODUL__SFHA_ZENTRAL = statemate_FH_DU__S_FH_FTAUF; statemate_FH_TUERMODUL__SFHZ_MEC = statemate_FH_DU__S_FH_ZUDISC; statemate_FH_TUERMODUL__SFHZ_ZENTRAL = statemate_FH_DU__S_FH_FTZU; statemate_generic_FH_TUERMODUL_CTRL(); statemate_FH_DU__MFHA = statemate_FH_TUERMODUL__MFHA; statemate_FH_DU__MFHZ = statemate_FH_TUERMODUL__MFHZ; statemate_FH_DU__I_EIN = statemate_FH_TUERMODUL__I_EIN; statemate_FH_DU__EKS_LEISTE_AKTIV = statemate_FH_TUERMODUL__EKS_LEISTE_AKTIV; statemate_FH_DU__POSITION = statemate_FH_TUERMODUL__POSITION; statemate_FH_DU__FT = statemate_FH_TUERMODUL__FT; statemate_FH_DU__S_FH_AUFDISC = statemate_FH_TUERMODUL__SFHA_MEC; statemate_FH_DU__S_FH_FTAUF = statemate_FH_TUERMODUL__SFHA_ZENTRAL; statemate_FH_DU__S_FH_ZUDISC = statemate_FH_TUERMODUL__SFHZ_MEC; statemate_FH_DU__S_FH_FTZU = statemate_FH_TUERMODUL__SFHZ_ZENTRAL; statemate_FH_DU__KL_50 = statemate_FH_TUERMODUL__KL_50; statemate_FH_DU__BLOCK = statemate_FH_TUERMODUL__BLOCK; statemate_FH_TUERMODUL__SFHA_MEC = statemate_FH_DU__S_FH_AUFDISC; statemate_FH_TUERMODUL__SFHA_ZENTRAL = statemate_FH_DU__S_FH_FTAUF; statemate_FH_TUERMODUL__SFHZ_MEC = statemate_FH_DU__S_FH_ZUDISC; statemate_FH_TUERMODUL__SFHZ_ZENTRAL = statemate_FH_DU__S_FH_FTZU; statemate_generic_EINKLEMMSCHUTZ_CTRL(); statemate_FH_DU__MFHA = statemate_FH_TUERMODUL__MFHA; statemate_FH_DU__MFHZ = statemate_FH_TUERMODUL__MFHZ; statemate_FH_DU__I_EIN = statemate_FH_TUERMODUL__I_EIN; statemate_FH_DU__EKS_LEISTE_AKTIV = statemate_FH_TUERMODUL__EKS_LEISTE_AKTIV; statemate_FH_DU__POSITION = statemate_FH_TUERMODUL__POSITION; statemate_FH_DU__FT = statemate_FH_TUERMODUL__FT; statemate_FH_DU__S_FH_AUFDISC = statemate_FH_TUERMODUL__SFHA_MEC; statemate_FH_DU__S_FH_FTAUF = statemate_FH_TUERMODUL__SFHA_ZENTRAL; statemate_FH_DU__S_FH_ZUDISC = statemate_FH_TUERMODUL__SFHZ_MEC; statemate_FH_DU__S_FH_FTZU = statemate_FH_TUERMODUL__SFHZ_ZENTRAL; statemate_FH_DU__KL_50 = statemate_FH_TUERMODUL__KL_50; statemate_FH_DU__BLOCK = statemate_FH_TUERMODUL__BLOCK; statemate_FH_TUERMODUL__SFHA_MEC = statemate_FH_DU__S_FH_AUFDISC; statemate_FH_TUERMODUL__SFHA_ZENTRAL = statemate_FH_DU__S_FH_FTAUF; statemate_FH_TUERMODUL__SFHZ_MEC = statemate_FH_DU__S_FH_ZUDISC; statemate_FH_TUERMODUL__SFHZ_ZENTRAL = statemate_FH_DU__S_FH_FTZU; statemate_generic_BLOCK_ERKENNUNG_CTRL(); statemate_FH_DU__MFHA = statemate_FH_TUERMODUL__MFHA; statemate_FH_DU__MFHZ = statemate_FH_TUERMODUL__MFHZ; statemate_FH_DU__I_EIN = statemate_FH_TUERMODUL__I_EIN; statemate_FH_DU__EKS_LEISTE_AKTIV = statemate_FH_TUERMODUL__EKS_LEISTE_AKTIV; statemate_FH_DU__POSITION = statemate_FH_TUERMODUL__POSITION; statemate_FH_DU__FT = statemate_FH_TUERMODUL__FT; statemate_FH_DU__S_FH_AUFDISC = statemate_FH_TUERMODUL__SFHA_MEC; statemate_FH_DU__S_FH_FTAUF = statemate_FH_TUERMODUL__SFHA_ZENTRAL; statemate_FH_DU__S_FH_ZUDISC = statemate_FH_TUERMODUL__SFHZ_MEC; statemate_FH_DU__S_FH_FTZU = statemate_FH_TUERMODUL__SFHZ_ZENTRAL; statemate_FH_DU__KL_50 = statemate_FH_TUERMODUL__KL_50; statemate_FH_DU__BLOCK = statemate_FH_TUERMODUL__BLOCK; SYS_bit_cpy(statemate_bitlist, active_KINDERSICHERUNG_CTRL_copy_IDX, statemate_bitlist, active_KINDERSICHERUNG_CTRL_IDX); SYS_bit_cpy(statemate_bitlist, active_FH_TUERMODUL_CTRL_copy_IDX, statemate_bitlist, active_FH_TUERMODUL_CTRL_IDX); SYS_bit_cpy(statemate_bitlist, active_EINKLEMMSCHUTZ_CTRL_copy_IDX, statemate_bitlist, active_EINKLEMMSCHUTZ_CTRL_IDX); SYS_bit_cpy(statemate_bitlist, active_BLOCK_ERKENNUNG_CTRL_copy_IDX, statemate_bitlist, active_BLOCK_ERKENNUNG_CTRL_IDX); statemate_FH_TUERMODUL_CTRL__N_old = statemate_FH_TUERMODUL_CTRL__N; statemate_FH_TUERMODUL__I_EIN_old = statemate_FH_TUERMODUL__I_EIN; statemate_FH_DU__MFH = statemate_FH_DU__MFH_copy; statemate_FH_DU__I_EIN_old = statemate_FH_DU__I_EIN; statemate_BLOCK_ERKENNUNG_CTRL__N_old = statemate_BLOCK_ERKENNUNG_CTRL__N; statemate_FH_TUERMODUL__SFHZ_ZENTRAL_old = statemate_FH_TUERMODUL__SFHZ_ZENTRAL; statemate_FH_TUERMODUL__SFHZ_MEC_old = statemate_FH_TUERMODUL__SFHZ_MEC; statemate_FH_TUERMODUL__SFHA_ZENTRAL_old = statemate_FH_TUERMODUL__SFHA_ZENTRAL; statemate_FH_TUERMODUL__SFHA_MEC_old = statemate_FH_TUERMODUL__SFHA_MEC; statemate_FH_TUERMODUL__BLOCK = statemate_FH_TUERMODUL__BLOCK_copy; statemate_FH_TUERMODUL__BLOCK_old = statemate_FH_TUERMODUL__BLOCK; statemate_FH_TUERMODUL__SFHZ = statemate_FH_TUERMODUL__SFHZ_copy; statemate_FH_TUERMODUL__SFHZ_old = statemate_FH_TUERMODUL__SFHZ; statemate_FH_TUERMODUL__SFHA = statemate_FH_TUERMODUL__SFHA_copy; statemate_FH_TUERMODUL__SFHA_old = statemate_FH_TUERMODUL__SFHA; statemate_FH_TUERMODUL__MFHZ = statemate_FH_TUERMODUL__MFHZ_copy; statemate_FH_TUERMODUL__MFHZ_old = statemate_FH_TUERMODUL__MFHZ; statemate_FH_TUERMODUL__MFHA = statemate_FH_TUERMODUL__MFHA_copy; statemate_FH_TUERMODUL__MFHA_old = statemate_FH_TUERMODUL__MFHA; statemate_FH_TUERMODUL__EKS_LEISTE_AKTIV_old = statemate_FH_TUERMODUL__EKS_LEISTE_AKTIV; statemate_FH_DU__EKS_LEISTE_AKTIV_old = statemate_FH_DU__EKS_LEISTE_AKTIV; statemate_FH_DU__S_FH_TMBFAUFCAN_old = statemate_FH_DU__S_FH_TMBFAUFCAN; statemate_FH_DU__S_FH_TMBFZUCAN_old = statemate_FH_DU__S_FH_TMBFZUCAN; statemate_FH_DU__S_FH_TMBFZUDISC_old = statemate_FH_DU__S_FH_TMBFZUDISC; statemate_FH_DU__S_FH_TMBFAUFDISC_old = statemate_FH_DU__S_FH_TMBFAUFDISC; statemate_FH_DU__BLOCK = statemate_FH_DU__BLOCK_copy; statemate_FH_DU__BLOCK_old = statemate_FH_DU__BLOCK; statemate_FH_DU__MFHZ = statemate_FH_DU__MFHZ_copy; statemate_FH_DU__MFHZ_old = statemate_FH_DU__MFHZ; statemate_FH_DU__MFHA = statemate_FH_DU__MFHA_copy; statemate_FH_DU__MFHA_old = statemate_FH_DU__MFHA; } /** while(!statemate_stable) **/ } /** statemate_FH_DU **/ /* Main functions */ __attribute__((always_inline)) static inline int statemate_return() { unsigned long int checksum = 0; int index; __pragma_loopbound(64, 64); for (index = 63; index >= 0; index--) checksum += (unsigned long) (statemate_bitlist[index]) << index; return (checksum != 32ul); } __attribute__((noinline)) __attribute__((export_name("entrypoint"))) __attribute__((noinline)) __attribute__((export_name("entrypoint"))) void statemate_main(void) { statemate_FH_DU(); } __attribute__((noinline)) __attribute__((export_name("main"))) __attribute__((noinline)) __attribute__((export_name("main"))) int main(void) { statemate_init(); statemate_main(); return statemate_return(); }