bin_PROGRAMS += competition
competition_SOURCES = competition.cc common-states.cc \
strategy_opp_corn.cc strategy_opp_oranges.cc \
- strategy_12_oranges.cc
+ strategy_12_oranges.cc strategy_six_oranges.cc
bin_PROGRAMS += homologation
homologation_SOURCES = homologation.cc
extern struct TrajectoryConstraints tcFast, tcSlow, tcVerySlow;
-FSM_STATE_DECL(start_opp_oranges);
+FSM_STATE_DECL(start_six_oranges);
FSM_STATE_DECL(start_12_oranges);
FSM_STATE_DECL(start_opp_corn);
+FSM_STATE_DECL(start_opp_oranges);
FSM_STATE_DECL(climb_the_slope);
//robot.fsm.main.state = &fsm_state_main_start_opp_corn;
//robot.fsm.main.state = &fsm_state_main_start_opp_oranges;
- robot.fsm.main.state = &fsm_state_main_start_12_oranges;
+ robot.fsm.main.state = &fsm_state_main_start_six_oranges;
//robot.fsm.main.transition_callback = trans_callback;
//robot.fsm.motion.transition_callback = move_trans_callback;
--- /dev/null
+#include "common-states.h"
+#include "robot.h"
+#include "eb2010misc.h"
+
+static FSM_STATE_DECL(pick_our_oranges);
+
+FSM_STATE(start_six_oranges)
+{
+ switch (FSM_EVENT) {
+ case EV_ENTRY:
+ start_entry();
+#ifdef COMPETITION
+ printf("waiting for start\n");
+ FSM_TIMER(1000);
+ break;
+#endif
+ case EV_START:
+ start_go();
+ FSM_TRANSITION(pick_our_oranges);
+ break;
+ case EV_TIMER:
+ FSM_TIMER(1000);
+ start_timer();
+ break;
+ case EV_EXIT:
+ start_exit();
+ break;
+ case EV_SWITCH_STRATEGY:
+ FSM_TRANSITION(start_12_oranges);
+ break;
+ default:;
+ }
+}
+
+
+#undef FSM_STATE_VISIBILITY
+#define FSM_STATE_VISIBILITY static
+
+FSM_STATE_DECL(pick_rest_of_our_oranges);
+FSM_STATE_DECL(unload_oranges);
+FSM_STATE_DECL(pick_opp_oranges);
+FSM_STATE_DECL(opp_corns);
+
+FSM_STATE(pick_our_oranges)
+{
+ switch (FSM_EVENT) {
+ case EV_ENTRY: SUBFSM_TRANSITION(approach_the_slope, new slope_approach_style(MINE, NEAR_PLAYGROUND_BOUNDARY)); break;
+ case EV_RETURN: FSM_TRANSITION(pick_rest_of_our_oranges); break;
+ default: break;
+ }
+}
+
+FSM_STATE(pick_rest_of_our_oranges)
+{
+ switch (FSM_EVENT) {
+ case EV_ENTRY: SUBFSM_TRANSITION(approach_the_slope, new slope_approach_style(MINE, NEAR_PLAYGROUND_CENTER)); break;
+ case EV_RETURN: FSM_TRANSITION(unload_oranges); break;
+ default: break;
+ }
+}
+
+FSM_STATE(unload_oranges)
+{
+ switch (FSM_EVENT) {
+ case EV_ENTRY: SUBFSM_TRANSITION(to_cntainer_and_unld, NULL); break;
+ case EV_RETURN: FSM_TRANSITION(opp_corns); break;
+ default: break;
+ }
+}
+
+FSM_STATE(opp_corns)
+{
+ switch (FSM_EVENT) {
+ case EV_ENTRY: SUBFSM_TRANSITION(approach_next_corn, NULL); break;
+ case EV_RETURN: FSM_TRANSITION(opp_corns); break;
+ default: break;
+ }
+}