You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

41 lines
1.6 KiB

#pragma once
#include <functional>
#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