Powerwindow.c 32 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701
  1. #include <stdlib.h>
  2. #include <string.h>
  3. #include "sc_types.h"
  4. #include "Powerwindow.h"
  5. #include "PowerwindowRequired.h"
  6. /*! \file Implementation of the state machine 'powerwindow'
  7. */
  8. /* prototypes of all internal functions */
  9. static sc_boolean powerwindow_check_main_region_Normal_operation_tr0_tr0(const Powerwindow* handle);
  10. static sc_boolean powerwindow_check_main_region_Normal_operation_r1_Driver_neutral_tr0_tr0(const Powerwindow* handle);
  11. static sc_boolean powerwindow_check_main_region_Normal_operation_r1_Driver_neutral_tr1_tr1(const Powerwindow* handle);
  12. static sc_boolean powerwindow_check_main_region_Normal_operation_r1_Driver_neutral_r1_Passenger_operation_tr0_tr0(const Powerwindow* handle);
  13. static sc_boolean powerwindow_check_main_region_Normal_operation_r1_Driver_neutral_r1_Passenger_operation_tr1_tr1(const Powerwindow* handle);
  14. static sc_boolean powerwindow_check_main_region_Normal_operation_r1_Driver_neutral_r1_Passenger_down_tr0_tr0(const Powerwindow* handle);
  15. static sc_boolean powerwindow_check_main_region_Normal_operation_r1_Driver_down_tr0_tr0(const Powerwindow* handle);
  16. static sc_boolean powerwindow_check_main_region_Normal_operation_r1_Driver_up_tr0_tr0(const Powerwindow* handle);
  17. static sc_boolean powerwindow_check_main_region_Normal_operation_r1_Passenger_up_tr0_tr0(const Powerwindow* handle);
  18. static sc_boolean powerwindow_check_main_region_Emergency_operation_tr0_tr0(const Powerwindow* handle);
  19. static void powerwindow_effect_main_region_Normal_operation_tr0(Powerwindow* handle);
  20. static void powerwindow_effect_main_region_Normal_operation_r1_Driver_neutral_tr0(Powerwindow* handle);
  21. static void powerwindow_effect_main_region_Normal_operation_r1_Driver_neutral_tr1(Powerwindow* handle);
  22. static void powerwindow_effect_main_region_Normal_operation_r1_Driver_neutral_r1_Passenger_operation_tr0(Powerwindow* handle);
  23. static void powerwindow_effect_main_region_Normal_operation_r1_Driver_neutral_r1_Passenger_operation_tr1(Powerwindow* handle);
  24. static void powerwindow_effect_main_region_Normal_operation_r1_Driver_neutral_r1_Passenger_down_tr0(Powerwindow* handle);
  25. static void powerwindow_effect_main_region_Normal_operation_r1_Driver_down_tr0(Powerwindow* handle);
  26. static void powerwindow_effect_main_region_Normal_operation_r1_Driver_up_tr0(Powerwindow* handle);
  27. static void powerwindow_effect_main_region_Normal_operation_r1_Passenger_up_tr0(Powerwindow* handle);
  28. static void powerwindow_effect_main_region_Emergency_operation_tr0(Powerwindow* handle);
  29. static void powerwindow_enact_main_region_Emergency_operation(Powerwindow* handle);
  30. static void powerwindow_exact_main_region_Emergency_operation(Powerwindow* handle);
  31. static void powerwindow_enseq_main_region_Normal_operation_default(Powerwindow* handle);
  32. static void powerwindow_enseq_main_region_Normal_operation_r1_Driver_neutral_default(Powerwindow* handle);
  33. static void powerwindow_enseq_main_region_Normal_operation_r1_Driver_neutral_r1_Passenger_operation_default(Powerwindow* handle);
  34. static void powerwindow_enseq_main_region_Normal_operation_r1_Driver_neutral_r1_Passenger_down_default(Powerwindow* handle);
  35. static void powerwindow_enseq_main_region_Normal_operation_r1_Driver_down_default(Powerwindow* handle);
  36. static void powerwindow_enseq_main_region_Normal_operation_r1_Driver_up_default(Powerwindow* handle);
  37. static void powerwindow_enseq_main_region_Normal_operation_r1_Passenger_up_default(Powerwindow* handle);
  38. static void powerwindow_enseq_main_region_Emergency_operation_default(Powerwindow* handle);
  39. static void powerwindow_enseq_main_region_default(Powerwindow* handle);
  40. static void powerwindow_enseq_main_region_Normal_operation_r1_default(Powerwindow* handle);
  41. static void powerwindow_enseq_main_region_Normal_operation_r1_Driver_neutral_r1_default(Powerwindow* handle);
  42. static void powerwindow_exseq_main_region_Normal_operation(Powerwindow* handle);
  43. static void powerwindow_exseq_main_region_Normal_operation_r1_Driver_neutral(Powerwindow* handle);
  44. static void powerwindow_exseq_main_region_Normal_operation_r1_Driver_neutral_r1_Passenger_operation(Powerwindow* handle);
  45. static void powerwindow_exseq_main_region_Normal_operation_r1_Driver_neutral_r1_Passenger_down(Powerwindow* handle);
  46. static void powerwindow_exseq_main_region_Normal_operation_r1_Driver_down(Powerwindow* handle);
  47. static void powerwindow_exseq_main_region_Normal_operation_r1_Driver_up(Powerwindow* handle);
  48. static void powerwindow_exseq_main_region_Normal_operation_r1_Passenger_up(Powerwindow* handle);
  49. static void powerwindow_exseq_main_region_Emergency_operation(Powerwindow* handle);
  50. static void powerwindow_exseq_main_region(Powerwindow* handle);
  51. static void powerwindow_exseq_main_region_Normal_operation_r1(Powerwindow* handle);
  52. static void powerwindow_exseq_main_region_Normal_operation_r1_Driver_neutral_r1(Powerwindow* handle);
  53. static void powerwindow_react_main_region_Normal_operation_r1_Driver_neutral_r1_Passenger_operation(Powerwindow* handle);
  54. static void powerwindow_react_main_region_Normal_operation_r1_Driver_neutral_r1_Passenger_down(Powerwindow* handle);
  55. static void powerwindow_react_main_region_Normal_operation_r1_Driver_down(Powerwindow* handle);
  56. static void powerwindow_react_main_region_Normal_operation_r1_Driver_up(Powerwindow* handle);
  57. static void powerwindow_react_main_region_Normal_operation_r1_Passenger_up(Powerwindow* handle);
  58. static void powerwindow_react_main_region_Emergency_operation(Powerwindow* handle);
  59. static void powerwindow_react_main_region__entry_Default(Powerwindow* handle);
  60. static void powerwindow_react_main_region_Normal_operation_r1__entry_Default(Powerwindow* handle);
  61. static void powerwindow_react_main_region_Normal_operation_r1_Driver_neutral_r1__entry_Default(Powerwindow* handle);
  62. static void powerwindow_clearInEvents(Powerwindow* handle);
  63. static void powerwindow_clearOutEvents(Powerwindow* handle);
  64. /*Created this myself... -> please */
  65. void powerwindow_copy(Powerwindow* original, Powerwindow* copy){
  66. for (int i = 0; i<POWERWINDOW_MAX_ORTHOGONAL_STATES; i++){
  67. copy->stateConfVector[i] = original->stateConfVector[i];
  68. }
  69. copy->stateConfVectorPosition = original->stateConfVectorPosition;
  70. copy->timeEvents.powerwindow_main_region_Emergency_operation_tev0_raised = original ->timeEvents.powerwindow_main_region_Emergency_operation_tev0_raised;
  71. copy->ifaceInput = original->ifaceInput;
  72. copy->ifaceOutput = original->ifaceOutput;
  73. }
  74. void powerwindow_init(Powerwindow* handle)
  75. {
  76. sc_integer i;
  77. for (i = 0; i < POWERWINDOW_MAX_ORTHOGONAL_STATES; ++i) {
  78. handle->stateConfVector[i] = Powerwindow_last_state;
  79. }
  80. handle->stateConfVectorPosition = 0;
  81. powerwindow_clearInEvents(handle);
  82. powerwindow_clearOutEvents(handle);
  83. /* Default init sequence for statechart powerwindow */
  84. handle->ifaceOutput.up = bool_false;
  85. handle->ifaceOutput.down = bool_false;
  86. }
  87. void powerwindow_enter(Powerwindow* handle)
  88. {
  89. /* Default enter sequence for statechart powerwindow */
  90. powerwindow_enseq_main_region_default(handle);
  91. }
  92. void powerwindow_exit(Powerwindow* handle)
  93. {
  94. /* Default exit sequence for statechart powerwindow */
  95. powerwindow_exseq_main_region(handle);
  96. }
  97. sc_boolean powerwindow_isActive(const Powerwindow* handle) {
  98. sc_boolean result;
  99. if (handle->stateConfVector[0] != Powerwindow_last_state)
  100. {
  101. result = bool_true;
  102. }
  103. else
  104. {
  105. result = bool_false;
  106. }
  107. return result;
  108. }
  109. /*
  110. * Always returns 'false' since this state machine can never become final.
  111. */
  112. sc_boolean powerwindow_isFinal(const Powerwindow* handle){
  113. return bool_false;
  114. }
  115. static void powerwindow_clearInEvents(Powerwindow* handle) {
  116. handle->ifaceInput.obj_detected_raised = bool_false;
  117. handle->ifaceInput.passenger_up_raised = bool_false;
  118. handle->ifaceInput.passenger_down_raised = bool_false;
  119. handle->ifaceInput.driver_up_raised = bool_false;
  120. handle->ifaceInput.driver_down_raised = bool_false;
  121. handle->ifaceInput.stop_raised = bool_false;
  122. handle->timeEvents.powerwindow_main_region_Emergency_operation_tev0_raised = bool_false;
  123. }
  124. static void powerwindow_clearOutEvents(Powerwindow* handle) {
  125. }
  126. void powerwindow_runCycle(Powerwindow* handle) {
  127. powerwindow_clearOutEvents(handle);
  128. for (handle->stateConfVectorPosition = 0;
  129. handle->stateConfVectorPosition < POWERWINDOW_MAX_ORTHOGONAL_STATES;
  130. handle->stateConfVectorPosition++) {
  131. switch (handle->stateConfVector[handle->stateConfVectorPosition]) {
  132. case Powerwindow_main_region_Normal_operation_r1_Driver_neutral_r1_Passenger_operation : {
  133. powerwindow_react_main_region_Normal_operation_r1_Driver_neutral_r1_Passenger_operation(handle);
  134. break;
  135. }
  136. case Powerwindow_main_region_Normal_operation_r1_Driver_neutral_r1_Passenger_down : {
  137. powerwindow_react_main_region_Normal_operation_r1_Driver_neutral_r1_Passenger_down(handle);
  138. break;
  139. }
  140. case Powerwindow_main_region_Normal_operation_r1_Driver_down : {
  141. powerwindow_react_main_region_Normal_operation_r1_Driver_down(handle);
  142. break;
  143. }
  144. case Powerwindow_main_region_Normal_operation_r1_Driver_up : {
  145. powerwindow_react_main_region_Normal_operation_r1_Driver_up(handle);
  146. break;
  147. }
  148. case Powerwindow_main_region_Normal_operation_r1_Passenger_up : {
  149. powerwindow_react_main_region_Normal_operation_r1_Passenger_up(handle);
  150. break;
  151. }
  152. case Powerwindow_main_region_Emergency_operation : {
  153. powerwindow_react_main_region_Emergency_operation(handle);
  154. break;
  155. }
  156. default:
  157. break;
  158. }
  159. }
  160. powerwindow_clearInEvents(handle);
  161. }
  162. void powerwindow_raiseTimeEvent(const Powerwindow* handle, sc_eventid evid) {
  163. if ( ((sc_intptr_t)evid) >= ((sc_intptr_t)&(handle->timeEvents))
  164. && ((sc_intptr_t)evid) < ((sc_intptr_t)&(handle->timeEvents)) + sizeof(PowerwindowTimeEvents)) {
  165. *(sc_boolean*)evid = bool_true;
  166. }
  167. }
  168. sc_boolean powerwindow_isStateActive(const Powerwindow* handle, PowerwindowStates state) {
  169. sc_boolean result = bool_false;
  170. switch (state) {
  171. case Powerwindow_main_region_Normal_operation :
  172. result = (sc_boolean) (handle->stateConfVector[0] >= Powerwindow_main_region_Normal_operation
  173. && handle->stateConfVector[0] <= Powerwindow_main_region_Normal_operation_r1_Passenger_up);
  174. break;
  175. case Powerwindow_main_region_Normal_operation_r1_Driver_neutral :
  176. result = (sc_boolean) (handle->stateConfVector[0] >= Powerwindow_main_region_Normal_operation_r1_Driver_neutral
  177. && handle->stateConfVector[0] <= Powerwindow_main_region_Normal_operation_r1_Driver_neutral_r1_Passenger_down);
  178. break;
  179. case Powerwindow_main_region_Normal_operation_r1_Driver_neutral_r1_Passenger_operation :
  180. result = (sc_boolean) (handle->stateConfVector[0] == Powerwindow_main_region_Normal_operation_r1_Driver_neutral_r1_Passenger_operation
  181. );
  182. break;
  183. case Powerwindow_main_region_Normal_operation_r1_Driver_neutral_r1_Passenger_down :
  184. result = (sc_boolean) (handle->stateConfVector[0] == Powerwindow_main_region_Normal_operation_r1_Driver_neutral_r1_Passenger_down
  185. );
  186. break;
  187. case Powerwindow_main_region_Normal_operation_r1_Driver_down :
  188. result = (sc_boolean) (handle->stateConfVector[0] == Powerwindow_main_region_Normal_operation_r1_Driver_down
  189. );
  190. break;
  191. case Powerwindow_main_region_Normal_operation_r1_Driver_up :
  192. result = (sc_boolean) (handle->stateConfVector[0] == Powerwindow_main_region_Normal_operation_r1_Driver_up
  193. );
  194. break;
  195. case Powerwindow_main_region_Normal_operation_r1_Passenger_up :
  196. result = (sc_boolean) (handle->stateConfVector[0] == Powerwindow_main_region_Normal_operation_r1_Passenger_up
  197. );
  198. break;
  199. case Powerwindow_main_region_Emergency_operation :
  200. result = (sc_boolean) (handle->stateConfVector[0] == Powerwindow_main_region_Emergency_operation
  201. );
  202. break;
  203. default:
  204. result = bool_false;
  205. break;
  206. }
  207. return result;
  208. }
  209. sc_boolean powerwindowIfaceOutput_get_up(const Powerwindow* handle) {
  210. return handle->ifaceOutput.up;
  211. }
  212. sc_boolean powerwindowIfaceOutput_get_down(const Powerwindow* handle) {
  213. return handle->ifaceOutput.down;
  214. }
  215. void powerwindowIfaceInput_raise_obj_detected(Powerwindow* handle) {
  216. handle->ifaceInput.obj_detected_raised = bool_true;
  217. }
  218. void powerwindowIfaceInput_raise_passenger_up(Powerwindow* handle) {
  219. handle->ifaceInput.passenger_up_raised = bool_true;
  220. }
  221. void powerwindowIfaceInput_raise_passenger_down(Powerwindow* handle) {
  222. handle->ifaceInput.passenger_down_raised = bool_true;
  223. }
  224. void powerwindowIfaceInput_raise_driver_up(Powerwindow* handle) {
  225. handle->ifaceInput.driver_up_raised = bool_true;
  226. }
  227. void powerwindowIfaceInput_raise_driver_down(Powerwindow* handle) {
  228. handle->ifaceInput.driver_down_raised = bool_true;
  229. }
  230. void powerwindowIfaceInput_raise_stop(Powerwindow* handle) {
  231. handle->ifaceInput.stop_raised = bool_true;
  232. }
  233. /* implementations of all internal functions */
  234. static sc_boolean powerwindow_check_main_region_Normal_operation_tr0_tr0(const Powerwindow* handle) {
  235. return handle->ifaceInput.obj_detected_raised;
  236. }
  237. static sc_boolean powerwindow_check_main_region_Normal_operation_r1_Driver_neutral_tr0_tr0(const Powerwindow* handle) {
  238. return handle->ifaceInput.driver_down_raised;
  239. }
  240. static sc_boolean powerwindow_check_main_region_Normal_operation_r1_Driver_neutral_tr1_tr1(const Powerwindow* handle) {
  241. return handle->ifaceInput.driver_up_raised;
  242. }
  243. static sc_boolean powerwindow_check_main_region_Normal_operation_r1_Driver_neutral_r1_Passenger_operation_tr0_tr0(const Powerwindow* handle) {
  244. return handle->ifaceInput.passenger_down_raised;
  245. }
  246. static sc_boolean powerwindow_check_main_region_Normal_operation_r1_Driver_neutral_r1_Passenger_operation_tr1_tr1(const Powerwindow* handle) {
  247. return handle->ifaceInput.passenger_up_raised;
  248. }
  249. static sc_boolean powerwindow_check_main_region_Normal_operation_r1_Driver_neutral_r1_Passenger_down_tr0_tr0(const Powerwindow* handle) {
  250. return handle->ifaceInput.stop_raised;
  251. }
  252. static sc_boolean powerwindow_check_main_region_Normal_operation_r1_Driver_down_tr0_tr0(const Powerwindow* handle) {
  253. return handle->ifaceInput.stop_raised;
  254. }
  255. static sc_boolean powerwindow_check_main_region_Normal_operation_r1_Driver_up_tr0_tr0(const Powerwindow* handle) {
  256. return handle->ifaceInput.stop_raised;
  257. }
  258. static sc_boolean powerwindow_check_main_region_Normal_operation_r1_Passenger_up_tr0_tr0(const Powerwindow* handle) {
  259. return handle->ifaceInput.stop_raised;
  260. }
  261. static sc_boolean powerwindow_check_main_region_Emergency_operation_tr0_tr0(const Powerwindow* handle) {
  262. return handle->timeEvents.powerwindow_main_region_Emergency_operation_tev0_raised;
  263. }
  264. static void powerwindow_effect_main_region_Normal_operation_tr0(Powerwindow* handle) {
  265. powerwindow_exseq_main_region_Normal_operation(handle);
  266. handle->ifaceOutput.down = bool_true;
  267. handle->ifaceOutput.up = bool_false;
  268. powerwindow_enseq_main_region_Emergency_operation_default(handle);
  269. }
  270. static void powerwindow_effect_main_region_Normal_operation_r1_Driver_neutral_tr0(Powerwindow* handle) {
  271. powerwindow_exseq_main_region_Normal_operation_r1_Driver_neutral(handle);
  272. handle->ifaceOutput.down = bool_true;
  273. handle->ifaceOutput.up = bool_false;
  274. powerwindow_enseq_main_region_Normal_operation_r1_Driver_down_default(handle);
  275. }
  276. static void powerwindow_effect_main_region_Normal_operation_r1_Driver_neutral_tr1(Powerwindow* handle) {
  277. powerwindow_exseq_main_region_Normal_operation_r1_Driver_neutral(handle);
  278. handle->ifaceOutput.up = bool_true;
  279. handle->ifaceOutput.down = bool_false;
  280. powerwindow_enseq_main_region_Normal_operation_r1_Driver_up_default(handle);
  281. }
  282. static void powerwindow_effect_main_region_Normal_operation_r1_Driver_neutral_r1_Passenger_operation_tr0(Powerwindow* handle) {
  283. powerwindow_exseq_main_region_Normal_operation_r1_Driver_neutral_r1_Passenger_operation(handle);
  284. handle->ifaceOutput.down = bool_true;
  285. handle->ifaceOutput.up = bool_false;
  286. powerwindow_enseq_main_region_Normal_operation_r1_Driver_neutral_r1_Passenger_down_default(handle);
  287. }
  288. static void powerwindow_effect_main_region_Normal_operation_r1_Driver_neutral_r1_Passenger_operation_tr1(Powerwindow* handle) {
  289. powerwindow_exseq_main_region_Normal_operation_r1_Driver_neutral(handle);
  290. handle->ifaceOutput.up = bool_true;
  291. handle->ifaceOutput.down = bool_false;
  292. powerwindow_enseq_main_region_Normal_operation_r1_Passenger_up_default(handle);
  293. }
  294. static void powerwindow_effect_main_region_Normal_operation_r1_Driver_neutral_r1_Passenger_down_tr0(Powerwindow* handle) {
  295. powerwindow_exseq_main_region_Normal_operation_r1_Driver_neutral_r1_Passenger_down(handle);
  296. handle->ifaceOutput.down = bool_true;
  297. handle->ifaceOutput.up = bool_false;
  298. powerwindow_enseq_main_region_Normal_operation_r1_Driver_neutral_r1_Passenger_operation_default(handle);
  299. }
  300. static void powerwindow_effect_main_region_Normal_operation_r1_Driver_down_tr0(Powerwindow* handle) {
  301. powerwindow_exseq_main_region_Normal_operation_r1_Driver_down(handle);
  302. handle->ifaceOutput.down = bool_false;
  303. handle->ifaceOutput.up = bool_false;
  304. powerwindow_enseq_main_region_Normal_operation_r1_Driver_neutral_default(handle);
  305. }
  306. static void powerwindow_effect_main_region_Normal_operation_r1_Driver_up_tr0(Powerwindow* handle) {
  307. powerwindow_exseq_main_region_Normal_operation_r1_Driver_up(handle);
  308. handle->ifaceOutput.up = bool_false;
  309. handle->ifaceOutput.down = bool_false;
  310. powerwindow_enseq_main_region_Normal_operation_r1_Driver_neutral_default(handle);
  311. }
  312. static void powerwindow_effect_main_region_Normal_operation_r1_Passenger_up_tr0(Powerwindow* handle) {
  313. powerwindow_exseq_main_region_Normal_operation_r1_Passenger_up(handle);
  314. handle->ifaceOutput.up = bool_false;
  315. handle->ifaceOutput.down = bool_false;
  316. powerwindow_enseq_main_region_Normal_operation_r1_Driver_neutral_r1_Passenger_operation_default(handle);
  317. }
  318. static void powerwindow_effect_main_region_Emergency_operation_tr0(Powerwindow* handle) {
  319. powerwindow_exseq_main_region_Emergency_operation(handle);
  320. handle->ifaceOutput.down = bool_false;
  321. handle->ifaceOutput.up = bool_false;
  322. powerwindow_enseq_main_region_Normal_operation_default(handle);
  323. }
  324. /* Entry action for state 'Emergency_operation'. */
  325. static void powerwindow_enact_main_region_Emergency_operation(Powerwindow* handle) {
  326. /* Entry action for state 'Emergency_operation'. */
  327. powerwindow_setTimer(handle, (sc_eventid) &(handle->timeEvents.powerwindow_main_region_Emergency_operation_tev0_raised) , 1 * 1000, bool_false);
  328. }
  329. /* Exit action for state 'Emergency_operation'. */
  330. static void powerwindow_exact_main_region_Emergency_operation(Powerwindow* handle) {
  331. /* Exit action for state 'Emergency_operation'. */
  332. powerwindow_unsetTimer(handle, (sc_eventid) &(handle->timeEvents.powerwindow_main_region_Emergency_operation_tev0_raised) );
  333. }
  334. /* 'default' enter sequence for state Normal_operation */
  335. static void powerwindow_enseq_main_region_Normal_operation_default(Powerwindow* handle) {
  336. /* 'default' enter sequence for state Normal_operation */
  337. powerwindow_enseq_main_region_Normal_operation_r1_default(handle);
  338. }
  339. /* 'default' enter sequence for state Driver_neutral */
  340. static void powerwindow_enseq_main_region_Normal_operation_r1_Driver_neutral_default(Powerwindow* handle) {
  341. /* 'default' enter sequence for state Driver_neutral */
  342. powerwindow_enseq_main_region_Normal_operation_r1_Driver_neutral_r1_default(handle);
  343. }
  344. /* 'default' enter sequence for state Passenger_operation */
  345. static void powerwindow_enseq_main_region_Normal_operation_r1_Driver_neutral_r1_Passenger_operation_default(Powerwindow* handle) {
  346. /* 'default' enter sequence for state Passenger_operation */
  347. handle->stateConfVector[0] = Powerwindow_main_region_Normal_operation_r1_Driver_neutral_r1_Passenger_operation;
  348. handle->stateConfVectorPosition = 0;
  349. }
  350. /* 'default' enter sequence for state Passenger_down */
  351. static void powerwindow_enseq_main_region_Normal_operation_r1_Driver_neutral_r1_Passenger_down_default(Powerwindow* handle) {
  352. /* 'default' enter sequence for state Passenger_down */
  353. handle->stateConfVector[0] = Powerwindow_main_region_Normal_operation_r1_Driver_neutral_r1_Passenger_down;
  354. handle->stateConfVectorPosition = 0;
  355. }
  356. /* 'default' enter sequence for state Driver_down */
  357. static void powerwindow_enseq_main_region_Normal_operation_r1_Driver_down_default(Powerwindow* handle) {
  358. /* 'default' enter sequence for state Driver_down */
  359. handle->stateConfVector[0] = Powerwindow_main_region_Normal_operation_r1_Driver_down;
  360. handle->stateConfVectorPosition = 0;
  361. }
  362. /* 'default' enter sequence for state Driver_up */
  363. static void powerwindow_enseq_main_region_Normal_operation_r1_Driver_up_default(Powerwindow* handle) {
  364. /* 'default' enter sequence for state Driver_up */
  365. handle->stateConfVector[0] = Powerwindow_main_region_Normal_operation_r1_Driver_up;
  366. handle->stateConfVectorPosition = 0;
  367. }
  368. /* 'default' enter sequence for state Passenger_up */
  369. static void powerwindow_enseq_main_region_Normal_operation_r1_Passenger_up_default(Powerwindow* handle) {
  370. /* 'default' enter sequence for state Passenger_up */
  371. handle->stateConfVector[0] = Powerwindow_main_region_Normal_operation_r1_Passenger_up;
  372. handle->stateConfVectorPosition = 0;
  373. }
  374. /* 'default' enter sequence for state Emergency_operation */
  375. static void powerwindow_enseq_main_region_Emergency_operation_default(Powerwindow* handle) {
  376. /* 'default' enter sequence for state Emergency_operation */
  377. powerwindow_enact_main_region_Emergency_operation(handle);
  378. handle->stateConfVector[0] = Powerwindow_main_region_Emergency_operation;
  379. handle->stateConfVectorPosition = 0;
  380. }
  381. /* 'default' enter sequence for region main region */
  382. static void powerwindow_enseq_main_region_default(Powerwindow* handle) {
  383. /* 'default' enter sequence for region main region */
  384. powerwindow_react_main_region__entry_Default(handle);
  385. }
  386. /* 'default' enter sequence for region r1 */
  387. static void powerwindow_enseq_main_region_Normal_operation_r1_default(Powerwindow* handle) {
  388. /* 'default' enter sequence for region r1 */
  389. powerwindow_react_main_region_Normal_operation_r1__entry_Default(handle);
  390. }
  391. /* 'default' enter sequence for region r1 */
  392. static void powerwindow_enseq_main_region_Normal_operation_r1_Driver_neutral_r1_default(Powerwindow* handle) {
  393. /* 'default' enter sequence for region r1 */
  394. powerwindow_react_main_region_Normal_operation_r1_Driver_neutral_r1__entry_Default(handle);
  395. }
  396. /* Default exit sequence for state Normal_operation */
  397. static void powerwindow_exseq_main_region_Normal_operation(Powerwindow* handle) {
  398. /* Default exit sequence for state Normal_operation */
  399. powerwindow_exseq_main_region_Normal_operation_r1(handle);
  400. }
  401. /* Default exit sequence for state Driver_neutral */
  402. static void powerwindow_exseq_main_region_Normal_operation_r1_Driver_neutral(Powerwindow* handle) {
  403. /* Default exit sequence for state Driver_neutral */
  404. powerwindow_exseq_main_region_Normal_operation_r1_Driver_neutral_r1(handle);
  405. }
  406. /* Default exit sequence for state Passenger_operation */
  407. static void powerwindow_exseq_main_region_Normal_operation_r1_Driver_neutral_r1_Passenger_operation(Powerwindow* handle) {
  408. /* Default exit sequence for state Passenger_operation */
  409. handle->stateConfVector[0] = Powerwindow_last_state;
  410. handle->stateConfVectorPosition = 0;
  411. }
  412. /* Default exit sequence for state Passenger_down */
  413. static void powerwindow_exseq_main_region_Normal_operation_r1_Driver_neutral_r1_Passenger_down(Powerwindow* handle) {
  414. /* Default exit sequence for state Passenger_down */
  415. handle->stateConfVector[0] = Powerwindow_last_state;
  416. handle->stateConfVectorPosition = 0;
  417. }
  418. /* Default exit sequence for state Driver_down */
  419. static void powerwindow_exseq_main_region_Normal_operation_r1_Driver_down(Powerwindow* handle) {
  420. /* Default exit sequence for state Driver_down */
  421. handle->stateConfVector[0] = Powerwindow_last_state;
  422. handle->stateConfVectorPosition = 0;
  423. }
  424. /* Default exit sequence for state Driver_up */
  425. static void powerwindow_exseq_main_region_Normal_operation_r1_Driver_up(Powerwindow* handle) {
  426. /* Default exit sequence for state Driver_up */
  427. handle->stateConfVector[0] = Powerwindow_last_state;
  428. handle->stateConfVectorPosition = 0;
  429. }
  430. /* Default exit sequence for state Passenger_up */
  431. static void powerwindow_exseq_main_region_Normal_operation_r1_Passenger_up(Powerwindow* handle) {
  432. /* Default exit sequence for state Passenger_up */
  433. handle->stateConfVector[0] = Powerwindow_last_state;
  434. handle->stateConfVectorPosition = 0;
  435. }
  436. /* Default exit sequence for state Emergency_operation */
  437. static void powerwindow_exseq_main_region_Emergency_operation(Powerwindow* handle) {
  438. /* Default exit sequence for state Emergency_operation */
  439. handle->stateConfVector[0] = Powerwindow_last_state;
  440. handle->stateConfVectorPosition = 0;
  441. powerwindow_exact_main_region_Emergency_operation(handle);
  442. }
  443. /* Default exit sequence for region main region */
  444. static void powerwindow_exseq_main_region(Powerwindow* handle) {
  445. /* Default exit sequence for region main region */
  446. /* Handle exit of all possible states (of powerwindow.main_region) at position 0... */
  447. switch(handle->stateConfVector[ 0 ]) {
  448. case Powerwindow_main_region_Normal_operation_r1_Driver_neutral_r1_Passenger_operation : {
  449. powerwindow_exseq_main_region_Normal_operation_r1_Driver_neutral_r1_Passenger_operation(handle);
  450. break;
  451. }
  452. case Powerwindow_main_region_Normal_operation_r1_Driver_neutral_r1_Passenger_down : {
  453. powerwindow_exseq_main_region_Normal_operation_r1_Driver_neutral_r1_Passenger_down(handle);
  454. break;
  455. }
  456. case Powerwindow_main_region_Normal_operation_r1_Driver_down : {
  457. powerwindow_exseq_main_region_Normal_operation_r1_Driver_down(handle);
  458. break;
  459. }
  460. case Powerwindow_main_region_Normal_operation_r1_Driver_up : {
  461. powerwindow_exseq_main_region_Normal_operation_r1_Driver_up(handle);
  462. break;
  463. }
  464. case Powerwindow_main_region_Normal_operation_r1_Passenger_up : {
  465. powerwindow_exseq_main_region_Normal_operation_r1_Passenger_up(handle);
  466. break;
  467. }
  468. case Powerwindow_main_region_Emergency_operation : {
  469. powerwindow_exseq_main_region_Emergency_operation(handle);
  470. break;
  471. }
  472. default: break;
  473. }
  474. }
  475. /* Default exit sequence for region r1 */
  476. static void powerwindow_exseq_main_region_Normal_operation_r1(Powerwindow* handle) {
  477. /* Default exit sequence for region r1 */
  478. /* Handle exit of all possible states (of powerwindow.main_region.Normal_operation.r1) at position 0... */
  479. switch(handle->stateConfVector[ 0 ]) {
  480. case Powerwindow_main_region_Normal_operation_r1_Driver_neutral_r1_Passenger_operation : {
  481. powerwindow_exseq_main_region_Normal_operation_r1_Driver_neutral_r1_Passenger_operation(handle);
  482. break;
  483. }
  484. case Powerwindow_main_region_Normal_operation_r1_Driver_neutral_r1_Passenger_down : {
  485. powerwindow_exseq_main_region_Normal_operation_r1_Driver_neutral_r1_Passenger_down(handle);
  486. break;
  487. }
  488. case Powerwindow_main_region_Normal_operation_r1_Driver_down : {
  489. powerwindow_exseq_main_region_Normal_operation_r1_Driver_down(handle);
  490. break;
  491. }
  492. case Powerwindow_main_region_Normal_operation_r1_Driver_up : {
  493. powerwindow_exseq_main_region_Normal_operation_r1_Driver_up(handle);
  494. break;
  495. }
  496. case Powerwindow_main_region_Normal_operation_r1_Passenger_up : {
  497. powerwindow_exseq_main_region_Normal_operation_r1_Passenger_up(handle);
  498. break;
  499. }
  500. default: break;
  501. }
  502. }
  503. /* Default exit sequence for region r1 */
  504. static void powerwindow_exseq_main_region_Normal_operation_r1_Driver_neutral_r1(Powerwindow* handle) {
  505. /* Default exit sequence for region r1 */
  506. /* Handle exit of all possible states (of powerwindow.main_region.Normal_operation.r1.Driver_neutral.r1) at position 0... */
  507. switch(handle->stateConfVector[ 0 ]) {
  508. case Powerwindow_main_region_Normal_operation_r1_Driver_neutral_r1_Passenger_operation : {
  509. powerwindow_exseq_main_region_Normal_operation_r1_Driver_neutral_r1_Passenger_operation(handle);
  510. break;
  511. }
  512. case Powerwindow_main_region_Normal_operation_r1_Driver_neutral_r1_Passenger_down : {
  513. powerwindow_exseq_main_region_Normal_operation_r1_Driver_neutral_r1_Passenger_down(handle);
  514. break;
  515. }
  516. default: break;
  517. }
  518. }
  519. /* The reactions of state Passenger_operation. */
  520. static void powerwindow_react_main_region_Normal_operation_r1_Driver_neutral_r1_Passenger_operation(Powerwindow* handle) {
  521. /* The reactions of state Passenger_operation. */
  522. if (powerwindow_check_main_region_Normal_operation_tr0_tr0(handle)) {
  523. powerwindow_effect_main_region_Normal_operation_tr0(handle);
  524. } else {
  525. if (powerwindow_check_main_region_Normal_operation_r1_Driver_neutral_tr0_tr0(handle)) {
  526. powerwindow_effect_main_region_Normal_operation_r1_Driver_neutral_tr0(handle);
  527. } else {
  528. if (powerwindow_check_main_region_Normal_operation_r1_Driver_neutral_tr1_tr1(handle)) {
  529. powerwindow_effect_main_region_Normal_operation_r1_Driver_neutral_tr1(handle);
  530. } else {
  531. if (powerwindow_check_main_region_Normal_operation_r1_Driver_neutral_r1_Passenger_operation_tr0_tr0(handle)) {
  532. powerwindow_effect_main_region_Normal_operation_r1_Driver_neutral_r1_Passenger_operation_tr0(handle);
  533. } else {
  534. if (powerwindow_check_main_region_Normal_operation_r1_Driver_neutral_r1_Passenger_operation_tr1_tr1(handle)) {
  535. powerwindow_effect_main_region_Normal_operation_r1_Driver_neutral_r1_Passenger_operation_tr1(handle);
  536. }
  537. }
  538. }
  539. }
  540. }
  541. }
  542. /* The reactions of state Passenger_down. */
  543. static void powerwindow_react_main_region_Normal_operation_r1_Driver_neutral_r1_Passenger_down(Powerwindow* handle) {
  544. /* The reactions of state Passenger_down. */
  545. if (powerwindow_check_main_region_Normal_operation_tr0_tr0(handle)) {
  546. powerwindow_effect_main_region_Normal_operation_tr0(handle);
  547. } else {
  548. if (powerwindow_check_main_region_Normal_operation_r1_Driver_neutral_tr0_tr0(handle)) {
  549. powerwindow_effect_main_region_Normal_operation_r1_Driver_neutral_tr0(handle);
  550. } else {
  551. if (powerwindow_check_main_region_Normal_operation_r1_Driver_neutral_tr1_tr1(handle)) {
  552. powerwindow_effect_main_region_Normal_operation_r1_Driver_neutral_tr1(handle);
  553. } else {
  554. if (powerwindow_check_main_region_Normal_operation_r1_Driver_neutral_r1_Passenger_down_tr0_tr0(handle)) {
  555. powerwindow_effect_main_region_Normal_operation_r1_Driver_neutral_r1_Passenger_down_tr0(handle);
  556. }
  557. }
  558. }
  559. }
  560. }
  561. /* The reactions of state Driver_down. */
  562. static void powerwindow_react_main_region_Normal_operation_r1_Driver_down(Powerwindow* handle) {
  563. /* The reactions of state Driver_down. */
  564. if (powerwindow_check_main_region_Normal_operation_tr0_tr0(handle)) {
  565. powerwindow_effect_main_region_Normal_operation_tr0(handle);
  566. } else {
  567. if (powerwindow_check_main_region_Normal_operation_r1_Driver_down_tr0_tr0(handle)) {
  568. powerwindow_effect_main_region_Normal_operation_r1_Driver_down_tr0(handle);
  569. }
  570. }
  571. }
  572. /* The reactions of state Driver_up. */
  573. static void powerwindow_react_main_region_Normal_operation_r1_Driver_up(Powerwindow* handle) {
  574. /* The reactions of state Driver_up. */
  575. if (powerwindow_check_main_region_Normal_operation_tr0_tr0(handle)) {
  576. powerwindow_effect_main_region_Normal_operation_tr0(handle);
  577. } else {
  578. if (powerwindow_check_main_region_Normal_operation_r1_Driver_up_tr0_tr0(handle)) {
  579. powerwindow_effect_main_region_Normal_operation_r1_Driver_up_tr0(handle);
  580. }
  581. }
  582. }
  583. /* The reactions of state Passenger_up. */
  584. static void powerwindow_react_main_region_Normal_operation_r1_Passenger_up(Powerwindow* handle) {
  585. /* The reactions of state Passenger_up. */
  586. if (powerwindow_check_main_region_Normal_operation_tr0_tr0(handle)) {
  587. powerwindow_effect_main_region_Normal_operation_tr0(handle);
  588. } else {
  589. if (powerwindow_check_main_region_Normal_operation_r1_Passenger_up_tr0_tr0(handle)) {
  590. powerwindow_effect_main_region_Normal_operation_r1_Passenger_up_tr0(handle);
  591. }
  592. }
  593. }
  594. /* The reactions of state Emergency_operation. */
  595. static void powerwindow_react_main_region_Emergency_operation(Powerwindow* handle) {
  596. /* The reactions of state Emergency_operation. */
  597. if (powerwindow_check_main_region_Emergency_operation_tr0_tr0(handle)) {
  598. powerwindow_effect_main_region_Emergency_operation_tr0(handle);
  599. }
  600. }
  601. /* Default react sequence for initial entry */
  602. static void powerwindow_react_main_region__entry_Default(Powerwindow* handle) {
  603. /* Default react sequence for initial entry */
  604. powerwindow_enseq_main_region_Normal_operation_default(handle);
  605. }
  606. /* Default react sequence for initial entry */
  607. static void powerwindow_react_main_region_Normal_operation_r1__entry_Default(Powerwindow* handle) {
  608. /* Default react sequence for initial entry */
  609. powerwindow_enseq_main_region_Normal_operation_r1_Driver_neutral_default(handle);
  610. }
  611. /* Default react sequence for initial entry */
  612. static void powerwindow_react_main_region_Normal_operation_r1_Driver_neutral_r1__entry_Default(Powerwindow* handle) {
  613. /* Default react sequence for initial entry */
  614. powerwindow_enseq_main_region_Normal_operation_r1_Driver_neutral_r1_Passenger_operation_default(handle);
  615. }