FSM_1st.h 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244
  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. #include "typedefine.h"
  14. /****************************************
  15. *
  16. * Definitions & Macros
  17. *
  18. ****************************************/
  19. #define SYS_RDY_FLG_DEFAULT \
  20. { \
  21. FALSE, FALSE, FALSE, FALSE, FALSE \
  22. } // Default value of FW_CTRL_OUT
  23. #define SYS_FSM_FLG_DEFAULT \
  24. { \
  25. FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, 0 \
  26. } // Default value of FW_CTRL_OUT
  27. #define DISPLAY_DISABLE_CNT 15 * 60 * 1000 // 15mins
  28. #define SHUT_DOWN_CNT 30 * 60 * 1000 // 30min
  29. /***************************************
  30. *
  31. * Type Definations
  32. *
  33. ***************************************/
  34. /**
  35. * @brief Type of signal
  36. *
  37. */
  38. typedef struct
  39. {
  40. BOOL Switched;
  41. BOOL Sensor;
  42. BOOL Assist;
  43. BOOL Light;
  44. BOOL Display;
  45. } SIGNAL_STATE;
  46. /**
  47. * @brief Type of system FSM
  48. *
  49. */
  50. typedef enum
  51. {
  52. SysInit = 0,
  53. SysRdy = 1,
  54. SysFault = 2,
  55. } SYS_FSM_STATUS;
  56. /**
  57. * @brief Type of system FSM flag
  58. *
  59. */
  60. typedef struct
  61. {
  62. BOOL HMI_Flag; ///<
  63. BOOL SysCoef_Flag;
  64. BOOL SysRdy_Flag;
  65. BOOL SysRun_Flag;
  66. BOOL SysWarnning_Flag;
  67. BOOL SysFault_Flag;
  68. int Standby_flg;
  69. } SYS_FMS_FLAG;
  70. /**
  71. * @brief Type of system ready flag
  72. *
  73. */
  74. typedef struct
  75. {
  76. BOOL blAlmOccrFlg;
  77. BOOL CommuRdy_Flag;
  78. BOOL blADCInitOvrFlg;
  79. BOOL blFSMRstOvrFlg;
  80. BOOL blCtrlMdVarClcOvrFlg;
  81. } SYS_RDY_FLG;
  82. /**
  83. * @brief Type of system hook function
  84. *
  85. */
  86. typedef struct
  87. {
  88. SYS_FSM_STATUS state;
  89. void (*Event_hook)(void);
  90. void (*Tbcup_hook)(void);
  91. void (*TbcDown_hook)(void);
  92. void (*Tbs_hook)(void);
  93. } FSM_SYS_HOOK;
  94. /****************************************
  95. *
  96. * Exported variable
  97. *
  98. ****************************************/
  99. extern FSM_SYS_HOOK FSM1st_Sys_state;
  100. extern FSM_SYS_HOOK SysFault_state;
  101. extern SYS_RDY_FLG sysfsm_stFlg;
  102. extern SIGNAL_STATE signal_state;
  103. extern SYS_FMS_FLAG switch_flg;
  104. extern ULONG swSwitchStateCnts;
  105. extern FSM_SYS_HOOK SysFault_state;
  106. extern SYS_FSM_STATUS FaultFROM;
  107. /***************************************
  108. *
  109. * Function Definations
  110. *
  111. ***************************************/
  112. /**
  113. * @brief Process when switching state from Ready to Run
  114. *
  115. */
  116. void ReadytoRun(void);
  117. /**
  118. * @brief Process when switching state from SysInit to SysFault
  119. *
  120. */
  121. void InittoFault(void);
  122. /**
  123. * @brief Process when switching state from SysReady to SysFault
  124. *
  125. */
  126. void RdytoFault(void);
  127. /**
  128. * @brief Process of FSM during SysInit state
  129. *
  130. */
  131. void SysInit_hook(void);
  132. /**
  133. * @brief Process of FSM during SysRdy state
  134. *
  135. */
  136. void SysRdy_hook(void);
  137. /**
  138. * @brief Process of FSM during SysFualt state
  139. *
  140. */
  141. void SysFault_hook(void);
  142. /**
  143. * @brief Process of Tbc up during SysInit state
  144. *
  145. */
  146. void SysInit_TbcUphook(void);
  147. /**
  148. * @brief Process of Tbc up during sysRdy state
  149. *
  150. */
  151. void SysRdy_TbcUphook(void);
  152. /**
  153. * @brief Process of Tbc up during SysFault state
  154. *
  155. */
  156. void SysFault_TbcDownhook(void);
  157. /**
  158. * @brief Process of Tbc down during SysInit state
  159. *
  160. */
  161. void SysInit_TbcDownhook(void);
  162. /**
  163. * @brief Process of Tbc down during sysRdy state
  164. *
  165. */
  166. void SysRdy_TbcDownhook(void);
  167. /**
  168. * @brief Process of Tbc down during SysFault state
  169. *
  170. */
  171. void SysFault_TbcUphook(void);
  172. /**
  173. * @brief Process of Tbs during SysInit state
  174. *
  175. */
  176. void SysInit_Tbshook(void);
  177. /**
  178. * @brief Process of Tbs during sysRdy state
  179. *
  180. */
  181. void SysRdy_Tbshook(void);
  182. /**
  183. * @brief Process of Tbs during SysFault state
  184. *
  185. */
  186. void SysFault_Tbshook(void);
  187. /**
  188. * @brief Switch current state to *in state
  189. *
  190. * @param in pointer to target state
  191. */
  192. void Switch_sys_FSM(FSM_SYS_HOOK *in);
  193. /**
  194. * @brief System FSM running function
  195. *
  196. */
  197. void FSM_1st_Main(void);
  198. /**
  199. * @brief Relay power on
  200. *
  201. */
  202. void RlyOnInit(void);
  203. /**
  204. * @brief Build communication with BMS and Display
  205. *
  206. */
  207. void CommuInit(void);
  208. /**
  209. * @brief System FSM initialization
  210. *
  211. */
  212. void FSM_voInit(void);
  213. #endif