A C++ template library for embedded applications
Designed and maintained by
Aster Consulting Ltd


A set of framework template classes to enable the easy creation of systems.

There are no frameworks defined at the moment, but this is the design brief I have given myself.


To create a set of modular template classes that can be mixed and matched together to provide message routing, finite
state machines, timer driven message generators, message buses and cooperative message passing schedulers.
The framework should use CRTP to eliminate most virtual functions.

The class types


Message types used for all classes.

Message router

A class that will automatically route incoming messages to specific handlers based on the message list defined in the
template parameters.

Finite State Machine

A finite state machine driven by the reception of messages (events) . The incoming messages will be automatically routed
to specific handlers based on the message list defined in the template parameters. Optional 'on entry' and 'on exit'

Timer driven message generators

A class that will be able to hook in to a hardware timer service and generate messages at asynchronous intervals.
This will likely be used in conjunction with the message router and/or finite state machine classes.

Message bus

An expansion of the observer pattern in that message routers will be able to subscribe to messages on a bus.
The messages will be either broadcast, to be automatically picked up by any router that has a handler, or addressed to a
particular router.

Cooperative scheduler

A cooperative multi-tasking message based task scheduler using a message router or FSM as the back-end handler.
A choice of scheduling priorities will be available.