mirror of
https://github.com/apache/nuttx.git
synced 2026-06-02 01:21:26 +08:00
LIN:adjust the LIN flag
Fix incorrect and non-existent flag usage in LIN handling: - Replace undefined CANFD_FLAGS_BITS usage with valid bit definitions. - Reassign CAN_TCF_FLAG to an available flag bit, as it is not defined in can.h. - Add an identifier for LIN noise error frames. Signed-off-by: wangxiaoxin <wangxiaoxin@xiaomi.com>
This commit is contained in:
+36
-29
@@ -40,35 +40,40 @@
|
|||||||
#define LIN_ID_MASK ((1 << LIN_ID_BITS) - 1)
|
#define LIN_ID_MASK ((1 << LIN_ID_BITS) - 1)
|
||||||
#define LIN_ID_MAX LIN_ID_MASK
|
#define LIN_ID_MAX LIN_ID_MASK
|
||||||
|
|
||||||
#define LIN_CTRL_FLAG CAN_EFF_FLAG /* Describe control information (such as write etc.) */
|
/* 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 */
|
|
||||||
|
|
||||||
/* Bit flags on can_frame.types
|
#define LIN_CTRL_FLAG CAN_EFF_FLAG
|
||||||
*
|
|
||||||
* Use can_frame.types to identify other special frame.
|
/* Describe the direction of sending and receiving */
|
||||||
*
|
|
||||||
* LIN_TCF_FLAG : TxConfirmation message frame. Lower_half use this flag to
|
#define LIN_RTR_FLAG CAN_RTR_FLAG
|
||||||
* confirm frame-transmit
|
|
||||||
*
|
/* The flag indicate this is LIN err_frame */
|
||||||
* LIN_EVT_FLAG : Event message frame. Lower_half use this flag to report
|
|
||||||
* state switch event
|
#define LIN_ERR_FLAG CAN_ERR_FLAG
|
||||||
*
|
|
||||||
* LIN_CACHE_RESP_FLAG: When slave response to master, slave node should send
|
/* Lower_half report state switch event frame */
|
||||||
* frame immediately which already be cached in last
|
|
||||||
* transmission in case of response interval over time.
|
#define LIN_EVT_FLAG CAN_EVT_FLAG
|
||||||
*
|
|
||||||
* LIN_CHKSUM_EXT_FLAG: LIN checksum have two types, default type will be
|
/* When slave response to master, slave node should send frame immediately
|
||||||
* classic checksum
|
* which already be cached in last transmission in case of response interval
|
||||||
*
|
* over time
|
||||||
* LIN_SINGLE_RESP_FLAG: Cache LIN frame only work once, then will be cleared
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define LIN_TCF_FLAG CAN_TCF_FLAG
|
#define LIN_CACHE_RESPONSE (1 << (LIN_ID_BITS))
|
||||||
#define LIN_EVT_FLAG CAN_EVT_FLAG
|
|
||||||
#define LIN_CACHE_RESP_FLAG (1 << (CANFD_FLAGS_BITS + 2))
|
/* LIN checksum have two types, default type will be classic checksum */
|
||||||
#define LIN_CHKSUM_EXT_FLAG (1 << (CANFD_FLAGS_BITS + 3))
|
|
||||||
#define LIN_SINGLE_RESP_FLAG (1 << (CANFD_FLAGS_BITS + 4))
|
#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 ****************************************************/
|
/* LIN Error Indications ****************************************************/
|
||||||
|
|
||||||
@@ -76,13 +81,14 @@
|
|||||||
* The error frame consists of err_flag(LIN_ERR_FLAG)、err_class
|
* 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]).
|
* (defined in data[0]) and err_reason(defined in data[1] to data[4]).
|
||||||
* The error frame is described using the following structure:
|
* The error frame is described using the following structure:
|
||||||
* begin_packed_struct struct can_frame {
|
* struct can_frame {
|
||||||
* canid_t can_id;
|
* canid_t can_id;
|
||||||
* uint8_t can_dlc;
|
* uint8_t can_dlc;
|
||||||
* uint16_t flags;
|
* uint8_t __pad;
|
||||||
|
* uint8_t __res0;
|
||||||
* uint8_t __res1;
|
* uint8_t __res1;
|
||||||
* uint8_t data[CAN_MAX_DLEN] __attribute__((aligned(8)));
|
* uint8_t data[CAN_MAX_DLEN] __attribute__((aligned(8)));
|
||||||
* } end_packed_struct;
|
* };
|
||||||
*
|
*
|
||||||
* Error frame description format:
|
* Error frame description format:
|
||||||
*
|
*
|
||||||
@@ -143,6 +149,7 @@
|
|||||||
#define LIN_ERR_CRTL_UNSPEC 0x00 /* Unspecified error */
|
#define LIN_ERR_CRTL_UNSPEC 0x00 /* Unspecified error */
|
||||||
#define LIN_ERR_CRTL_RXOVERFLOW (1 << 0) /* Hardware controller receive overflow */
|
#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_FRAMEERROR (1 << 1) /* Hardware controller frame error */
|
||||||
|
#define LIN_ERR_CTRL_NOISE (1 << 2) /* Hardware controller noise error */
|
||||||
|
|
||||||
/* LIN States Indications ***************************************************/
|
/* LIN States Indications ***************************************************/
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user