HistoryWithoutInitialStep.cpp 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571
  1. #include "HistoryWithoutInitialStep.h"
  2. #include <string.h>
  3. /*! \file Implementation of the state machine 'HistoryWithoutInitialStep'
  4. */
  5. HistoryWithoutInitialStep::HistoryWithoutInitialStep()
  6. {
  7. for (int i = 0; i < maxHistoryStates; ++i)
  8. historyVector[i] = HistoryWithoutInitialStep_last_state;
  9. stateConfVectorPosition = 0;
  10. }
  11. HistoryWithoutInitialStep::~HistoryWithoutInitialStep()
  12. {
  13. }
  14. void HistoryWithoutInitialStep::init()
  15. {
  16. for (int i = 0; i < maxOrthogonalStates; ++i)
  17. stateConfVector[i] = HistoryWithoutInitialStep_last_state;
  18. for (int i = 0; i < maxHistoryStates; ++i)
  19. historyVector[i] = HistoryWithoutInitialStep_last_state;
  20. stateConfVectorPosition = 0;
  21. clearInEvents();
  22. clearOutEvents();
  23. }
  24. void HistoryWithoutInitialStep::enter()
  25. {
  26. /* Default enter sequence for statechart HistoryWithoutInitialStep */
  27. enseq_main_region_default();
  28. }
  29. void HistoryWithoutInitialStep::exit()
  30. {
  31. /* Default exit sequence for statechart HistoryWithoutInitialStep */
  32. exseq_main_region();
  33. }
  34. sc_boolean HistoryWithoutInitialStep::isActive() const
  35. {
  36. return stateConfVector[0] != HistoryWithoutInitialStep_last_state;
  37. }
  38. /*
  39. * Always returns 'false' since this state machine can never become final.
  40. */
  41. sc_boolean HistoryWithoutInitialStep::isFinal() const
  42. {
  43. return false;}
  44. void HistoryWithoutInitialStep::runCycle()
  45. {
  46. clearOutEvents();
  47. for (stateConfVectorPosition = 0;
  48. stateConfVectorPosition < maxOrthogonalStates;
  49. stateConfVectorPosition++)
  50. {
  51. switch (stateConfVector[stateConfVectorPosition])
  52. {
  53. case main_region_A :
  54. {
  55. react_main_region_A();
  56. break;
  57. }
  58. case main_region_B_r1_C :
  59. {
  60. react_main_region_B_r1_C();
  61. break;
  62. }
  63. case main_region_B_r1_D :
  64. {
  65. react_main_region_B_r1_D();
  66. break;
  67. }
  68. case main_region_B_r1_E__region0_F :
  69. {
  70. react_main_region_B_r1_E__region0_F();
  71. break;
  72. }
  73. default:
  74. break;
  75. }
  76. }
  77. clearInEvents();
  78. }
  79. void HistoryWithoutInitialStep::clearInEvents()
  80. {
  81. iface.toA_raised = false;
  82. iface.toB_raised = false;
  83. iface.toHistory_raised = false;
  84. iface.next_raised = false;
  85. }
  86. void HistoryWithoutInitialStep::clearOutEvents()
  87. {
  88. }
  89. sc_boolean HistoryWithoutInitialStep::isStateActive(HistoryWithoutInitialStepStates state) const
  90. {
  91. switch (state)
  92. {
  93. case main_region_A :
  94. return (sc_boolean) (stateConfVector[0] == main_region_A
  95. );
  96. case main_region_B :
  97. return (sc_boolean) (stateConfVector[0] >= main_region_B
  98. && stateConfVector[0] <= main_region_B_r1_E__region0_F);
  99. case main_region_B_r1_C :
  100. return (sc_boolean) (stateConfVector[0] == main_region_B_r1_C
  101. );
  102. case main_region_B_r1_D :
  103. return (sc_boolean) (stateConfVector[0] == main_region_B_r1_D
  104. );
  105. case main_region_B_r1_E :
  106. return (sc_boolean) (stateConfVector[0] >= main_region_B_r1_E
  107. && stateConfVector[0] <= main_region_B_r1_E__region0_F);
  108. case main_region_B_r1_E__region0_F :
  109. return (sc_boolean) (stateConfVector[0] == main_region_B_r1_E__region0_F
  110. );
  111. default: return false;
  112. }
  113. }
  114. HistoryWithoutInitialStep::DefaultSCI* HistoryWithoutInitialStep::getDefaultSCI()
  115. {
  116. return &iface;
  117. }
  118. void HistoryWithoutInitialStep::DefaultSCI::raise_toA()
  119. {
  120. toA_raised = true;
  121. }
  122. void HistoryWithoutInitialStep::raise_toA()
  123. {
  124. iface.raise_toA();
  125. }
  126. void HistoryWithoutInitialStep::DefaultSCI::raise_toB()
  127. {
  128. toB_raised = true;
  129. }
  130. void HistoryWithoutInitialStep::raise_toB()
  131. {
  132. iface.raise_toB();
  133. }
  134. void HistoryWithoutInitialStep::DefaultSCI::raise_toHistory()
  135. {
  136. toHistory_raised = true;
  137. }
  138. void HistoryWithoutInitialStep::raise_toHistory()
  139. {
  140. iface.raise_toHistory();
  141. }
  142. void HistoryWithoutInitialStep::DefaultSCI::raise_next()
  143. {
  144. next_raised = true;
  145. }
  146. void HistoryWithoutInitialStep::raise_next()
  147. {
  148. iface.raise_next();
  149. }
  150. // implementations of all internal functions
  151. sc_boolean HistoryWithoutInitialStep::check_main_region_A_tr0_tr0()
  152. {
  153. return iface.toB_raised;
  154. }
  155. sc_boolean HistoryWithoutInitialStep::check_main_region_A_tr1_tr1()
  156. {
  157. return iface.toHistory_raised;
  158. }
  159. sc_boolean HistoryWithoutInitialStep::check_main_region_B_tr0_tr0()
  160. {
  161. return iface.toA_raised;
  162. }
  163. sc_boolean HistoryWithoutInitialStep::check_main_region_B_r1_C_tr0_tr0()
  164. {
  165. return iface.next_raised;
  166. }
  167. sc_boolean HistoryWithoutInitialStep::check_main_region_B_r1_D_tr0_tr0()
  168. {
  169. return iface.next_raised;
  170. }
  171. sc_boolean HistoryWithoutInitialStep::check_main_region_B_r1_E_tr0_tr0()
  172. {
  173. return iface.next_raised;
  174. }
  175. void HistoryWithoutInitialStep::effect_main_region_A_tr0()
  176. {
  177. exseq_main_region_A();
  178. enseq_main_region_B_default();
  179. }
  180. void HistoryWithoutInitialStep::effect_main_region_A_tr1()
  181. {
  182. exseq_main_region_A();
  183. react_main_region_B_r1_he();
  184. }
  185. void HistoryWithoutInitialStep::effect_main_region_B_tr0()
  186. {
  187. exseq_main_region_B();
  188. enseq_main_region_A_default();
  189. }
  190. void HistoryWithoutInitialStep::effect_main_region_B_r1_C_tr0()
  191. {
  192. exseq_main_region_B_r1_C();
  193. enseq_main_region_B_r1_D_default();
  194. }
  195. void HistoryWithoutInitialStep::effect_main_region_B_r1_D_tr0()
  196. {
  197. exseq_main_region_B_r1_D();
  198. enseq_main_region_B_r1_E_default();
  199. }
  200. void HistoryWithoutInitialStep::effect_main_region_B_r1_E_tr0()
  201. {
  202. exseq_main_region_B_r1_E();
  203. enseq_main_region_B_r1_C_default();
  204. }
  205. /* 'default' enter sequence for state A */
  206. void HistoryWithoutInitialStep::enseq_main_region_A_default()
  207. {
  208. /* 'default' enter sequence for state A */
  209. stateConfVector[0] = main_region_A;
  210. stateConfVectorPosition = 0;
  211. }
  212. /* 'default' enter sequence for state B */
  213. void HistoryWithoutInitialStep::enseq_main_region_B_default()
  214. {
  215. /* 'default' enter sequence for state B */
  216. enseq_main_region_B_r1_default();
  217. }
  218. /* 'default' enter sequence for state C */
  219. void HistoryWithoutInitialStep::enseq_main_region_B_r1_C_default()
  220. {
  221. /* 'default' enter sequence for state C */
  222. stateConfVector[0] = main_region_B_r1_C;
  223. stateConfVectorPosition = 0;
  224. historyVector[0] = stateConfVector[0];
  225. }
  226. /* 'default' enter sequence for state D */
  227. void HistoryWithoutInitialStep::enseq_main_region_B_r1_D_default()
  228. {
  229. /* 'default' enter sequence for state D */
  230. stateConfVector[0] = main_region_B_r1_D;
  231. stateConfVectorPosition = 0;
  232. historyVector[0] = stateConfVector[0];
  233. }
  234. /* 'default' enter sequence for state E */
  235. void HistoryWithoutInitialStep::enseq_main_region_B_r1_E_default()
  236. {
  237. /* 'default' enter sequence for state E */
  238. enseq_main_region_B_r1_E__region0_default();
  239. historyVector[0] = stateConfVector[0];
  240. }
  241. /* 'default' enter sequence for state F */
  242. void HistoryWithoutInitialStep::enseq_main_region_B_r1_E__region0_F_default()
  243. {
  244. /* 'default' enter sequence for state F */
  245. stateConfVector[0] = main_region_B_r1_E__region0_F;
  246. stateConfVectorPosition = 0;
  247. }
  248. /* 'default' enter sequence for region main region */
  249. void HistoryWithoutInitialStep::enseq_main_region_default()
  250. {
  251. /* 'default' enter sequence for region main region */
  252. react_main_region__entry_Default();
  253. }
  254. /* 'default' enter sequence for region r1 */
  255. void HistoryWithoutInitialStep::enseq_main_region_B_r1_default()
  256. {
  257. /* 'default' enter sequence for region r1 */
  258. react_main_region_B_r1__entry_Default();
  259. }
  260. /* shallow enterSequence with history in child r1 */
  261. void HistoryWithoutInitialStep::shenseq_main_region_B_r1()
  262. {
  263. /* shallow enterSequence with history in child r1 */
  264. /* Handle shallow history entry of r1 */
  265. switch(historyVector[ 0 ])
  266. {
  267. case main_region_B_r1_C :
  268. {
  269. enseq_main_region_B_r1_C_default();
  270. break;
  271. }
  272. case main_region_B_r1_D :
  273. {
  274. enseq_main_region_B_r1_D_default();
  275. break;
  276. }
  277. case main_region_B_r1_E__region0_F :
  278. {
  279. enseq_main_region_B_r1_E_default();
  280. break;
  281. }
  282. default: break;
  283. }
  284. }
  285. /* 'default' enter sequence for region null */
  286. void HistoryWithoutInitialStep::enseq_main_region_B_r1_E__region0_default()
  287. {
  288. /* 'default' enter sequence for region null */
  289. react_main_region_B_r1_E__region0__entry_Default();
  290. }
  291. /* Default exit sequence for state A */
  292. void HistoryWithoutInitialStep::exseq_main_region_A()
  293. {
  294. /* Default exit sequence for state A */
  295. stateConfVector[0] = HistoryWithoutInitialStep_last_state;
  296. stateConfVectorPosition = 0;
  297. }
  298. /* Default exit sequence for state B */
  299. void HistoryWithoutInitialStep::exseq_main_region_B()
  300. {
  301. /* Default exit sequence for state B */
  302. exseq_main_region_B_r1();
  303. }
  304. /* Default exit sequence for state C */
  305. void HistoryWithoutInitialStep::exseq_main_region_B_r1_C()
  306. {
  307. /* Default exit sequence for state C */
  308. stateConfVector[0] = HistoryWithoutInitialStep_last_state;
  309. stateConfVectorPosition = 0;
  310. }
  311. /* Default exit sequence for state D */
  312. void HistoryWithoutInitialStep::exseq_main_region_B_r1_D()
  313. {
  314. /* Default exit sequence for state D */
  315. stateConfVector[0] = HistoryWithoutInitialStep_last_state;
  316. stateConfVectorPosition = 0;
  317. }
  318. /* Default exit sequence for state E */
  319. void HistoryWithoutInitialStep::exseq_main_region_B_r1_E()
  320. {
  321. /* Default exit sequence for state E */
  322. exseq_main_region_B_r1_E__region0();
  323. }
  324. /* Default exit sequence for state F */
  325. void HistoryWithoutInitialStep::exseq_main_region_B_r1_E__region0_F()
  326. {
  327. /* Default exit sequence for state F */
  328. stateConfVector[0] = HistoryWithoutInitialStep_last_state;
  329. stateConfVectorPosition = 0;
  330. }
  331. /* Default exit sequence for region main region */
  332. void HistoryWithoutInitialStep::exseq_main_region()
  333. {
  334. /* Default exit sequence for region main region */
  335. /* Handle exit of all possible states (of HistoryWithoutInitialStep.main_region) at position 0... */
  336. switch(stateConfVector[ 0 ])
  337. {
  338. case main_region_A :
  339. {
  340. exseq_main_region_A();
  341. break;
  342. }
  343. case main_region_B_r1_C :
  344. {
  345. exseq_main_region_B_r1_C();
  346. break;
  347. }
  348. case main_region_B_r1_D :
  349. {
  350. exseq_main_region_B_r1_D();
  351. break;
  352. }
  353. case main_region_B_r1_E__region0_F :
  354. {
  355. exseq_main_region_B_r1_E__region0_F();
  356. break;
  357. }
  358. default: break;
  359. }
  360. }
  361. /* Default exit sequence for region r1 */
  362. void HistoryWithoutInitialStep::exseq_main_region_B_r1()
  363. {
  364. /* Default exit sequence for region r1 */
  365. /* Handle exit of all possible states (of HistoryWithoutInitialStep.main_region.B.r1) at position 0... */
  366. switch(stateConfVector[ 0 ])
  367. {
  368. case main_region_B_r1_C :
  369. {
  370. exseq_main_region_B_r1_C();
  371. break;
  372. }
  373. case main_region_B_r1_D :
  374. {
  375. exseq_main_region_B_r1_D();
  376. break;
  377. }
  378. case main_region_B_r1_E__region0_F :
  379. {
  380. exseq_main_region_B_r1_E__region0_F();
  381. break;
  382. }
  383. default: break;
  384. }
  385. }
  386. /* Default exit sequence for region null */
  387. void HistoryWithoutInitialStep::exseq_main_region_B_r1_E__region0()
  388. {
  389. /* Default exit sequence for region null */
  390. /* Handle exit of all possible states (of HistoryWithoutInitialStep.main_region.B.r1.E._region0) at position 0... */
  391. switch(stateConfVector[ 0 ])
  392. {
  393. case main_region_B_r1_E__region0_F :
  394. {
  395. exseq_main_region_B_r1_E__region0_F();
  396. break;
  397. }
  398. default: break;
  399. }
  400. }
  401. /* The reactions of state A. */
  402. void HistoryWithoutInitialStep::react_main_region_A()
  403. {
  404. /* The reactions of state A. */
  405. if (check_main_region_A_tr0_tr0())
  406. {
  407. effect_main_region_A_tr0();
  408. } else
  409. {
  410. if (check_main_region_A_tr1_tr1())
  411. {
  412. effect_main_region_A_tr1();
  413. }
  414. }
  415. }
  416. /* The reactions of state C. */
  417. void HistoryWithoutInitialStep::react_main_region_B_r1_C()
  418. {
  419. /* The reactions of state C. */
  420. if (check_main_region_B_tr0_tr0())
  421. {
  422. effect_main_region_B_tr0();
  423. } else
  424. {
  425. if (check_main_region_B_r1_C_tr0_tr0())
  426. {
  427. effect_main_region_B_r1_C_tr0();
  428. }
  429. }
  430. }
  431. /* The reactions of state D. */
  432. void HistoryWithoutInitialStep::react_main_region_B_r1_D()
  433. {
  434. /* The reactions of state D. */
  435. if (check_main_region_B_tr0_tr0())
  436. {
  437. effect_main_region_B_tr0();
  438. } else
  439. {
  440. if (check_main_region_B_r1_D_tr0_tr0())
  441. {
  442. effect_main_region_B_r1_D_tr0();
  443. }
  444. }
  445. }
  446. /* The reactions of state F. */
  447. void HistoryWithoutInitialStep::react_main_region_B_r1_E__region0_F()
  448. {
  449. /* The reactions of state F. */
  450. if (check_main_region_B_tr0_tr0())
  451. {
  452. effect_main_region_B_tr0();
  453. } else
  454. {
  455. if (check_main_region_B_r1_E_tr0_tr0())
  456. {
  457. effect_main_region_B_r1_E_tr0();
  458. } else
  459. {
  460. }
  461. }
  462. }
  463. /* Default react sequence for initial entry */
  464. void HistoryWithoutInitialStep::react_main_region__entry_Default()
  465. {
  466. /* Default react sequence for initial entry */
  467. enseq_main_region_A_default();
  468. }
  469. /* Default react sequence for initial entry */
  470. void HistoryWithoutInitialStep::react_main_region_B_r1__entry_Default()
  471. {
  472. /* Default react sequence for initial entry */
  473. enseq_main_region_B_r1_C_default();
  474. }
  475. /* Default react sequence for shallow history entry he */
  476. void HistoryWithoutInitialStep::react_main_region_B_r1_he()
  477. {
  478. /* Default react sequence for shallow history entry he */
  479. /* Enter the region with shallow history */
  480. if (historyVector[0] != HistoryWithoutInitialStep_last_state)
  481. {
  482. shenseq_main_region_B_r1();
  483. }
  484. }
  485. /* Default react sequence for initial entry */
  486. void HistoryWithoutInitialStep::react_main_region_B_r1_E__region0__entry_Default()
  487. {
  488. /* Default react sequence for initial entry */
  489. enseq_main_region_B_r1_E__region0_F_default();
  490. }