etl/docs/Messaging/messages.md
John Wellbelove 2bf8fd1359 Converted more documentation pages
Modified the site CSS
2026-04-25 12:50:43 +02:00

1.9 KiB

title
Messages

{{< callout type="info">}} Header: message.h
{{< /callout >}}

Message types used for many of the framework classes.


etl::message_id_t

The type used for message ids.
By default can hold a value between 0 and 255.
If ETL_MESSAGE_ID_TYPE is defined then this type will be used instead.


etl::message_router_id_t

The type used for message router ids.
Can hold a value between 0 and 255.


The message classes are the common communication method across all of the message capable frameworks. They are identified by a unique id number that specialises the base class.

imessage

The base class for messages. It is this class that is passed around, usually by const reference.
The class is abstract.


etl::message_id_t get_message_id() const ETL_NOEXCEPT = 0;

Returns the id of the message.


message

message<size_t ID, typename TParent = etl::imessage>

Requires an integral id as the template parameter.
Inherits from TParent, which defaults to etl::imessage.
TParent allows additional base interfaces or functionality to be included.
static asserts if TParent is not a base of etl::imessage.


ID

The id of the message as an enum. Can be accessed by etl::message instances.


TParent

The class that it inherits from. It must ultimately derive from etl::imessage.
The default is etl::imessage.


Example

enum
{
  START,
  STOP,
  SET_SPEED
};

struct MyInterface : public etl::imessage
{
  virtual void DoStuff() = 0;
};

// Start implements MyIterface
struct Start : public etl::message<START, MyInterface>
{
  void DoStuff() override
  {
    // Do stuff here.  
  }
};

struct Stop : public etl::message<STOP>
{
  bool isEmergencyStop;
};

struct SetSpeed : public etl::message<SET_SPEED>
{
  uint32_t speed;
};

void Receive(const etl::imessage& msg);