Minimalistic implementation of Active Object pattern + FSM for embedded systems. Static memory allocation only.
- Active Object pattern (Actors) wiki Actors
- Finite State Machine (Moore+Mealy) wiki FSM
- Transition table
- State entry/transition/exit actions
- 100% Code coverage
$ git submodule init && git submodule update --remote
$ make # compile to bin/
TODO: Blinky: simple LED on/off demo
TODO: Request: retry/timeout, transition table demo
TODO: Request: retry after delay + rety/timeout, transition table demo
- file names
- snake_case
- variables
- MODULE_camelCase for module global variables
- camelCase for local variables
- functions
- MODULE_PascalCase for module public functions
- _camelCase for module private functions
- types
- UPPER_CASE for #define or constants
- UPPER_CASE for enums
- TPascalCase for typedef struct
- PascalCase for struct
Diagrams are generated with help of Graphviz .dot engine. To generate locally:
$ brew install graphviz # install Graphviz (MacOS)
$ for file in ./**/*.gv; do dot -Tsvg "$file" > "${file%.gv}.svg"; done # dot -Tsvg file.gv > file.svg
Codecov Graph: