active-object-fsm
Minimalistic implementation of Active Object pattern + FSM for embedded systems. Static memory allocation only.
Features
- [x] Active Object pattern (Actors) wiki Actors
- [x] Finite State Machine (Moore+Mealy) wiki FSM
- [x] Transition table
- [x] State entry/transition/exit actions
- [ ] 100% Code coverage
Documentation
Doxygen docs
Initialization
$ git submodule init && git submodule update --remote
$ make # compile to bin/
Examples
TODO: Blinky: simple LED on/off demo
TODO: Request: retry/timeout, transition table demo
TODO: Request: retry after delay + rety/timeout, transition table demo
Side notes
Naming conventions
- file names
- 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
Docs diagrams
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
Code coverage
Codecov Graph: