// can_handler.h - CAN FD Handler for MCP2518FD #ifndef CAN_HANDLER_H #define CAN_HANDLER_H #include #include #include #include "config.h" #include "types.h" // CAN Controller instance extern ACAN2517FD canController; // CAN status flags extern volatile bool canInitialized; extern volatile uint32_t canRxCount; extern volatile uint32_t canTxCount; extern volatile uint32_t canErrorCount; extern volatile uint32_t canOverflowCount; // Initialize CAN FD controller bool initCAN(); // Set CAN mode (0=Normal, 1=ListenOnly, 2=Loopback, 3=ListenOnlyLoopback) bool setCANMode(uint8_t mode); // Get current CAN mode uint8_t getCANMode(); // CAN RX Task (runs on Core 0) void canRxTask(void *pvParameters); // CAN TX Task (runs on Core 0) void canTxTask(void *pvParameters); // Send CAN frame bool sendCANFrame(uint32_t id, uint8_t* data, uint8_t len, bool isFD = true); // Set CAN baudrates bool setCANBaudrate(uint32_t arbitrationBaud, uint32_t dataBaud); bool setCANBaudrateAndMode(uint32_t arbitrationBaud, uint32_t dataBaud, uint8_t mode, bool enableFD = true); void getCANStats(uint32_t& rx, uint32_t& tx, uint32_t& errors); // Interrupt service routine (forward declaration) void IRAM_ATTR onCANInterrupt(); #endif // CAN_HANDLER_H