#pragma once #include #include "mcp2521.hpp" class MCP2515 { private: public: MCP2515(); ~MCP2515(); void reset(); // Interrupts void register_rx_callback(void (*callback)(uint32_t id, uint8_t *data, size_t length)); void register_tx_callback(void (*callback)(MCP2521_TX_BUFFER buffer)); void register_error_callback(void (*callback)(uint8_t error_flags)); void register_message_error_callback(void (*callback)(uint8_t error_flags)); // Transmittion void set_tx_id(MCP2521_TX_BUFFER buffer, uint32_t id); void set_tx_data(MCP2521_TX_BUFFER buffer, uint8_t *data, size_t length); void set_tx_priority(MCP2521_TX_BUFFER buffer, uint8_t priority); void set_one_shot(MCP2521_TX_BUFFER buffer, bool one_shot); void request_to_send(MCP2521_TX_BUFFER buffer); void request_to_send(bool txb2, bool txb1, bool txb0); void abort_tx(MCP2521_TX_BUFFER buffer); void abort_all_tx(); TXBnCTRL_Register get_TXBnCTRL(MCP2521_TX_BUFFER buffer); void transmit(MCP2521_TX_BUFFER buffer, uint32_t id, uint8_t *data, size_t length, uint8_t priority, bool one_shot); // Reception uint8_t get_TransmitErrorCounter(); uint8_t get_ReceiveErrorCounter(); };