CommRaT 2.0.0
C++20 Real-Time Messaging Framework
Loading...
Searching...
No Matches
commrat::MessageDefinition< PayloadT, Prefix_, SubPrefix_, ID_ > Struct Template Reference

Message definition with compile-time ID assignment. More...

#include <commrat/messaging/message_id.hpp>

Public Types

using Payload = PayloadT
 

Static Public Attributes

static constexpr MessagePrefix prefix = Prefix_
 
static constexpr uint16_t local_id = ID_
 
static constexpr uint8_t subprefix
 
static constexpr bool needs_auto_id = (ID_ == 0xFFFF)
 

Detailed Description

template<typename PayloadT, MessagePrefix Prefix_ = DefaultMessageDef::prefix, auto SubPrefix_ = DefaultMessageDef::user_subprefix, uint16_t ID_ = DefaultMessageDef::id>
struct commrat::MessageDefinition< PayloadT, Prefix_, SubPrefix_, ID_ >

Message definition with compile-time ID assignment.

Template Parameters
PayloadTThe payload type
Prefix_Message prefix (System or UserDefined)
SubPrefix_Category within prefix
ID_Specific ID (0xFFFF = auto-assign)

Examples:

  • MessageDefinition<SubscribeRequest, MessagePrefix::System, SystemSubPrefix::Subscription>
  • MessageDefinition<ScanData> // Defaults to UserDefined::Data with auto ID
  • MessageDefinition<SetPositionCmd, MessagePrefix::UserDefined, UserSubPrefix::Commands, 0x0004>

Definition at line 92 of file message_id.hpp.

Member Typedef Documentation

◆ Payload

template<typename PayloadT , MessagePrefix Prefix_ = DefaultMessageDef::prefix, auto SubPrefix_ = DefaultMessageDef::user_subprefix, uint16_t ID_ = DefaultMessageDef::id>
using commrat::MessageDefinition< PayloadT, Prefix_, SubPrefix_, ID_ >::Payload = PayloadT

Definition at line 93 of file message_id.hpp.

Member Data Documentation

◆ local_id

template<typename PayloadT , MessagePrefix Prefix_ = DefaultMessageDef::prefix, auto SubPrefix_ = DefaultMessageDef::user_subprefix, uint16_t ID_ = DefaultMessageDef::id>
constexpr uint16_t commrat::MessageDefinition< PayloadT, Prefix_, SubPrefix_, ID_ >::local_id = ID_
staticconstexpr

Definition at line 95 of file message_id.hpp.

◆ needs_auto_id

template<typename PayloadT , MessagePrefix Prefix_ = DefaultMessageDef::prefix, auto SubPrefix_ = DefaultMessageDef::user_subprefix, uint16_t ID_ = DefaultMessageDef::id>
constexpr bool commrat::MessageDefinition< PayloadT, Prefix_, SubPrefix_, ID_ >::needs_auto_id = (ID_ == 0xFFFF)
staticconstexpr

Definition at line 115 of file message_id.hpp.

◆ prefix

template<typename PayloadT , MessagePrefix Prefix_ = DefaultMessageDef::prefix, auto SubPrefix_ = DefaultMessageDef::user_subprefix, uint16_t ID_ = DefaultMessageDef::id>
constexpr MessagePrefix commrat::MessageDefinition< PayloadT, Prefix_, SubPrefix_, ID_ >::prefix = Prefix_
staticconstexpr

Definition at line 94 of file message_id.hpp.

◆ subprefix

template<typename PayloadT , MessagePrefix Prefix_ = DefaultMessageDef::prefix, auto SubPrefix_ = DefaultMessageDef::user_subprefix, uint16_t ID_ = DefaultMessageDef::id>
constexpr uint8_t commrat::MessageDefinition< PayloadT, Prefix_, SubPrefix_, ID_ >::subprefix
staticconstexpr
Initial value:
= []() constexpr {
if constexpr (Prefix_ == MessagePrefix::System) {
if constexpr (std::is_same_v<decltype(SubPrefix_), SystemSubPrefix>) {
return static_cast<uint8_t>(SubPrefix_);
} else {
return static_cast<uint8_t>(DefaultMessageDef::system_subprefix);
}
} else {
if constexpr (std::is_same_v<decltype(SubPrefix_), UserSubPrefix>) {
return static_cast<uint8_t>(SubPrefix_);
} else {
return static_cast<uint8_t>(DefaultMessageDef::user_subprefix);
}
}
}()
SystemSubPrefix
System message sub-categories (when Prefix == System)
@ System
Framework control messages (subscription, etc.)
UserSubPrefix
User-defined message sub-categories (when Prefix == UserDefined)
static constexpr UserSubPrefix user_subprefix
static constexpr SystemSubPrefix system_subprefix

Definition at line 98 of file message_id.hpp.


The documentation for this struct was generated from the following file: