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
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
|