33 lines
919 B
C
33 lines
919 B
C
#pragma once
|
|
#include <stdint.h>
|
|
|
|
#define CAN_FLAG_ECHO (0x20)
|
|
#define CAN_FLAG_RTR (0x40)
|
|
#define CAN_FLAG_EXTID (0x80)
|
|
|
|
#define CAN_ERROR_FLAG_BUSOFF (1 << 0)
|
|
#define CAN_ERROR_FLAG_RX_OVF (1 << 1)
|
|
#define CAN_ERROR_FLAG_TX_ERR (1 << 2)
|
|
|
|
typedef struct
|
|
{
|
|
uint32_t id;
|
|
uint8_t data[8];
|
|
uint8_t dlc;
|
|
uint8_t flags;
|
|
/* for self receive */
|
|
uint8_t dummy;
|
|
/* in pcan ticks */
|
|
uint16_t timestamp;
|
|
} can_message_t;
|
|
|
|
void pcan_can_init(void);
|
|
void pcan_can_poll(void);
|
|
void pcan_can_set_bitrate(uint16_t brp, uint8_t tseg1, uint8_t tseg2, uint8_t sjw);
|
|
int pcan_can_send_message(const can_message_t *msg);
|
|
void pcan_can_install_rx_callback(void (*cb)(can_message_t *));
|
|
void pcan_can_install_error_callback(void (*cb)(uint8_t, uint8_t, uint8_t));
|
|
void pcan_can_set_bus_active(uint16_t mode);
|
|
void pcan_can_set_silent(uint8_t silent_mode);
|
|
void pcan_can_set_loopback(uint8_t loopback);
|