State machine

Moore

 * from https://stackoverflow.com/questions/1371460/state-machines-tutorials
 * http://web.archive.org/web/20160517005245/http://www.gedan.net/2008/09/08/finite-state-machine-matrix-style-c-implementation
 * http://web.archive.org/web/20160808120758/http://www.gedan.net/2009/03/18/finite-state-machine-matrix-style-c-implementation-function-pointers-addon/
 * http://www.newty.de/fpt/intro.html function pointers and why to use them.
 * DeLoura, Game programming gems chapter 3 on state machines p.215
 * Real-Time Object-Oriented Modeling 1st Edition, Bran Selic

Hackaday
https://hackaday.com/2018/04/06/state-your-intentions-more-clearly-with-state-machines/#more-302326

https://hackaday.com/2015/09/04/embed-with-elliot-practical-state-machines/

https://github.com/pgularski/pysm

https://hackaday.com/2015/08/13/becoming-a-state-machine-design-mastermind/ In C, my favourite way of representing a state machine is with state handler functions, taking an event pointer as an argument and returning a function pointer to the function representing the next state. It is readable, compact, fast and easy to add new states and events.

compilers
http://smc.sourceforge.net

mealy
http://gameprogrammingpatterns.com/state.html

https://www.norwegiancreations.com/2017/03/state-machines-and-arduino-implementation/

https://www.state-machine.com/, https://www.youtube.com/watch?v=O0Z1D6p7J5A&list=PLPW8O6W-1chwyTzI3BHwBLbGQoPFxPAPM&index=19

https://aticleworld.com/state-machine-using-c/

https://www.embedded.com/design/prototyping-and-development/4442212/Implementing-finite-state-machines-in-embedded-systems

instructables
https://www.instructables.com/member/Ren%C3%A9B2/

https://www.instructables.com/id/Finite-State-Machine-on-an-Arduino/

https://www.itemis.com/en/yakindu/state-machine/

snippets
https://web.archive.org/web/20150905150146/http://contrarymotion.net/2008/02/12/some-code-snippets-for-a-simple-c-state-machine/

http://www.techranch.com/blog/index.php?entry=entry070331-214629

ragel
http://www.colm.net/open-source/ragel/

wikipedia
https://en.wikipedia.org/wiki/Event-driven_finite-state_machine

https://en.wikipedia.org/wiki/State_transition_table

structured
https://www.codeproject.com/Articles/37037/Macros-to-simulate-multi-tasking-blocking-code-at#_Toc310 This is a set of macros that can be used to write structured code as if it were blocking code while in an interrupt context. See Gentlenav UAV project, plain c code and interrupt driven, avoids the category error or category mistake that is Oop.

youtube
https://www.youtube.com/watch?v=pxaIyNbcPrA How to translate a Finite State Machine into firmware code, using C++ function pointers.

links
AtmelMicro

Chibios

redis

Mqtt messenger