31 typename UserRegistry,
33 typename... CommandTypes
38 sizeof...(CommandTypes) == 0,
49 std::optional<CmdMailbox>
cmd;
50 std::optional<WorkMailbox>
work;
58 static constexpr uint32_t
calculate_base(uint8_t system_id, uint8_t instance_id) {
59 constexpr uint32_t type_id = UserRegistry::template get_message_id<OutputType>();
60 constexpr uint16_t type_id_low =
static_cast<uint16_t
>(type_id & 0xFFFF);
61 return (
static_cast<uint32_t
>(type_id_low) << 16) | (system_id << 8) | instance_id;
69 template<std::
size_t OutputIndex = 0>
72 uint8_t sys_id, inst_id;
86 .max_message_size = UserRegistry::max_message_size,
87 .send_priority =
static_cast<uint8_t
>(config.
priority),
89 .mailbox_name = config.
name +
"_cmd_" +
typeid(OutputType).name()
97 .send_priority =
static_cast<uint8_t
>(config.
priority),
99 .mailbox_name = config.
name +
"_work_" +
typeid(OutputType).name()
106 .max_message_size = UserRegistry::max_message_size,
107 .send_priority =
static_cast<uint8_t
>(config.
priority),
109 .mailbox_name = config.
name +
"_publish_" +
typeid(OutputType).name()
static constexpr size_t max_message_size
Mailbox that takes a MessageRegistry and exposes payload-only interface.
Type-restricted mailbox with optimized buffer sizing.
CommRaT - Modern C++ Real-Time Communication Framework.
Complete set of mailboxes for one output type.
std::optional< CmdMailbox > cmd
std::optional< PublishMailbox > publish
std::optional< WorkMailbox > work
std::conditional_t< sizeof...(CommandTypes)==0, TypedMailbox< UserRegistry, SendOnlyTypes< OutputType > >, TypedMailbox< UserRegistry, ReceiveTypes< CommandTypes... >, SendOnlyTypes< OutputType > > > CmdMailbox
void initialize(const ModuleConfig &config)
Initialize all mailboxes in this set.
static constexpr uint32_t calculate_base(uint8_t system_id, uint8_t instance_id)
Calculate base address for this output type.
uint8_t system_id() const
Get system_id - NoOutput or SimpleOutput only.
uint8_t instance_id() const
Get instance_id - NoOutput or SimpleOutput only.
bool has_multi_output_config() const
Tag type to mark send-only types in template parameter.
Type-restricted mailbox with optimized buffer sizing (Phase 7)