15#include "sensorring/platform/SensorringExport.hpp"
80template <>
struct hash<eduart::sensorring::com::ComEndpoint> {
83 std::uint32_t packed = (
static_cast<std::uint32_t
>(ep.
direction) << 16) | (
static_cast<std::uint32_t
>(ep.
boardAddress) << 8) |
static_cast<std::uint32_t
>(ep.
deviceId);
84 return std::hash<std::uint32_t>{}(packed);
Direction
Communication direction on the CAN bus, from the board's perspective.
Definition ComEndpoint.hpp:27
@ Output
Board -> Host (board sends).
Definition ComEndpoint.hpp:30
@ Input
Host -> Board (board receives).
Definition ComEndpoint.hpp:28
@ Broadcast
Alias for Input; used with broadcast board address.
Definition ComEndpoint.hpp:29
bool endpointMatches(const ComEndpoint &subscription, const ComEndpoint &incoming)
Check whether a subscription endpoint matches an incoming endpoint.
Definition ComEndpoint.hpp:67
Uniquely identifies a communication endpoint as a (Direction, BoardAddress, DeviceId) tuple.
Definition ComEndpoint.hpp:37
bool operator!=(const ComEndpoint &other) const
Inequality comparison for ComEndpoint.
std::uint8_t deviceId
0x00 = board, 0x01 = ToF, 0x02 = Thermal, 0x03 = WS2812b
Definition ComEndpoint.hpp:40
bool operator==(const ComEndpoint &other) const
Equality comparison for ComEndpoint (compares direction, board address, and device ID).
std::uint8_t boardAddress
0 = broadcast, 1-126 = individual board (board_index + 1)
Definition ComEndpoint.hpp:39
Direction direction
Host->Board (Input) or Board->Host (Output).
Definition ComEndpoint.hpp:38
static constexpr std::uint8_t BROADCAST
Broadcast board address (node ID 0x00 per existing CAN convention).
Definition ComEndpoint.hpp:55
static constexpr std::uint8_t ANY_BOARD
Subscription wildcard: matches any board address during dispatch.
Definition ComEndpoint.hpp:58
std::string toString() const
Human-readable representation for logging.
std::size_t operator()(const eduart::sensorring::com::ComEndpoint &ep) const
Compute hash value for a ComEndpoint.
Definition ComEndpoint.hpp:82