From 182d7610750ef5ba46f1d2b553c1dd2a2b68c743 Mon Sep 17 00:00:00 2001 From: Jerome Jutteau Date: Thu, 11 Apr 2013 00:28:14 +0200 Subject: digital/io-hub/src/apbirthday: add drinks_served to securise drinks FSM --- digital/io-hub/src/apbirthday/drinks.cc | 19 +++++++++++++++---- 1 file 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) -- cgit v1.2.3