Slide 11
Slide 11 text
DSL Example
val sm = stateMachine(initial = MyState.NotLoaned) {
state(MyState.NotLoaned) {
edge(MyEvent.PressRental, next = MyState.Lock)
}
state(MyState.OnLoan,
entry = { println("turnOnRentalLed") },
exit = { println("turnOffRentalLed") }) {
state(MyState.Lock) {
edge(MyEvent.PressReturn, next = MyState.NotLoaned)
edge(MyEvent.PressUnLock, next = MyState.UnLock)
}
state(MyState.UnLock) {
edge(MyEvent.PressLock, next = MyState.Lock)
}
}
}