/** * @file sysfsm1.h * @author Zhang, Kai(zhangkai71@midea.com) * @brief System FSM * @version 0.1 * @date 2021-09-27 * * @copyright Copyright (c) 2021 * */ #ifndef FSM1ST_H #define FSM1ST_H /**************************************** * * Definitions & Macros * ****************************************/ #define SYS_RDY_FLG_DEFAULT \ { \ FALSE, FALSE, FALSE, FALSE, FALSE \ } #define SYS_FSM_FLG_DEFAULT \ { \ FALSE, FALSE, FALSE, FALSE, FALSE, FALSE \ } /*************************************** * * Type Definations * ***************************************/ /** * @brief Type of signal * */ typedef struct { BOOL Switched; BOOL Sensor; BOOL Assist; BOOL Light; BOOL Display; } SIGNAL_STATE; /** * @brief Type of system FSM * */ typedef enum { SysInit = 0, SysRdy = 1, SysFault = 2, } SYS_FSM_STATUS; /** * @brief Type of system FSM flag * */ typedef struct { BOOL HMI_Flag; BOOL SysCoef_Flag; BOOL SysRdy_Flag; BOOL SysRun_Flag; BOOL SysWarnning_Flag; BOOL SysFault_Flag; } SYS_FMS_FLAG; /** * @brief Type of system ready flag * */ typedef struct { BOOL blAlmOccrFlg; BOOL CommuRdy_Flag; BOOL blADCInitOvrFlg; BOOL blFSMRstOvrFlg; BOOL blCtrlMdVarClcOvrFlg; } SYS_RDY_FLG; /** * @brief Type of system hook function * */ typedef struct { SYS_FSM_STATUS state; void (*Event_hook)(void); void (*Tbcup_hook)(void); void (*TbcDown_hook)(void); void (*Tbs_hook)(void); } FSM_SYS_HOOK; /**************************************** * * Exported variable * ****************************************/ extern FSM_SYS_HOOK FSM1st_Sys_state; extern FSM_SYS_HOOK SysFault_state; extern SYS_RDY_FLG sysfsm_stFlg; extern SIGNAL_STATE signal_state; extern SYS_FMS_FLAG switch_flg; /*************************************** * * Function Definations * ***************************************/ /** * @brief Process when switching state from Ready to Run * */ void ReadytoRun(void); /** * @brief Process of FSM during SysInit state * */ void SysInit_hook(void); /** * @brief Process of FSM during SysRdy state * */ void SysRdy_hook(void); /** * @brief Process of FSM during SysFualt state * */ void SysFault_hook(void); /** * @brief Process of Tbc up during SysInit state * */ void SysInit_TbcUphook(void); /** * @brief Process of Tbc up during sysRdy state * */ void SysRdy_TbcUphook(void); /** * @brief Process of Tbc up during SysFault state * */ void SysFault_TbcDownhook(void); /** * @brief Process of Tbc down during SysInit state * */ void SysInit_TbcDownhook(void); /** * @brief Process of Tbc down during sysRdy state * */ void SysRdy_TbcDownhook(void); /** * @brief Process of Tbc down during SysFault state * */ void SysFault_TbcUphook(void); /** * @brief Process of Tbs during SysInit state * */ void SysInit_Tbshook(void); /** * @brief Process of Tbs during sysRdy state * */ void SysRdy_Tbshook(void); /** * @brief Process of Tbs during SysFault state * */ void SysFault_Tbshook(void); /** * @brief Switch current state to *in state * * @param in pointer to target state */ void Switch_sys_FSM(const FSM_SYS_HOOK *in); /** * @brief System FSM running function * */ void FSM_1st_Main(void); /** * @brief Relay power on * */ void RlyOnInit(void); /** * @brief System FSM initialization * */ void FSM_voInit(void); #endif