42#ifndef _DEV_CAN_CAN_FRAME_H
43#define _DEV_CAN_CAN_FRAME_H
56#define CAN_FRAME_BFF_ID_MASK ( 0x000007ff )
60#define CAN_FRAME_EFF_ID_MASK ( 0x1fffffff )
64#define CAN_FRAME_STANDARD_DLEN ( 8u )
68#define CAN_FRAME_FD_DLEN ( 64u )
72#define CAN_FRAME_MAX_DLEN ( CAN_FRAME_FD_DLEN )
93#define CAN_FRAME_IDE ( 1 << 0 )
97#define CAN_FRAME_RTR ( 1 << 1 )
101#define CAN_FRAME_ECHO ( 1 << 2 )
105#define CAN_FRAME_LOCAL ( 1 << 3 )
109#define CAN_FRAME_TXERR ( 1 << 4 )
113#define CAN_FRAME_ERR ( 1 << 5 )
117#define CAN_FRAME_FIFO_OVERFLOW ( 1 << 6 )
121#define CAN_FRAME_FDF ( 1 << 7 )
125#define CAN_FRAME_BRS ( 1 << 8 )
129#define CAN_FRAME_ESI ( 1 << 9 )
153#define CAN_ERR_ID_TXTIMEOUT ( 1 << 0 )
158#define CAN_ERR_ID_LOSTARB ( 1 << 1 )
163#define CAN_ERR_ID_CRTL ( 1 << 2 )
169#define CAN_ERR_ID_PROT ( 1 << 3 )
174#define CAN_ERR_ID_TRX ( 1 << 4 )
178#define CAN_ERR_ID_ACK ( 1 << 5 )
182#define CAN_ERR_ID_BUSOFF ( 1 << 6 )
186#define CAN_ERR_ID_BUSERROR ( 1 << 7 )
190#define CAN_ERR_ID_RESTARTED ( 1 << 8 )
195#define CAN_ERR_ID_CNT ( 1 << 9 )
199#define CAN_ERR_ID_INTERNAL ( 1 << 10 )
205#define CAN_ERR_ID_TAG ( 1 << 31 )
221#define CAN_ERR_DATA_BYTE_TRX_LOSTARB ( 0 )
225#define CAN_ERR_DATA_BYTE_TRX_CTRL ( 1 )
230#define CAN_ERR_DATA_BYTE_TRX_PROT ( 2 )
235#define CAN_ERR_DATA_BYTE_TRX_PROT_LOC ( 3 )
240#define CAN_ERR_TRX_DATA_BYTE ( 4 )
244#define CAN_ERR_DATA_BYTE_CNT_TX ( 6 )
248#define CAN_ERR_DATA_BYTE_CNT_RX ( 7 )
261#define CAN_ERR_LOSTARB_UNSPEC ( 0 )
265#define CAN_ERR_LOSTARB_BIT( n ) ( n )
278#define CAN_ERR_CRTL_UNSPEC ( 0 )
282#define CAN_ERR_CRTL_RX_OVERFLOW ( 1 << 0 )
286#define CAN_ERR_CRTL_TX_OVERFLOW ( 1 << 1 )
290#define CAN_ERR_CRTL_RX_WARNING ( 1 << 2 )
294#define CAN_ERR_CRTL_TX_WARNING ( 1 << 3 )
298#define CAN_ERR_CRTL_RX_PASSIVE ( 1 << 4 )
302#define CAN_ERR_CRTL_TX_PASSIVE ( 1 << 5 )
306#define CAN_ERR_CRTL_ACTIVE ( 1 << 6 )
319#define CAN_ERR_PROT_UNSPEC ( 0 )
323#define CAN_ERR_PROT_BIT (1 << 0)
327#define CAN_ERR_PROT_FOR (1 << 1)
331#define CAN_ERR_PROT_STUFF (1 << 2)
335#define CAN_ERR_PROT_BIT0 (1 << 3)
339#define CAN_ERR_PROT_BIT1 (1 << 4)
343#define CAN_ERR_PROT_OVERLOAD (1 << 5)
347#define CAN_ERR_PROT_ACTIVE (1 << 6)
351#define CAN_ERR_PROT_TX (1 << 7)
364#define CAN_ERR_PROT_LOC_UNSPEC ( 0x00 )
368#define CAN_ERR_PROT_LOC_SOF ( 0x01 )
372#define CAN_ERR_PROT_LOC_ID0 ( 0x02 )
376#define CAN_ERR_PROT_LOC_ID1 ( 0x03 )
380#define CAN_ERR_PROT_LOC_ID2 ( 0x04 )
384#define CAN_ERR_PROT_LOC_ID3 ( 0x05 )
388#define CAN_ERR_PROT_LOC_ID4 ( 0x06 )
392#define CAN_ERR_PROT_LOC_IDE ( 0x07 )
396#define CAN_ERR_PROT_LOC_RTR ( 0x08 )
400#define CAN_ERR_PROT_LOC_SRTR ( 0x09 )
404#define CAN_ERR_PROT_LOC_RES0 ( 0x0a )
408#define CAN_ERR_PROT_LOC_RES1 ( 0x0b )
412#define CAN_ERR_PROT_LOC_DLC ( 0x0c )
416#define CAN_ERR_PROT_LOC_DATA ( 0x0d )
420#define CAN_ERR_PROT_LOC_CRCSEQ ( 0x0e )
424#define CAN_ERR_PROT_LOC_CRCDEL ( 0x0f )
428#define CAN_ERR_PROT_LOC_ACK ( 0x10 )
432#define CAN_ERR_PROT_LOC_ACKDEL ( 0x11 )
436#define CAN_ERR_PROT_LOC_EOF ( 0x12 )
440#define CAN_ERR_PROT_LOC_INTERM ( 0x13 )
453#define CAN_ERR_TRX_UNSPEC ( 0x00 )
457#define CAN_ERR_TRX_H_MASK ( 0x0f )
461#define CAN_ERR_TRX_H_NOWIRE ( 0x01 )
465#define CAN_ERR_TRX_H_SHORT2BAT ( 0x02 )
469#define CAN_ERR_TRX_H_SHORT2VCC ( 0x03 )
473#define CAN_ERR_TRX_H_SHORT2GND ( 0x04 )
477#define CAN_ERR_TRX_L_MASK ( 0xf0 )
481#define CAN_ERR_TRX_L_NOWIRE ( 0x10 )
485#define CAN_ERR_TRX_L_SHORT2BAT ( 0x20 )
489#define CAN_ERR_TRX_L_SHORT2VCC ( 0x30 )
493#define CAN_ERR_TRX_L_SHORT2GND ( 0x40 )
497#define CAN_ERR_TRX_L_SHORT2CANH ( 0x50 )
553static inline size_t can_framesize(
struct can_frame *frame )
#define CAN_FRAME_MAX_DLEN
Represents maximum allowed CAN frame data length.
Definition: can-frame.h:72
This structure represents one CAN frame. It consists of CAN header and data.
Definition: can-frame.h:534
struct can_frame_header header
This member stores the structure can_frame_header representing CAN header.
Definition: can-frame.h:539
uint8_t data[CAN_FRAME_MAX_DLEN]
This member stores CAN data.
Definition: can-frame.h:543