FSM_1st.h 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218
  1. /**
  2. * @file sysfsm1.h
  3. * @author Zhang, Kai(zhangkai71@midea.com)
  4. * @brief System FSM
  5. * @version 0.1
  6. * @date 2021-09-27
  7. *
  8. * @copyright Copyright (c) 2021
  9. *
  10. */
  11. #ifndef FSM1ST_H
  12. #define FSM1ST_H
  13. /****************************************
  14. *
  15. * Definitions & Macros
  16. *
  17. ****************************************/
  18. #define SYS_RDY_FLG_DEFAULT \
  19. { \
  20. FALSE, FALSE, FALSE, FALSE, FALSE \
  21. }
  22. #define SYS_FSM_FLG_DEFAULT \
  23. { \
  24. FALSE, FALSE, FALSE, FALSE, FALSE, FALSE \
  25. }
  26. /***************************************
  27. *
  28. * Type Definations
  29. *
  30. ***************************************/
  31. /**
  32. * @brief Type of signal
  33. *
  34. */
  35. typedef struct
  36. {
  37. BOOL Switched;
  38. BOOL Sensor;
  39. BOOL Assist;
  40. BOOL Light;
  41. BOOL Display;
  42. } SIGNAL_STATE;
  43. /**
  44. * @brief Type of system FSM
  45. *
  46. */
  47. typedef enum
  48. {
  49. SysInit = 0,
  50. SysRdy = 1,
  51. SysFault = 2,
  52. } SYS_FSM_STATUS;
  53. /**
  54. * @brief Type of system FSM flag
  55. *
  56. */
  57. typedef struct
  58. {
  59. BOOL HMI_Flag;
  60. BOOL SysCoef_Flag;
  61. BOOL SysRdy_Flag;
  62. BOOL SysRun_Flag;
  63. BOOL SysWarnning_Flag;
  64. BOOL SysFault_Flag;
  65. } SYS_FMS_FLAG;
  66. /**
  67. * @brief Type of system ready flag
  68. *
  69. */
  70. typedef struct
  71. {
  72. BOOL blAlmOccrFlg;
  73. BOOL CommuRdy_Flag;
  74. BOOL blADCInitOvrFlg;
  75. BOOL blFSMRstOvrFlg;
  76. BOOL blCtrlMdVarClcOvrFlg;
  77. } SYS_RDY_FLG;
  78. /**
  79. * @brief Type of system hook function
  80. *
  81. */
  82. typedef struct
  83. {
  84. SYS_FSM_STATUS state;
  85. void (*Event_hook)(void);
  86. void (*Tbcup_hook)(void);
  87. void (*TbcDown_hook)(void);
  88. void (*Tbs_hook)(void);
  89. } FSM_SYS_HOOK;
  90. /****************************************
  91. *
  92. * Exported variable
  93. *
  94. ****************************************/
  95. extern FSM_SYS_HOOK FSM1st_Sys_state;
  96. extern FSM_SYS_HOOK SysFault_state;
  97. extern SYS_RDY_FLG sysfsm_stFlg;
  98. extern SIGNAL_STATE signal_state;
  99. extern SYS_FMS_FLAG switch_flg;
  100. /***************************************
  101. *
  102. * Function Definations
  103. *
  104. ***************************************/
  105. /**
  106. * @brief Process when switching state from Ready to Run
  107. *
  108. */
  109. void ReadytoRun(void);
  110. /**
  111. * @brief Process of FSM during SysInit state
  112. *
  113. */
  114. void SysInit_hook(void);
  115. /**
  116. * @brief Process of FSM during SysRdy state
  117. *
  118. */
  119. void SysRdy_hook(void);
  120. /**
  121. * @brief Process of FSM during SysFualt state
  122. *
  123. */
  124. void SysFault_hook(void);
  125. /**
  126. * @brief Process of Tbc up during SysInit state
  127. *
  128. */
  129. void SysInit_TbcUphook(void);
  130. /**
  131. * @brief Process of Tbc up during sysRdy state
  132. *
  133. */
  134. void SysRdy_TbcUphook(void);
  135. /**
  136. * @brief Process of Tbc up during SysFault state
  137. *
  138. */
  139. void SysFault_TbcDownhook(void);
  140. /**
  141. * @brief Process of Tbc down during SysInit state
  142. *
  143. */
  144. void SysInit_TbcDownhook(void);
  145. /**
  146. * @brief Process of Tbc down during sysRdy state
  147. *
  148. */
  149. void SysRdy_TbcDownhook(void);
  150. /**
  151. * @brief Process of Tbc down during SysFault state
  152. *
  153. */
  154. void SysFault_TbcUphook(void);
  155. /**
  156. * @brief Process of Tbs during SysInit state
  157. *
  158. */
  159. void SysInit_Tbshook(void);
  160. /**
  161. * @brief Process of Tbs during sysRdy state
  162. *
  163. */
  164. void SysRdy_Tbshook(void);
  165. /**
  166. * @brief Process of Tbs during SysFault state
  167. *
  168. */
  169. void SysFault_Tbshook(void);
  170. /**
  171. * @brief Switch current state to *in state
  172. *
  173. * @param in pointer to target state
  174. */
  175. void Switch_sys_FSM(const FSM_SYS_HOOK *in);
  176. /**
  177. * @brief System FSM running function
  178. *
  179. */
  180. void FSM_1st_Main(void);
  181. /**
  182. * @brief Relay power on
  183. *
  184. */
  185. void RlyOnInit(void);
  186. /**
  187. * @brief System FSM initialization
  188. *
  189. */
  190. void FSM_voInit(void);
  191. #endif