A state machine is defined by the following:
- A Set of Input Events
- A Set of States
- A Set of Transitions
- An Initial State
- A function that maps input events to state transitions
A state machine starts in a known initial state and responds to a specific set of inputs. Inputs in an MPLAB® Harmony application come from hardware changes or API calls from the user.
Each state monitors its inputs and periodically decides if it should remain in its current state or transition to the next state. Each time a transition occurs, there are usually some side effects (like inserting a byte of data into a hardware FIFO for transmission).