mirror of
https://git.intern.spaceteamaachen.de/ALPAKA/sta-core.git
synced 2025-06-10 16:55:58 +00:00
111 lines
2.4 KiB
C++
111 lines
2.4 KiB
C++
/**
|
|
* @file
|
|
* @brief CAN frame ID types.
|
|
*/
|
|
#ifndef STA_CORE_CAN_ID_HPP
|
|
#define STA_CORE_CAN_ID_HPP
|
|
|
|
#include <cstdint>
|
|
|
|
|
|
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
|