Event Manager library

Library overview

Event Manager is a lightweight embedded library that enables event-based communication between software modules without direct coupling.
It helps reduce inter-module dependencies and improves system modularity, scalability, and maintainability.

The library implements the Observer design pattern:
modules can subscribe to specific events, and when an event is triggered, all registered subscribers are notified automatically.

Each subscriber provides a callback function, which is executed sequentially in the context of the event publisher – making execution flow explicit and predictable, a key requirement in many embedded systems. Here is an example of event-based communication between software modules:

eventmanagerdiagram
Key characteristics
  • Loosely coupled architecture – publishers and subscribers are fully decoupled
  • Deterministic behavior – callbacks are executed synchronously and in a defined order
  • Static memory only – no dynamic allocation, suitable for safety-critical and resource-constrained systems
  • Configurable at compile time – tailor memory usage to your project’s needs
Events

Event identifiers are fully user-defined and can be declared using either #define constants or an enum.
Each event ID must fall within the configured event range.

This approach allows the library to integrate cleanly into existing codebases without enforcing a specific naming or event definition scheme.

Configuration & resource usage

The library is designed with memory efficiency in mind:

  • Maximum number of callbacks per event – configurable
  • Total number of supported events – configurable

Default values are suitable for most small to medium embedded projects, while larger systems can increase the limits at the cost of proportional memory usage.

Intended use cases
  • Embedded applications with multiple independent modules
  • Systems where tight coupling must be avoided
  • Projects requiring predictable execution and no dynamic memory
  • Bare-metal or RTOS-based firmware
Documentation & examples
  • Detailed API reference is available in Doxygen documentation
  • A complete example application demonstrates typical usage patterns and integration
  • The example  application is available also in GitHub: EventManager-Example

Are you interested?

All libraries are proprietary and provided strictly under commercial license agreements. Source code is shared only after signing a Software License Agreement.

Scroll to Top