Professional Documents
Culture Documents
RunREFService(CurrentEvent)
Switch on CurrentState
Case WAITING:
Set ReturnEvent and CurrentEvent to return value of
DuringWaiting function with parameter CurrentEvent
If EventType of CurrentEvent is not ES_NO_EVENT
Switch on EventType of CurrentEvent
Case ES_TIMEOUT
If EventParam of CurrentEvent is REF_QUERY_TIMER
Put 4 state querying bytes into the transmit register
Enable transmit interrupt
Reset Byte variable
Clear QueryingScore bool
Set NextState to SENDING
Set MakeTransition to true
Endif
Break
Case EV_SCORE_UPDATE
Put 4 score querying bytes into the transmit register
Enable transmit interrupt
Reset Byte variable
Set QueryingScore bool
Set NextState to SENDING
Set MakeTransition to true
Endif
Break
Case EV_STATE_UPDATE
Put 4 state querying bytes into the transmit register
Enable transmit interrupt
Reset Byte variable
Set QueryingScore bool
Set NextState to SENDING
Set MakeTransition to true
Endif
Break
Endswitch
Endif
Break
Case SENDING:
Set ReturnEvent and CurrentEvent to return value of
DuringWaitingForBallWheel function with parameter CurrentEvent
If EventType of CurrentEvent is not ES_NO_EVENT
Switch on EventType of CurrentEvent
Case EV_EOM:
Set NextState to DELAY
Check Bytes for errors
If error free, store Bytes in message variables
If it was a state update, run Check4StateChange
Set MakeTransition to true
Set EventType of ReturnEvent to ES_NO_EVENT
Break
Endswitch
Endif
Break
Case DELAY:
Set ReturnEvent and CurrentEvent to return value of
DuringWaitingForShot function with parameter CurrentEvent
If EventType of CurrentEvent is not ES_NO_EVENT
Switch on EventType of CurrentEvent
Case ES_TIMEOUT
If EventParam of CurrentEvent is REF_WAIT_TIMER
Set NextState to WAITING
Set MakeTransition to true
Set EventType of ReturnEvent to ES_NO_EVENT
Endif
Break
Endswitch
Endif
Break
Endswitch
If MakeTransition is true
Set EventType of CurrentEvent to ES_EXIT
Call RunREFService function with parameter CurrentEvent
Set CurrentState to NextState
Call RunREFService with parameter EntryEventKind
Endif
Return ReturnEvent
End of function
StartREFService(CurrentEvent)
End of function
QueryREFService
Return CurrentState
End of function
EOT_ISR(void)
End of ISR
Check4StateChange(void)
End of function
DuringWaiting(Event)
Return ReturnEvent
End of function
DuringSending(Event)
Return ReturnEvent
End of function
DuringDelay(Event)
Return ReturnEvent
End of function