Releases: linkmonitor/eventrouter
Fix m_next handling in the baremetal implementation
This adds logic to initialize the m_next
field in the ErEvent_t
structs via INIT_ER_EVENT()
and to clear this field in ErGetEventToDeliver()
.
Full Changelog: v2.2.3...v2.2.4
Update ErEventInit() for ER_BAREMETAL
This is a minor release that makes ErEventInit()
initialize all ErEvent_t
fields. Previously, the m_next
field was left uninitialized for the ER_BAREMETAL
implementation.
Address issue with non-trivial designated initializers
Some versions of GCC do not support non-trivial designated initializers. This causes problems with how <repo>/eventrouter/internal/atomic.h
defines atomic_int
and how that values of that type are initialized by INIT_ER_EVENT()
. This release splits the implementation of INIT_ER_EVENT()
to initialize atomic_int
fields more portably.
Compilation Fixes
This release removes an unused label from eventrouter_baremetal.c
that caused build errors for some clients and fixes the FreeRTOS version pulled in by FetchContent to avoid transient build failures.
Bare Metal Bugfixes
This commit fixes major bugs in the baremetal implementation. All clients of the baremetal implementation are advised to upgrade from 2.1.0 to 2.2.0 or beyond.
Bare Metal Event Router
Adds a version of the Event Router that works on bare metal devices. Users of the v2.0.0 shouldn't have to change anything, and shouldn't have anything change, by updating to this version.
ErModule_t Structures
This release changes how modules are declared and identified in an Event-Router-based application. Before this release, modules used an ErModuleId_t
to identify themselves and enable routing; those IDs were the addresses of entries in an application-level list and had several nice properties which aren't worth mentioning now.
This release replaces those IDs with ErModule_t
structures. These structures allow modules to initialize events statically and simplify the implementation of the Event Router greatly.
Initial Design
This release relies on ErModuleId_t
to identify modules and perform the Task -> Module -> Event mapping that power the Event Router. While usable, this release will likely be supplanted by a v.2.0.0 based on ErModule_t
objects relatively soon.