diff --git a/include/sta/devices/stm32/can.hpp b/include/sta/devices/stm32/can.hpp index 598b2bd..eff37a4 100644 --- a/include/sta/devices/stm32/can.hpp +++ b/include/sta/devices/stm32/can.hpp @@ -117,6 +117,15 @@ namespace sta * @ingroup sta_core_stm32_can */ void CanBus_RxPendingCallback(); + + /** + * @brief Interrupt handler for pending RX frames. Secondary handler. + * + * May be implemented by application. + * + * @ingroup sta_core_stm32_can + */ + void CanBus_RxPendingCallbackSecondary(); #endif // STA_STM32_CAN_GLOBAL } // namespace sta diff --git a/src/devices/stm32/can.cpp b/src/devices/stm32/can.cpp index 47e9c97..ffd6a41 100644 --- a/src/devices/stm32/can.cpp +++ b/src/devices/stm32/can.cpp @@ -215,6 +215,10 @@ namespace sta STA_WEAK void CanBus_RxPendingCallback(uint32_t fifo) {} + + STA_WEAK + void CanBus_RxPendingCallbackSecondary(uint32_t fifo) + {} } // namespace sta @@ -226,6 +230,10 @@ extern "C" { sta::CanBus_RxPendingCallback(CAN_RX_FIFO0); } + else + { + sta::CanBus_RxPendingCallbackSecondary(CAN_RX_FIFO0); + } } void HAL_CAN_RxFifo1MsgPendingCallback(CAN_HandleTypeDef *hcan) @@ -234,6 +242,9 @@ extern "C" { sta::CanBus_RxPendingCallback(CAN_RX_FIFO1); } + else{ + sta::CanBus_RxPendingCallbackSecondary(CAN_RX_FIFO1); + } } }