37constexpr uint32_t
make_message_id(uint8_t prefix, uint8_t subprefix, uint16_t
id) {
38 return (
static_cast<uint32_t
>(prefix) << 24) |
39 (
static_cast<uint32_t
>(subprefix) << 16) |
40 static_cast<uint32_t
>(id);
47 static_cast<uint8_t
>(subprefix),
56 static_cast<uint8_t
>(subprefix),
70 static constexpr uint16_t
id = 0xFFFF;
98 static constexpr uint8_t
subprefix = []()
constexpr {
101 return static_cast<uint8_t
>(SubPrefix_);
106 if constexpr (std::is_same_v<
decltype(SubPrefix_),
UserSubPrefix>) {
107 return static_cast<uint8_t
>(SubPrefix_);
127template<
typename MessageDef>
137template<
typename RequestMessageDef>
139 using Payload =
typename RequestMessageDef::Payload;
141 static constexpr uint8_t
subprefix = RequestMessageDef::subprefix;
144 static constexpr uint16_t
local_id = []()
constexpr {
145 int16_t signed_id =
static_cast<int16_t
>(RequestMessageDef::local_id);
146 return static_cast<uint16_t
>(-signed_id);
CommRaT - Modern C++ Real-Time Communication Framework.
constexpr uint32_t make_message_id(uint8_t prefix, uint8_t subprefix, uint16_t id)
Compile-time message ID construction.
constexpr uint32_t system_message_id(SystemSubPrefix subprefix, uint16_t id)
System message ID helper.
SystemSubPrefix
System message sub-categories (when Prefix == System)
@ Subscription
Subscription protocol messages.
@ Reserved
Reserved for future use.
@ Control
Module control (on/off/reset/etc.)
MessagePrefix
Message ID prefixes.
@ System
Framework control messages (subscription, etc.)
@ UserDefined
User application messages (start from 0x01)
constexpr uint32_t user_message_id(UserSubPrefix subprefix, uint16_t id)
User message ID helper.
UserSubPrefix
User-defined message sub-categories (when Prefix == UserDefined)
@ Events
Event notifications.
@ Custom
User can start custom categories from here.
@ Commands
Command messages.
@ Data
Data messages (sensor data, state, etc.)
Default values for message definition.
static constexpr uint16_t id
static constexpr UserSubPrefix user_subprefix
static constexpr MessagePrefix prefix
static constexpr SystemSubPrefix system_subprefix
Empty payload for messages that only need their ID.
Message definition with compile-time ID assignment.
static constexpr uint8_t subprefix
static constexpr bool needs_auto_id
static constexpr MessagePrefix prefix
static constexpr uint16_t local_id
Define a reply message paired with a request.
static constexpr uint8_t subprefix
static constexpr uint16_t local_id
static constexpr MessagePrefix prefix
typename RequestMessageDef::Payload Payload
static constexpr bool needs_auto_id
static constexpr bool is_reply
Mark a message as a request that expects a reply.
static constexpr bool is_request