From 3fbc9b20ab41b6b353dff43e3800489ef3903867 Mon Sep 17 00:00:00 2001 From: Michal Sojka Date: Wed, 26 May 2010 16:54:01 +0200 Subject: [PATCH] robofsm: Attempt to fix two-phase orange loading --- src/robofsm/common-states.cc | 30 ++++++++++++++++++++++++++---- 1 file changed, 26 insertions(+), 4 deletions(-) diff --git a/src/robofsm/common-states.cc b/src/robofsm/common-states.cc index 9ec297e1..6849fb97 100644 --- a/src/robofsm/common-states.cc +++ b/src/robofsm/common-states.cc @@ -187,24 +187,46 @@ FSM_STATE(climb_the_slope) } } -/* one-state-subautomaton to load oranges in two stages */ +/* subautomaton to load oranges in two stages */ +FSM_STATE_DECL(load_oranges2); FSM_STATE(load_oranges) { switch(FSM_EVENT) { case EV_ENTRY: - FSM_TIMER(500); act_vidle(VIDLE_MIDDLE, VIDLE_MEDIUM_SPEED); break; + case EV_VIDLE_DONE: + FSM_TIMER(500); + break; case EV_TIMER: - // FIXME: respond to VIDLE EVENT + FSM_TRANSITION(load_oranges2); + break; + case EV_MOTION_DONE: + case EV_START: + case EV_RETURN: + case EV_MOTION_ERROR: + case EV_SWITCH_STRATEGY: + DBG_PRINT_EVENT("unhandled event"); + case EV_EXIT: + break; + } +} + +FSM_STATE(load_oranges2) +{ + switch(FSM_EVENT) { + case EV_ENTRY: act_vidle(VIDLE_UP, VIDLE_FAST_SPEED); + break; + case EV_VIDLE_DONE: SUBFSM_RET(NULL); break; + case EV_TIMER: case EV_MOTION_DONE: case EV_START: case EV_RETURN: - case EV_VIDLE_DONE: case EV_MOTION_ERROR: + case EV_SWITCH_STRATEGY: DBG_PRINT_EVENT("unhandled event"); case EV_EXIT: break; -- 2.39.2