Corium 1.1.0
High-Performance Zero-Heap C++20 MPSC Application Runtime
Loading...
Searching...
No Matches
corium::embedded::CanIsrAdapter< EventVariant > Class Template Reference

Non-blocking hardware ISR adapter for CAN/CAN-FD controller interrupts. Ingests hardware mailbox/FIFO frames inside ISR and posts into Corium lock-free ring buffer. More...

#include <CanAdapter.hpp>

+ Collaboration diagram for corium::embedded::CanIsrAdapter< EventVariant >:

Public Member Functions

 CanIsrAdapter (EventSinkT< EventVariant > sink) noexcept
 
template<typename TargetEvent = CanFdFrame>
void postFromIsr (const CanFdFrame &frame, EventPriority priority=EventPriority::Normal) noexcept
 Ingest high-speed CAN-FD frame from hardware interrupt (e.g. STM32 FDCAN1_IT0_IRQHandler).
 
template<typename TargetEvent = CanFrame>
void postFromIsr (const CanFrame &frame, EventPriority priority=EventPriority::Normal) noexcept
 Ingest standard CAN frame from hardware interrupt (e.g. STM32 CAN_RX_IRQHandler).
 

Detailed Description

template<typename EventVariant>
class corium::embedded::CanIsrAdapter< EventVariant >

Non-blocking hardware ISR adapter for CAN/CAN-FD controller interrupts. Ingests hardware mailbox/FIFO frames inside ISR and posts into Corium lock-free ring buffer.

Constructor & Destructor Documentation

◆ CanIsrAdapter()

template<typename EventVariant >
corium::embedded::CanIsrAdapter< EventVariant >::CanIsrAdapter ( EventSinkT< EventVariant >  sink)
inlineexplicitnoexcept

Member Function Documentation

◆ postFromIsr() [1/2]

template<typename EventVariant >
template<typename TargetEvent = CanFdFrame>
void corium::embedded::CanIsrAdapter< EventVariant >::postFromIsr ( const CanFdFrame frame,
EventPriority  priority = EventPriority::Normal 
)
inlinenoexcept

Ingest high-speed CAN-FD frame from hardware interrupt (e.g. STM32 FDCAN1_IT0_IRQHandler).

Template Parameters
TargetEventUser-defined event type constructible from CanFdFrame.
Parameters
frameRaw hardware CAN-FD frame.
priorityPriority to assign.

◆ postFromIsr() [2/2]

template<typename EventVariant >
template<typename TargetEvent = CanFrame>
void corium::embedded::CanIsrAdapter< EventVariant >::postFromIsr ( const CanFrame frame,
EventPriority  priority = EventPriority::Normal 
)
inlinenoexcept

Ingest standard CAN frame from hardware interrupt (e.g. STM32 CAN_RX_IRQHandler).

Template Parameters
TargetEventUser-defined event type constructible from CanFrame.
Parameters
frameRaw hardware CAN frame.
priorityPriority to assign (default Normal, High for emergency/E-Stop).

The documentation for this class was generated from the following file: