78 #define RDM_UID_EQUAL(uidptr1, uidptr2) ((uidptr1)->manu == (uidptr2)->manu && (uidptr1)->id == (uidptr2)->id)
88 #define RDM_INIT_STATIC_UID(uidptr, manu_val, id_val) \
91 (uidptr)->manu = (manu_val); \
92 (uidptr)->id = (id_val); \
100 #define RDMNET_INIT_DYNAMIC_UID_REQUEST(uidptr, manu_val) \
103 (uidptr)->manu = (0x8000u | (manu_val)); \
112 #define RDMNET_INIT_DEVICE_MANU_BROADCAST(uidptr, manu_val) \
115 (uidptr)->manu = kRdmnetDeviceBroadcastUid.manu; \
116 (uidptr)->id = (kRdmnetDeviceBroadcastUid.id & ((manu_val << 16) | 0xffffu)); \
127 #define RDM_UID_IS_BROADCAST(uidptr) ((uidptr)->manu == kRdmBroadcastUid.manu && (uidptr)->id == kRdmBroadcastUid.id)
135 #define RDMNET_UID_IS_CONTROLLER_BROADCAST(uidptr) \
136 ((uidptr)->manu == kRdmnetControllerBroadcastUid.manu && (uidptr)->id == kRdmnetControllerBroadcastUid.id)
144 #define RDMNET_UID_IS_DEVICE_BROADCAST(uidptr) \
145 ((uidptr)->manu == kRdmnetDeviceBroadcastUid.manu && (uidptr)->id == kRdmnetDeviceBroadcastUid.id)
159 #define RDMNET_UID_IS_DEVICE_MANU_BROADCAST(uidptr) \
160 ((uidptr)->manu == kRdmnetDeviceBroadcastUid.manu && (((uidptr)->id & 0xffffu) == 0xffffu))
174 #define RDMNET_DEVICE_BROADCAST_MANU_MATCHES(uidptr, manu_val) (RDMNET_DEVICE_BROADCAST_MANU_ID(uidptr) == manu_val)
185 #define RDMNET_DEVICE_BROADCAST_MANU_ID(uidptr) ((uint16_t)((uidptr)->id >> 16))
197 #define RDM_UID_IS_NULL(uidptr) ((uidptr)->manu == 0 && (uidptr)->id == 0)
205 #define RDMNET_UID_IS_DYNAMIC_UID_REQUEST(uidptr) ((((uidptr)->manu & 0x8000u) != 0) && (uidptr)->id == 0u)
216 #define RDMNET_UID_IS_DYNAMIC(uidptr) \
217 ((((uidptr)->manu & 0x8000u) != 0) && !RDMNET_UID_IS_CONTROLLER_BROADCAST(uidptr) && \
218 !RDMNET_UID_IS_DEVICE_MANU_BROADCAST(uidptr) && !RDM_UID_IS_BROADCAST(uidptr) && \
219 !RDMNET_UID_IS_DYNAMIC_UID_REQUEST(uidptr))
230 #define RDMNET_UID_IS_STATIC(uidptr) (!RDM_UID_IS_NULL(uidptr) && ((uidptr)->manu & 0x8000u) == 0)
237 #define RDM_GET_MANUFACTURER_ID(uidptr) ((uidptr)->manu & 0x7fffu)
244 #define RDM_GET_DEVICE_ID(uidptr) ((uidptr)->id)
256 #define RDM_UID_STRING_BYTES 14
271 constexpr
bool operator==(
const RdmUid& a,
const RdmUid& b) noexcept
273 return ((a.manu == b.manu && a.id == b.id));
281 constexpr
bool operator<(
const RdmUid& a,
const RdmUid& b) noexcept
283 return ((a.manu == b.manu) ? (a.id < b.id) : (a.manu < b.manu));
const RdmUid kRdmnetControllerBroadcastUid
Definition: uid.c:28
int rdm_uid_compare(const RdmUid *a, const RdmUid *b)
Compare two UIDs.
Definition: uid.c:51
bool rdm_uid_to_string(const RdmUid *uid, char *buf)
Create a string representation of a UID.
Definition: uid.c:79
const RdmUid kRdmnetDeviceBroadcastUid
Definition: uid.c:29
bool rdm_string_to_uid(const char *str, RdmUid *uid)
Create a UID from a string representation.
Definition: uid.c:100
const RdmUid kRdmBroadcastUid
Definition: uid.c:27
uint16_t manu
Definition: uid.h:66
uint32_t id
Definition: uid.h:67