#pragma once #include #include "../chip/iflytop_no_os.h" #define STM32_HAL_LISTENER_NUM 3 namespace iflytop { class ZCanIRQListener { public: /******************************************************************************* * 中断管理 * *******************************************************************************/ #ifdef HAL_CAN_MODULE_ENABLED virtual void STM32_HAL_onCAN_TxMailbox0Complete(CAN_HandleTypeDef *can){}; virtual void STM32_HAL_onCAN_TxMailbox1Complete(CAN_HandleTypeDef *can){}; virtual void STM32_HAL_onCAN_TxMailbox2Complete(CAN_HandleTypeDef *can){}; virtual void STM32_HAL_onCAN_TxMailbox0Abort(CAN_HandleTypeDef *can){}; virtual void STM32_HAL_onCAN_TxMailbox1Abort(CAN_HandleTypeDef *can){}; virtual void STM32_HAL_onCAN_TxMailbox2Abort(CAN_HandleTypeDef *can){}; virtual void STM32_HAL_onCAN_RxFifo0MsgPending(CAN_HandleTypeDef *can){}; virtual void STM32_HAL_onCAN_RxFifo0Full(CAN_HandleTypeDef *can){}; virtual void STM32_HAL_onCAN_RxFifo1MsgPending(CAN_HandleTypeDef *can){}; virtual void STM32_HAL_onCAN_RxFifo1Full(CAN_HandleTypeDef *can){}; virtual void STM32_HAL_onCAN_Sleep(CAN_HandleTypeDef *can){}; virtual void STM32_HAL_onCAN_WakeUpFromRxMsg(CAN_HandleTypeDef *can){}; virtual void STM32_HAL_onCAN_Error(CAN_HandleTypeDef *can){}; #endif }; class ZCanIRQDispatcher { ZCanIRQDispatcher(){}; public: ZCanIRQListener *m_listener[STM32_HAL_LISTENER_NUM]; int m_listenerNum; void regListener(ZCanIRQListener *listener); static ZCanIRQDispatcher &instance(); }; } // namespace iflytop