50#include <rtems/seterr.h>
51#include <rtems/thread.h>
52#include <sys/ioccom.h>
59#define CAN_IOC_MAGIC 'd'
79#define RTEMS_CAN_CHIP_CONFIGURED ( 0 )
84#define RTEMS_CAN_CHIP_RUNNING ( 1 )
96#define RTEMS_CAN_CHIP_CAPABILITIES_FD ( 1 << 0 )
101#define RTEMS_CAN_CHIP_CAPABILITIES_TX_TIMESTAMP ( 1 << 1 )
106#define RTEMS_CAN_CHIP_CAPABILITIES_RX_TIMESTAMP ( 1 << 2 )
122#define RTEMS_CAN_CHIP_BITRATE ( 1 )
127#define RTEMS_CAN_CHIP_DBITRATE ( 2 )
132#define RTEMS_CAN_CHIP_NUSERS ( 3 )
138#define RTEMS_CAN_CHIP_FLAGS ( 4 )
143#define RTEMS_CAN_CHIP_MODE ( 5 )
148#define RTEMS_CAN_CHIP_MODE_SUPPORTED ( 6 )
163#define RTEMS_CAN_QUEUE_RX ( 1 << 0 )
168#define RTEMS_CAN_QUEUE_TX ( 1 << 1 )
184#define CAN_CTRLMODE_LOOPBACK ( 1 << 0 )
189#define CAN_CTRLMODE_LISTENONLY ( 1 << 1 )
194#define CAN_CTRLMODE_3_SAMPLES ( 1 << 2 )
199#define CAN_CTRLMODE_ONE_SHOT ( 1 << 3 )
204#define CAN_CTRLMODE_BERR_REPORTING ( 1 << 4 )
209#define CAN_CTRLMODE_FD ( 1 << 5 )
214#define CAN_CTRLMODE_PRESUME_ACK ( 1 << 6 )
219#define CAN_CTRLMODE_FD_NON_ISO ( 1 << 7 )
224#define CAN_CTRLMODE_CC_LEN8_DLC ( 1 << 8 )
229#define CAN_CTRLMODE_TDC_AUTO ( 1 << 9 )
234#define CAN_CTRLMODE_TDC_MANUAL ( 1 << 10 )
235#define CAN_CTRLMODE_MASK \
236 ( CAN_CTRLMODE_LOOPBACK | CAN_CTRLMODE_LISTENONLY | \
237 CAN_CTRLMODE_3_SAMPLES | CAN_CTRLMODE_ONE_SHOT | \
238 CAN_CTRLMODE_BERR_REPORTING | CAN_CTRLMODE_FD | \
239 CAN_CTRLMODE_PRESUME_ACK | CAN_CTRLMODE_FD_NON_ISO | \
240 CAN_CTRLMODE_CC_LEN8_DLC | CAN_CTRLMODE_TDC_AUTO | \
241 CAN_CTRLMODE_TDC_MANUAL )
264#define RTEMS_CAN_CHIP_START _IO( CAN_IOC_MAGIC, 1 )
269#define RTEMS_CAN_CHIP_STOP _IOW( CAN_IOC_MAGIC, 2, struct timespec )
274#define RTEMS_CAN_CLOSE_NONBLOCK _IO( CAN_IOC_MAGIC, 3 )
280#define RTEMS_CAN_DISCARD_QUEUES _IO( CAN_IOC_MAGIC, 4 )
286#define RTEMS_CAN_FLUSH_QUEUES _IO( CAN_IOC_MAGIC, 5 )
292#define RTEMS_CAN_CHIP_SET_MODE _IO( CAN_IOC_MAGIC, 6 )
297#define RTEMS_CAN_CHIP_GET_INFO _IO( CAN_IOC_MAGIC, 7 )
304#define RTEMS_CAN_WAIT_TX_DONE _IOW( CAN_IOC_MAGIC, 8, struct timespec )
311#define RTEMS_CAN_POLL_TX_READY _IOW( CAN_IOC_MAGIC, 9, struct timespec )
318#define RTEMS_CAN_POLL_RX_AVAIL _IOW( CAN_IOC_MAGIC, 10, struct timespec )
323#define RTEMS_CAN_CREATE_QUEUE \
324 _IOW( CAN_IOC_MAGIC, 11, struct rtems_can_queue_param )
329#define RTEMS_CAN_SET_BITRATE \
330 _IOW( CAN_IOC_MAGIC, 12, struct rtems_can_set_bittiming )
334#define RTEMS_CAN_CHIP_GET_TIMESTAMP _IOR( CAN_IOC_MAGIC, 13, uint64_t )
339#define RTEMS_CAN_CHIP_STATISTICS \
340 _IOR( CAN_IOC_MAGIC, 14, struct rtems_can_stats )
345#define RTEMS_CAN_GET_BITTIMING \
346 _IOWR( CAN_IOC_MAGIC, 15, struct rtems_can_get_bittiming )
This header file is part of CAN/CAN FD bus common support. It defines structures used for bit timing ...
This header file is part of CAN/CAN FD bus common support. It implements structure that represents fi...
This header file is part of CAN/CAN FD bus common support. It implements CAN frame structure and rela...
This header file is part of CAN/CAN FD bus common support. It implements controller's statistics.
This structure is used to represent CAN ID and flags in one unified structure.
Definition: can-filter.h:50
This structure represents parameters of FIFO queue. It is used to setup new queues via RTEMS_CAN_CREA...
Definition: can.h:354
uint8_t direction
This member specifies queue's direction. Use RTEMS_CAN_QUEUE_RX or RTEMS_CAN_QUEUE_TX.
Definition: can.h:359
struct rtems_can_filter filter
This member holds a queue's filter. Refer to rtems_can_filter for more information.
Definition: can.h:381
uint8_t buffer_size
This member specifies queue's buffer size. Passing 0 applies default RTEMS_CAN_FIFO_SIZE value.
Definition: can.h:376
uint8_t priority
This member specifies queue's priority. Maximum priority value is available from RTEMS_CAN_QUEUE_PRIO...
Definition: can.h:365
uint8_t dlen_max
This member specifies queue's maximum data length. Passing 0 applies default value: CAN_FRAME_STANDAR...
Definition: can.h:371