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.

40 lines
1.6 KiB

  1. #pragma once
  2. #include <functional>
  3. #include "../chip/iflytop_no_os.h"
  4. #define STM32_HAL_LISTENER_NUM 3
  5. namespace iflytop {
  6. class ZCanIRQListener {
  7. public:
  8. /*******************************************************************************
  9. * *
  10. *******************************************************************************/
  11. #ifdef HAL_CAN_MODULE_ENABLED
  12. virtual void STM32_HAL_onCAN_TxMailbox0Complete(CAN_HandleTypeDef *can){};
  13. virtual void STM32_HAL_onCAN_TxMailbox1Complete(CAN_HandleTypeDef *can){};
  14. virtual void STM32_HAL_onCAN_TxMailbox2Complete(CAN_HandleTypeDef *can){};
  15. virtual void STM32_HAL_onCAN_TxMailbox0Abort(CAN_HandleTypeDef *can){};
  16. virtual void STM32_HAL_onCAN_TxMailbox1Abort(CAN_HandleTypeDef *can){};
  17. virtual void STM32_HAL_onCAN_TxMailbox2Abort(CAN_HandleTypeDef *can){};
  18. virtual void STM32_HAL_onCAN_RxFifo0MsgPending(CAN_HandleTypeDef *can){};
  19. virtual void STM32_HAL_onCAN_RxFifo0Full(CAN_HandleTypeDef *can){};
  20. virtual void STM32_HAL_onCAN_RxFifo1MsgPending(CAN_HandleTypeDef *can){};
  21. virtual void STM32_HAL_onCAN_RxFifo1Full(CAN_HandleTypeDef *can){};
  22. virtual void STM32_HAL_onCAN_Sleep(CAN_HandleTypeDef *can){};
  23. virtual void STM32_HAL_onCAN_WakeUpFromRxMsg(CAN_HandleTypeDef *can){};
  24. virtual void STM32_HAL_onCAN_Error(CAN_HandleTypeDef *can){};
  25. #endif
  26. };
  27. class ZCanIRQDispatcher {
  28. ZCanIRQDispatcher(){};
  29. public:
  30. ZCanIRQListener *m_listener[STM32_HAL_LISTENER_NUM];
  31. int m_listenerNum;
  32. void regListener(ZCanIRQListener *listener);
  33. static ZCanIRQDispatcher &instance();
  34. };
  35. } // namespace iflytop