summaryrefslogtreecommitdiff
path: root/digital/io-hub/src/apbirthday/drinks.cc
diff options
context:
space:
mode:
Diffstat (limited to 'digital/io-hub/src/apbirthday/drinks.cc')
-rw-r--r--digital/io-hub/src/apbirthday/drinks.cc19
1 files changed, 15 insertions, 4 deletions
diff --git a/digital/io-hub/src/apbirthday/drinks.cc b/digital/io-hub/src/apbirthday/drinks.cc
index c75bde39..e102bcac 100644
--- a/digital/io-hub/src/apbirthday/drinks.cc
+++ b/digital/io-hub/src/apbirthday/drinks.cc
@@ -171,10 +171,21 @@ FSM_TRANS_TIMEOUT (DRINKS_TAKE_FIXING_UP, 100, DRINKS_READY)
robot->fsm_queue.post (FSM_EVENT (drinks_taken));
}
-FSM_TRANS (DRINKS_READY, drinks_serve, DRINKS_SERVE_SERVING)
-{
- Drinks::upper_down ();
- Drinks::lower_close ();
+FSM_TRANS (DRINKS_READY, drinks_serve,
+ has_drinks, DRINKS_SERVE_SERVING,
+ no_drinks, DRINKS_READY)
+{
+ if (robot->drinks.nb () > 0)
+ {
+ Drinks::upper_down ();
+ Drinks::lower_close ();
+ return FSM_BRANCH (has_drinks);
+ }
+ else
+ {
+ robot->fsm_queue.post (FSM_EVENT (drinks_served));
+ return FSM_BRANCH (no_drinks);
+ }
}
FSM_TRANS_TIMEOUT (DRINKS_SERVE_SERVING, 100, DRINKS_SERVE_LIBERATING)