addamsson
02/06/2020, 7:46 PMian.shaun.thomas
02/06/2020, 7:48 PMaddamsson
02/06/2020, 7:51 PMaddamsson
02/06/2020, 7:51 PMaddamsson
02/06/2020, 7:51 PMian.shaun.thomas
02/06/2020, 7:52 PMaddamsson
02/06/2020, 7:53 PMgenerator
module?addamsson
02/06/2020, 7:53 PMaddamsson
02/06/2020, 7:54 PMcorneil
02/06/2020, 9:26 PMcorneil
02/06/2020, 9:26 PMaddamsson
02/06/2020, 10:15 PMErik Christensen
02/07/2020, 4:50 AMaddamsson
02/07/2020, 4:04 PMaddamsson
02/07/2020, 4:06 PMaddamsson
02/07/2020, 4:07 PMcorneil
02/07/2020, 4:09 PMaddamsson
02/07/2020, 4:09 PMaddamsson
02/07/2020, 4:09 PMaddamsson
02/07/2020, 4:10 PMcorneil
02/07/2020, 5:30 PMaddamsson
02/07/2020, 5:30 PMaddamsson
02/07/2020, 5:30 PMcorneil
02/07/2020, 5:32 PMaddamsson
02/07/2020, 5:35 PMaddamsson
02/07/2020, 5:35 PMaddamsson
02/07/2020, 5:35 PMaddamsson
02/07/2020, 5:35 PMaddamsson
02/07/2020, 5:36 PMcorneil
02/07/2020, 5:38 PMaddamsson
02/07/2020, 5:38 PMaddamsson
02/07/2020, 5:38 PMcorneil
02/07/2020, 5:40 PMcorneil
02/07/2020, 5:41 PMcorneil
02/07/2020, 5:42 PMaddamsson
02/07/2020, 5:43 PMcorneil
02/07/2020, 5:45 PMaddamsson
02/07/2020, 5:47 PMprivate val definition = stateMachine(
TurnstileStates.values().toSet(),
TurnstileEvents::class,
Turnstile::class
) {
initialState {
if (locked)
TurnstileStates.LOCKED
else
TurnstileStates.UNLOCKED
}
default {
onEntry { startState, targetState, _ ->
println("entering:$startState -> $targetState for $this")
}
// default transition will invoke alarm
action { state, event, _ ->
println("Default action for state($state) -> event($event) for $this")
alarm()
}
onExit { startState, targetState, _ ->
println("exiting:$startState -> $targetState for $this")
}
}
// when current state is LOCKED
whenState(TurnstileStates.LOCKED) {
// external transition on COIN to UNLOCKED state
onEvent(TurnstileEvents.COIN to TurnstileStates.UNLOCKED) {
unlock()
}
}
// when current state is UNLOCKED
whenState(TurnstileStates.UNLOCKED) {
// internal transition on COIN
onEvent(TurnstileEvents.COIN) {
returnCoin()
}
// external transition on PASS to LOCKED state
onEvent(TurnstileEvents.PASS to TurnstileStates.LOCKED) {
lock()
}
}
}.build()
addamsson
02/07/2020, 5:47 PMcorneil
02/07/2020, 5:48 PMcorneil
02/07/2020, 5:49 PMcorneil
02/07/2020, 5:51 PMaddamsson
02/07/2020, 5:57 PMaddamsson
02/07/2020, 5:57 PMaddamsson
02/07/2020, 6:02 PMcorneil
02/09/2020, 1:13 PMcorneil
02/09/2020, 1:16 PMaddamsson
02/09/2020, 1:17 PMaddamsson
02/09/2020, 1:18 PMcorneil
02/09/2020, 1:20 PMcorneil
02/09/2020, 1:23 PMaddamsson
02/09/2020, 1:34 PMcorneil
02/09/2020, 9:07 PMaddamsson
03/09/2020, 11:41 AMaddamsson
03/09/2020, 11:42 AMaddamsson
03/09/2020, 11:42 AMaddamsson
03/09/2020, 11:42 AMcorneil
03/09/2020, 2:50 PMcorneil
03/09/2020, 2:58 PMinitialState
in the DSLcorneil
03/09/2020, 3:00 PMcorneil
03/09/2020, 3:01 PMaddamsson
03/09/2020, 3:16 PMaddamsson
03/09/2020, 3:16 PMaddamsson
03/09/2020, 3:17 PM