ES_INIT
transit from psuedo-init state to the initialization state of services
ES_TIMEOUT
triggered when any timer expires
GAME_START
after two coins are inserted and the game will start right away
PLAYING
Buttons or coin are detected to receive input from user, then reset the MASTER_SERVICE_TIMER
USER_LEFT
MASTER_SERVICE_TIMER expired, user left the game and game end
WIN
player win the game, triggering the indication of winning (spaceship wiggles, and LED matrix showing winning message)
LOSE
player lose the game, triggering the indication of losing (spaceship rotate aggressively, and LED matrix showing losing message)
RAW_RIGHT_DOWN
received signal low from right button
RAW_LEFT_DOWN
received signal low from left button
RAW_RIGHT_UP
received signal high from right button
RAW_LEFT_UP
received signal high from left button
RIGHT_DOWN
received signal low from right button and remain low for 1/10 seconds
LEFT_DOWN
received signal low from left button and remain low for 1/10 seconds
RIGHT_UP
received signal high from right button and remain high for 1/10 seconds
LEFT_UP
received signal high from left button and remain high for 1/10 seconds
NEW_CREW_POSITION
update the new crew position to other service
LOSE
post to Master Service when the tilting angle passed win/lose threshold
ES_DISPLAY_UPDATE_STEP
Updating the display