/** * @file * @brief CAN frame ID types. */ #ifndef STA_CAN_ID_HPP #define STA_CAN_ID_HPP #include namespace sta { /** * @defgroup canID Frame IDs * @ingroup canAPI * @brief Types for working with CAN ID values and formats. */ /** * @brief CAN frame ID format. * * @ingroup canID */ enum class CanIdFormat : uint8_t { STD, /**< Standard format */ EXT /**< Extended format */ }; /** * @brief CAN frame ID. * * @ingroup canID */ 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 canID */ 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 * * @ingroup canID */ 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 * * @ingroup canID */ 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 * * @ingroup canID */ 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 * * @ingroup canID */ bool operator !=(const CanFrameId & lhs, const CanFrameId & rhs); } // namespace sta /** * @brief Maximum CAN standard ID value. * * @ingroup canID */ #define CAN_SID_MAX UINT32_C(0x7FF) /** * @brief Maximum CAN extended ID value. * * @ingroup canID */ #define CAN_EID_MAX UINT32_C(0x3FFFF) #endif // STA_CAN_ID_HPP