| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- /*
- * Copyright (c) 2006-2022, RT-Thread Development Team
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Change Logs:
- * Date Author Notes
- * 2022-11-26 GuEe-GUI first version
- */
- #ifndef __CAN_DM_H__
- #define __CAN_DM_H__
- #include <drivers/misc.h>
- /* Special address description flags for the CAN_ID */
- #define CAN_EFF_FLAG 0x80000000U /* EFF/SFF is set in the MSB */
- #define CAN_RTR_FLAG 0x40000000U /* Remote transmission request */
- #define CAN_ERR_FLAG 0x20000000U /* Error message frame */
- /* Valid bits in CAN ID for frame formats */
- #define CAN_SFF_MASK 0x000007ffU /* Standard frame format (SFF) */
- #define CAN_EFF_MASK 0x1fffffffU /* Extended frame format (EFF) */
- #define CAN_ERR_MASK 0x1fffffffU /* Omit EFF, RTR, ERR flags */
- #define CANXL_PRIO_MASK CAN_SFF_MASK /* 11 bit priority mask */
- /* CAN payload length and DLC definitions according to ISO 11898-1 */
- #define CAN_MAX_DLC 8
- #define CAN_MAX_RAW_DLC 15
- #define CAN_MAX_DLEN 8
- /* CAN FD payload length and DLC definitions according to ISO 11898-7 */
- #define CANFD_MAX_DLC 15
- #define CANFD_MAX_DLEN 64
- /*
- * To be used in the CAN netdriver receive path to ensure conformance with
- * ISO 11898-1 Chapter 8.4.2.3 (DLC field)
- */
- #define can_get_dlc(v) (rt_min_t(rt_uint8_t, (v), CAN_MAX_DLC))
- #define canfd_get_dlc(v) (rt_min_t(rt_uint8_t, (v), CANFD_MAX_DLC))
- /**
- * @brief Convert CAN DLC value to actual data length
- *
- * Converts a CAN Data Length Code (DLC) to the actual number of data bytes
- * according to ISO 11898-1 and ISO 11898-7 (CAN FD) specifications.
- *
- * @param can_dlc The DLC value (0-15)
- * @return The actual data length in bytes
- */
- rt_uint8_t can_dlc2len(rt_uint8_t can_dlc);
- /**
- * @brief Convert data length to CAN DLC value
- *
- * Converts a data length in bytes to the appropriate CAN Data Length Code (DLC)
- * according to ISO 11898-1 and ISO 11898-7 (CAN FD) specifications.
- *
- * @param len The data length in bytes (0-64)
- * @return The corresponding DLC value (0-15)
- */
- rt_uint8_t can_len2dlc(rt_uint8_t len);
- #endif /* __CAN_DM_H__ */
|