Files
canFD_esp32_glm-oh-my-open-/can_handler.h
2026-02-20 17:50:40 +00:00

52 lines
1.3 KiB
C

// can_handler.h - CAN FD Handler for MCP2518FD
#ifndef CAN_HANDLER_H
#define CAN_HANDLER_H
#include <Arduino.h>
#include <ACAN2517FD.h>
#include <SPI.h>
#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