DeepHistory.h 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219
  1. #ifndef DEEPHISTORY_H_
  2. #define DEEPHISTORY_H_
  3. #include "sc_types.h"
  4. #include "StatemachineInterface.h"
  5. /*! \file Header of the state machine 'DeepHistory'.
  6. */
  7. class DeepHistory : public StatemachineInterface
  8. {
  9. public:
  10. DeepHistory();
  11. ~DeepHistory();
  12. /*! Enumeration of all states */
  13. typedef enum
  14. {
  15. mainRegion_State1,
  16. mainRegion_State2,
  17. mainRegion_State2__region0_a,
  18. mainRegion_State2__region0_State4,
  19. mainRegion_State2__region0_State4__region0_State6,
  20. mainRegion_State2__region0_State4__region0_State7,
  21. mainRegion_State2__region0_State4__region0_State7__region0_State8,
  22. mainRegion_State2__region0_State4__region0_State7__region0_State9,
  23. mainRegion_State2__region0_State5,
  24. DeepHistory_last_state
  25. } DeepHistoryStates;
  26. //! Inner class for default interface scope.
  27. class DefaultSCI
  28. {
  29. public:
  30. /*! Raises the in event 'event1' that is defined in the default interface scope. */
  31. void raise_event1();
  32. /*! Raises the in event 'event2' that is defined in the default interface scope. */
  33. void raise_event2();
  34. /*! Raises the in event 'event3' that is defined in the default interface scope. */
  35. void raise_event3();
  36. /*! Raises the in event 'event4' that is defined in the default interface scope. */
  37. void raise_event4();
  38. /*! Raises the in event 'event5' that is defined in the default interface scope. */
  39. void raise_event5();
  40. /*! Raises the in event 'event6' that is defined in the default interface scope. */
  41. void raise_event6();
  42. /*! Raises the in event 'event7' that is defined in the default interface scope. */
  43. void raise_event7();
  44. /*! Raises the in event 'event8' that is defined in the default interface scope. */
  45. void raise_event8();
  46. /*! Raises the in event 'event9' that is defined in the default interface scope. */
  47. void raise_event9();
  48. private:
  49. friend class DeepHistory;
  50. sc_boolean event1_raised;
  51. sc_boolean event2_raised;
  52. sc_boolean event3_raised;
  53. sc_boolean event4_raised;
  54. sc_boolean event5_raised;
  55. sc_boolean event6_raised;
  56. sc_boolean event7_raised;
  57. sc_boolean event8_raised;
  58. sc_boolean event9_raised;
  59. };
  60. /*! Returns an instance of the interface class 'DefaultSCI'. */
  61. DefaultSCI* getDefaultSCI();
  62. /*! Raises the in event 'event1' that is defined in the default interface scope. */
  63. void raise_event1();
  64. /*! Raises the in event 'event2' that is defined in the default interface scope. */
  65. void raise_event2();
  66. /*! Raises the in event 'event3' that is defined in the default interface scope. */
  67. void raise_event3();
  68. /*! Raises the in event 'event4' that is defined in the default interface scope. */
  69. void raise_event4();
  70. /*! Raises the in event 'event5' that is defined in the default interface scope. */
  71. void raise_event5();
  72. /*! Raises the in event 'event6' that is defined in the default interface scope. */
  73. void raise_event6();
  74. /*! Raises the in event 'event7' that is defined in the default interface scope. */
  75. void raise_event7();
  76. /*! Raises the in event 'event8' that is defined in the default interface scope. */
  77. void raise_event8();
  78. /*! Raises the in event 'event9' that is defined in the default interface scope. */
  79. void raise_event9();
  80. /*
  81. * Functions inherited from StatemachineInterface
  82. */
  83. virtual void init();
  84. virtual void enter();
  85. virtual void exit();
  86. virtual void runCycle();
  87. /*!
  88. * Checks if the state machine is active (until 2.4.1 this method was used for states).
  89. * A state machine is active if it has been entered. It is inactive if it has not been entered at all or if it has been exited.
  90. */
  91. virtual sc_boolean isActive() const;
  92. /*!
  93. * Checks if all active states are final.
  94. * If there are no active states then the state machine is considered being inactive. In this case this method returns false.
  95. */
  96. virtual sc_boolean isFinal() const;
  97. /*! Checks if the specified state is active (until 2.4.1 the used method for states was calles isActive()). */
  98. sc_boolean isStateActive(DeepHistoryStates state) const;
  99. private:
  100. //! the maximum number of orthogonal states defines the dimension of the state configuration vector.
  101. static const sc_integer maxOrthogonalStates = 1;
  102. //! dimension of the state configuration vector for history states
  103. static const sc_integer maxHistoryStates = 3;
  104. DeepHistoryStates stateConfVector[maxOrthogonalStates];
  105. DeepHistoryStates historyVector[maxHistoryStates];
  106. sc_ushort stateConfVectorPosition;
  107. DefaultSCI iface;
  108. // prototypes of all internal functions
  109. sc_boolean check_mainRegion_State1_tr0_tr0();
  110. sc_boolean check_mainRegion_State2_tr0_tr0();
  111. sc_boolean check_mainRegion_State2__region0_a_tr0_tr0();
  112. sc_boolean check_mainRegion_State2__region0_State4_tr0_tr0();
  113. sc_boolean check_mainRegion_State2__region0_State4__region0_State6_tr0_tr0();
  114. sc_boolean check_mainRegion_State2__region0_State4__region0_State7_tr0_tr0();
  115. sc_boolean check_mainRegion_State2__region0_State4__region0_State7__region0_State8_tr0_tr0();
  116. sc_boolean check_mainRegion_State2__region0_State4__region0_State7__region0_State9_tr0_tr0();
  117. void effect_mainRegion_State1_tr0();
  118. void effect_mainRegion_State2_tr0();
  119. void effect_mainRegion_State2__region0_a_tr0();
  120. void effect_mainRegion_State2__region0_State4_tr0();
  121. void effect_mainRegion_State2__region0_State4__region0_State6_tr0();
  122. void effect_mainRegion_State2__region0_State4__region0_State7_tr0();
  123. void effect_mainRegion_State2__region0_State4__region0_State7__region0_State8_tr0();
  124. void effect_mainRegion_State2__region0_State4__region0_State7__region0_State9_tr0();
  125. void enseq_mainRegion_State1_default();
  126. void enseq_mainRegion_State2_default();
  127. void enseq_mainRegion_State2__region0_a_default();
  128. void enseq_mainRegion_State2__region0_State4_default();
  129. void enseq_mainRegion_State2__region0_State4__region0_State6_default();
  130. void enseq_mainRegion_State2__region0_State4__region0_State7_default();
  131. void enseq_mainRegion_State2__region0_State4__region0_State7__region0_State8_default();
  132. void enseq_mainRegion_State2__region0_State4__region0_State7__region0_State9_default();
  133. void enseq_mainRegion_State2__region0_State5_default();
  134. void enseq_mainRegion_default();
  135. void enseq_mainRegion_State2__region0_default();
  136. void dhenseq_mainRegion_State2__region0();
  137. void enseq_mainRegion_State2__region0_State4__region0_default();
  138. void dhenseq_mainRegion_State2__region0_State4__region0();
  139. void enseq_mainRegion_State2__region0_State4__region0_State7__region0_default();
  140. void dhenseq_mainRegion_State2__region0_State4__region0_State7__region0();
  141. void exseq_mainRegion_State1();
  142. void exseq_mainRegion_State2();
  143. void exseq_mainRegion_State2__region0_a();
  144. void exseq_mainRegion_State2__region0_State4();
  145. void exseq_mainRegion_State2__region0_State4__region0_State6();
  146. void exseq_mainRegion_State2__region0_State4__region0_State7();
  147. void exseq_mainRegion_State2__region0_State4__region0_State7__region0_State8();
  148. void exseq_mainRegion_State2__region0_State4__region0_State7__region0_State9();
  149. void exseq_mainRegion_State2__region0_State5();
  150. void exseq_mainRegion();
  151. void exseq_mainRegion_State2__region0();
  152. void exseq_mainRegion_State2__region0_State4__region0();
  153. void exseq_mainRegion_State2__region0_State4__region0_State7__region0();
  154. void react_mainRegion_State1();
  155. void react_mainRegion_State2__region0_a();
  156. void react_mainRegion_State2__region0_State4__region0_State6();
  157. void react_mainRegion_State2__region0_State4__region0_State7__region0_State8();
  158. void react_mainRegion_State2__region0_State4__region0_State7__region0_State9();
  159. void react_mainRegion_State2__region0_State5();
  160. void react_mainRegion__entry_Default();
  161. void react_mainRegion_State2__region0_State4__region0__entry_Default();
  162. void react_mainRegion_State2__region0_State4__region0_State7__region0__entry_Default();
  163. void react_mainRegion_State2__region0__entry_Default();
  164. void clearInEvents();
  165. void clearOutEvents();
  166. };
  167. #endif /* DEEPHISTORY_H_ */