| /* traffic light synchronizer, using states in an event-driven model */ |
| #include <time> |
| main() state green_wait |
| @keypressed(key) <green_wait> state yellow_wait |
| @keypressed(key) <red_walk, red_wait> state red_walk |
| @keypressed(key) <> {} /* fallback */ |
| @timer() <yellow_wait> state red_walk |
| @timer() <red_walk> state red_wait |
| @timer() <red_wait> state green_wait |
| @timer() <> {} /* fallback */ |
| entry() <green_wait> |
| print "Green / Don't walk\n" |
| entry() <yellow_wait> |
| { |
| print "Yellow / Don't walk\n" |
| settimer 2000 |
| } |
| entry() <red_walk> |
| { |
| print "Red / Walk\n" |
| settimer 5000 |
| } |
| entry() <red_wait> |
| { |
| print "Red / Don't walk\n" |
| settimer 2000 |
| } |
| |