Controller B - Balance State Machine
This state machine controls the state of the balance system for the whole game and posts events depending on the change of state. Only events from Controller B affect the state of the balance state machine.
InitBalanceFSM
CurrentState = FirstBInit
RunBalanceFSM
switch(CurrentState)
case(FirstBInit)
if ThisEvent = ES_Init
NextState = InitBState
case(InitBState)
if ThisEvent = Begin
if B is Off Balance
NextState = BOffBalance
Send B Off Balance Message to A
else
NextState = BOnBalance
Send B On Balance Message to A
case (BOffBalance)
if ThisEvent is Went On Balanced
NextState = BOnBalance
Send B On Balance message to A
else if ThisEvent is AccessCardRemoved or GameTimeout
NextState = InitBState
case (BOnBalance)
if ThisEvent is BUnbalanced
NextState = BOffBalance
Send B Off Balance Message to A
else if ThisEvent = BalanceComplete
NextState = BSynchroOnBalance
else if ThisEvent is AccessCardRemoved or GameTimeout
NextState = InitBState
case (BSynchroOnBalance)
if ThisEvent is BUnbalanced
NextState = BSynchroOffBalance
Turn Vibration On
Send B Off Balance Message to A
else if ThisEvent is AccessCardRemoved or GameTimeout
NextState = InitBState
case (BSynchroOffBalance)
if ThisEvent is BBalanced
NextState = BSynchroOnBalance
Turn Vibration Off
Send B On Balance Message to A
else if ThisEvent is AccessCardRemoved or GameTimeout
NextState = InitBState
CurrentState = NextState
CurrentState = FirstBInit
RunBalanceFSM
switch(CurrentState)
case(FirstBInit)
if ThisEvent = ES_Init
NextState = InitBState
case(InitBState)
if ThisEvent = Begin
if B is Off Balance
NextState = BOffBalance
Send B Off Balance Message to A
else
NextState = BOnBalance
Send B On Balance Message to A
case (BOffBalance)
if ThisEvent is Went On Balanced
NextState = BOnBalance
Send B On Balance message to A
else if ThisEvent is AccessCardRemoved or GameTimeout
NextState = InitBState
case (BOnBalance)
if ThisEvent is BUnbalanced
NextState = BOffBalance
Send B Off Balance Message to A
else if ThisEvent = BalanceComplete
NextState = BSynchroOnBalance
else if ThisEvent is AccessCardRemoved or GameTimeout
NextState = InitBState
case (BSynchroOnBalance)
if ThisEvent is BUnbalanced
NextState = BSynchroOffBalance
Turn Vibration On
Send B Off Balance Message to A
else if ThisEvent is AccessCardRemoved or GameTimeout
NextState = InitBState
case (BSynchroOffBalance)
if ThisEvent is BBalanced
NextState = BSynchroOnBalance
Turn Vibration Off
Send B On Balance Message to A
else if ThisEvent is AccessCardRemoved or GameTimeout
NextState = InitBState
CurrentState = NextState