]> rtime.felk.cvut.cz Git - eurobot/public.git/blob - src/robofsm/strategy_get_central_buillon.cc
robofsm: Strategy
[eurobot/public.git] / src / robofsm / strategy_get_central_buillon.cc
1 #include "common-states.h"
2 #include "robot.h"
3 #include <ul_log.h>
4
5
6 UL_LOG_CUST(ulogd_strategy_get_central_buillon); /* Log domain name = ulogd + name of the file */
7 static FSM_STATE_DECL(pick_central_buillon);
8
9
10 FSM_STATE(get_central_buillon_first)
11 {
12         switch (FSM_EVENT) {
13                 case EV_ENTRY:
14                         start_entry();
15 #ifdef COMPETITION
16                         ul_logmsg("waiting for start\n");
17                         FSM_TIMER(1000);
18                         break;
19 #endif
20                 case EV_START:
21                         start_go();
22                         FSM_TRANSITION(pick_central_buillon);
23                         break;
24                 case EV_TIMER:
25                         FSM_TIMER(1000);
26                         start_timer();
27                         break;
28                 case EV_EXIT:
29                         start_exit();
30                         break;
31                 case EV_SWITCH_STRATEGY:
32                         FSM_TRANSITION(calibrate);
33                         break;
34                 default:;
35         }
36 }
37 #undef FSM_STATE_VISIBILITY
38 #define FSM_STATE_VISIBILITY static
39
40 FSM_STATE_DECL(bottle_bw);
41 FSM_STATE_DECL(pick_buillon_from_totem1);
42 FSM_STATE_DECL(pick_buillon_from_totem2);
43
44
45 FSM_STATE(pick_central_buillon)
46 {
47         switch (FSM_EVENT) {
48                 case EV_ENTRY:
49                         SUBFSM_TRANSITION(approach_central_buillon,NULL);
50                         break;
51                 case EV_RETURN:
52                         FSM_TRANSITION(bottle_bw);
53                         break;
54                 default:
55                         break;
56         }
57 }
58
59 FSM_STATE(bottle_bw)
60 {
61         switch (FSM_EVENT) {
62                 case EV_ENTRY:
63                         SUBFSM_TRANSITION(push_bottle_bw,NULL);
64                         up = false;
65                         break;
66                 case EV_RETURN:
67                         FSM_TRANSITION(pick_buillon_from_totem1);
68                         break;
69                 default:
70                         break;
71         }
72 }
73
74 FSM_STATE(pick_buillon_from_totem1)
75 {
76         switch (FSM_EVENT) {
77                 case EV_ENTRY:
78                         totem_x = 1.1;
79                         totem_y = 0.875;
80                         SUBFSM_TRANSITION(leave_home,NULL);
81                         break;
82                 case EV_RETURN:
83                         FSM_TRANSITION(pick_buillon_from_totem2);
84                         break;
85                 default:
86                         break;
87         }
88 }
89
90 FSM_STATE(pick_buillon_from_totem2)
91 {
92         switch (FSM_EVENT) {
93                 case EV_ENTRY:
94                         up = true;
95                         totem_x = 1.1;
96                         totem_y = 1.125;
97                         SUBFSM_TRANSITION(leave_home,NULL);
98                         break;
99                 default:
100                         break;
101         }
102 }