summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJerome Jutteau2013-04-11 00:28:14 +0200
committerJerome Jutteau2013-04-11 00:28:14 +0200
commit182d7610750ef5ba46f1d2b553c1dd2a2b68c743 (patch)
treef443f81917a03dbabde8a31a6b874364de29ed8f
parentade5fda0a16b77de980daff51bba8d92f122cb38 (diff)
digital/io-hub/src/apbirthday: add drinks_served to securise drinks FSM
-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)