/** * @file * @brief CAN frame ID types. */ #ifndef STA_CORE_CAN_ID_HPP #define STA_CORE_CAN_ID_HPP #include namespace sta { /** * @defgroup sta_core_can_ids Frame IDs * @ingroup sta_core_can * @brief Types for working with CAN ID values and formats. */ /** * @brief CAN frame ID format. * * @ingroup sta_core_can_ids */ enum class CanIdFormat : uint8_t { STD, /**< Standard format */ EXT /**< Extended format */ }; /** * @brief CAN frame ID. * * @ingroup sta_core_can_ids */ struct CanId { uint32_t sid; /**< Standard ID field (11 bits) */ uint32_t eid; /**< Extended ID field (18 bits) */ }; /** * @brief CAN frame ID and format. * * @ingroup sta_core_can_ids */ struct CanFrameId { CanIdFormat format; /**< ID format */ uint32_t sid; /**< Standard ID field (11 bits) */ uint32_t eid; /**< Extended ID field (18 bits) */ }; // Comparison operators // /** * @brief Equal to operator. * * @param lhs Left hand side CAN ID * @param rhs Right hand side CAN ID * @return True if CAN IDs are equal */ bool operator ==(const CanId & lhs, const CanId & rhs); /** * @brief Not equal to operator. * * @param lhs Left hand side CAN ID * @param rhs Right hand side CAN ID * @return True if CAN IDs are not equal */ bool operator !=(const CanId & lhs, const CanId & rhs); /** * @brief Equal to operator. * * @param lhs Left hand side CAN Frame ID * @param rhs Right hand side CAN Frame ID * @return True if CAN Frame IDs are equal */ bool operator ==(const CanFrameId & lhs, const CanFrameId & rhs); /** * @brief Not equal to operator. * * @param lhs Left hand side CAN Frame ID * @param rhs Right hand side CAN Frame ID * @return True if CAN Frame IDs are not equal */ bool operator !=(const CanFrameId & lhs, const CanFrameId & rhs); } // namespace sta /** * @brief Maximum CAN standard ID value. * * @ingroup sta_core_can_ids */ #define CAN_SID_MAX UINT32_C(0x7FF) /** * @brief Maximum CAN extended ID value. * * @ingroup sta_core_can_ids */ #define CAN_EID_MAX UINT32_C(0x3FFFF) #endif // STA_CORE_CAN_ID_HPP