diff --git a/include/nuttx/lin.h b/include/nuttx/lin.h index e6a603edbdf..8eb7044347c 100644 --- a/include/nuttx/lin.h +++ b/include/nuttx/lin.h @@ -40,35 +40,40 @@ #define LIN_ID_MASK ((1 << LIN_ID_BITS) - 1) #define LIN_ID_MAX LIN_ID_MASK -#define LIN_CTRL_FLAG CAN_EFF_FLAG /* Describe control information (such as write etc.) */ -#define LIN_RTR_FLAG CAN_RTR_FLAG /* Describe the direction of sending and receiving */ -#define LIN_ERR_FLAG CAN_ERR_FLAG /* The flag indicates this is LIN err_frame */ +/* Describe control information (such as write etc.) */ -/* Bit flags on can_frame.types - * - * Use can_frame.types to identify other special frame. - * - * LIN_TCF_FLAG : TxConfirmation message frame. Lower_half use this flag to - * confirm frame-transmit - * - * LIN_EVT_FLAG : Event message frame. Lower_half use this flag to report - * state switch event - * - * LIN_CACHE_RESP_FLAG: When slave response to master, slave node should send - * frame immediately which already be cached in last - * transmission in case of response interval over time. - * - * LIN_CHKSUM_EXT_FLAG: LIN checksum have two types, default type will be - * classic checksum - * - * LIN_SINGLE_RESP_FLAG: Cache LIN frame only work once, then will be cleared +#define LIN_CTRL_FLAG CAN_EFF_FLAG + +/* Describe the direction of sending and receiving */ + +#define LIN_RTR_FLAG CAN_RTR_FLAG + +/* The flag indicate this is LIN err_frame */ + +#define LIN_ERR_FLAG CAN_ERR_FLAG + +/* Lower_half report state switch event frame */ + +#define LIN_EVT_FLAG CAN_EVT_FLAG + +/* When slave response to master, slave node should send frame immediately + * which already be cached in last transmission in case of response interval + * over time */ -#define LIN_TCF_FLAG CAN_TCF_FLAG -#define LIN_EVT_FLAG CAN_EVT_FLAG -#define LIN_CACHE_RESP_FLAG (1 << (CANFD_FLAGS_BITS + 2)) -#define LIN_CHKSUM_EXT_FLAG (1 << (CANFD_FLAGS_BITS + 3)) -#define LIN_SINGLE_RESP_FLAG (1 << (CANFD_FLAGS_BITS + 4)) +#define LIN_CACHE_RESPONSE (1 << (LIN_ID_BITS)) + +/* LIN checksum have two types, default type will be classic checksum */ + +#define LIN_CHECKSUM_EXTENDED (1 << (LIN_ID_BITS + 1)) + +/* Cache LIN frame only work once. then will be clear */ + +#define LIN_SINGLE_RESPONSE (1 << (LIN_ID_BITS + 2)) + +/* TxConfirmation frame. Lower_half use the flag to confirm frame-transmit */ + +#define LIN_TCF_FLAG (1 << (LIN_ID_BITS + 3)) /* LIN Error Indications ****************************************************/ @@ -76,13 +81,14 @@ * The error frame consists of err_flag(LIN_ERR_FLAG)、err_class * (defined in data[0]) and err_reason(defined in data[1] to data[4]). * The error frame is described using the following structure: - * begin_packed_struct struct can_frame { + * struct can_frame { * canid_t can_id; * uint8_t can_dlc; - * uint16_t flags; + * uint8_t __pad; + * uint8_t __res0; * uint8_t __res1; * uint8_t data[CAN_MAX_DLEN] __attribute__((aligned(8))); - * } end_packed_struct; + * }; * * Error frame description format: * @@ -143,6 +149,7 @@ #define LIN_ERR_CRTL_UNSPEC 0x00 /* Unspecified error */ #define LIN_ERR_CRTL_RXOVERFLOW (1 << 0) /* Hardware controller receive overflow */ #define LIN_ERR_CTRL_FRAMEERROR (1 << 1) /* Hardware controller frame error */ +#define LIN_ERR_CTRL_NOISE (1 << 2) /* Hardware controller noise error */ /* LIN States Indications ***************************************************/