Professional Documents
Culture Documents
state machine)
Data private to the module: MyPriority, CurrentState, DisplayArray,
CursorArray, TargetArray, PeripheralArray, ScoreArray, CursorCenterX,
CursorCenterY, TargetCenterX, TargetCenterY, Score, CrashTimeLength
InitDisplaySM0
Takes a priority number, returns True.
CurrentState is InitPState
If ThisEvent is ES_Init
Configure Digital Output for haptic motor
Call InitializeWelcome
Call MergeArrays
Set CurrentState equals to WelcomeMode
Endif
End InitPState block
CurrentState is WelcomeMode
ThisEvent is BUTTON_PRESS
Call InitializeCursor, InitializeGameStartup,
MergeArrays
Set CurrentState = GameStartup
Post ES_LEDWAIT event to LEDFSM and LED Handle SM
End WelcomeModeBlock
CurrentState is GameStartup
ThisEvent is MOVE_DX
If EventParam - Center > 0
Call ClearPeripheral,
InitializeCursor,InitializeTarget,MergeArrays
Set CrashTimeLength equal to random number
Start crash timer with crash time length
Post ES_SERVOSTART event to ServoTimeService
Set CurrentState equals PlayingMode
ThisEvent is MOVE_DY
If EventParam - Center > 0
Call ClearPeripheral,
InitializeCursor,InitializeTarget,MergeArrays
Set CrashTimeLength equal to random number
Start crash timer with crash time length
Post ES_SERVOSTART event to ServoTimeService
Set CurrentState equals PlayingMode
ThisEvent is SYSTEM_TIMEOUT
Call InitializeWelcome, MergeArrays
Set CurrentState = WelcomeMode
End GameStartup block
CurrentState is PlayingMode
ThisEvent is MOVE_DX
If EventParam - Center > 0
Call MoveRight, MergeArrays
Else if EventParam - Center < 0
Call MoveLeft, MergeArrays
ThisEvent is MOVE_DY
If EventParam - Center > 0
Call MoveUp, MergeArrays
Else if EventParam - Center < 0
Call MoveDown, MergeArrays
ThisEvent is BUTTON_PRESS
If CheckTarget returns true
Call ResetTarget, MergeArrays, IncrementScore
ThisEvent is ES_GRAVITY
Call MoveDown, MergeArrays
ThisEvent is ES_TIMEOUT
Call DisplayCrashWarning, MergeArrays, HapticOn
Set CurrentState equals CrashWarningMode
Start Crash timer
ThisEvent is ES_SERVOTIMEREND
Call DisplayGameEnding, MergeArrays, HapticOff
Set CurrentState equals GameEndingMode
CurrentState is CrashWarningMode
ThisEvent is ES_TIMEOUT
Call DisplayCrashFailure, MergeArrays, HapticOff
Set CurrentState equals CrashFailureMode
Start Crash timer for 5 seconds
ThisEvent is LEVER_PULLED
Call DisplayCrashSuccess, MergeArrays,HapticOff
Set CurrentState equals CrashSuccessMode
CurrentState is CrashSuccessMode
ThisEvent is ES_TIMEOUT
Call ClearAll, InitializeCursor, ResetTarget,
MergeArrays, HapticOff
Set CurrentState = PlayingMode
Set CrashTimeLength equal to random number
Start Crash Timer with CrashTimeLength
ThisEvent is ES_SERVOTIMEREND
Call DisplayGameEnding, MergeArrays,
Set Current State equal to GameEndingMode
Set Crash timer for 5 sec
CurrentState is CrashFailureMode
ThisEvent is ES_TIMEOUT
Call HapticOff, DisplayGameEnding, MergeArrays
Set CurrentState = GameEndingMode
Start Crash Timer with 5 seconds
End CrashFailureMode block
CurrentState is GameEndingMode
ThisEvent is ES_TIMEOUT
Call InitializeWelcome, MergeArrays
Set CurrentState = WelcomeMode
Post ES_SERVORESET event to ServoTimeService
End CrashFailureMode block
Return ES_NO_EVENT
End of RunDisplaySM
MoveUp
Takes no parameters, returns nothing.
End of MoveUp
MoveDown
Takes no parameters, returns nothing.
End of MoveDown
MoveLeft
Takes no parameters, returns nothing.
End of MoveLeft
MoveRight
Takes no parameters, returns nothing.
End of MoveRight
InitializeCursor
Takes no parameters, returns nothing.
Call ClearAll
Call ClearCursor
Add Cursor graphic to CursorArray
End of InitializeCursor
InitializeGameStartup
Takes no parameters, returns nothing.
Call ClearPeripheral
End of InitializeGameStartup
InitializeTarget
Takes no parameters, returns nothing.
End of InitializeTarget
ResetTarget
Takes no parameters, returns nothing.
Call ClearTarget
End of ResetTarget
MergeArrays
Takes no parameters, returns nothing.
End of MergeArrays
InitializeWelcome
Takes no parameters, returns nothing.
Call ClearAll
Call ClearScoreArray
End of InitializeWelcome
ClearCursor
Takes no parameters, returns nothing.
End of ClearCursor
ClearTarget
Takes no parameters, returns nothing.
For all rows in TargetArray
Set TargetArray row to 0
End of ClearTarget
ClearPeripheral
Takes no parameters, returns nothing.
End of ClearPeripheral
ClearAll
Takes no parameters, returns nothing.
End of ClearAll
HapticOn
Takes no parameters, returns nothing.
End of HapticOn
HapticOff
Takes no parameters, returns nothing.
End of HapticOff
CheckTarget
Takes no parameters, returns TargetHit.
End of CheckTarget
DisplayCrashWarning
Takes no parameters, returns nothing.
Call ClearPeripheral
End of DisplayCrashWarning
DisplayCrashSuccess
Takes no parameters, returns nothing.
Call ClearAll
End of DisplayCrashSuccess
DisplayCrashFailure
Takes no parameters, returns nothing.
Call ClearAll
End of DisplayCrashFailure
IncrementScore
Takes no parameters, returns nothing.
End of IncrementScore
ClearScoreArray
Takes no parameters, returns nothing.
End of ClearScoreArray
DisplayGameEnding
Takes no parameters, returns nothing.
Call ClearAll
End of DisplayGameEnding