23 #include <tools/refboxrep/msl2007.h>
24 #include <netcomm/socket/stream.h>
30 using namespace fawkes;
33 static const char REFBOX_TEST =
'*';
34 static const char REFBOX_CANCEL =
'x';
35 static const char REFBOX_START =
's';
36 static const char REFBOX_HALT =
'H';
37 static const char REFBOX_STOP =
'S';
38 static const char REFBOX_ENDHALF =
'H';
39 static const char REFBOX_DROPPED_BALL =
'N';
41 static const char REFBOX_FIRST_HALF =
'1';
42 static const char REFBOX_SECOND_HALF =
'2';
43 static const char REFBOX_HALF_TIME =
'h';
44 static const char REFBOX_END_GAME =
'e';
46 static const char REFBOX_GOAL_CYAN =
'A';
47 static const char REFBOX_GOAL_MAGENTA =
'a';
49 static const char REFBOX_KICK_OFF_CYAN =
'K';
50 static const char REFBOX_KICK_OFF_MAGENTA =
'k';
51 static const char REFBOX_FREE_KICK_CYAN =
'F';
52 static const char REFBOX_FREE_KICK_MAGENTA =
'f';
53 static const char REFBOX_GOAL_KICK_CYAN =
'G';
54 static const char REFBOX_GOAL_KICK_MAGENTA =
'g';
55 static const char REFBOX_THROW_IN_CYAN =
'T';
56 static const char REFBOX_THROW_IN_MAGENTA =
't';
57 static const char REFBOX_CORNER_KICK_CYAN =
'C';
58 static const char REFBOX_CORNER_KICK_MAGENTA =
'c';
59 static const char REFBOX_PENALTY_CYAN =
'P';
60 static const char REFBOX_PENALTY_MAGENTA =
'p';
62 static const char * REFBOX_WELCOME =
"Welcome..";
78 const char *refbox_host,
79 unsigned short int refbox_port)
84 __score_cyan = __score_magenta = 0;
86 __refbox_host = strdup(refbox_host);
87 __refbox_port = refbox_port;
104 MidsizeRefBoxRepeater::reconnect()
110 printf(
"Trying to connect to refbox at %s:%u\n", __refbox_host, __refbox_port);
114 __s->
connect(__refbox_host, __refbox_port);
116 char welcomebuf[strlen(REFBOX_WELCOME) + 1];
117 welcomebuf[strlen(REFBOX_WELCOME)] = 0;
118 __s->
read(welcomebuf, strlen(REFBOX_WELCOME));
119 printf(
"Connected, received welcome string: %s\n", welcomebuf);
133 MidsizeRefBoxRepeater::process_string(
char *buf,
size_t len)
135 for (
size_t b = 0; b < len; ++b) {
139 printf(
"Received connection test, replying\n");
144 printf(
"RefBox cancelled last command\n");
156 case REFBOX_DROPPED_BALL:
160 case REFBOX_GOAL_CYAN:
161 __rss.
set_score(++__score_cyan, __score_magenta);
165 case REFBOX_GOAL_MAGENTA:
166 __rss.
set_score(__score_cyan, ++__score_magenta);
170 case REFBOX_KICK_OFF_CYAN:
174 case REFBOX_KICK_OFF_MAGENTA:
178 case REFBOX_PENALTY_CYAN:
182 case REFBOX_PENALTY_MAGENTA:
186 case REFBOX_CORNER_KICK_CYAN:
190 case REFBOX_CORNER_KICK_MAGENTA:
194 case REFBOX_THROW_IN_CYAN:
198 case REFBOX_THROW_IN_MAGENTA:
202 case REFBOX_FREE_KICK_CYAN:
206 case REFBOX_FREE_KICK_MAGENTA:
210 case REFBOX_GOAL_KICK_CYAN:
214 case REFBOX_GOAL_KICK_MAGENTA:
218 case REFBOX_FIRST_HALF:
222 case REFBOX_SECOND_HALF:
226 case REFBOX_HALF_TIME:
231 printf(
"Received unknown command: '%c'\n", buf[b]);
248 size_t bytes_read = __s->
read(tmpbuf,
sizeof(tmpbuf),
false);
249 if ( bytes_read == 0 ) {
251 printf(
"Connection died, reconnecting\n");
254 process_string(tmpbuf, bytes_read);