20struct CAN_HandleTypeDef;
21struct FDCAN_HandleTypeDef;
47 explicit StmCan(CAN_HandleTypeDef* hcan)
noexcept;
52 explicit StmCan(FDCAN_HandleTypeDef* hfdcan)
noexcept;
68 hf_u32_t timeout_ms = 1000) noexcept override;
70 hf_u32_t timeout_ms = 0) noexcept override;
73 bool extended = false) noexcept override;
Abstract base class for CAN bus implementations in the HardFOC system.
void(*)(const hf_can_message_t &message) hf_can_receive_callback_t
CAN message receive callback function type.
Definition BaseCan.h:333
hf_can_err_t
Definition BaseCan.h:117
uint32_t hf_u32_t
Platform-agnostic 32-bit unsigned integer type.
Definition HardwareTypes.h:52
uint8_t hf_u8_t
Platform-agnostic 8-bit unsigned integer type.
Definition HardwareTypes.h:40
StmCanVariant
Which CAN peripheral variant is in use.
Definition StmCan.h:26
@ FDCAN
FDCAN (STM32G0/G4/H7/L5/U5/WB/WL)
@ BXCAN
Classic bxCAN (STM32F1/F2/F4/L4)
STM32 platform-specific type definitions for hardware abstraction.
Abstract base class defining the unified CAN bus API.
Definition BaseCan.h:428
STM32 CAN implementation.
Definition StmCan.h:41
hf_can_err_t Initialize() noexcept override
Initialize the CAN controller (must be implemented by derived classes).
Definition StmCan.cpp:169
hf_can_err_t Deinitialize() noexcept override
Deinitialize the CAN controller (must be implemented by derived classes).
Definition StmCan.cpp:187
hf_can_err_t SendBxCan(const hf_can_message_t &msg, hf_u32_t timeout_ms) noexcept
Definition StmCan.cpp:228
hf_can_err_t SendFdCan(const hf_can_message_t &msg, hf_u32_t timeout_ms) noexcept
Definition StmCan.cpp:287
void NotifyRxFromIsr(const hf_can_message_t &msg) noexcept
ISR helper — call from HAL CAN/FDCAN RX callback.
Definition StmCan.cpp:428
CAN_HandleTypeDef * hcan_
Definition StmCan.h:91
FDCAN_HandleTypeDef * hfdcan_
Definition StmCan.h:92
bool SupportsCanFD() const noexcept override
Check if CAN-FD is supported by this controller.
Definition StmCan.cpp:424
hf_can_err_t SendMessage(const hf_can_message_t &message, hf_u32_t timeout_ms=1000) noexcept override
Send a CAN message.
Definition StmCan.cpp:204
hf_can_err_t Reset() noexcept override
Reset the CAN controller.
Definition StmCan.cpp:417
hf_can_err_t GetStatus(hf_can_status_t &status) noexcept override
Get current CAN bus status.
Definition StmCan.cpp:399
StmCanVariant variant_
Definition StmCan.h:89
hf_can_err_t SetReceiveCallback(hf_can_receive_callback_t callback) noexcept override
Set callback for received messages.
Definition StmCan.cpp:351
StmCan(const StmCan &)=delete
~StmCan() noexcept override
Definition StmCan.cpp:161
hf_can_receive_callback_t rx_callback_
Definition StmCan.h:94
hf_can_err_t ReceiveFdCan(hf_can_message_t &msg, hf_u32_t timeout_ms) noexcept
Definition StmCan.cpp:313
StmCanVariant GetVariant() const noexcept
Definition StmCan.h:81
hf_can_err_t ReceiveBxCan(hf_can_message_t &msg, hf_u32_t timeout_ms) noexcept
Definition StmCan.cpp:255
hf_can_err_t SetAcceptanceFilter(hf_u32_t id, hf_u32_t mask, bool extended=false) noexcept override
Set acceptance filter for incoming messages.
Definition StmCan.cpp:356
hf_can_err_t ReceiveMessage(hf_can_message_t &message, hf_u32_t timeout_ms=0) noexcept override
Receive a CAN message.
Definition StmCan.cpp:215
StmCan & operator=(const StmCan &)=delete
StmCan(CAN_HandleTypeDef *hcan) noexcept
Construct for bxCAN.
Definition StmCan.cpp:133
Platform-agnostic CAN message structure.
Definition BaseCan.h:165
CAN bus status information structure.
Definition BaseCan.h:297
CAN configuration for STM32.
Definition StmTypes.h:375