/* subautomaton to load oranges in two stages */
FSM_STATE_DECL(load_oranges2);
+FSM_STATE_DECL(load_oranges3);
FSM_STATE(load_oranges)
{
switch(FSM_EVENT) {
case EV_ENTRY:
- FSM_TIMER(2000);
+ FSM_TIMER(1000);
act_vidle(VIDLE_MIDDLE, VIDLE_MEDIUM_SPEED);
break;
case EV_VIDLE_DONE:
{
switch(FSM_EVENT) {
case EV_ENTRY:
- act_vidle(VIDLE_UP, 5);
- FSM_TIMER(2000);
+ act_vidle(VIDLE_UP, VIDLE_MEDIUM_SPEED);
+ FSM_TIMER(1000);
+ break;
+ case EV_VIDLE_DONE:
+ FSM_TRANSITION(load_oranges3);
+ //SUBFSM_RET(NULL);
+ break;
+ case EV_TIMER:
+ FSM_TRANSITION(load_oranges3);
+ //SUBFSM_RET(NULL);
+ 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:
+ act_vidle(VIDLE_UP-1, VIDLE_FAST_SPEED);
+ break;
+ }
+}
+
+FSM_STATE(load_oranges3)
+{
+ switch(FSM_EVENT) {
+ case EV_ENTRY:
+ act_vidle(VIDLE_MIDDLE, 0);
+ FSM_TIMER(500);
break;
case EV_VIDLE_DONE:
SUBFSM_RET(NULL);
case EV_SWITCH_STRATEGY:
DBG_PRINT_EVENT("unhandled event");
case EV_EXIT:
- act_vidle(VIDLE_UP-1, VIDLE_FAST_SPEED);
+ act_vidle(VIDLE_UP, VIDLE_FAST_SPEED);
break;
}
}