Fawkes API Fawkes Development Version
Roomba500Interface.cpp
1
2/***************************************************************************
3 * Roomba500Interface.cpp - Fawkes BlackBoard Interface - Roomba500Interface
4 *
5 * Templated created: Thu Oct 12 10:49:19 2006
6 * Copyright 2011 Tim Niemueller
7 *
8 ****************************************************************************/
9
10/* This program is free software; you can redistribute it and/or modify
11 * it under the terms of the GNU General Public License as published by
12 * the Free Software Foundation; either version 2 of the License, or
13 * (at your option) any later version. A runtime exception applies to
14 * this software (see LICENSE.GPL_WRE file mentioned below for details).
15 *
16 * This program is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 * GNU Library General Public License for more details.
20 *
21 * Read the full text in the LICENSE.GPL_WRE file in the doc directory.
22 */
23
24#include <interfaces/Roomba500Interface.h>
25
26#include <core/exceptions/software.h>
27
28#include <map>
29#include <string>
30#include <cstring>
31#include <cstdlib>
32
33namespace fawkes {
34
35/** @class Roomba500Interface <interfaces/Roomba500Interface.h>
36 * Roomba500Interface Fawkes BlackBoard Interface.
37 *
38 Roomba 500 hardware interface.
39
40 * @ingroup FawkesInterfaces
41 */
42
43
44
45/** Constructor */
46Roomba500Interface::Roomba500Interface() : Interface()
47{
48 data_size = sizeof(Roomba500Interface_data_t);
49 data_ptr = malloc(data_size);
50 data = (Roomba500Interface_data_t *)data_ptr;
51 data_ts = (interface_data_ts_t *)data_ptr;
52 memset(data_ptr, 0, data_size);
53 enum_map_Mode[(int)MODE_OFF] = "MODE_OFF";
54 enum_map_Mode[(int)MODE_PASSIVE] = "MODE_PASSIVE";
55 enum_map_Mode[(int)MODE_SAFE] = "MODE_SAFE";
56 enum_map_Mode[(int)MODE_FULL] = "MODE_FULL";
57 enum_map_InfraredCharacter[(int)IR_NONE] = "IR_NONE";
58 enum_map_InfraredCharacter[(int)IR_REMOTE_LEFT] = "IR_REMOTE_LEFT";
59 enum_map_InfraredCharacter[(int)IR_REMOTE_FORWARD] = "IR_REMOTE_FORWARD";
60 enum_map_InfraredCharacter[(int)IR_REMOTE_RIGHT] = "IR_REMOTE_RIGHT";
61 enum_map_InfraredCharacter[(int)IR_REMOTE_SPOT] = "IR_REMOTE_SPOT";
62 enum_map_InfraredCharacter[(int)IR_REMOTE_MAX] = "IR_REMOTE_MAX";
63 enum_map_InfraredCharacter[(int)IR_REMOTE_SMALL] = "IR_REMOTE_SMALL";
64 enum_map_InfraredCharacter[(int)IR_REMOTE_MEDIUM] = "IR_REMOTE_MEDIUM";
65 enum_map_InfraredCharacter[(int)IR_REMOTE_LARGE_CLEAN] = "IR_REMOTE_LARGE_CLEAN";
66 enum_map_InfraredCharacter[(int)IR_REMOTE_STOP] = "IR_REMOTE_STOP";
67 enum_map_InfraredCharacter[(int)IR_REMOTE_POWER] = "IR_REMOTE_POWER";
68 enum_map_InfraredCharacter[(int)IR_REMOTE_ARC_LEFT] = "IR_REMOTE_ARC_LEFT";
69 enum_map_InfraredCharacter[(int)IR_REMOTE_ARC_RIGHT] = "IR_REMOTE_ARC_RIGHT";
70 enum_map_InfraredCharacter[(int)IR_REMOTE_STOP2] = "IR_REMOTE_STOP2";
71 enum_map_InfraredCharacter[(int)IR_SCHED_REMOTE_DOWNLOAD] = "IR_SCHED_REMOTE_DOWNLOAD";
72 enum_map_InfraredCharacter[(int)IR_SCHED_REMOTE_SEEK_DOCK] = "IR_SCHED_REMOTE_SEEK_DOCK";
73 enum_map_InfraredCharacter[(int)IR_DISC_DOCK_RESERVED] = "IR_DISC_DOCK_RESERVED";
74 enum_map_InfraredCharacter[(int)IR_DISC_DOCK_RED_BUOY] = "IR_DISC_DOCK_RED_BUOY";
75 enum_map_InfraredCharacter[(int)IR_DISC_DOCK_GREEN_BUOY] = "IR_DISC_DOCK_GREEN_BUOY";
76 enum_map_InfraredCharacter[(int)IR_DISC_DOCK_FORCE_FIELD] = "IR_DISC_DOCK_FORCE_FIELD";
77 enum_map_InfraredCharacter[(int)IR_DISC_DOCK_RED_GREEN_BUOY] = "IR_DISC_DOCK_RED_GREEN_BUOY";
78 enum_map_InfraredCharacter[(int)IR_DISC_DOCK_RED_BUOY_FORCE_FIELD] = "IR_DISC_DOCK_RED_BUOY_FORCE_FIELD";
79 enum_map_InfraredCharacter[(int)IR_DISC_DOCK_GREEN_BUOY_FORCE_FIELD] = "IR_DISC_DOCK_GREEN_BUOY_FORCE_FIELD";
80 enum_map_InfraredCharacter[(int)IR_DISC_DOCK_RED_GREEN_BUOY_FORCE_FIELD] = "IR_DISC_DOCK_RED_GREEN_BUOY_FORCE_FIELD";
81 enum_map_InfraredCharacter[(int)IR_DOCK_RESERVED] = "IR_DOCK_RESERVED";
82 enum_map_InfraredCharacter[(int)IR_DOCK_RED_BUOY] = "IR_DOCK_RED_BUOY";
83 enum_map_InfraredCharacter[(int)IR_DOCK_GREEN_BUOY] = "IR_DOCK_GREEN_BUOY";
84 enum_map_InfraredCharacter[(int)IR_DOCK_FORCE_FIELD] = "IR_DOCK_FORCE_FIELD";
85 enum_map_InfraredCharacter[(int)IR_DOCK_RED_GREEN_BUOY] = "IR_DOCK_RED_GREEN_BUOY";
86 enum_map_InfraredCharacter[(int)IR_DOCK_RED_BUOY_FORCE_FIELD] = "IR_DOCK_RED_BUOY_FORCE_FIELD";
87 enum_map_InfraredCharacter[(int)IR_DOCK_GREEN_BUOY_FORCE_FIELD] = "IR_DOCK_GREEN_BUOY_FORCE_FIELD";
88 enum_map_InfraredCharacter[(int)IR_DOCK_RED_GREEN_BUOY_FORCE_FIELD] = "IR_DOCK_RED_GREEN_BUOY_FORCE_FIELD";
89 enum_map_InfraredCharacter[(int)IR_VIRTUAL_WALL] = "IR_VIRTUAL_WALL";
90 enum_map_ChargingState[(int)CHARGING_NO] = "CHARGING_NO";
91 enum_map_ChargingState[(int)CHARGING_RECONDITIONING] = "CHARGING_RECONDITIONING";
92 enum_map_ChargingState[(int)CHARGING_FULL] = "CHARGING_FULL";
93 enum_map_ChargingState[(int)CHARGING_TRICKLE] = "CHARGING_TRICKLE";
94 enum_map_ChargingState[(int)CHARGING_WAITING] = "CHARGING_WAITING";
95 enum_map_ChargingState[(int)CHARGING_ERROR] = "CHARGING_ERROR";
96 enum_map_BrushState[(int)BRUSHSTATE_OFF] = "BRUSHSTATE_OFF";
97 enum_map_BrushState[(int)BRUSHSTATE_FORWARD] = "BRUSHSTATE_FORWARD";
98 enum_map_BrushState[(int)BRUSHSTATE_BACKWARD] = "BRUSHSTATE_BACKWARD";
99 add_fieldinfo(IFT_ENUM, "mode", 1, &data->mode, "Mode", &enum_map_Mode);
100 add_fieldinfo(IFT_BOOL, "wheel_drop_left", 1, &data->wheel_drop_left);
101 add_fieldinfo(IFT_BOOL, "wheel_drop_right", 1, &data->wheel_drop_right);
102 add_fieldinfo(IFT_BOOL, "bump_left", 1, &data->bump_left);
103 add_fieldinfo(IFT_BOOL, "bump_right", 1, &data->bump_right);
104 add_fieldinfo(IFT_BOOL, "wall", 1, &data->wall);
105 add_fieldinfo(IFT_BOOL, "cliff_left", 1, &data->cliff_left);
106 add_fieldinfo(IFT_BOOL, "cliff_front_left", 1, &data->cliff_front_left);
107 add_fieldinfo(IFT_BOOL, "cliff_front_right", 1, &data->cliff_front_right);
108 add_fieldinfo(IFT_BOOL, "cliff_right", 1, &data->cliff_right);
109 add_fieldinfo(IFT_BOOL, "virtual_wall", 1, &data->virtual_wall);
110 add_fieldinfo(IFT_BOOL, "overcurrent_side_brush", 1, &data->overcurrent_side_brush);
111 add_fieldinfo(IFT_BOOL, "overcurrent_main_brush", 1, &data->overcurrent_main_brush);
112 add_fieldinfo(IFT_BOOL, "overcurrent_left_wheel", 1, &data->overcurrent_left_wheel);
113 add_fieldinfo(IFT_BOOL, "overcurrent_right_wheel", 1, &data->overcurrent_right_wheel);
114 add_fieldinfo(IFT_BOOL, "dirt_detect", 1, &data->dirt_detect);
115 add_fieldinfo(IFT_ENUM, "ir_opcode_omni", 1, &data->ir_opcode_omni, "InfraredCharacter", &enum_map_InfraredCharacter);
116 add_fieldinfo(IFT_BOOL, "button_clean", 1, &data->button_clean);
117 add_fieldinfo(IFT_BOOL, "button_spot", 1, &data->button_spot);
118 add_fieldinfo(IFT_BOOL, "button_dock", 1, &data->button_dock);
119 add_fieldinfo(IFT_BOOL, "button_minute", 1, &data->button_minute);
120 add_fieldinfo(IFT_BOOL, "button_hour", 1, &data->button_hour);
121 add_fieldinfo(IFT_BOOL, "button_day", 1, &data->button_day);
122 add_fieldinfo(IFT_BOOL, "button_schedule", 1, &data->button_schedule);
123 add_fieldinfo(IFT_BOOL, "button_clock", 1, &data->button_clock);
124 add_fieldinfo(IFT_INT16, "distance", 1, &data->distance);
125 add_fieldinfo(IFT_INT16, "angle", 1, &data->angle);
126 add_fieldinfo(IFT_ENUM, "charging_state", 1, &data->charging_state, "ChargingState", &enum_map_ChargingState);
127 add_fieldinfo(IFT_UINT16, "voltage", 1, &data->voltage);
128 add_fieldinfo(IFT_INT16, "current", 1, &data->current);
129 add_fieldinfo(IFT_INT8, "temperature", 1, &data->temperature);
130 add_fieldinfo(IFT_UINT16, "battery_charge", 1, &data->battery_charge);
131 add_fieldinfo(IFT_UINT16, "battery_capacity", 1, &data->battery_capacity);
132 add_fieldinfo(IFT_UINT16, "wall_signal", 1, &data->wall_signal);
133 add_fieldinfo(IFT_UINT16, "cliff_left_signal", 1, &data->cliff_left_signal);
134 add_fieldinfo(IFT_UINT16, "cliff_front_left_signal", 1, &data->cliff_front_left_signal);
135 add_fieldinfo(IFT_UINT16, "cliff_front_right_signal", 1, &data->cliff_front_right_signal);
136 add_fieldinfo(IFT_UINT16, "cliff_right_signal", 1, &data->cliff_right_signal);
137 add_fieldinfo(IFT_BOOL, "home_base_charger_available", 1, &data->home_base_charger_available);
138 add_fieldinfo(IFT_BOOL, "internal_charger_available", 1, &data->internal_charger_available);
139 add_fieldinfo(IFT_UINT8, "song_number", 1, &data->song_number);
140 add_fieldinfo(IFT_BOOL, "song_playing", 1, &data->song_playing);
141 add_fieldinfo(IFT_INT16, "velocity", 1, &data->velocity);
142 add_fieldinfo(IFT_INT16, "radius", 1, &data->radius);
143 add_fieldinfo(IFT_INT16, "velocity_right", 1, &data->velocity_right);
144 add_fieldinfo(IFT_INT16, "velocity_left", 1, &data->velocity_left);
145 add_fieldinfo(IFT_UINT16, "encoder_counts_left", 1, &data->encoder_counts_left);
146 add_fieldinfo(IFT_UINT16, "encoder_counts_right", 1, &data->encoder_counts_right);
147 add_fieldinfo(IFT_BOOL, "bumper_left", 1, &data->bumper_left);
148 add_fieldinfo(IFT_BOOL, "bumper_front_left", 1, &data->bumper_front_left);
149 add_fieldinfo(IFT_BOOL, "bumper_center_left", 1, &data->bumper_center_left);
150 add_fieldinfo(IFT_BOOL, "bumper_center_right", 1, &data->bumper_center_right);
151 add_fieldinfo(IFT_BOOL, "bumper_front_right", 1, &data->bumper_front_right);
152 add_fieldinfo(IFT_BOOL, "bumper_right", 1, &data->bumper_right);
153 add_fieldinfo(IFT_UINT16, "light_bump_left", 1, &data->light_bump_left);
154 add_fieldinfo(IFT_UINT16, "light_bump_front_left", 1, &data->light_bump_front_left);
155 add_fieldinfo(IFT_UINT16, "light_bump_center_left", 1, &data->light_bump_center_left);
156 add_fieldinfo(IFT_UINT16, "light_bump_center_right", 1, &data->light_bump_center_right);
157 add_fieldinfo(IFT_UINT16, "light_bump_front_right", 1, &data->light_bump_front_right);
158 add_fieldinfo(IFT_UINT16, "light_bump_right", 1, &data->light_bump_right);
159 add_fieldinfo(IFT_ENUM, "ir_opcode_left", 1, &data->ir_opcode_left, "InfraredCharacter", &enum_map_InfraredCharacter);
160 add_fieldinfo(IFT_ENUM, "ir_opcode_right", 1, &data->ir_opcode_right, "InfraredCharacter", &enum_map_InfraredCharacter);
161 add_fieldinfo(IFT_INT16, "left_motor_current", 1, &data->left_motor_current);
162 add_fieldinfo(IFT_INT16, "right_motor_current", 1, &data->right_motor_current);
163 add_fieldinfo(IFT_INT16, "main_brush_current", 1, &data->main_brush_current);
164 add_fieldinfo(IFT_INT16, "side_brush_current", 1, &data->side_brush_current);
165 add_fieldinfo(IFT_BOOL, "caster_stasis", 1, &data->caster_stasis);
166 add_messageinfo("StopMessage");
167 add_messageinfo("DockMessage");
168 add_messageinfo("SetModeMessage");
169 add_messageinfo("DriveStraightMessage");
170 add_messageinfo("DriveMessage");
171 add_messageinfo("SetMotorsMessage");
172 unsigned char tmp_hash[] = {0x60, 0xa1, 0x1e, 0x86, 0x89, 0x2, 0x20, 0x34, 0x89, 0x32, 0xdb, 0x69, 0xee, 0x12, 0x86, 0x43};
173 set_hash(tmp_hash);
174}
175
176/** Destructor */
177Roomba500Interface::~Roomba500Interface()
178{
179 free(data_ptr);
180}
181/** Convert Mode constant to string.
182 * @param value value to convert to string
183 * @return constant value as string.
184 */
185const char *
186Roomba500Interface::tostring_Mode(Mode value) const
187{
188 switch (value) {
189 case MODE_OFF: return "MODE_OFF";
190 case MODE_PASSIVE: return "MODE_PASSIVE";
191 case MODE_SAFE: return "MODE_SAFE";
192 case MODE_FULL: return "MODE_FULL";
193 default: return "UNKNOWN";
194 }
195}
196/** Convert InfraredCharacter constant to string.
197 * @param value value to convert to string
198 * @return constant value as string.
199 */
200const char *
201Roomba500Interface::tostring_InfraredCharacter(InfraredCharacter value) const
202{
203 switch (value) {
204 case IR_NONE: return "IR_NONE";
205 case IR_REMOTE_LEFT: return "IR_REMOTE_LEFT";
206 case IR_REMOTE_FORWARD: return "IR_REMOTE_FORWARD";
207 case IR_REMOTE_RIGHT: return "IR_REMOTE_RIGHT";
208 case IR_REMOTE_SPOT: return "IR_REMOTE_SPOT";
209 case IR_REMOTE_MAX: return "IR_REMOTE_MAX";
210 case IR_REMOTE_SMALL: return "IR_REMOTE_SMALL";
211 case IR_REMOTE_MEDIUM: return "IR_REMOTE_MEDIUM";
212 case IR_REMOTE_LARGE_CLEAN: return "IR_REMOTE_LARGE_CLEAN";
213 case IR_REMOTE_STOP: return "IR_REMOTE_STOP";
214 case IR_REMOTE_POWER: return "IR_REMOTE_POWER";
215 case IR_REMOTE_ARC_LEFT: return "IR_REMOTE_ARC_LEFT";
216 case IR_REMOTE_ARC_RIGHT: return "IR_REMOTE_ARC_RIGHT";
217 case IR_REMOTE_STOP2: return "IR_REMOTE_STOP2";
218 case IR_SCHED_REMOTE_DOWNLOAD: return "IR_SCHED_REMOTE_DOWNLOAD";
219 case IR_SCHED_REMOTE_SEEK_DOCK: return "IR_SCHED_REMOTE_SEEK_DOCK";
220 case IR_DISC_DOCK_RESERVED: return "IR_DISC_DOCK_RESERVED";
221 case IR_DISC_DOCK_RED_BUOY: return "IR_DISC_DOCK_RED_BUOY";
222 case IR_DISC_DOCK_GREEN_BUOY: return "IR_DISC_DOCK_GREEN_BUOY";
223 case IR_DISC_DOCK_FORCE_FIELD: return "IR_DISC_DOCK_FORCE_FIELD";
224 case IR_DISC_DOCK_RED_GREEN_BUOY: return "IR_DISC_DOCK_RED_GREEN_BUOY";
225 case IR_DISC_DOCK_RED_BUOY_FORCE_FIELD: return "IR_DISC_DOCK_RED_BUOY_FORCE_FIELD";
226 case IR_DISC_DOCK_GREEN_BUOY_FORCE_FIELD: return "IR_DISC_DOCK_GREEN_BUOY_FORCE_FIELD";
227 case IR_DISC_DOCK_RED_GREEN_BUOY_FORCE_FIELD: return "IR_DISC_DOCK_RED_GREEN_BUOY_FORCE_FIELD";
228 case IR_DOCK_RESERVED: return "IR_DOCK_RESERVED";
229 case IR_DOCK_RED_BUOY: return "IR_DOCK_RED_BUOY";
230 case IR_DOCK_GREEN_BUOY: return "IR_DOCK_GREEN_BUOY";
231 case IR_DOCK_FORCE_FIELD: return "IR_DOCK_FORCE_FIELD";
232 case IR_DOCK_RED_GREEN_BUOY: return "IR_DOCK_RED_GREEN_BUOY";
233 case IR_DOCK_RED_BUOY_FORCE_FIELD: return "IR_DOCK_RED_BUOY_FORCE_FIELD";
234 case IR_DOCK_GREEN_BUOY_FORCE_FIELD: return "IR_DOCK_GREEN_BUOY_FORCE_FIELD";
235 case IR_DOCK_RED_GREEN_BUOY_FORCE_FIELD: return "IR_DOCK_RED_GREEN_BUOY_FORCE_FIELD";
236 case IR_VIRTUAL_WALL: return "IR_VIRTUAL_WALL";
237 default: return "UNKNOWN";
238 }
239}
240/** Convert ChargingState constant to string.
241 * @param value value to convert to string
242 * @return constant value as string.
243 */
244const char *
245Roomba500Interface::tostring_ChargingState(ChargingState value) const
246{
247 switch (value) {
248 case CHARGING_NO: return "CHARGING_NO";
249 case CHARGING_RECONDITIONING: return "CHARGING_RECONDITIONING";
250 case CHARGING_FULL: return "CHARGING_FULL";
251 case CHARGING_TRICKLE: return "CHARGING_TRICKLE";
252 case CHARGING_WAITING: return "CHARGING_WAITING";
253 case CHARGING_ERROR: return "CHARGING_ERROR";
254 default: return "UNKNOWN";
255 }
256}
257/** Convert BrushState constant to string.
258 * @param value value to convert to string
259 * @return constant value as string.
260 */
261const char *
262Roomba500Interface::tostring_BrushState(BrushState value) const
263{
264 switch (value) {
265 case BRUSHSTATE_OFF: return "BRUSHSTATE_OFF";
266 case BRUSHSTATE_FORWARD: return "BRUSHSTATE_FORWARD";
267 case BRUSHSTATE_BACKWARD: return "BRUSHSTATE_BACKWARD";
268 default: return "UNKNOWN";
269 }
270}
271/* Methods */
272/** Get mode value.
273 * Open Interface mode.
274 * @return mode value
275 */
277Roomba500Interface::mode() const
278{
279 return (Roomba500Interface::Mode)data->mode;
280}
281
282/** Get maximum length of mode value.
283 * @return length of mode value, can be length of the array or number of
284 * maximum number of characters for a string
285 */
286size_t
287Roomba500Interface::maxlenof_mode() const
288{
289 return 1;
290}
291
292/** Set mode value.
293 * Open Interface mode.
294 * @param new_mode new mode value
295 */
296void
297Roomba500Interface::set_mode(const Mode new_mode)
298{
299 set_field(data->mode, new_mode);
300}
301
302/** Get wheel_drop_left value.
303 * Left wheel drop sensor.
304 * @return wheel_drop_left value
305 */
306bool
307Roomba500Interface::is_wheel_drop_left() const
308{
309 return data->wheel_drop_left;
310}
311
312/** Get maximum length of wheel_drop_left value.
313 * @return length of wheel_drop_left value, can be length of the array or number of
314 * maximum number of characters for a string
315 */
316size_t
317Roomba500Interface::maxlenof_wheel_drop_left() const
318{
319 return 1;
320}
321
322/** Set wheel_drop_left value.
323 * Left wheel drop sensor.
324 * @param new_wheel_drop_left new wheel_drop_left value
325 */
326void
327Roomba500Interface::set_wheel_drop_left(const bool new_wheel_drop_left)
328{
329 set_field(data->wheel_drop_left, new_wheel_drop_left);
330}
331
332/** Get wheel_drop_right value.
333 * Right wheel drop sensor.
334 * @return wheel_drop_right value
335 */
336bool
337Roomba500Interface::is_wheel_drop_right() const
338{
339 return data->wheel_drop_right;
340}
341
342/** Get maximum length of wheel_drop_right value.
343 * @return length of wheel_drop_right value, can be length of the array or number of
344 * maximum number of characters for a string
345 */
346size_t
347Roomba500Interface::maxlenof_wheel_drop_right() const
348{
349 return 1;
350}
351
352/** Set wheel_drop_right value.
353 * Right wheel drop sensor.
354 * @param new_wheel_drop_right new wheel_drop_right value
355 */
356void
357Roomba500Interface::set_wheel_drop_right(const bool new_wheel_drop_right)
358{
359 set_field(data->wheel_drop_right, new_wheel_drop_right);
360}
361
362/** Get bump_left value.
363 * Bump on left.
364 * @return bump_left value
365 */
366bool
367Roomba500Interface::is_bump_left() const
368{
369 return data->bump_left;
370}
371
372/** Get maximum length of bump_left value.
373 * @return length of bump_left value, can be length of the array or number of
374 * maximum number of characters for a string
375 */
376size_t
377Roomba500Interface::maxlenof_bump_left() const
378{
379 return 1;
380}
381
382/** Set bump_left value.
383 * Bump on left.
384 * @param new_bump_left new bump_left value
385 */
386void
387Roomba500Interface::set_bump_left(const bool new_bump_left)
388{
389 set_field(data->bump_left, new_bump_left);
390}
391
392/** Get bump_right value.
393 * Bump on right.
394 * @return bump_right value
395 */
396bool
397Roomba500Interface::is_bump_right() const
398{
399 return data->bump_right;
400}
401
402/** Get maximum length of bump_right value.
403 * @return length of bump_right value, can be length of the array or number of
404 * maximum number of characters for a string
405 */
406size_t
407Roomba500Interface::maxlenof_bump_right() const
408{
409 return 1;
410}
411
412/** Set bump_right value.
413 * Bump on right.
414 * @param new_bump_right new bump_right value
415 */
416void
417Roomba500Interface::set_bump_right(const bool new_bump_right)
418{
419 set_field(data->bump_right, new_bump_right);
420}
421
422/** Get wall value.
423 * Wall sensor.
424 * @return wall value
425 */
426bool
427Roomba500Interface::is_wall() const
428{
429 return data->wall;
430}
431
432/** Get maximum length of wall value.
433 * @return length of wall value, can be length of the array or number of
434 * maximum number of characters for a string
435 */
436size_t
437Roomba500Interface::maxlenof_wall() const
438{
439 return 1;
440}
441
442/** Set wall value.
443 * Wall sensor.
444 * @param new_wall new wall value
445 */
446void
447Roomba500Interface::set_wall(const bool new_wall)
448{
449 set_field(data->wall, new_wall);
450}
451
452/** Get cliff_left value.
453 * Cliff detected left.
454 * @return cliff_left value
455 */
456bool
457Roomba500Interface::is_cliff_left() const
458{
459 return data->cliff_left;
460}
461
462/** Get maximum length of cliff_left value.
463 * @return length of cliff_left value, can be length of the array or number of
464 * maximum number of characters for a string
465 */
466size_t
467Roomba500Interface::maxlenof_cliff_left() const
468{
469 return 1;
470}
471
472/** Set cliff_left value.
473 * Cliff detected left.
474 * @param new_cliff_left new cliff_left value
475 */
476void
477Roomba500Interface::set_cliff_left(const bool new_cliff_left)
478{
479 set_field(data->cliff_left, new_cliff_left);
480}
481
482/** Get cliff_front_left value.
483 * Cliff detected front left.
484 * @return cliff_front_left value
485 */
486bool
487Roomba500Interface::is_cliff_front_left() const
488{
489 return data->cliff_front_left;
490}
491
492/** Get maximum length of cliff_front_left value.
493 * @return length of cliff_front_left value, can be length of the array or number of
494 * maximum number of characters for a string
495 */
496size_t
497Roomba500Interface::maxlenof_cliff_front_left() const
498{
499 return 1;
500}
501
502/** Set cliff_front_left value.
503 * Cliff detected front left.
504 * @param new_cliff_front_left new cliff_front_left value
505 */
506void
507Roomba500Interface::set_cliff_front_left(const bool new_cliff_front_left)
508{
509 set_field(data->cliff_front_left, new_cliff_front_left);
510}
511
512/** Get cliff_front_right value.
513 * Cliff detected front right.
514 * @return cliff_front_right value
515 */
516bool
517Roomba500Interface::is_cliff_front_right() const
518{
519 return data->cliff_front_right;
520}
521
522/** Get maximum length of cliff_front_right value.
523 * @return length of cliff_front_right value, can be length of the array or number of
524 * maximum number of characters for a string
525 */
526size_t
527Roomba500Interface::maxlenof_cliff_front_right() const
528{
529 return 1;
530}
531
532/** Set cliff_front_right value.
533 * Cliff detected front right.
534 * @param new_cliff_front_right new cliff_front_right value
535 */
536void
537Roomba500Interface::set_cliff_front_right(const bool new_cliff_front_right)
538{
539 set_field(data->cliff_front_right, new_cliff_front_right);
540}
541
542/** Get cliff_right value.
543 * Cliff detected right.
544 * @return cliff_right value
545 */
546bool
547Roomba500Interface::is_cliff_right() const
548{
549 return data->cliff_right;
550}
551
552/** Get maximum length of cliff_right value.
553 * @return length of cliff_right value, can be length of the array or number of
554 * maximum number of characters for a string
555 */
556size_t
557Roomba500Interface::maxlenof_cliff_right() const
558{
559 return 1;
560}
561
562/** Set cliff_right value.
563 * Cliff detected right.
564 * @param new_cliff_right new cliff_right value
565 */
566void
567Roomba500Interface::set_cliff_right(const bool new_cliff_right)
568{
569 set_field(data->cliff_right, new_cliff_right);
570}
571
572/** Get virtual_wall value.
573 * Virtual wall detected.
574 * @return virtual_wall value
575 */
576bool
577Roomba500Interface::is_virtual_wall() const
578{
579 return data->virtual_wall;
580}
581
582/** Get maximum length of virtual_wall value.
583 * @return length of virtual_wall value, can be length of the array or number of
584 * maximum number of characters for a string
585 */
586size_t
587Roomba500Interface::maxlenof_virtual_wall() const
588{
589 return 1;
590}
591
592/** Set virtual_wall value.
593 * Virtual wall detected.
594 * @param new_virtual_wall new virtual_wall value
595 */
596void
597Roomba500Interface::set_virtual_wall(const bool new_virtual_wall)
598{
599 set_field(data->virtual_wall, new_virtual_wall);
600}
601
602/** Get overcurrent_side_brush value.
603 * Overcurrent on side brush.
604 * @return overcurrent_side_brush value
605 */
606bool
607Roomba500Interface::is_overcurrent_side_brush() const
608{
609 return data->overcurrent_side_brush;
610}
611
612/** Get maximum length of overcurrent_side_brush value.
613 * @return length of overcurrent_side_brush value, can be length of the array or number of
614 * maximum number of characters for a string
615 */
616size_t
617Roomba500Interface::maxlenof_overcurrent_side_brush() const
618{
619 return 1;
620}
621
622/** Set overcurrent_side_brush value.
623 * Overcurrent on side brush.
624 * @param new_overcurrent_side_brush new overcurrent_side_brush value
625 */
626void
627Roomba500Interface::set_overcurrent_side_brush(const bool new_overcurrent_side_brush)
628{
629 set_field(data->overcurrent_side_brush, new_overcurrent_side_brush);
630}
631
632/** Get overcurrent_main_brush value.
633 * Overcurrent on main brush.
634 * @return overcurrent_main_brush value
635 */
636bool
637Roomba500Interface::is_overcurrent_main_brush() const
638{
639 return data->overcurrent_main_brush;
640}
641
642/** Get maximum length of overcurrent_main_brush value.
643 * @return length of overcurrent_main_brush value, can be length of the array or number of
644 * maximum number of characters for a string
645 */
646size_t
647Roomba500Interface::maxlenof_overcurrent_main_brush() const
648{
649 return 1;
650}
651
652/** Set overcurrent_main_brush value.
653 * Overcurrent on main brush.
654 * @param new_overcurrent_main_brush new overcurrent_main_brush value
655 */
656void
657Roomba500Interface::set_overcurrent_main_brush(const bool new_overcurrent_main_brush)
658{
659 set_field(data->overcurrent_main_brush, new_overcurrent_main_brush);
660}
661
662/** Get overcurrent_left_wheel value.
663 * Overcurrent on left wheel.
664 * @return overcurrent_left_wheel value
665 */
666bool
667Roomba500Interface::is_overcurrent_left_wheel() const
668{
669 return data->overcurrent_left_wheel;
670}
671
672/** Get maximum length of overcurrent_left_wheel value.
673 * @return length of overcurrent_left_wheel value, can be length of the array or number of
674 * maximum number of characters for a string
675 */
676size_t
677Roomba500Interface::maxlenof_overcurrent_left_wheel() const
678{
679 return 1;
680}
681
682/** Set overcurrent_left_wheel value.
683 * Overcurrent on left wheel.
684 * @param new_overcurrent_left_wheel new overcurrent_left_wheel value
685 */
686void
687Roomba500Interface::set_overcurrent_left_wheel(const bool new_overcurrent_left_wheel)
688{
689 set_field(data->overcurrent_left_wheel, new_overcurrent_left_wheel);
690}
691
692/** Get overcurrent_right_wheel value.
693 * Overcurrent on right wheel.
694 * @return overcurrent_right_wheel value
695 */
696bool
697Roomba500Interface::is_overcurrent_right_wheel() const
698{
699 return data->overcurrent_right_wheel;
700}
701
702/** Get maximum length of overcurrent_right_wheel value.
703 * @return length of overcurrent_right_wheel value, can be length of the array or number of
704 * maximum number of characters for a string
705 */
706size_t
707Roomba500Interface::maxlenof_overcurrent_right_wheel() const
708{
709 return 1;
710}
711
712/** Set overcurrent_right_wheel value.
713 * Overcurrent on right wheel.
714 * @param new_overcurrent_right_wheel new overcurrent_right_wheel value
715 */
716void
717Roomba500Interface::set_overcurrent_right_wheel(const bool new_overcurrent_right_wheel)
718{
719 set_field(data->overcurrent_right_wheel, new_overcurrent_right_wheel);
720}
721
722/** Get dirt_detect value.
723 * Dirt detected?
724 * @return dirt_detect value
725 */
726bool
727Roomba500Interface::is_dirt_detect() const
728{
729 return data->dirt_detect;
730}
731
732/** Get maximum length of dirt_detect value.
733 * @return length of dirt_detect value, can be length of the array or number of
734 * maximum number of characters for a string
735 */
736size_t
737Roomba500Interface::maxlenof_dirt_detect() const
738{
739 return 1;
740}
741
742/** Set dirt_detect value.
743 * Dirt detected?
744 * @param new_dirt_detect new dirt_detect value
745 */
746void
747Roomba500Interface::set_dirt_detect(const bool new_dirt_detect)
748{
749 set_field(data->dirt_detect, new_dirt_detect);
750}
751
752/** Get ir_opcode_omni value.
753 * Omni IR receiver code.
754 * @return ir_opcode_omni value
755 */
757Roomba500Interface::ir_opcode_omni() const
758{
759 return (Roomba500Interface::InfraredCharacter)data->ir_opcode_omni;
760}
761
762/** Get maximum length of ir_opcode_omni value.
763 * @return length of ir_opcode_omni value, can be length of the array or number of
764 * maximum number of characters for a string
765 */
766size_t
767Roomba500Interface::maxlenof_ir_opcode_omni() const
768{
769 return 1;
770}
771
772/** Set ir_opcode_omni value.
773 * Omni IR receiver code.
774 * @param new_ir_opcode_omni new ir_opcode_omni value
775 */
776void
777Roomba500Interface::set_ir_opcode_omni(const InfraredCharacter new_ir_opcode_omni)
778{
779 set_field(data->ir_opcode_omni, new_ir_opcode_omni);
780}
781
782/** Get button_clean value.
783 * Clean button pressed.
784 * @return button_clean value
785 */
786bool
787Roomba500Interface::is_button_clean() const
788{
789 return data->button_clean;
790}
791
792/** Get maximum length of button_clean value.
793 * @return length of button_clean value, can be length of the array or number of
794 * maximum number of characters for a string
795 */
796size_t
797Roomba500Interface::maxlenof_button_clean() const
798{
799 return 1;
800}
801
802/** Set button_clean value.
803 * Clean button pressed.
804 * @param new_button_clean new button_clean value
805 */
806void
807Roomba500Interface::set_button_clean(const bool new_button_clean)
808{
809 set_field(data->button_clean, new_button_clean);
810}
811
812/** Get button_spot value.
813 * Spot button pressed.
814 * @return button_spot value
815 */
816bool
817Roomba500Interface::is_button_spot() const
818{
819 return data->button_spot;
820}
821
822/** Get maximum length of button_spot value.
823 * @return length of button_spot value, can be length of the array or number of
824 * maximum number of characters for a string
825 */
826size_t
827Roomba500Interface::maxlenof_button_spot() const
828{
829 return 1;
830}
831
832/** Set button_spot value.
833 * Spot button pressed.
834 * @param new_button_spot new button_spot value
835 */
836void
837Roomba500Interface::set_button_spot(const bool new_button_spot)
838{
839 set_field(data->button_spot, new_button_spot);
840}
841
842/** Get button_dock value.
843 * Dock button pressed.
844 * @return button_dock value
845 */
846bool
847Roomba500Interface::is_button_dock() const
848{
849 return data->button_dock;
850}
851
852/** Get maximum length of button_dock value.
853 * @return length of button_dock value, can be length of the array or number of
854 * maximum number of characters for a string
855 */
856size_t
857Roomba500Interface::maxlenof_button_dock() const
858{
859 return 1;
860}
861
862/** Set button_dock value.
863 * Dock button pressed.
864 * @param new_button_dock new button_dock value
865 */
866void
867Roomba500Interface::set_button_dock(const bool new_button_dock)
868{
869 set_field(data->button_dock, new_button_dock);
870}
871
872/** Get button_minute value.
873 * Minute button pressed.
874 * @return button_minute value
875 */
876bool
877Roomba500Interface::is_button_minute() const
878{
879 return data->button_minute;
880}
881
882/** Get maximum length of button_minute value.
883 * @return length of button_minute value, can be length of the array or number of
884 * maximum number of characters for a string
885 */
886size_t
887Roomba500Interface::maxlenof_button_minute() const
888{
889 return 1;
890}
891
892/** Set button_minute value.
893 * Minute button pressed.
894 * @param new_button_minute new button_minute value
895 */
896void
897Roomba500Interface::set_button_minute(const bool new_button_minute)
898{
899 set_field(data->button_minute, new_button_minute);
900}
901
902/** Get button_hour value.
903 * Hour button pressed.
904 * @return button_hour value
905 */
906bool
907Roomba500Interface::is_button_hour() const
908{
909 return data->button_hour;
910}
911
912/** Get maximum length of button_hour value.
913 * @return length of button_hour value, can be length of the array or number of
914 * maximum number of characters for a string
915 */
916size_t
917Roomba500Interface::maxlenof_button_hour() const
918{
919 return 1;
920}
921
922/** Set button_hour value.
923 * Hour button pressed.
924 * @param new_button_hour new button_hour value
925 */
926void
927Roomba500Interface::set_button_hour(const bool new_button_hour)
928{
929 set_field(data->button_hour, new_button_hour);
930}
931
932/** Get button_day value.
933 * Day button pressed.
934 * @return button_day value
935 */
936bool
937Roomba500Interface::is_button_day() const
938{
939 return data->button_day;
940}
941
942/** Get maximum length of button_day value.
943 * @return length of button_day value, can be length of the array or number of
944 * maximum number of characters for a string
945 */
946size_t
947Roomba500Interface::maxlenof_button_day() const
948{
949 return 1;
950}
951
952/** Set button_day value.
953 * Day button pressed.
954 * @param new_button_day new button_day value
955 */
956void
957Roomba500Interface::set_button_day(const bool new_button_day)
958{
959 set_field(data->button_day, new_button_day);
960}
961
962/** Get button_schedule value.
963 * Schedule button pressed.
964 * @return button_schedule value
965 */
966bool
967Roomba500Interface::is_button_schedule() const
968{
969 return data->button_schedule;
970}
971
972/** Get maximum length of button_schedule value.
973 * @return length of button_schedule value, can be length of the array or number of
974 * maximum number of characters for a string
975 */
976size_t
977Roomba500Interface::maxlenof_button_schedule() const
978{
979 return 1;
980}
981
982/** Set button_schedule value.
983 * Schedule button pressed.
984 * @param new_button_schedule new button_schedule value
985 */
986void
987Roomba500Interface::set_button_schedule(const bool new_button_schedule)
988{
989 set_field(data->button_schedule, new_button_schedule);
990}
991
992/** Get button_clock value.
993 * Clock button pressed.
994 * @return button_clock value
995 */
996bool
997Roomba500Interface::is_button_clock() const
998{
999 return data->button_clock;
1000}
1001
1002/** Get maximum length of button_clock value.
1003 * @return length of button_clock value, can be length of the array or number of
1004 * maximum number of characters for a string
1005 */
1006size_t
1007Roomba500Interface::maxlenof_button_clock() const
1008{
1009 return 1;
1010}
1011
1012/** Set button_clock value.
1013 * Clock button pressed.
1014 * @param new_button_clock new button_clock value
1015 */
1016void
1017Roomba500Interface::set_button_clock(const bool new_button_clock)
1018{
1019 set_field(data->button_clock, new_button_clock);
1020}
1021
1022/** Get distance value.
1023 * Travelled distance in m.
1024 * @return distance value
1025 */
1026int16_t
1027Roomba500Interface::distance() const
1028{
1029 return data->distance;
1030}
1031
1032/** Get maximum length of distance value.
1033 * @return length of distance value, can be length of the array or number of
1034 * maximum number of characters for a string
1035 */
1036size_t
1037Roomba500Interface::maxlenof_distance() const
1038{
1039 return 1;
1040}
1041
1042/** Set distance value.
1043 * Travelled distance in m.
1044 * @param new_distance new distance value
1045 */
1046void
1047Roomba500Interface::set_distance(const int16_t new_distance)
1048{
1049 set_field(data->distance, new_distance);
1050}
1051
1052/** Get angle value.
1053 * Turned angle in radians.
1054 * @return angle value
1055 */
1056int16_t
1057Roomba500Interface::angle() const
1058{
1059 return data->angle;
1060}
1061
1062/** Get maximum length of angle value.
1063 * @return length of angle value, can be length of the array or number of
1064 * maximum number of characters for a string
1065 */
1066size_t
1067Roomba500Interface::maxlenof_angle() const
1068{
1069 return 1;
1070}
1071
1072/** Set angle value.
1073 * Turned angle in radians.
1074 * @param new_angle new angle value
1075 */
1076void
1077Roomba500Interface::set_angle(const int16_t new_angle)
1078{
1079 set_field(data->angle, new_angle);
1080}
1081
1082/** Get charging_state value.
1083 * Charging state.
1084 * @return charging_state value
1085 */
1087Roomba500Interface::charging_state() const
1088{
1089 return (Roomba500Interface::ChargingState)data->charging_state;
1090}
1091
1092/** Get maximum length of charging_state value.
1093 * @return length of charging_state value, can be length of the array or number of
1094 * maximum number of characters for a string
1095 */
1096size_t
1097Roomba500Interface::maxlenof_charging_state() const
1098{
1099 return 1;
1100}
1101
1102/** Set charging_state value.
1103 * Charging state.
1104 * @param new_charging_state new charging_state value
1105 */
1106void
1107Roomba500Interface::set_charging_state(const ChargingState new_charging_state)
1108{
1109 set_field(data->charging_state, new_charging_state);
1110}
1111
1112/** Get voltage value.
1113 * Voltage in mV.
1114 * @return voltage value
1115 */
1116uint16_t
1117Roomba500Interface::voltage() const
1118{
1119 return data->voltage;
1120}
1121
1122/** Get maximum length of voltage value.
1123 * @return length of voltage value, can be length of the array or number of
1124 * maximum number of characters for a string
1125 */
1126size_t
1127Roomba500Interface::maxlenof_voltage() const
1128{
1129 return 1;
1130}
1131
1132/** Set voltage value.
1133 * Voltage in mV.
1134 * @param new_voltage new voltage value
1135 */
1136void
1137Roomba500Interface::set_voltage(const uint16_t new_voltage)
1138{
1139 set_field(data->voltage, new_voltage);
1140}
1141
1142/** Get current value.
1143 * Current in mA.
1144 * @return current value
1145 */
1146int16_t
1147Roomba500Interface::current() const
1148{
1149 return data->current;
1150}
1151
1152/** Get maximum length of current value.
1153 * @return length of current value, can be length of the array or number of
1154 * maximum number of characters for a string
1155 */
1156size_t
1157Roomba500Interface::maxlenof_current() const
1158{
1159 return 1;
1160}
1161
1162/** Set current value.
1163 * Current in mA.
1164 * @param new_current new current value
1165 */
1166void
1167Roomba500Interface::set_current(const int16_t new_current)
1168{
1169 set_field(data->current, new_current);
1170}
1171
1172/** Get temperature value.
1173 * Temperature in degree Celsius.
1174 * @return temperature value
1175 */
1176int8_t
1177Roomba500Interface::temperature() const
1178{
1179 return data->temperature;
1180}
1181
1182/** Get maximum length of temperature value.
1183 * @return length of temperature value, can be length of the array or number of
1184 * maximum number of characters for a string
1185 */
1186size_t
1187Roomba500Interface::maxlenof_temperature() const
1188{
1189 return 1;
1190}
1191
1192/** Set temperature value.
1193 * Temperature in degree Celsius.
1194 * @param new_temperature new temperature value
1195 */
1196void
1197Roomba500Interface::set_temperature(const int8_t new_temperature)
1198{
1199 set_field(data->temperature, new_temperature);
1200}
1201
1202/** Get battery_charge value.
1203 * Battery charge in mAh.
1204 * @return battery_charge value
1205 */
1206uint16_t
1207Roomba500Interface::battery_charge() const
1208{
1209 return data->battery_charge;
1210}
1211
1212/** Get maximum length of battery_charge value.
1213 * @return length of battery_charge value, can be length of the array or number of
1214 * maximum number of characters for a string
1215 */
1216size_t
1217Roomba500Interface::maxlenof_battery_charge() const
1218{
1219 return 1;
1220}
1221
1222/** Set battery_charge value.
1223 * Battery charge in mAh.
1224 * @param new_battery_charge new battery_charge value
1225 */
1226void
1227Roomba500Interface::set_battery_charge(const uint16_t new_battery_charge)
1228{
1229 set_field(data->battery_charge, new_battery_charge);
1230}
1231
1232/** Get battery_capacity value.
1233 * Battery capacity in mAh.
1234 * @return battery_capacity value
1235 */
1236uint16_t
1237Roomba500Interface::battery_capacity() const
1238{
1239 return data->battery_capacity;
1240}
1241
1242/** Get maximum length of battery_capacity value.
1243 * @return length of battery_capacity value, can be length of the array or number of
1244 * maximum number of characters for a string
1245 */
1246size_t
1247Roomba500Interface::maxlenof_battery_capacity() const
1248{
1249 return 1;
1250}
1251
1252/** Set battery_capacity value.
1253 * Battery capacity in mAh.
1254 * @param new_battery_capacity new battery_capacity value
1255 */
1256void
1257Roomba500Interface::set_battery_capacity(const uint16_t new_battery_capacity)
1258{
1259 set_field(data->battery_capacity, new_battery_capacity);
1260}
1261
1262/** Get wall_signal value.
1263 * Raw wall signal
1264 * @return wall_signal value
1265 */
1266uint16_t
1267Roomba500Interface::wall_signal() const
1268{
1269 return data->wall_signal;
1270}
1271
1272/** Get maximum length of wall_signal value.
1273 * @return length of wall_signal value, can be length of the array or number of
1274 * maximum number of characters for a string
1275 */
1276size_t
1277Roomba500Interface::maxlenof_wall_signal() const
1278{
1279 return 1;
1280}
1281
1282/** Set wall_signal value.
1283 * Raw wall signal
1284 * @param new_wall_signal new wall_signal value
1285 */
1286void
1287Roomba500Interface::set_wall_signal(const uint16_t new_wall_signal)
1288{
1289 set_field(data->wall_signal, new_wall_signal);
1290}
1291
1292/** Get cliff_left_signal value.
1293 * Raw left cliff signal.
1294 * @return cliff_left_signal value
1295 */
1296uint16_t
1297Roomba500Interface::cliff_left_signal() const
1298{
1299 return data->cliff_left_signal;
1300}
1301
1302/** Get maximum length of cliff_left_signal value.
1303 * @return length of cliff_left_signal value, can be length of the array or number of
1304 * maximum number of characters for a string
1305 */
1306size_t
1307Roomba500Interface::maxlenof_cliff_left_signal() const
1308{
1309 return 1;
1310}
1311
1312/** Set cliff_left_signal value.
1313 * Raw left cliff signal.
1314 * @param new_cliff_left_signal new cliff_left_signal value
1315 */
1316void
1317Roomba500Interface::set_cliff_left_signal(const uint16_t new_cliff_left_signal)
1318{
1319 set_field(data->cliff_left_signal, new_cliff_left_signal);
1320}
1321
1322/** Get cliff_front_left_signal value.
1323 * Raw front left
1324 cliff signal.
1325 * @return cliff_front_left_signal value
1326 */
1327uint16_t
1328Roomba500Interface::cliff_front_left_signal() const
1329{
1330 return data->cliff_front_left_signal;
1331}
1332
1333/** Get maximum length of cliff_front_left_signal value.
1334 * @return length of cliff_front_left_signal value, can be length of the array or number of
1335 * maximum number of characters for a string
1336 */
1337size_t
1338Roomba500Interface::maxlenof_cliff_front_left_signal() const
1339{
1340 return 1;
1341}
1342
1343/** Set cliff_front_left_signal value.
1344 * Raw front left
1345 cliff signal.
1346 * @param new_cliff_front_left_signal new cliff_front_left_signal value
1347 */
1348void
1349Roomba500Interface::set_cliff_front_left_signal(const uint16_t new_cliff_front_left_signal)
1350{
1351 set_field(data->cliff_front_left_signal, new_cliff_front_left_signal);
1352}
1353
1354/** Get cliff_front_right_signal value.
1355 * Raw front right
1356 cliff signal.
1357 * @return cliff_front_right_signal value
1358 */
1359uint16_t
1360Roomba500Interface::cliff_front_right_signal() const
1361{
1362 return data->cliff_front_right_signal;
1363}
1364
1365/** Get maximum length of cliff_front_right_signal value.
1366 * @return length of cliff_front_right_signal value, can be length of the array or number of
1367 * maximum number of characters for a string
1368 */
1369size_t
1370Roomba500Interface::maxlenof_cliff_front_right_signal() const
1371{
1372 return 1;
1373}
1374
1375/** Set cliff_front_right_signal value.
1376 * Raw front right
1377 cliff signal.
1378 * @param new_cliff_front_right_signal new cliff_front_right_signal value
1379 */
1380void
1381Roomba500Interface::set_cliff_front_right_signal(const uint16_t new_cliff_front_right_signal)
1382{
1383 set_field(data->cliff_front_right_signal, new_cliff_front_right_signal);
1384}
1385
1386/** Get cliff_right_signal value.
1387 * Raw right cliff signal.
1388 * @return cliff_right_signal value
1389 */
1390uint16_t
1391Roomba500Interface::cliff_right_signal() const
1392{
1393 return data->cliff_right_signal;
1394}
1395
1396/** Get maximum length of cliff_right_signal value.
1397 * @return length of cliff_right_signal value, can be length of the array or number of
1398 * maximum number of characters for a string
1399 */
1400size_t
1401Roomba500Interface::maxlenof_cliff_right_signal() const
1402{
1403 return 1;
1404}
1405
1406/** Set cliff_right_signal value.
1407 * Raw right cliff signal.
1408 * @param new_cliff_right_signal new cliff_right_signal value
1409 */
1410void
1411Roomba500Interface::set_cliff_right_signal(const uint16_t new_cliff_right_signal)
1412{
1413 set_field(data->cliff_right_signal, new_cliff_right_signal);
1414}
1415
1416/** Get home_base_charger_available value.
1417 *
1418 Home base charger available?
1419 * @return home_base_charger_available value
1420 */
1421bool
1422Roomba500Interface::is_home_base_charger_available() const
1423{
1424 return data->home_base_charger_available;
1425}
1426
1427/** Get maximum length of home_base_charger_available value.
1428 * @return length of home_base_charger_available value, can be length of the array or number of
1429 * maximum number of characters for a string
1430 */
1431size_t
1432Roomba500Interface::maxlenof_home_base_charger_available() const
1433{
1434 return 1;
1435}
1436
1437/** Set home_base_charger_available value.
1438 *
1439 Home base charger available?
1440 * @param new_home_base_charger_available new home_base_charger_available value
1441 */
1442void
1443Roomba500Interface::set_home_base_charger_available(const bool new_home_base_charger_available)
1444{
1445 set_field(data->home_base_charger_available, new_home_base_charger_available);
1446}
1447
1448/** Get internal_charger_available value.
1449 *
1450 Internal charger available?
1451 * @return internal_charger_available value
1452 */
1453bool
1454Roomba500Interface::is_internal_charger_available() const
1455{
1456 return data->internal_charger_available;
1457}
1458
1459/** Get maximum length of internal_charger_available value.
1460 * @return length of internal_charger_available value, can be length of the array or number of
1461 * maximum number of characters for a string
1462 */
1463size_t
1464Roomba500Interface::maxlenof_internal_charger_available() const
1465{
1466 return 1;
1467}
1468
1469/** Set internal_charger_available value.
1470 *
1471 Internal charger available?
1472 * @param new_internal_charger_available new internal_charger_available value
1473 */
1474void
1475Roomba500Interface::set_internal_charger_available(const bool new_internal_charger_available)
1476{
1477 set_field(data->internal_charger_available, new_internal_charger_available);
1478}
1479
1480/** Get song_number value.
1481 * Song number.
1482 * @return song_number value
1483 */
1484uint8_t
1485Roomba500Interface::song_number() const
1486{
1487 return data->song_number;
1488}
1489
1490/** Get maximum length of song_number value.
1491 * @return length of song_number value, can be length of the array or number of
1492 * maximum number of characters for a string
1493 */
1494size_t
1495Roomba500Interface::maxlenof_song_number() const
1496{
1497 return 1;
1498}
1499
1500/** Set song_number value.
1501 * Song number.
1502 * @param new_song_number new song_number value
1503 */
1504void
1505Roomba500Interface::set_song_number(const uint8_t new_song_number)
1506{
1507 set_field(data->song_number, new_song_number);
1508}
1509
1510/** Get song_playing value.
1511 * Song playing?
1512 * @return song_playing value
1513 */
1514bool
1515Roomba500Interface::is_song_playing() const
1516{
1517 return data->song_playing;
1518}
1519
1520/** Get maximum length of song_playing value.
1521 * @return length of song_playing value, can be length of the array or number of
1522 * maximum number of characters for a string
1523 */
1524size_t
1525Roomba500Interface::maxlenof_song_playing() const
1526{
1527 return 1;
1528}
1529
1530/** Set song_playing value.
1531 * Song playing?
1532 * @param new_song_playing new song_playing value
1533 */
1534void
1535Roomba500Interface::set_song_playing(const bool new_song_playing)
1536{
1537 set_field(data->song_playing, new_song_playing);
1538}
1539
1540/** Get velocity value.
1541 * Requested velocity in mm/s.
1542 * @return velocity value
1543 */
1544int16_t
1545Roomba500Interface::velocity() const
1546{
1547 return data->velocity;
1548}
1549
1550/** Get maximum length of velocity value.
1551 * @return length of velocity value, can be length of the array or number of
1552 * maximum number of characters for a string
1553 */
1554size_t
1555Roomba500Interface::maxlenof_velocity() const
1556{
1557 return 1;
1558}
1559
1560/** Set velocity value.
1561 * Requested velocity in mm/s.
1562 * @param new_velocity new velocity value
1563 */
1564void
1565Roomba500Interface::set_velocity(const int16_t new_velocity)
1566{
1567 set_field(data->velocity, new_velocity);
1568}
1569
1570/** Get radius value.
1571 * Requested radius in mm.
1572 * @return radius value
1573 */
1574int16_t
1575Roomba500Interface::radius() const
1576{
1577 return data->radius;
1578}
1579
1580/** Get maximum length of radius value.
1581 * @return length of radius value, can be length of the array or number of
1582 * maximum number of characters for a string
1583 */
1584size_t
1585Roomba500Interface::maxlenof_radius() const
1586{
1587 return 1;
1588}
1589
1590/** Set radius value.
1591 * Requested radius in mm.
1592 * @param new_radius new radius value
1593 */
1594void
1595Roomba500Interface::set_radius(const int16_t new_radius)
1596{
1597 set_field(data->radius, new_radius);
1598}
1599
1600/** Get velocity_right value.
1601 * Requested left velocity in mm/s.
1602 * @return velocity_right value
1603 */
1604int16_t
1605Roomba500Interface::velocity_right() const
1606{
1607 return data->velocity_right;
1608}
1609
1610/** Get maximum length of velocity_right value.
1611 * @return length of velocity_right value, can be length of the array or number of
1612 * maximum number of characters for a string
1613 */
1614size_t
1615Roomba500Interface::maxlenof_velocity_right() const
1616{
1617 return 1;
1618}
1619
1620/** Set velocity_right value.
1621 * Requested left velocity in mm/s.
1622 * @param new_velocity_right new velocity_right value
1623 */
1624void
1625Roomba500Interface::set_velocity_right(const int16_t new_velocity_right)
1626{
1627 set_field(data->velocity_right, new_velocity_right);
1628}
1629
1630/** Get velocity_left value.
1631 * Requested right velocity in mm/s.
1632 * @return velocity_left value
1633 */
1634int16_t
1635Roomba500Interface::velocity_left() const
1636{
1637 return data->velocity_left;
1638}
1639
1640/** Get maximum length of velocity_left value.
1641 * @return length of velocity_left value, can be length of the array or number of
1642 * maximum number of characters for a string
1643 */
1644size_t
1645Roomba500Interface::maxlenof_velocity_left() const
1646{
1647 return 1;
1648}
1649
1650/** Set velocity_left value.
1651 * Requested right velocity in mm/s.
1652 * @param new_velocity_left new velocity_left value
1653 */
1654void
1655Roomba500Interface::set_velocity_left(const int16_t new_velocity_left)
1656{
1657 set_field(data->velocity_left, new_velocity_left);
1658}
1659
1660/** Get encoder_counts_left value.
1661 * Encoder count left.
1662 * @return encoder_counts_left value
1663 */
1664uint16_t
1665Roomba500Interface::encoder_counts_left() const
1666{
1667 return data->encoder_counts_left;
1668}
1669
1670/** Get maximum length of encoder_counts_left value.
1671 * @return length of encoder_counts_left value, can be length of the array or number of
1672 * maximum number of characters for a string
1673 */
1674size_t
1675Roomba500Interface::maxlenof_encoder_counts_left() const
1676{
1677 return 1;
1678}
1679
1680/** Set encoder_counts_left value.
1681 * Encoder count left.
1682 * @param new_encoder_counts_left new encoder_counts_left value
1683 */
1684void
1685Roomba500Interface::set_encoder_counts_left(const uint16_t new_encoder_counts_left)
1686{
1687 set_field(data->encoder_counts_left, new_encoder_counts_left);
1688}
1689
1690/** Get encoder_counts_right value.
1691 * Encoder count right.
1692 * @return encoder_counts_right value
1693 */
1694uint16_t
1695Roomba500Interface::encoder_counts_right() const
1696{
1697 return data->encoder_counts_right;
1698}
1699
1700/** Get maximum length of encoder_counts_right value.
1701 * @return length of encoder_counts_right value, can be length of the array or number of
1702 * maximum number of characters for a string
1703 */
1704size_t
1705Roomba500Interface::maxlenof_encoder_counts_right() const
1706{
1707 return 1;
1708}
1709
1710/** Set encoder_counts_right value.
1711 * Encoder count right.
1712 * @param new_encoder_counts_right new encoder_counts_right value
1713 */
1714void
1715Roomba500Interface::set_encoder_counts_right(const uint16_t new_encoder_counts_right)
1716{
1717 set_field(data->encoder_counts_right, new_encoder_counts_right);
1718}
1719
1720/** Get bumper_left value.
1721 * Left bumper active?
1722 * @return bumper_left value
1723 */
1724bool
1725Roomba500Interface::is_bumper_left() const
1726{
1727 return data->bumper_left;
1728}
1729
1730/** Get maximum length of bumper_left value.
1731 * @return length of bumper_left value, can be length of the array or number of
1732 * maximum number of characters for a string
1733 */
1734size_t
1735Roomba500Interface::maxlenof_bumper_left() const
1736{
1737 return 1;
1738}
1739
1740/** Set bumper_left value.
1741 * Left bumper active?
1742 * @param new_bumper_left new bumper_left value
1743 */
1744void
1745Roomba500Interface::set_bumper_left(const bool new_bumper_left)
1746{
1747 set_field(data->bumper_left, new_bumper_left);
1748}
1749
1750/** Get bumper_front_left value.
1751 * Front left bumper active?
1752 * @return bumper_front_left value
1753 */
1754bool
1755Roomba500Interface::is_bumper_front_left() const
1756{
1757 return data->bumper_front_left;
1758}
1759
1760/** Get maximum length of bumper_front_left value.
1761 * @return length of bumper_front_left value, can be length of the array or number of
1762 * maximum number of characters for a string
1763 */
1764size_t
1765Roomba500Interface::maxlenof_bumper_front_left() const
1766{
1767 return 1;
1768}
1769
1770/** Set bumper_front_left value.
1771 * Front left bumper active?
1772 * @param new_bumper_front_left new bumper_front_left value
1773 */
1774void
1775Roomba500Interface::set_bumper_front_left(const bool new_bumper_front_left)
1776{
1777 set_field(data->bumper_front_left, new_bumper_front_left);
1778}
1779
1780/** Get bumper_center_left value.
1781 * Center left bumper active?
1782 * @return bumper_center_left value
1783 */
1784bool
1785Roomba500Interface::is_bumper_center_left() const
1786{
1787 return data->bumper_center_left;
1788}
1789
1790/** Get maximum length of bumper_center_left value.
1791 * @return length of bumper_center_left value, can be length of the array or number of
1792 * maximum number of characters for a string
1793 */
1794size_t
1795Roomba500Interface::maxlenof_bumper_center_left() const
1796{
1797 return 1;
1798}
1799
1800/** Set bumper_center_left value.
1801 * Center left bumper active?
1802 * @param new_bumper_center_left new bumper_center_left value
1803 */
1804void
1805Roomba500Interface::set_bumper_center_left(const bool new_bumper_center_left)
1806{
1807 set_field(data->bumper_center_left, new_bumper_center_left);
1808}
1809
1810/** Get bumper_center_right value.
1811 * Center right bumper active?
1812 * @return bumper_center_right value
1813 */
1814bool
1815Roomba500Interface::is_bumper_center_right() const
1816{
1817 return data->bumper_center_right;
1818}
1819
1820/** Get maximum length of bumper_center_right value.
1821 * @return length of bumper_center_right value, can be length of the array or number of
1822 * maximum number of characters for a string
1823 */
1824size_t
1825Roomba500Interface::maxlenof_bumper_center_right() const
1826{
1827 return 1;
1828}
1829
1830/** Set bumper_center_right value.
1831 * Center right bumper active?
1832 * @param new_bumper_center_right new bumper_center_right value
1833 */
1834void
1835Roomba500Interface::set_bumper_center_right(const bool new_bumper_center_right)
1836{
1837 set_field(data->bumper_center_right, new_bumper_center_right);
1838}
1839
1840/** Get bumper_front_right value.
1841 * Front right bumper active?
1842 * @return bumper_front_right value
1843 */
1844bool
1845Roomba500Interface::is_bumper_front_right() const
1846{
1847 return data->bumper_front_right;
1848}
1849
1850/** Get maximum length of bumper_front_right value.
1851 * @return length of bumper_front_right value, can be length of the array or number of
1852 * maximum number of characters for a string
1853 */
1854size_t
1855Roomba500Interface::maxlenof_bumper_front_right() const
1856{
1857 return 1;
1858}
1859
1860/** Set bumper_front_right value.
1861 * Front right bumper active?
1862 * @param new_bumper_front_right new bumper_front_right value
1863 */
1864void
1865Roomba500Interface::set_bumper_front_right(const bool new_bumper_front_right)
1866{
1867 set_field(data->bumper_front_right, new_bumper_front_right);
1868}
1869
1870/** Get bumper_right value.
1871 * Right bumper active?
1872 * @return bumper_right value
1873 */
1874bool
1875Roomba500Interface::is_bumper_right() const
1876{
1877 return data->bumper_right;
1878}
1879
1880/** Get maximum length of bumper_right value.
1881 * @return length of bumper_right value, can be length of the array or number of
1882 * maximum number of characters for a string
1883 */
1884size_t
1885Roomba500Interface::maxlenof_bumper_right() const
1886{
1887 return 1;
1888}
1889
1890/** Set bumper_right value.
1891 * Right bumper active?
1892 * @param new_bumper_right new bumper_right value
1893 */
1894void
1895Roomba500Interface::set_bumper_right(const bool new_bumper_right)
1896{
1897 set_field(data->bumper_right, new_bumper_right);
1898}
1899
1900/** Get light_bump_left value.
1901 * Raw left bumper signal.
1902 * @return light_bump_left value
1903 */
1904uint16_t
1905Roomba500Interface::light_bump_left() const
1906{
1907 return data->light_bump_left;
1908}
1909
1910/** Get maximum length of light_bump_left value.
1911 * @return length of light_bump_left value, can be length of the array or number of
1912 * maximum number of characters for a string
1913 */
1914size_t
1915Roomba500Interface::maxlenof_light_bump_left() const
1916{
1917 return 1;
1918}
1919
1920/** Set light_bump_left value.
1921 * Raw left bumper signal.
1922 * @param new_light_bump_left new light_bump_left value
1923 */
1924void
1925Roomba500Interface::set_light_bump_left(const uint16_t new_light_bump_left)
1926{
1927 set_field(data->light_bump_left, new_light_bump_left);
1928}
1929
1930/** Get light_bump_front_left value.
1931 * Raw front left bumper
1932 signal.
1933 * @return light_bump_front_left value
1934 */
1935uint16_t
1936Roomba500Interface::light_bump_front_left() const
1937{
1938 return data->light_bump_front_left;
1939}
1940
1941/** Get maximum length of light_bump_front_left value.
1942 * @return length of light_bump_front_left value, can be length of the array or number of
1943 * maximum number of characters for a string
1944 */
1945size_t
1946Roomba500Interface::maxlenof_light_bump_front_left() const
1947{
1948 return 1;
1949}
1950
1951/** Set light_bump_front_left value.
1952 * Raw front left bumper
1953 signal.
1954 * @param new_light_bump_front_left new light_bump_front_left value
1955 */
1956void
1957Roomba500Interface::set_light_bump_front_left(const uint16_t new_light_bump_front_left)
1958{
1959 set_field(data->light_bump_front_left, new_light_bump_front_left);
1960}
1961
1962/** Get light_bump_center_left value.
1963 * Raw center left
1964 bumper signal.
1965 * @return light_bump_center_left value
1966 */
1967uint16_t
1968Roomba500Interface::light_bump_center_left() const
1969{
1970 return data->light_bump_center_left;
1971}
1972
1973/** Get maximum length of light_bump_center_left value.
1974 * @return length of light_bump_center_left value, can be length of the array or number of
1975 * maximum number of characters for a string
1976 */
1977size_t
1978Roomba500Interface::maxlenof_light_bump_center_left() const
1979{
1980 return 1;
1981}
1982
1983/** Set light_bump_center_left value.
1984 * Raw center left
1985 bumper signal.
1986 * @param new_light_bump_center_left new light_bump_center_left value
1987 */
1988void
1989Roomba500Interface::set_light_bump_center_left(const uint16_t new_light_bump_center_left)
1990{
1991 set_field(data->light_bump_center_left, new_light_bump_center_left);
1992}
1993
1994/** Get light_bump_center_right value.
1995 * Raw center right
1996 bumper signal.
1997 * @return light_bump_center_right value
1998 */
1999uint16_t
2000Roomba500Interface::light_bump_center_right() const
2001{
2002 return data->light_bump_center_right;
2003}
2004
2005/** Get maximum length of light_bump_center_right value.
2006 * @return length of light_bump_center_right value, can be length of the array or number of
2007 * maximum number of characters for a string
2008 */
2009size_t
2010Roomba500Interface::maxlenof_light_bump_center_right() const
2011{
2012 return 1;
2013}
2014
2015/** Set light_bump_center_right value.
2016 * Raw center right
2017 bumper signal.
2018 * @param new_light_bump_center_right new light_bump_center_right value
2019 */
2020void
2021Roomba500Interface::set_light_bump_center_right(const uint16_t new_light_bump_center_right)
2022{
2023 set_field(data->light_bump_center_right, new_light_bump_center_right);
2024}
2025
2026/** Get light_bump_front_right value.
2027 * Raw front right
2028 bumper signal.
2029 * @return light_bump_front_right value
2030 */
2031uint16_t
2032Roomba500Interface::light_bump_front_right() const
2033{
2034 return data->light_bump_front_right;
2035}
2036
2037/** Get maximum length of light_bump_front_right value.
2038 * @return length of light_bump_front_right value, can be length of the array or number of
2039 * maximum number of characters for a string
2040 */
2041size_t
2042Roomba500Interface::maxlenof_light_bump_front_right() const
2043{
2044 return 1;
2045}
2046
2047/** Set light_bump_front_right value.
2048 * Raw front right
2049 bumper signal.
2050 * @param new_light_bump_front_right new light_bump_front_right value
2051 */
2052void
2053Roomba500Interface::set_light_bump_front_right(const uint16_t new_light_bump_front_right)
2054{
2055 set_field(data->light_bump_front_right, new_light_bump_front_right);
2056}
2057
2058/** Get light_bump_right value.
2059 * Raw right bumper signal.
2060 * @return light_bump_right value
2061 */
2062uint16_t
2063Roomba500Interface::light_bump_right() const
2064{
2065 return data->light_bump_right;
2066}
2067
2068/** Get maximum length of light_bump_right value.
2069 * @return length of light_bump_right value, can be length of the array or number of
2070 * maximum number of characters for a string
2071 */
2072size_t
2073Roomba500Interface::maxlenof_light_bump_right() const
2074{
2075 return 1;
2076}
2077
2078/** Set light_bump_right value.
2079 * Raw right bumper signal.
2080 * @param new_light_bump_right new light_bump_right value
2081 */
2082void
2083Roomba500Interface::set_light_bump_right(const uint16_t new_light_bump_right)
2084{
2085 set_field(data->light_bump_right, new_light_bump_right);
2086}
2087
2088/** Get ir_opcode_left value.
2089 *
2090 Left receiver opcode.
2091 * @return ir_opcode_left value
2092 */
2094Roomba500Interface::ir_opcode_left() const
2095{
2096 return (Roomba500Interface::InfraredCharacter)data->ir_opcode_left;
2097}
2098
2099/** Get maximum length of ir_opcode_left value.
2100 * @return length of ir_opcode_left value, can be length of the array or number of
2101 * maximum number of characters for a string
2102 */
2103size_t
2104Roomba500Interface::maxlenof_ir_opcode_left() const
2105{
2106 return 1;
2107}
2108
2109/** Set ir_opcode_left value.
2110 *
2111 Left receiver opcode.
2112 * @param new_ir_opcode_left new ir_opcode_left value
2113 */
2114void
2115Roomba500Interface::set_ir_opcode_left(const InfraredCharacter new_ir_opcode_left)
2116{
2117 set_field(data->ir_opcode_left, new_ir_opcode_left);
2118}
2119
2120/** Get ir_opcode_right value.
2121 *
2122 Right receiver opcode.
2123 * @return ir_opcode_right value
2124 */
2126Roomba500Interface::ir_opcode_right() const
2127{
2128 return (Roomba500Interface::InfraredCharacter)data->ir_opcode_right;
2129}
2130
2131/** Get maximum length of ir_opcode_right value.
2132 * @return length of ir_opcode_right value, can be length of the array or number of
2133 * maximum number of characters for a string
2134 */
2135size_t
2136Roomba500Interface::maxlenof_ir_opcode_right() const
2137{
2138 return 1;
2139}
2140
2141/** Set ir_opcode_right value.
2142 *
2143 Right receiver opcode.
2144 * @param new_ir_opcode_right new ir_opcode_right value
2145 */
2146void
2147Roomba500Interface::set_ir_opcode_right(const InfraredCharacter new_ir_opcode_right)
2148{
2149 set_field(data->ir_opcode_right, new_ir_opcode_right);
2150}
2151
2152/** Get left_motor_current value.
2153 * Left motor current in mA.
2154 * @return left_motor_current value
2155 */
2156int16_t
2157Roomba500Interface::left_motor_current() const
2158{
2159 return data->left_motor_current;
2160}
2161
2162/** Get maximum length of left_motor_current value.
2163 * @return length of left_motor_current value, can be length of the array or number of
2164 * maximum number of characters for a string
2165 */
2166size_t
2167Roomba500Interface::maxlenof_left_motor_current() const
2168{
2169 return 1;
2170}
2171
2172/** Set left_motor_current value.
2173 * Left motor current in mA.
2174 * @param new_left_motor_current new left_motor_current value
2175 */
2176void
2177Roomba500Interface::set_left_motor_current(const int16_t new_left_motor_current)
2178{
2179 set_field(data->left_motor_current, new_left_motor_current);
2180}
2181
2182/** Get right_motor_current value.
2183 * Right motor current in mA.
2184 * @return right_motor_current value
2185 */
2186int16_t
2187Roomba500Interface::right_motor_current() const
2188{
2189 return data->right_motor_current;
2190}
2191
2192/** Get maximum length of right_motor_current value.
2193 * @return length of right_motor_current value, can be length of the array or number of
2194 * maximum number of characters for a string
2195 */
2196size_t
2197Roomba500Interface::maxlenof_right_motor_current() const
2198{
2199 return 1;
2200}
2201
2202/** Set right_motor_current value.
2203 * Right motor current in mA.
2204 * @param new_right_motor_current new right_motor_current value
2205 */
2206void
2207Roomba500Interface::set_right_motor_current(const int16_t new_right_motor_current)
2208{
2209 set_field(data->right_motor_current, new_right_motor_current);
2210}
2211
2212/** Get main_brush_current value.
2213 * Main brush current in mA.
2214 * @return main_brush_current value
2215 */
2216int16_t
2217Roomba500Interface::main_brush_current() const
2218{
2219 return data->main_brush_current;
2220}
2221
2222/** Get maximum length of main_brush_current value.
2223 * @return length of main_brush_current value, can be length of the array or number of
2224 * maximum number of characters for a string
2225 */
2226size_t
2227Roomba500Interface::maxlenof_main_brush_current() const
2228{
2229 return 1;
2230}
2231
2232/** Set main_brush_current value.
2233 * Main brush current in mA.
2234 * @param new_main_brush_current new main_brush_current value
2235 */
2236void
2237Roomba500Interface::set_main_brush_current(const int16_t new_main_brush_current)
2238{
2239 set_field(data->main_brush_current, new_main_brush_current);
2240}
2241
2242/** Get side_brush_current value.
2243 * Side brush current in mA.
2244 * @return side_brush_current value
2245 */
2246int16_t
2247Roomba500Interface::side_brush_current() const
2248{
2249 return data->side_brush_current;
2250}
2251
2252/** Get maximum length of side_brush_current value.
2253 * @return length of side_brush_current value, can be length of the array or number of
2254 * maximum number of characters for a string
2255 */
2256size_t
2257Roomba500Interface::maxlenof_side_brush_current() const
2258{
2259 return 1;
2260}
2261
2262/** Set side_brush_current value.
2263 * Side brush current in mA.
2264 * @param new_side_brush_current new side_brush_current value
2265 */
2266void
2267Roomba500Interface::set_side_brush_current(const int16_t new_side_brush_current)
2268{
2269 set_field(data->side_brush_current, new_side_brush_current);
2270}
2271
2272/** Get caster_stasis value.
2273 * Caster wheel stasis.
2274 * @return caster_stasis value
2275 */
2276bool
2277Roomba500Interface::is_caster_stasis() const
2278{
2279 return data->caster_stasis;
2280}
2281
2282/** Get maximum length of caster_stasis value.
2283 * @return length of caster_stasis value, can be length of the array or number of
2284 * maximum number of characters for a string
2285 */
2286size_t
2287Roomba500Interface::maxlenof_caster_stasis() const
2288{
2289 return 1;
2290}
2291
2292/** Set caster_stasis value.
2293 * Caster wheel stasis.
2294 * @param new_caster_stasis new caster_stasis value
2295 */
2296void
2297Roomba500Interface::set_caster_stasis(const bool new_caster_stasis)
2298{
2299 set_field(data->caster_stasis, new_caster_stasis);
2300}
2301
2302/* =========== message create =========== */
2303Message *
2304Roomba500Interface::create_message(const char *type) const
2305{
2306 if ( strncmp("StopMessage", type, INTERFACE_MESSAGE_TYPE_SIZE_ - 1) == 0 ) {
2307 return new StopMessage();
2308 } else if ( strncmp("DockMessage", type, INTERFACE_MESSAGE_TYPE_SIZE_ - 1) == 0 ) {
2309 return new DockMessage();
2310 } else if ( strncmp("SetModeMessage", type, INTERFACE_MESSAGE_TYPE_SIZE_ - 1) == 0 ) {
2311 return new SetModeMessage();
2312 } else if ( strncmp("DriveStraightMessage", type, INTERFACE_MESSAGE_TYPE_SIZE_ - 1) == 0 ) {
2313 return new DriveStraightMessage();
2314 } else if ( strncmp("DriveMessage", type, INTERFACE_MESSAGE_TYPE_SIZE_ - 1) == 0 ) {
2315 return new DriveMessage();
2316 } else if ( strncmp("SetMotorsMessage", type, INTERFACE_MESSAGE_TYPE_SIZE_ - 1) == 0 ) {
2317 return new SetMotorsMessage();
2318 } else {
2319 throw UnknownTypeException("The given type '%s' does not match any known "
2320 "message type for this interface type.", type);
2321 }
2322}
2323
2324
2325/** Copy values from other interface.
2326 * @param other other interface to copy values from
2327 */
2328void
2329Roomba500Interface::copy_values(const Interface *other)
2330{
2331 const Roomba500Interface *oi = dynamic_cast<const Roomba500Interface *>(other);
2332 if (oi == NULL) {
2333 throw TypeMismatchException("Can only copy values from interface of same type (%s vs. %s)",
2334 type(), other->type());
2335 }
2336 memcpy(data, oi->data, sizeof(Roomba500Interface_data_t));
2337}
2338
2339const char *
2340Roomba500Interface::enum_tostring(const char *enumtype, int val) const
2341{
2342 if (strcmp(enumtype, "Mode") == 0) {
2343 return tostring_Mode((Mode)val);
2344 }
2345 if (strcmp(enumtype, "InfraredCharacter") == 0) {
2346 return tostring_InfraredCharacter((InfraredCharacter)val);
2347 }
2348 if (strcmp(enumtype, "ChargingState") == 0) {
2349 return tostring_ChargingState((ChargingState)val);
2350 }
2351 if (strcmp(enumtype, "BrushState") == 0) {
2352 return tostring_BrushState((BrushState)val);
2353 }
2354 throw UnknownTypeException("Unknown enum type %s", enumtype);
2355}
2356
2357/* =========== messages =========== */
2358/** @class Roomba500Interface::StopMessage <interfaces/Roomba500Interface.h>
2359 * StopMessage Fawkes BlackBoard Interface Message.
2360 *
2361
2362 */
2363
2364
2365/** Constructor */
2366Roomba500Interface::StopMessage::StopMessage() : Message("StopMessage")
2367{
2368 data_size = sizeof(StopMessage_data_t);
2369 data_ptr = malloc(data_size);
2370 memset(data_ptr, 0, data_size);
2371 data = (StopMessage_data_t *)data_ptr;
2373 enum_map_Mode[(int)MODE_OFF] = "MODE_OFF";
2374 enum_map_Mode[(int)MODE_PASSIVE] = "MODE_PASSIVE";
2375 enum_map_Mode[(int)MODE_SAFE] = "MODE_SAFE";
2376 enum_map_Mode[(int)MODE_FULL] = "MODE_FULL";
2377 enum_map_InfraredCharacter[(int)IR_NONE] = "IR_NONE";
2378 enum_map_InfraredCharacter[(int)IR_REMOTE_LEFT] = "IR_REMOTE_LEFT";
2379 enum_map_InfraredCharacter[(int)IR_REMOTE_FORWARD] = "IR_REMOTE_FORWARD";
2380 enum_map_InfraredCharacter[(int)IR_REMOTE_RIGHT] = "IR_REMOTE_RIGHT";
2381 enum_map_InfraredCharacter[(int)IR_REMOTE_SPOT] = "IR_REMOTE_SPOT";
2382 enum_map_InfraredCharacter[(int)IR_REMOTE_MAX] = "IR_REMOTE_MAX";
2383 enum_map_InfraredCharacter[(int)IR_REMOTE_SMALL] = "IR_REMOTE_SMALL";
2384 enum_map_InfraredCharacter[(int)IR_REMOTE_MEDIUM] = "IR_REMOTE_MEDIUM";
2385 enum_map_InfraredCharacter[(int)IR_REMOTE_LARGE_CLEAN] = "IR_REMOTE_LARGE_CLEAN";
2386 enum_map_InfraredCharacter[(int)IR_REMOTE_STOP] = "IR_REMOTE_STOP";
2387 enum_map_InfraredCharacter[(int)IR_REMOTE_POWER] = "IR_REMOTE_POWER";
2388 enum_map_InfraredCharacter[(int)IR_REMOTE_ARC_LEFT] = "IR_REMOTE_ARC_LEFT";
2389 enum_map_InfraredCharacter[(int)IR_REMOTE_ARC_RIGHT] = "IR_REMOTE_ARC_RIGHT";
2390 enum_map_InfraredCharacter[(int)IR_REMOTE_STOP2] = "IR_REMOTE_STOP2";
2391 enum_map_InfraredCharacter[(int)IR_SCHED_REMOTE_DOWNLOAD] = "IR_SCHED_REMOTE_DOWNLOAD";
2392 enum_map_InfraredCharacter[(int)IR_SCHED_REMOTE_SEEK_DOCK] = "IR_SCHED_REMOTE_SEEK_DOCK";
2393 enum_map_InfraredCharacter[(int)IR_DISC_DOCK_RESERVED] = "IR_DISC_DOCK_RESERVED";
2394 enum_map_InfraredCharacter[(int)IR_DISC_DOCK_RED_BUOY] = "IR_DISC_DOCK_RED_BUOY";
2395 enum_map_InfraredCharacter[(int)IR_DISC_DOCK_GREEN_BUOY] = "IR_DISC_DOCK_GREEN_BUOY";
2396 enum_map_InfraredCharacter[(int)IR_DISC_DOCK_FORCE_FIELD] = "IR_DISC_DOCK_FORCE_FIELD";
2397 enum_map_InfraredCharacter[(int)IR_DISC_DOCK_RED_GREEN_BUOY] = "IR_DISC_DOCK_RED_GREEN_BUOY";
2398 enum_map_InfraredCharacter[(int)IR_DISC_DOCK_RED_BUOY_FORCE_FIELD] = "IR_DISC_DOCK_RED_BUOY_FORCE_FIELD";
2399 enum_map_InfraredCharacter[(int)IR_DISC_DOCK_GREEN_BUOY_FORCE_FIELD] = "IR_DISC_DOCK_GREEN_BUOY_FORCE_FIELD";
2400 enum_map_InfraredCharacter[(int)IR_DISC_DOCK_RED_GREEN_BUOY_FORCE_FIELD] = "IR_DISC_DOCK_RED_GREEN_BUOY_FORCE_FIELD";
2401 enum_map_InfraredCharacter[(int)IR_DOCK_RESERVED] = "IR_DOCK_RESERVED";
2402 enum_map_InfraredCharacter[(int)IR_DOCK_RED_BUOY] = "IR_DOCK_RED_BUOY";
2403 enum_map_InfraredCharacter[(int)IR_DOCK_GREEN_BUOY] = "IR_DOCK_GREEN_BUOY";
2404 enum_map_InfraredCharacter[(int)IR_DOCK_FORCE_FIELD] = "IR_DOCK_FORCE_FIELD";
2405 enum_map_InfraredCharacter[(int)IR_DOCK_RED_GREEN_BUOY] = "IR_DOCK_RED_GREEN_BUOY";
2406 enum_map_InfraredCharacter[(int)IR_DOCK_RED_BUOY_FORCE_FIELD] = "IR_DOCK_RED_BUOY_FORCE_FIELD";
2407 enum_map_InfraredCharacter[(int)IR_DOCK_GREEN_BUOY_FORCE_FIELD] = "IR_DOCK_GREEN_BUOY_FORCE_FIELD";
2408 enum_map_InfraredCharacter[(int)IR_DOCK_RED_GREEN_BUOY_FORCE_FIELD] = "IR_DOCK_RED_GREEN_BUOY_FORCE_FIELD";
2409 enum_map_InfraredCharacter[(int)IR_VIRTUAL_WALL] = "IR_VIRTUAL_WALL";
2410 enum_map_ChargingState[(int)CHARGING_NO] = "CHARGING_NO";
2411 enum_map_ChargingState[(int)CHARGING_RECONDITIONING] = "CHARGING_RECONDITIONING";
2412 enum_map_ChargingState[(int)CHARGING_FULL] = "CHARGING_FULL";
2413 enum_map_ChargingState[(int)CHARGING_TRICKLE] = "CHARGING_TRICKLE";
2414 enum_map_ChargingState[(int)CHARGING_WAITING] = "CHARGING_WAITING";
2415 enum_map_ChargingState[(int)CHARGING_ERROR] = "CHARGING_ERROR";
2416 enum_map_BrushState[(int)BRUSHSTATE_OFF] = "BRUSHSTATE_OFF";
2417 enum_map_BrushState[(int)BRUSHSTATE_FORWARD] = "BRUSHSTATE_FORWARD";
2418 enum_map_BrushState[(int)BRUSHSTATE_BACKWARD] = "BRUSHSTATE_BACKWARD";
2419}
2420
2421/** Destructor */
2423{
2424 free(data_ptr);
2425}
2426
2427/** Copy constructor.
2428 * @param m message to copy from
2429 */
2431{
2432 data_size = m->data_size;
2433 data_ptr = malloc(data_size);
2434 memcpy(data_ptr, m->data_ptr, data_size);
2435 data = (StopMessage_data_t *)data_ptr;
2437}
2438
2439/* Methods */
2440/** Clone this message.
2441 * Produces a message of the same type as this message and copies the
2442 * data to the new message.
2443 * @return clone of this message
2444 */
2445Message *
2447{
2448 return new Roomba500Interface::StopMessage(this);
2449}
2450/** @class Roomba500Interface::DockMessage <interfaces/Roomba500Interface.h>
2451 * DockMessage Fawkes BlackBoard Interface Message.
2452 *
2453
2454 */
2455
2456
2457/** Constructor */
2459{
2460 data_size = sizeof(DockMessage_data_t);
2461 data_ptr = malloc(data_size);
2462 memset(data_ptr, 0, data_size);
2463 data = (DockMessage_data_t *)data_ptr;
2465 enum_map_Mode[(int)MODE_OFF] = "MODE_OFF";
2466 enum_map_Mode[(int)MODE_PASSIVE] = "MODE_PASSIVE";
2467 enum_map_Mode[(int)MODE_SAFE] = "MODE_SAFE";
2468 enum_map_Mode[(int)MODE_FULL] = "MODE_FULL";
2469 enum_map_InfraredCharacter[(int)IR_NONE] = "IR_NONE";
2470 enum_map_InfraredCharacter[(int)IR_REMOTE_LEFT] = "IR_REMOTE_LEFT";
2471 enum_map_InfraredCharacter[(int)IR_REMOTE_FORWARD] = "IR_REMOTE_FORWARD";
2472 enum_map_InfraredCharacter[(int)IR_REMOTE_RIGHT] = "IR_REMOTE_RIGHT";
2473 enum_map_InfraredCharacter[(int)IR_REMOTE_SPOT] = "IR_REMOTE_SPOT";
2474 enum_map_InfraredCharacter[(int)IR_REMOTE_MAX] = "IR_REMOTE_MAX";
2475 enum_map_InfraredCharacter[(int)IR_REMOTE_SMALL] = "IR_REMOTE_SMALL";
2476 enum_map_InfraredCharacter[(int)IR_REMOTE_MEDIUM] = "IR_REMOTE_MEDIUM";
2477 enum_map_InfraredCharacter[(int)IR_REMOTE_LARGE_CLEAN] = "IR_REMOTE_LARGE_CLEAN";
2478 enum_map_InfraredCharacter[(int)IR_REMOTE_STOP] = "IR_REMOTE_STOP";
2479 enum_map_InfraredCharacter[(int)IR_REMOTE_POWER] = "IR_REMOTE_POWER";
2480 enum_map_InfraredCharacter[(int)IR_REMOTE_ARC_LEFT] = "IR_REMOTE_ARC_LEFT";
2481 enum_map_InfraredCharacter[(int)IR_REMOTE_ARC_RIGHT] = "IR_REMOTE_ARC_RIGHT";
2482 enum_map_InfraredCharacter[(int)IR_REMOTE_STOP2] = "IR_REMOTE_STOP2";
2483 enum_map_InfraredCharacter[(int)IR_SCHED_REMOTE_DOWNLOAD] = "IR_SCHED_REMOTE_DOWNLOAD";
2484 enum_map_InfraredCharacter[(int)IR_SCHED_REMOTE_SEEK_DOCK] = "IR_SCHED_REMOTE_SEEK_DOCK";
2485 enum_map_InfraredCharacter[(int)IR_DISC_DOCK_RESERVED] = "IR_DISC_DOCK_RESERVED";
2486 enum_map_InfraredCharacter[(int)IR_DISC_DOCK_RED_BUOY] = "IR_DISC_DOCK_RED_BUOY";
2487 enum_map_InfraredCharacter[(int)IR_DISC_DOCK_GREEN_BUOY] = "IR_DISC_DOCK_GREEN_BUOY";
2488 enum_map_InfraredCharacter[(int)IR_DISC_DOCK_FORCE_FIELD] = "IR_DISC_DOCK_FORCE_FIELD";
2489 enum_map_InfraredCharacter[(int)IR_DISC_DOCK_RED_GREEN_BUOY] = "IR_DISC_DOCK_RED_GREEN_BUOY";
2490 enum_map_InfraredCharacter[(int)IR_DISC_DOCK_RED_BUOY_FORCE_FIELD] = "IR_DISC_DOCK_RED_BUOY_FORCE_FIELD";
2491 enum_map_InfraredCharacter[(int)IR_DISC_DOCK_GREEN_BUOY_FORCE_FIELD] = "IR_DISC_DOCK_GREEN_BUOY_FORCE_FIELD";
2492 enum_map_InfraredCharacter[(int)IR_DISC_DOCK_RED_GREEN_BUOY_FORCE_FIELD] = "IR_DISC_DOCK_RED_GREEN_BUOY_FORCE_FIELD";
2493 enum_map_InfraredCharacter[(int)IR_DOCK_RESERVED] = "IR_DOCK_RESERVED";
2494 enum_map_InfraredCharacter[(int)IR_DOCK_RED_BUOY] = "IR_DOCK_RED_BUOY";
2495 enum_map_InfraredCharacter[(int)IR_DOCK_GREEN_BUOY] = "IR_DOCK_GREEN_BUOY";
2496 enum_map_InfraredCharacter[(int)IR_DOCK_FORCE_FIELD] = "IR_DOCK_FORCE_FIELD";
2497 enum_map_InfraredCharacter[(int)IR_DOCK_RED_GREEN_BUOY] = "IR_DOCK_RED_GREEN_BUOY";
2498 enum_map_InfraredCharacter[(int)IR_DOCK_RED_BUOY_FORCE_FIELD] = "IR_DOCK_RED_BUOY_FORCE_FIELD";
2499 enum_map_InfraredCharacter[(int)IR_DOCK_GREEN_BUOY_FORCE_FIELD] = "IR_DOCK_GREEN_BUOY_FORCE_FIELD";
2500 enum_map_InfraredCharacter[(int)IR_DOCK_RED_GREEN_BUOY_FORCE_FIELD] = "IR_DOCK_RED_GREEN_BUOY_FORCE_FIELD";
2501 enum_map_InfraredCharacter[(int)IR_VIRTUAL_WALL] = "IR_VIRTUAL_WALL";
2502 enum_map_ChargingState[(int)CHARGING_NO] = "CHARGING_NO";
2503 enum_map_ChargingState[(int)CHARGING_RECONDITIONING] = "CHARGING_RECONDITIONING";
2504 enum_map_ChargingState[(int)CHARGING_FULL] = "CHARGING_FULL";
2505 enum_map_ChargingState[(int)CHARGING_TRICKLE] = "CHARGING_TRICKLE";
2506 enum_map_ChargingState[(int)CHARGING_WAITING] = "CHARGING_WAITING";
2507 enum_map_ChargingState[(int)CHARGING_ERROR] = "CHARGING_ERROR";
2508 enum_map_BrushState[(int)BRUSHSTATE_OFF] = "BRUSHSTATE_OFF";
2509 enum_map_BrushState[(int)BRUSHSTATE_FORWARD] = "BRUSHSTATE_FORWARD";
2510 enum_map_BrushState[(int)BRUSHSTATE_BACKWARD] = "BRUSHSTATE_BACKWARD";
2511}
2512
2513/** Destructor */
2515{
2516 free(data_ptr);
2517}
2518
2519/** Copy constructor.
2520 * @param m message to copy from
2521 */
2523{
2524 data_size = m->data_size;
2525 data_ptr = malloc(data_size);
2526 memcpy(data_ptr, m->data_ptr, data_size);
2527 data = (DockMessage_data_t *)data_ptr;
2529}
2530
2531/* Methods */
2532/** Clone this message.
2533 * Produces a message of the same type as this message and copies the
2534 * data to the new message.
2535 * @return clone of this message
2536 */
2537Message *
2539{
2540 return new Roomba500Interface::DockMessage(this);
2541}
2542/** @class Roomba500Interface::SetModeMessage <interfaces/Roomba500Interface.h>
2543 * SetModeMessage Fawkes BlackBoard Interface Message.
2544 *
2545
2546 */
2547
2548
2549/** Constructor with initial values.
2550 * @param ini_mode initial value for mode
2551 */
2553{
2554 data_size = sizeof(SetModeMessage_data_t);
2555 data_ptr = malloc(data_size);
2556 memset(data_ptr, 0, data_size);
2557 data = (SetModeMessage_data_t *)data_ptr;
2559 data->mode = ini_mode;
2560 enum_map_Mode[(int)MODE_OFF] = "MODE_OFF";
2561 enum_map_Mode[(int)MODE_PASSIVE] = "MODE_PASSIVE";
2562 enum_map_Mode[(int)MODE_SAFE] = "MODE_SAFE";
2563 enum_map_Mode[(int)MODE_FULL] = "MODE_FULL";
2564 enum_map_InfraredCharacter[(int)IR_NONE] = "IR_NONE";
2565 enum_map_InfraredCharacter[(int)IR_REMOTE_LEFT] = "IR_REMOTE_LEFT";
2566 enum_map_InfraredCharacter[(int)IR_REMOTE_FORWARD] = "IR_REMOTE_FORWARD";
2567 enum_map_InfraredCharacter[(int)IR_REMOTE_RIGHT] = "IR_REMOTE_RIGHT";
2568 enum_map_InfraredCharacter[(int)IR_REMOTE_SPOT] = "IR_REMOTE_SPOT";
2569 enum_map_InfraredCharacter[(int)IR_REMOTE_MAX] = "IR_REMOTE_MAX";
2570 enum_map_InfraredCharacter[(int)IR_REMOTE_SMALL] = "IR_REMOTE_SMALL";
2571 enum_map_InfraredCharacter[(int)IR_REMOTE_MEDIUM] = "IR_REMOTE_MEDIUM";
2572 enum_map_InfraredCharacter[(int)IR_REMOTE_LARGE_CLEAN] = "IR_REMOTE_LARGE_CLEAN";
2573 enum_map_InfraredCharacter[(int)IR_REMOTE_STOP] = "IR_REMOTE_STOP";
2574 enum_map_InfraredCharacter[(int)IR_REMOTE_POWER] = "IR_REMOTE_POWER";
2575 enum_map_InfraredCharacter[(int)IR_REMOTE_ARC_LEFT] = "IR_REMOTE_ARC_LEFT";
2576 enum_map_InfraredCharacter[(int)IR_REMOTE_ARC_RIGHT] = "IR_REMOTE_ARC_RIGHT";
2577 enum_map_InfraredCharacter[(int)IR_REMOTE_STOP2] = "IR_REMOTE_STOP2";
2578 enum_map_InfraredCharacter[(int)IR_SCHED_REMOTE_DOWNLOAD] = "IR_SCHED_REMOTE_DOWNLOAD";
2579 enum_map_InfraredCharacter[(int)IR_SCHED_REMOTE_SEEK_DOCK] = "IR_SCHED_REMOTE_SEEK_DOCK";
2580 enum_map_InfraredCharacter[(int)IR_DISC_DOCK_RESERVED] = "IR_DISC_DOCK_RESERVED";
2581 enum_map_InfraredCharacter[(int)IR_DISC_DOCK_RED_BUOY] = "IR_DISC_DOCK_RED_BUOY";
2582 enum_map_InfraredCharacter[(int)IR_DISC_DOCK_GREEN_BUOY] = "IR_DISC_DOCK_GREEN_BUOY";
2583 enum_map_InfraredCharacter[(int)IR_DISC_DOCK_FORCE_FIELD] = "IR_DISC_DOCK_FORCE_FIELD";
2584 enum_map_InfraredCharacter[(int)IR_DISC_DOCK_RED_GREEN_BUOY] = "IR_DISC_DOCK_RED_GREEN_BUOY";
2585 enum_map_InfraredCharacter[(int)IR_DISC_DOCK_RED_BUOY_FORCE_FIELD] = "IR_DISC_DOCK_RED_BUOY_FORCE_FIELD";
2586 enum_map_InfraredCharacter[(int)IR_DISC_DOCK_GREEN_BUOY_FORCE_FIELD] = "IR_DISC_DOCK_GREEN_BUOY_FORCE_FIELD";
2587 enum_map_InfraredCharacter[(int)IR_DISC_DOCK_RED_GREEN_BUOY_FORCE_FIELD] = "IR_DISC_DOCK_RED_GREEN_BUOY_FORCE_FIELD";
2588 enum_map_InfraredCharacter[(int)IR_DOCK_RESERVED] = "IR_DOCK_RESERVED";
2589 enum_map_InfraredCharacter[(int)IR_DOCK_RED_BUOY] = "IR_DOCK_RED_BUOY";
2590 enum_map_InfraredCharacter[(int)IR_DOCK_GREEN_BUOY] = "IR_DOCK_GREEN_BUOY";
2591 enum_map_InfraredCharacter[(int)IR_DOCK_FORCE_FIELD] = "IR_DOCK_FORCE_FIELD";
2592 enum_map_InfraredCharacter[(int)IR_DOCK_RED_GREEN_BUOY] = "IR_DOCK_RED_GREEN_BUOY";
2593 enum_map_InfraredCharacter[(int)IR_DOCK_RED_BUOY_FORCE_FIELD] = "IR_DOCK_RED_BUOY_FORCE_FIELD";
2594 enum_map_InfraredCharacter[(int)IR_DOCK_GREEN_BUOY_FORCE_FIELD] = "IR_DOCK_GREEN_BUOY_FORCE_FIELD";
2595 enum_map_InfraredCharacter[(int)IR_DOCK_RED_GREEN_BUOY_FORCE_FIELD] = "IR_DOCK_RED_GREEN_BUOY_FORCE_FIELD";
2596 enum_map_InfraredCharacter[(int)IR_VIRTUAL_WALL] = "IR_VIRTUAL_WALL";
2597 enum_map_ChargingState[(int)CHARGING_NO] = "CHARGING_NO";
2598 enum_map_ChargingState[(int)CHARGING_RECONDITIONING] = "CHARGING_RECONDITIONING";
2599 enum_map_ChargingState[(int)CHARGING_FULL] = "CHARGING_FULL";
2600 enum_map_ChargingState[(int)CHARGING_TRICKLE] = "CHARGING_TRICKLE";
2601 enum_map_ChargingState[(int)CHARGING_WAITING] = "CHARGING_WAITING";
2602 enum_map_ChargingState[(int)CHARGING_ERROR] = "CHARGING_ERROR";
2603 enum_map_BrushState[(int)BRUSHSTATE_OFF] = "BRUSHSTATE_OFF";
2604 enum_map_BrushState[(int)BRUSHSTATE_FORWARD] = "BRUSHSTATE_FORWARD";
2605 enum_map_BrushState[(int)BRUSHSTATE_BACKWARD] = "BRUSHSTATE_BACKWARD";
2606 add_fieldinfo(IFT_ENUM, "mode", 1, &data->mode, "Mode", &enum_map_Mode);
2607}
2608/** Constructor */
2610{
2611 data_size = sizeof(SetModeMessage_data_t);
2612 data_ptr = malloc(data_size);
2613 memset(data_ptr, 0, data_size);
2614 data = (SetModeMessage_data_t *)data_ptr;
2616 enum_map_Mode[(int)MODE_OFF] = "MODE_OFF";
2617 enum_map_Mode[(int)MODE_PASSIVE] = "MODE_PASSIVE";
2618 enum_map_Mode[(int)MODE_SAFE] = "MODE_SAFE";
2619 enum_map_Mode[(int)MODE_FULL] = "MODE_FULL";
2620 enum_map_InfraredCharacter[(int)IR_NONE] = "IR_NONE";
2621 enum_map_InfraredCharacter[(int)IR_REMOTE_LEFT] = "IR_REMOTE_LEFT";
2622 enum_map_InfraredCharacter[(int)IR_REMOTE_FORWARD] = "IR_REMOTE_FORWARD";
2623 enum_map_InfraredCharacter[(int)IR_REMOTE_RIGHT] = "IR_REMOTE_RIGHT";
2624 enum_map_InfraredCharacter[(int)IR_REMOTE_SPOT] = "IR_REMOTE_SPOT";
2625 enum_map_InfraredCharacter[(int)IR_REMOTE_MAX] = "IR_REMOTE_MAX";
2626 enum_map_InfraredCharacter[(int)IR_REMOTE_SMALL] = "IR_REMOTE_SMALL";
2627 enum_map_InfraredCharacter[(int)IR_REMOTE_MEDIUM] = "IR_REMOTE_MEDIUM";
2628 enum_map_InfraredCharacter[(int)IR_REMOTE_LARGE_CLEAN] = "IR_REMOTE_LARGE_CLEAN";
2629 enum_map_InfraredCharacter[(int)IR_REMOTE_STOP] = "IR_REMOTE_STOP";
2630 enum_map_InfraredCharacter[(int)IR_REMOTE_POWER] = "IR_REMOTE_POWER";
2631 enum_map_InfraredCharacter[(int)IR_REMOTE_ARC_LEFT] = "IR_REMOTE_ARC_LEFT";
2632 enum_map_InfraredCharacter[(int)IR_REMOTE_ARC_RIGHT] = "IR_REMOTE_ARC_RIGHT";
2633 enum_map_InfraredCharacter[(int)IR_REMOTE_STOP2] = "IR_REMOTE_STOP2";
2634 enum_map_InfraredCharacter[(int)IR_SCHED_REMOTE_DOWNLOAD] = "IR_SCHED_REMOTE_DOWNLOAD";
2635 enum_map_InfraredCharacter[(int)IR_SCHED_REMOTE_SEEK_DOCK] = "IR_SCHED_REMOTE_SEEK_DOCK";
2636 enum_map_InfraredCharacter[(int)IR_DISC_DOCK_RESERVED] = "IR_DISC_DOCK_RESERVED";
2637 enum_map_InfraredCharacter[(int)IR_DISC_DOCK_RED_BUOY] = "IR_DISC_DOCK_RED_BUOY";
2638 enum_map_InfraredCharacter[(int)IR_DISC_DOCK_GREEN_BUOY] = "IR_DISC_DOCK_GREEN_BUOY";
2639 enum_map_InfraredCharacter[(int)IR_DISC_DOCK_FORCE_FIELD] = "IR_DISC_DOCK_FORCE_FIELD";
2640 enum_map_InfraredCharacter[(int)IR_DISC_DOCK_RED_GREEN_BUOY] = "IR_DISC_DOCK_RED_GREEN_BUOY";
2641 enum_map_InfraredCharacter[(int)IR_DISC_DOCK_RED_BUOY_FORCE_FIELD] = "IR_DISC_DOCK_RED_BUOY_FORCE_FIELD";
2642 enum_map_InfraredCharacter[(int)IR_DISC_DOCK_GREEN_BUOY_FORCE_FIELD] = "IR_DISC_DOCK_GREEN_BUOY_FORCE_FIELD";
2643 enum_map_InfraredCharacter[(int)IR_DISC_DOCK_RED_GREEN_BUOY_FORCE_FIELD] = "IR_DISC_DOCK_RED_GREEN_BUOY_FORCE_FIELD";
2644 enum_map_InfraredCharacter[(int)IR_DOCK_RESERVED] = "IR_DOCK_RESERVED";
2645 enum_map_InfraredCharacter[(int)IR_DOCK_RED_BUOY] = "IR_DOCK_RED_BUOY";
2646 enum_map_InfraredCharacter[(int)IR_DOCK_GREEN_BUOY] = "IR_DOCK_GREEN_BUOY";
2647 enum_map_InfraredCharacter[(int)IR_DOCK_FORCE_FIELD] = "IR_DOCK_FORCE_FIELD";
2648 enum_map_InfraredCharacter[(int)IR_DOCK_RED_GREEN_BUOY] = "IR_DOCK_RED_GREEN_BUOY";
2649 enum_map_InfraredCharacter[(int)IR_DOCK_RED_BUOY_FORCE_FIELD] = "IR_DOCK_RED_BUOY_FORCE_FIELD";
2650 enum_map_InfraredCharacter[(int)IR_DOCK_GREEN_BUOY_FORCE_FIELD] = "IR_DOCK_GREEN_BUOY_FORCE_FIELD";
2651 enum_map_InfraredCharacter[(int)IR_DOCK_RED_GREEN_BUOY_FORCE_FIELD] = "IR_DOCK_RED_GREEN_BUOY_FORCE_FIELD";
2652 enum_map_InfraredCharacter[(int)IR_VIRTUAL_WALL] = "IR_VIRTUAL_WALL";
2653 enum_map_ChargingState[(int)CHARGING_NO] = "CHARGING_NO";
2654 enum_map_ChargingState[(int)CHARGING_RECONDITIONING] = "CHARGING_RECONDITIONING";
2655 enum_map_ChargingState[(int)CHARGING_FULL] = "CHARGING_FULL";
2656 enum_map_ChargingState[(int)CHARGING_TRICKLE] = "CHARGING_TRICKLE";
2657 enum_map_ChargingState[(int)CHARGING_WAITING] = "CHARGING_WAITING";
2658 enum_map_ChargingState[(int)CHARGING_ERROR] = "CHARGING_ERROR";
2659 enum_map_BrushState[(int)BRUSHSTATE_OFF] = "BRUSHSTATE_OFF";
2660 enum_map_BrushState[(int)BRUSHSTATE_FORWARD] = "BRUSHSTATE_FORWARD";
2661 enum_map_BrushState[(int)BRUSHSTATE_BACKWARD] = "BRUSHSTATE_BACKWARD";
2662 add_fieldinfo(IFT_ENUM, "mode", 1, &data->mode, "Mode", &enum_map_Mode);
2663}
2664
2665/** Destructor */
2667{
2668 free(data_ptr);
2669}
2670
2671/** Copy constructor.
2672 * @param m message to copy from
2673 */
2675{
2676 data_size = m->data_size;
2677 data_ptr = malloc(data_size);
2678 memcpy(data_ptr, m->data_ptr, data_size);
2679 data = (SetModeMessage_data_t *)data_ptr;
2681}
2682
2683/* Methods */
2684/** Get mode value.
2685 * Open Interface mode.
2686 * @return mode value
2687 */
2690{
2691 return (Roomba500Interface::Mode)data->mode;
2692}
2693
2694/** Get maximum length of mode value.
2695 * @return length of mode value, can be length of the array or number of
2696 * maximum number of characters for a string
2697 */
2698size_t
2700{
2701 return 1;
2702}
2703
2704/** Set mode value.
2705 * Open Interface mode.
2706 * @param new_mode new mode value
2707 */
2708void
2710{
2711 set_field(data->mode, new_mode);
2712}
2713
2714/** Clone this message.
2715 * Produces a message of the same type as this message and copies the
2716 * data to the new message.
2717 * @return clone of this message
2718 */
2719Message *
2721{
2722 return new Roomba500Interface::SetModeMessage(this);
2723}
2724/** @class Roomba500Interface::DriveStraightMessage <interfaces/Roomba500Interface.h>
2725 * DriveStraightMessage Fawkes BlackBoard Interface Message.
2726 *
2727
2728 */
2729
2730
2731/** Constructor with initial values.
2732 * @param ini_velocity initial value for velocity
2733 */
2734Roomba500Interface::DriveStraightMessage::DriveStraightMessage(const int16_t ini_velocity) : Message("DriveStraightMessage")
2735{
2736 data_size = sizeof(DriveStraightMessage_data_t);
2737 data_ptr = malloc(data_size);
2738 memset(data_ptr, 0, data_size);
2739 data = (DriveStraightMessage_data_t *)data_ptr;
2741 data->velocity = ini_velocity;
2742 enum_map_Mode[(int)MODE_OFF] = "MODE_OFF";
2743 enum_map_Mode[(int)MODE_PASSIVE] = "MODE_PASSIVE";
2744 enum_map_Mode[(int)MODE_SAFE] = "MODE_SAFE";
2745 enum_map_Mode[(int)MODE_FULL] = "MODE_FULL";
2746 enum_map_InfraredCharacter[(int)IR_NONE] = "IR_NONE";
2747 enum_map_InfraredCharacter[(int)IR_REMOTE_LEFT] = "IR_REMOTE_LEFT";
2748 enum_map_InfraredCharacter[(int)IR_REMOTE_FORWARD] = "IR_REMOTE_FORWARD";
2749 enum_map_InfraredCharacter[(int)IR_REMOTE_RIGHT] = "IR_REMOTE_RIGHT";
2750 enum_map_InfraredCharacter[(int)IR_REMOTE_SPOT] = "IR_REMOTE_SPOT";
2751 enum_map_InfraredCharacter[(int)IR_REMOTE_MAX] = "IR_REMOTE_MAX";
2752 enum_map_InfraredCharacter[(int)IR_REMOTE_SMALL] = "IR_REMOTE_SMALL";
2753 enum_map_InfraredCharacter[(int)IR_REMOTE_MEDIUM] = "IR_REMOTE_MEDIUM";
2754 enum_map_InfraredCharacter[(int)IR_REMOTE_LARGE_CLEAN] = "IR_REMOTE_LARGE_CLEAN";
2755 enum_map_InfraredCharacter[(int)IR_REMOTE_STOP] = "IR_REMOTE_STOP";
2756 enum_map_InfraredCharacter[(int)IR_REMOTE_POWER] = "IR_REMOTE_POWER";
2757 enum_map_InfraredCharacter[(int)IR_REMOTE_ARC_LEFT] = "IR_REMOTE_ARC_LEFT";
2758 enum_map_InfraredCharacter[(int)IR_REMOTE_ARC_RIGHT] = "IR_REMOTE_ARC_RIGHT";
2759 enum_map_InfraredCharacter[(int)IR_REMOTE_STOP2] = "IR_REMOTE_STOP2";
2760 enum_map_InfraredCharacter[(int)IR_SCHED_REMOTE_DOWNLOAD] = "IR_SCHED_REMOTE_DOWNLOAD";
2761 enum_map_InfraredCharacter[(int)IR_SCHED_REMOTE_SEEK_DOCK] = "IR_SCHED_REMOTE_SEEK_DOCK";
2762 enum_map_InfraredCharacter[(int)IR_DISC_DOCK_RESERVED] = "IR_DISC_DOCK_RESERVED";
2763 enum_map_InfraredCharacter[(int)IR_DISC_DOCK_RED_BUOY] = "IR_DISC_DOCK_RED_BUOY";
2764 enum_map_InfraredCharacter[(int)IR_DISC_DOCK_GREEN_BUOY] = "IR_DISC_DOCK_GREEN_BUOY";
2765 enum_map_InfraredCharacter[(int)IR_DISC_DOCK_FORCE_FIELD] = "IR_DISC_DOCK_FORCE_FIELD";
2766 enum_map_InfraredCharacter[(int)IR_DISC_DOCK_RED_GREEN_BUOY] = "IR_DISC_DOCK_RED_GREEN_BUOY";
2767 enum_map_InfraredCharacter[(int)IR_DISC_DOCK_RED_BUOY_FORCE_FIELD] = "IR_DISC_DOCK_RED_BUOY_FORCE_FIELD";
2768 enum_map_InfraredCharacter[(int)IR_DISC_DOCK_GREEN_BUOY_FORCE_FIELD] = "IR_DISC_DOCK_GREEN_BUOY_FORCE_FIELD";
2769 enum_map_InfraredCharacter[(int)IR_DISC_DOCK_RED_GREEN_BUOY_FORCE_FIELD] = "IR_DISC_DOCK_RED_GREEN_BUOY_FORCE_FIELD";
2770 enum_map_InfraredCharacter[(int)IR_DOCK_RESERVED] = "IR_DOCK_RESERVED";
2771 enum_map_InfraredCharacter[(int)IR_DOCK_RED_BUOY] = "IR_DOCK_RED_BUOY";
2772 enum_map_InfraredCharacter[(int)IR_DOCK_GREEN_BUOY] = "IR_DOCK_GREEN_BUOY";
2773 enum_map_InfraredCharacter[(int)IR_DOCK_FORCE_FIELD] = "IR_DOCK_FORCE_FIELD";
2774 enum_map_InfraredCharacter[(int)IR_DOCK_RED_GREEN_BUOY] = "IR_DOCK_RED_GREEN_BUOY";
2775 enum_map_InfraredCharacter[(int)IR_DOCK_RED_BUOY_FORCE_FIELD] = "IR_DOCK_RED_BUOY_FORCE_FIELD";
2776 enum_map_InfraredCharacter[(int)IR_DOCK_GREEN_BUOY_FORCE_FIELD] = "IR_DOCK_GREEN_BUOY_FORCE_FIELD";
2777 enum_map_InfraredCharacter[(int)IR_DOCK_RED_GREEN_BUOY_FORCE_FIELD] = "IR_DOCK_RED_GREEN_BUOY_FORCE_FIELD";
2778 enum_map_InfraredCharacter[(int)IR_VIRTUAL_WALL] = "IR_VIRTUAL_WALL";
2779 enum_map_ChargingState[(int)CHARGING_NO] = "CHARGING_NO";
2780 enum_map_ChargingState[(int)CHARGING_RECONDITIONING] = "CHARGING_RECONDITIONING";
2781 enum_map_ChargingState[(int)CHARGING_FULL] = "CHARGING_FULL";
2782 enum_map_ChargingState[(int)CHARGING_TRICKLE] = "CHARGING_TRICKLE";
2783 enum_map_ChargingState[(int)CHARGING_WAITING] = "CHARGING_WAITING";
2784 enum_map_ChargingState[(int)CHARGING_ERROR] = "CHARGING_ERROR";
2785 enum_map_BrushState[(int)BRUSHSTATE_OFF] = "BRUSHSTATE_OFF";
2786 enum_map_BrushState[(int)BRUSHSTATE_FORWARD] = "BRUSHSTATE_FORWARD";
2787 enum_map_BrushState[(int)BRUSHSTATE_BACKWARD] = "BRUSHSTATE_BACKWARD";
2788 add_fieldinfo(IFT_INT16, "velocity", 1, &data->velocity);
2789}
2790/** Constructor */
2792{
2793 data_size = sizeof(DriveStraightMessage_data_t);
2794 data_ptr = malloc(data_size);
2795 memset(data_ptr, 0, data_size);
2796 data = (DriveStraightMessage_data_t *)data_ptr;
2798 enum_map_Mode[(int)MODE_OFF] = "MODE_OFF";
2799 enum_map_Mode[(int)MODE_PASSIVE] = "MODE_PASSIVE";
2800 enum_map_Mode[(int)MODE_SAFE] = "MODE_SAFE";
2801 enum_map_Mode[(int)MODE_FULL] = "MODE_FULL";
2802 enum_map_InfraredCharacter[(int)IR_NONE] = "IR_NONE";
2803 enum_map_InfraredCharacter[(int)IR_REMOTE_LEFT] = "IR_REMOTE_LEFT";
2804 enum_map_InfraredCharacter[(int)IR_REMOTE_FORWARD] = "IR_REMOTE_FORWARD";
2805 enum_map_InfraredCharacter[(int)IR_REMOTE_RIGHT] = "IR_REMOTE_RIGHT";
2806 enum_map_InfraredCharacter[(int)IR_REMOTE_SPOT] = "IR_REMOTE_SPOT";
2807 enum_map_InfraredCharacter[(int)IR_REMOTE_MAX] = "IR_REMOTE_MAX";
2808 enum_map_InfraredCharacter[(int)IR_REMOTE_SMALL] = "IR_REMOTE_SMALL";
2809 enum_map_InfraredCharacter[(int)IR_REMOTE_MEDIUM] = "IR_REMOTE_MEDIUM";
2810 enum_map_InfraredCharacter[(int)IR_REMOTE_LARGE_CLEAN] = "IR_REMOTE_LARGE_CLEAN";
2811 enum_map_InfraredCharacter[(int)IR_REMOTE_STOP] = "IR_REMOTE_STOP";
2812 enum_map_InfraredCharacter[(int)IR_REMOTE_POWER] = "IR_REMOTE_POWER";
2813 enum_map_InfraredCharacter[(int)IR_REMOTE_ARC_LEFT] = "IR_REMOTE_ARC_LEFT";
2814 enum_map_InfraredCharacter[(int)IR_REMOTE_ARC_RIGHT] = "IR_REMOTE_ARC_RIGHT";
2815 enum_map_InfraredCharacter[(int)IR_REMOTE_STOP2] = "IR_REMOTE_STOP2";
2816 enum_map_InfraredCharacter[(int)IR_SCHED_REMOTE_DOWNLOAD] = "IR_SCHED_REMOTE_DOWNLOAD";
2817 enum_map_InfraredCharacter[(int)IR_SCHED_REMOTE_SEEK_DOCK] = "IR_SCHED_REMOTE_SEEK_DOCK";
2818 enum_map_InfraredCharacter[(int)IR_DISC_DOCK_RESERVED] = "IR_DISC_DOCK_RESERVED";
2819 enum_map_InfraredCharacter[(int)IR_DISC_DOCK_RED_BUOY] = "IR_DISC_DOCK_RED_BUOY";
2820 enum_map_InfraredCharacter[(int)IR_DISC_DOCK_GREEN_BUOY] = "IR_DISC_DOCK_GREEN_BUOY";
2821 enum_map_InfraredCharacter[(int)IR_DISC_DOCK_FORCE_FIELD] = "IR_DISC_DOCK_FORCE_FIELD";
2822 enum_map_InfraredCharacter[(int)IR_DISC_DOCK_RED_GREEN_BUOY] = "IR_DISC_DOCK_RED_GREEN_BUOY";
2823 enum_map_InfraredCharacter[(int)IR_DISC_DOCK_RED_BUOY_FORCE_FIELD] = "IR_DISC_DOCK_RED_BUOY_FORCE_FIELD";
2824 enum_map_InfraredCharacter[(int)IR_DISC_DOCK_GREEN_BUOY_FORCE_FIELD] = "IR_DISC_DOCK_GREEN_BUOY_FORCE_FIELD";
2825 enum_map_InfraredCharacter[(int)IR_DISC_DOCK_RED_GREEN_BUOY_FORCE_FIELD] = "IR_DISC_DOCK_RED_GREEN_BUOY_FORCE_FIELD";
2826 enum_map_InfraredCharacter[(int)IR_DOCK_RESERVED] = "IR_DOCK_RESERVED";
2827 enum_map_InfraredCharacter[(int)IR_DOCK_RED_BUOY] = "IR_DOCK_RED_BUOY";
2828 enum_map_InfraredCharacter[(int)IR_DOCK_GREEN_BUOY] = "IR_DOCK_GREEN_BUOY";
2829 enum_map_InfraredCharacter[(int)IR_DOCK_FORCE_FIELD] = "IR_DOCK_FORCE_FIELD";
2830 enum_map_InfraredCharacter[(int)IR_DOCK_RED_GREEN_BUOY] = "IR_DOCK_RED_GREEN_BUOY";
2831 enum_map_InfraredCharacter[(int)IR_DOCK_RED_BUOY_FORCE_FIELD] = "IR_DOCK_RED_BUOY_FORCE_FIELD";
2832 enum_map_InfraredCharacter[(int)IR_DOCK_GREEN_BUOY_FORCE_FIELD] = "IR_DOCK_GREEN_BUOY_FORCE_FIELD";
2833 enum_map_InfraredCharacter[(int)IR_DOCK_RED_GREEN_BUOY_FORCE_FIELD] = "IR_DOCK_RED_GREEN_BUOY_FORCE_FIELD";
2834 enum_map_InfraredCharacter[(int)IR_VIRTUAL_WALL] = "IR_VIRTUAL_WALL";
2835 enum_map_ChargingState[(int)CHARGING_NO] = "CHARGING_NO";
2836 enum_map_ChargingState[(int)CHARGING_RECONDITIONING] = "CHARGING_RECONDITIONING";
2837 enum_map_ChargingState[(int)CHARGING_FULL] = "CHARGING_FULL";
2838 enum_map_ChargingState[(int)CHARGING_TRICKLE] = "CHARGING_TRICKLE";
2839 enum_map_ChargingState[(int)CHARGING_WAITING] = "CHARGING_WAITING";
2840 enum_map_ChargingState[(int)CHARGING_ERROR] = "CHARGING_ERROR";
2841 enum_map_BrushState[(int)BRUSHSTATE_OFF] = "BRUSHSTATE_OFF";
2842 enum_map_BrushState[(int)BRUSHSTATE_FORWARD] = "BRUSHSTATE_FORWARD";
2843 enum_map_BrushState[(int)BRUSHSTATE_BACKWARD] = "BRUSHSTATE_BACKWARD";
2844 add_fieldinfo(IFT_INT16, "velocity", 1, &data->velocity);
2845}
2846
2847/** Destructor */
2849{
2850 free(data_ptr);
2851}
2852
2853/** Copy constructor.
2854 * @param m message to copy from
2855 */
2857{
2858 data_size = m->data_size;
2859 data_ptr = malloc(data_size);
2860 memcpy(data_ptr, m->data_ptr, data_size);
2861 data = (DriveStraightMessage_data_t *)data_ptr;
2863}
2864
2865/* Methods */
2866/** Get velocity value.
2867 * Requested velocity in mm/s.
2868 * @return velocity value
2869 */
2870int16_t
2872{
2873 return data->velocity;
2874}
2875
2876/** Get maximum length of velocity value.
2877 * @return length of velocity value, can be length of the array or number of
2878 * maximum number of characters for a string
2879 */
2880size_t
2882{
2883 return 1;
2884}
2885
2886/** Set velocity value.
2887 * Requested velocity in mm/s.
2888 * @param new_velocity new velocity value
2889 */
2890void
2892{
2893 set_field(data->velocity, new_velocity);
2894}
2895
2896/** Clone this message.
2897 * Produces a message of the same type as this message and copies the
2898 * data to the new message.
2899 * @return clone of this message
2900 */
2901Message *
2903{
2905}
2906/** @class Roomba500Interface::DriveMessage <interfaces/Roomba500Interface.h>
2907 * DriveMessage Fawkes BlackBoard Interface Message.
2908 *
2909
2910 */
2911
2912
2913/** Constructor with initial values.
2914 * @param ini_velocity initial value for velocity
2915 * @param ini_radius initial value for radius
2916 */
2917Roomba500Interface::DriveMessage::DriveMessage(const int16_t ini_velocity, const int16_t ini_radius) : Message("DriveMessage")
2918{
2919 data_size = sizeof(DriveMessage_data_t);
2920 data_ptr = malloc(data_size);
2921 memset(data_ptr, 0, data_size);
2922 data = (DriveMessage_data_t *)data_ptr;
2924 data->velocity = ini_velocity;
2925 data->radius = ini_radius;
2926 enum_map_Mode[(int)MODE_OFF] = "MODE_OFF";
2927 enum_map_Mode[(int)MODE_PASSIVE] = "MODE_PASSIVE";
2928 enum_map_Mode[(int)MODE_SAFE] = "MODE_SAFE";
2929 enum_map_Mode[(int)MODE_FULL] = "MODE_FULL";
2930 enum_map_InfraredCharacter[(int)IR_NONE] = "IR_NONE";
2931 enum_map_InfraredCharacter[(int)IR_REMOTE_LEFT] = "IR_REMOTE_LEFT";
2932 enum_map_InfraredCharacter[(int)IR_REMOTE_FORWARD] = "IR_REMOTE_FORWARD";
2933 enum_map_InfraredCharacter[(int)IR_REMOTE_RIGHT] = "IR_REMOTE_RIGHT";
2934 enum_map_InfraredCharacter[(int)IR_REMOTE_SPOT] = "IR_REMOTE_SPOT";
2935 enum_map_InfraredCharacter[(int)IR_REMOTE_MAX] = "IR_REMOTE_MAX";
2936 enum_map_InfraredCharacter[(int)IR_REMOTE_SMALL] = "IR_REMOTE_SMALL";
2937 enum_map_InfraredCharacter[(int)IR_REMOTE_MEDIUM] = "IR_REMOTE_MEDIUM";
2938 enum_map_InfraredCharacter[(int)IR_REMOTE_LARGE_CLEAN] = "IR_REMOTE_LARGE_CLEAN";
2939 enum_map_InfraredCharacter[(int)IR_REMOTE_STOP] = "IR_REMOTE_STOP";
2940 enum_map_InfraredCharacter[(int)IR_REMOTE_POWER] = "IR_REMOTE_POWER";
2941 enum_map_InfraredCharacter[(int)IR_REMOTE_ARC_LEFT] = "IR_REMOTE_ARC_LEFT";
2942 enum_map_InfraredCharacter[(int)IR_REMOTE_ARC_RIGHT] = "IR_REMOTE_ARC_RIGHT";
2943 enum_map_InfraredCharacter[(int)IR_REMOTE_STOP2] = "IR_REMOTE_STOP2";
2944 enum_map_InfraredCharacter[(int)IR_SCHED_REMOTE_DOWNLOAD] = "IR_SCHED_REMOTE_DOWNLOAD";
2945 enum_map_InfraredCharacter[(int)IR_SCHED_REMOTE_SEEK_DOCK] = "IR_SCHED_REMOTE_SEEK_DOCK";
2946 enum_map_InfraredCharacter[(int)IR_DISC_DOCK_RESERVED] = "IR_DISC_DOCK_RESERVED";
2947 enum_map_InfraredCharacter[(int)IR_DISC_DOCK_RED_BUOY] = "IR_DISC_DOCK_RED_BUOY";
2948 enum_map_InfraredCharacter[(int)IR_DISC_DOCK_GREEN_BUOY] = "IR_DISC_DOCK_GREEN_BUOY";
2949 enum_map_InfraredCharacter[(int)IR_DISC_DOCK_FORCE_FIELD] = "IR_DISC_DOCK_FORCE_FIELD";
2950 enum_map_InfraredCharacter[(int)IR_DISC_DOCK_RED_GREEN_BUOY] = "IR_DISC_DOCK_RED_GREEN_BUOY";
2951 enum_map_InfraredCharacter[(int)IR_DISC_DOCK_RED_BUOY_FORCE_FIELD] = "IR_DISC_DOCK_RED_BUOY_FORCE_FIELD";
2952 enum_map_InfraredCharacter[(int)IR_DISC_DOCK_GREEN_BUOY_FORCE_FIELD] = "IR_DISC_DOCK_GREEN_BUOY_FORCE_FIELD";
2953 enum_map_InfraredCharacter[(int)IR_DISC_DOCK_RED_GREEN_BUOY_FORCE_FIELD] = "IR_DISC_DOCK_RED_GREEN_BUOY_FORCE_FIELD";
2954 enum_map_InfraredCharacter[(int)IR_DOCK_RESERVED] = "IR_DOCK_RESERVED";
2955 enum_map_InfraredCharacter[(int)IR_DOCK_RED_BUOY] = "IR_DOCK_RED_BUOY";
2956 enum_map_InfraredCharacter[(int)IR_DOCK_GREEN_BUOY] = "IR_DOCK_GREEN_BUOY";
2957 enum_map_InfraredCharacter[(int)IR_DOCK_FORCE_FIELD] = "IR_DOCK_FORCE_FIELD";
2958 enum_map_InfraredCharacter[(int)IR_DOCK_RED_GREEN_BUOY] = "IR_DOCK_RED_GREEN_BUOY";
2959 enum_map_InfraredCharacter[(int)IR_DOCK_RED_BUOY_FORCE_FIELD] = "IR_DOCK_RED_BUOY_FORCE_FIELD";
2960 enum_map_InfraredCharacter[(int)IR_DOCK_GREEN_BUOY_FORCE_FIELD] = "IR_DOCK_GREEN_BUOY_FORCE_FIELD";
2961 enum_map_InfraredCharacter[(int)IR_DOCK_RED_GREEN_BUOY_FORCE_FIELD] = "IR_DOCK_RED_GREEN_BUOY_FORCE_FIELD";
2962 enum_map_InfraredCharacter[(int)IR_VIRTUAL_WALL] = "IR_VIRTUAL_WALL";
2963 enum_map_ChargingState[(int)CHARGING_NO] = "CHARGING_NO";
2964 enum_map_ChargingState[(int)CHARGING_RECONDITIONING] = "CHARGING_RECONDITIONING";
2965 enum_map_ChargingState[(int)CHARGING_FULL] = "CHARGING_FULL";
2966 enum_map_ChargingState[(int)CHARGING_TRICKLE] = "CHARGING_TRICKLE";
2967 enum_map_ChargingState[(int)CHARGING_WAITING] = "CHARGING_WAITING";
2968 enum_map_ChargingState[(int)CHARGING_ERROR] = "CHARGING_ERROR";
2969 enum_map_BrushState[(int)BRUSHSTATE_OFF] = "BRUSHSTATE_OFF";
2970 enum_map_BrushState[(int)BRUSHSTATE_FORWARD] = "BRUSHSTATE_FORWARD";
2971 enum_map_BrushState[(int)BRUSHSTATE_BACKWARD] = "BRUSHSTATE_BACKWARD";
2972 add_fieldinfo(IFT_INT16, "velocity", 1, &data->velocity);
2973 add_fieldinfo(IFT_INT16, "radius", 1, &data->radius);
2974}
2975/** Constructor */
2977{
2978 data_size = sizeof(DriveMessage_data_t);
2979 data_ptr = malloc(data_size);
2980 memset(data_ptr, 0, data_size);
2981 data = (DriveMessage_data_t *)data_ptr;
2983 enum_map_Mode[(int)MODE_OFF] = "MODE_OFF";
2984 enum_map_Mode[(int)MODE_PASSIVE] = "MODE_PASSIVE";
2985 enum_map_Mode[(int)MODE_SAFE] = "MODE_SAFE";
2986 enum_map_Mode[(int)MODE_FULL] = "MODE_FULL";
2987 enum_map_InfraredCharacter[(int)IR_NONE] = "IR_NONE";
2988 enum_map_InfraredCharacter[(int)IR_REMOTE_LEFT] = "IR_REMOTE_LEFT";
2989 enum_map_InfraredCharacter[(int)IR_REMOTE_FORWARD] = "IR_REMOTE_FORWARD";
2990 enum_map_InfraredCharacter[(int)IR_REMOTE_RIGHT] = "IR_REMOTE_RIGHT";
2991 enum_map_InfraredCharacter[(int)IR_REMOTE_SPOT] = "IR_REMOTE_SPOT";
2992 enum_map_InfraredCharacter[(int)IR_REMOTE_MAX] = "IR_REMOTE_MAX";
2993 enum_map_InfraredCharacter[(int)IR_REMOTE_SMALL] = "IR_REMOTE_SMALL";
2994 enum_map_InfraredCharacter[(int)IR_REMOTE_MEDIUM] = "IR_REMOTE_MEDIUM";
2995 enum_map_InfraredCharacter[(int)IR_REMOTE_LARGE_CLEAN] = "IR_REMOTE_LARGE_CLEAN";
2996 enum_map_InfraredCharacter[(int)IR_REMOTE_STOP] = "IR_REMOTE_STOP";
2997 enum_map_InfraredCharacter[(int)IR_REMOTE_POWER] = "IR_REMOTE_POWER";
2998 enum_map_InfraredCharacter[(int)IR_REMOTE_ARC_LEFT] = "IR_REMOTE_ARC_LEFT";
2999 enum_map_InfraredCharacter[(int)IR_REMOTE_ARC_RIGHT] = "IR_REMOTE_ARC_RIGHT";
3000 enum_map_InfraredCharacter[(int)IR_REMOTE_STOP2] = "IR_REMOTE_STOP2";
3001 enum_map_InfraredCharacter[(int)IR_SCHED_REMOTE_DOWNLOAD] = "IR_SCHED_REMOTE_DOWNLOAD";
3002 enum_map_InfraredCharacter[(int)IR_SCHED_REMOTE_SEEK_DOCK] = "IR_SCHED_REMOTE_SEEK_DOCK";
3003 enum_map_InfraredCharacter[(int)IR_DISC_DOCK_RESERVED] = "IR_DISC_DOCK_RESERVED";
3004 enum_map_InfraredCharacter[(int)IR_DISC_DOCK_RED_BUOY] = "IR_DISC_DOCK_RED_BUOY";
3005 enum_map_InfraredCharacter[(int)IR_DISC_DOCK_GREEN_BUOY] = "IR_DISC_DOCK_GREEN_BUOY";
3006 enum_map_InfraredCharacter[(int)IR_DISC_DOCK_FORCE_FIELD] = "IR_DISC_DOCK_FORCE_FIELD";
3007 enum_map_InfraredCharacter[(int)IR_DISC_DOCK_RED_GREEN_BUOY] = "IR_DISC_DOCK_RED_GREEN_BUOY";
3008 enum_map_InfraredCharacter[(int)IR_DISC_DOCK_RED_BUOY_FORCE_FIELD] = "IR_DISC_DOCK_RED_BUOY_FORCE_FIELD";
3009 enum_map_InfraredCharacter[(int)IR_DISC_DOCK_GREEN_BUOY_FORCE_FIELD] = "IR_DISC_DOCK_GREEN_BUOY_FORCE_FIELD";
3010 enum_map_InfraredCharacter[(int)IR_DISC_DOCK_RED_GREEN_BUOY_FORCE_FIELD] = "IR_DISC_DOCK_RED_GREEN_BUOY_FORCE_FIELD";
3011 enum_map_InfraredCharacter[(int)IR_DOCK_RESERVED] = "IR_DOCK_RESERVED";
3012 enum_map_InfraredCharacter[(int)IR_DOCK_RED_BUOY] = "IR_DOCK_RED_BUOY";
3013 enum_map_InfraredCharacter[(int)IR_DOCK_GREEN_BUOY] = "IR_DOCK_GREEN_BUOY";
3014 enum_map_InfraredCharacter[(int)IR_DOCK_FORCE_FIELD] = "IR_DOCK_FORCE_FIELD";
3015 enum_map_InfraredCharacter[(int)IR_DOCK_RED_GREEN_BUOY] = "IR_DOCK_RED_GREEN_BUOY";
3016 enum_map_InfraredCharacter[(int)IR_DOCK_RED_BUOY_FORCE_FIELD] = "IR_DOCK_RED_BUOY_FORCE_FIELD";
3017 enum_map_InfraredCharacter[(int)IR_DOCK_GREEN_BUOY_FORCE_FIELD] = "IR_DOCK_GREEN_BUOY_FORCE_FIELD";
3018 enum_map_InfraredCharacter[(int)IR_DOCK_RED_GREEN_BUOY_FORCE_FIELD] = "IR_DOCK_RED_GREEN_BUOY_FORCE_FIELD";
3019 enum_map_InfraredCharacter[(int)IR_VIRTUAL_WALL] = "IR_VIRTUAL_WALL";
3020 enum_map_ChargingState[(int)CHARGING_NO] = "CHARGING_NO";
3021 enum_map_ChargingState[(int)CHARGING_RECONDITIONING] = "CHARGING_RECONDITIONING";
3022 enum_map_ChargingState[(int)CHARGING_FULL] = "CHARGING_FULL";
3023 enum_map_ChargingState[(int)CHARGING_TRICKLE] = "CHARGING_TRICKLE";
3024 enum_map_ChargingState[(int)CHARGING_WAITING] = "CHARGING_WAITING";
3025 enum_map_ChargingState[(int)CHARGING_ERROR] = "CHARGING_ERROR";
3026 enum_map_BrushState[(int)BRUSHSTATE_OFF] = "BRUSHSTATE_OFF";
3027 enum_map_BrushState[(int)BRUSHSTATE_FORWARD] = "BRUSHSTATE_FORWARD";
3028 enum_map_BrushState[(int)BRUSHSTATE_BACKWARD] = "BRUSHSTATE_BACKWARD";
3029 add_fieldinfo(IFT_INT16, "velocity", 1, &data->velocity);
3030 add_fieldinfo(IFT_INT16, "radius", 1, &data->radius);
3031}
3032
3033/** Destructor */
3035{
3036 free(data_ptr);
3037}
3038
3039/** Copy constructor.
3040 * @param m message to copy from
3041 */
3043{
3044 data_size = m->data_size;
3045 data_ptr = malloc(data_size);
3046 memcpy(data_ptr, m->data_ptr, data_size);
3047 data = (DriveMessage_data_t *)data_ptr;
3049}
3050
3051/* Methods */
3052/** Get velocity value.
3053 * Requested velocity in mm/s.
3054 * @return velocity value
3055 */
3056int16_t
3058{
3059 return data->velocity;
3060}
3061
3062/** Get maximum length of velocity value.
3063 * @return length of velocity value, can be length of the array or number of
3064 * maximum number of characters for a string
3065 */
3066size_t
3068{
3069 return 1;
3070}
3071
3072/** Set velocity value.
3073 * Requested velocity in mm/s.
3074 * @param new_velocity new velocity value
3075 */
3076void
3078{
3079 set_field(data->velocity, new_velocity);
3080}
3081
3082/** Get radius value.
3083 * Requested radius in mm.
3084 * @return radius value
3085 */
3086int16_t
3088{
3089 return data->radius;
3090}
3091
3092/** Get maximum length of radius value.
3093 * @return length of radius value, can be length of the array or number of
3094 * maximum number of characters for a string
3095 */
3096size_t
3098{
3099 return 1;
3100}
3101
3102/** Set radius value.
3103 * Requested radius in mm.
3104 * @param new_radius new radius value
3105 */
3106void
3108{
3109 set_field(data->radius, new_radius);
3110}
3111
3112/** Clone this message.
3113 * Produces a message of the same type as this message and copies the
3114 * data to the new message.
3115 * @return clone of this message
3116 */
3117Message *
3119{
3120 return new Roomba500Interface::DriveMessage(this);
3121}
3122/** @class Roomba500Interface::SetMotorsMessage <interfaces/Roomba500Interface.h>
3123 * SetMotorsMessage Fawkes BlackBoard Interface Message.
3124 *
3125
3126 */
3127
3128
3129/** Constructor with initial values.
3130 * @param ini_vacuuming initial value for vacuuming
3131 * @param ini_main initial value for main
3132 * @param ini_side initial value for side
3133 */
3134Roomba500Interface::SetMotorsMessage::SetMotorsMessage(const bool ini_vacuuming, const BrushState ini_main, const BrushState ini_side) : Message("SetMotorsMessage")
3135{
3136 data_size = sizeof(SetMotorsMessage_data_t);
3137 data_ptr = malloc(data_size);
3138 memset(data_ptr, 0, data_size);
3139 data = (SetMotorsMessage_data_t *)data_ptr;
3141 data->vacuuming = ini_vacuuming;
3142 data->main = ini_main;
3143 data->side = ini_side;
3144 enum_map_Mode[(int)MODE_OFF] = "MODE_OFF";
3145 enum_map_Mode[(int)MODE_PASSIVE] = "MODE_PASSIVE";
3146 enum_map_Mode[(int)MODE_SAFE] = "MODE_SAFE";
3147 enum_map_Mode[(int)MODE_FULL] = "MODE_FULL";
3148 enum_map_InfraredCharacter[(int)IR_NONE] = "IR_NONE";
3149 enum_map_InfraredCharacter[(int)IR_REMOTE_LEFT] = "IR_REMOTE_LEFT";
3150 enum_map_InfraredCharacter[(int)IR_REMOTE_FORWARD] = "IR_REMOTE_FORWARD";
3151 enum_map_InfraredCharacter[(int)IR_REMOTE_RIGHT] = "IR_REMOTE_RIGHT";
3152 enum_map_InfraredCharacter[(int)IR_REMOTE_SPOT] = "IR_REMOTE_SPOT";
3153 enum_map_InfraredCharacter[(int)IR_REMOTE_MAX] = "IR_REMOTE_MAX";
3154 enum_map_InfraredCharacter[(int)IR_REMOTE_SMALL] = "IR_REMOTE_SMALL";
3155 enum_map_InfraredCharacter[(int)IR_REMOTE_MEDIUM] = "IR_REMOTE_MEDIUM";
3156 enum_map_InfraredCharacter[(int)IR_REMOTE_LARGE_CLEAN] = "IR_REMOTE_LARGE_CLEAN";
3157 enum_map_InfraredCharacter[(int)IR_REMOTE_STOP] = "IR_REMOTE_STOP";
3158 enum_map_InfraredCharacter[(int)IR_REMOTE_POWER] = "IR_REMOTE_POWER";
3159 enum_map_InfraredCharacter[(int)IR_REMOTE_ARC_LEFT] = "IR_REMOTE_ARC_LEFT";
3160 enum_map_InfraredCharacter[(int)IR_REMOTE_ARC_RIGHT] = "IR_REMOTE_ARC_RIGHT";
3161 enum_map_InfraredCharacter[(int)IR_REMOTE_STOP2] = "IR_REMOTE_STOP2";
3162 enum_map_InfraredCharacter[(int)IR_SCHED_REMOTE_DOWNLOAD] = "IR_SCHED_REMOTE_DOWNLOAD";
3163 enum_map_InfraredCharacter[(int)IR_SCHED_REMOTE_SEEK_DOCK] = "IR_SCHED_REMOTE_SEEK_DOCK";
3164 enum_map_InfraredCharacter[(int)IR_DISC_DOCK_RESERVED] = "IR_DISC_DOCK_RESERVED";
3165 enum_map_InfraredCharacter[(int)IR_DISC_DOCK_RED_BUOY] = "IR_DISC_DOCK_RED_BUOY";
3166 enum_map_InfraredCharacter[(int)IR_DISC_DOCK_GREEN_BUOY] = "IR_DISC_DOCK_GREEN_BUOY";
3167 enum_map_InfraredCharacter[(int)IR_DISC_DOCK_FORCE_FIELD] = "IR_DISC_DOCK_FORCE_FIELD";
3168 enum_map_InfraredCharacter[(int)IR_DISC_DOCK_RED_GREEN_BUOY] = "IR_DISC_DOCK_RED_GREEN_BUOY";
3169 enum_map_InfraredCharacter[(int)IR_DISC_DOCK_RED_BUOY_FORCE_FIELD] = "IR_DISC_DOCK_RED_BUOY_FORCE_FIELD";
3170 enum_map_InfraredCharacter[(int)IR_DISC_DOCK_GREEN_BUOY_FORCE_FIELD] = "IR_DISC_DOCK_GREEN_BUOY_FORCE_FIELD";
3171 enum_map_InfraredCharacter[(int)IR_DISC_DOCK_RED_GREEN_BUOY_FORCE_FIELD] = "IR_DISC_DOCK_RED_GREEN_BUOY_FORCE_FIELD";
3172 enum_map_InfraredCharacter[(int)IR_DOCK_RESERVED] = "IR_DOCK_RESERVED";
3173 enum_map_InfraredCharacter[(int)IR_DOCK_RED_BUOY] = "IR_DOCK_RED_BUOY";
3174 enum_map_InfraredCharacter[(int)IR_DOCK_GREEN_BUOY] = "IR_DOCK_GREEN_BUOY";
3175 enum_map_InfraredCharacter[(int)IR_DOCK_FORCE_FIELD] = "IR_DOCK_FORCE_FIELD";
3176 enum_map_InfraredCharacter[(int)IR_DOCK_RED_GREEN_BUOY] = "IR_DOCK_RED_GREEN_BUOY";
3177 enum_map_InfraredCharacter[(int)IR_DOCK_RED_BUOY_FORCE_FIELD] = "IR_DOCK_RED_BUOY_FORCE_FIELD";
3178 enum_map_InfraredCharacter[(int)IR_DOCK_GREEN_BUOY_FORCE_FIELD] = "IR_DOCK_GREEN_BUOY_FORCE_FIELD";
3179 enum_map_InfraredCharacter[(int)IR_DOCK_RED_GREEN_BUOY_FORCE_FIELD] = "IR_DOCK_RED_GREEN_BUOY_FORCE_FIELD";
3180 enum_map_InfraredCharacter[(int)IR_VIRTUAL_WALL] = "IR_VIRTUAL_WALL";
3181 enum_map_ChargingState[(int)CHARGING_NO] = "CHARGING_NO";
3182 enum_map_ChargingState[(int)CHARGING_RECONDITIONING] = "CHARGING_RECONDITIONING";
3183 enum_map_ChargingState[(int)CHARGING_FULL] = "CHARGING_FULL";
3184 enum_map_ChargingState[(int)CHARGING_TRICKLE] = "CHARGING_TRICKLE";
3185 enum_map_ChargingState[(int)CHARGING_WAITING] = "CHARGING_WAITING";
3186 enum_map_ChargingState[(int)CHARGING_ERROR] = "CHARGING_ERROR";
3187 enum_map_BrushState[(int)BRUSHSTATE_OFF] = "BRUSHSTATE_OFF";
3188 enum_map_BrushState[(int)BRUSHSTATE_FORWARD] = "BRUSHSTATE_FORWARD";
3189 enum_map_BrushState[(int)BRUSHSTATE_BACKWARD] = "BRUSHSTATE_BACKWARD";
3190 add_fieldinfo(IFT_BOOL, "vacuuming", 1, &data->vacuuming);
3191 add_fieldinfo(IFT_ENUM, "main", 1, &data->main, "BrushState", &enum_map_BrushState);
3192 add_fieldinfo(IFT_ENUM, "side", 1, &data->side, "BrushState", &enum_map_BrushState);
3193}
3194/** Constructor */
3196{
3197 data_size = sizeof(SetMotorsMessage_data_t);
3198 data_ptr = malloc(data_size);
3199 memset(data_ptr, 0, data_size);
3200 data = (SetMotorsMessage_data_t *)data_ptr;
3202 enum_map_Mode[(int)MODE_OFF] = "MODE_OFF";
3203 enum_map_Mode[(int)MODE_PASSIVE] = "MODE_PASSIVE";
3204 enum_map_Mode[(int)MODE_SAFE] = "MODE_SAFE";
3205 enum_map_Mode[(int)MODE_FULL] = "MODE_FULL";
3206 enum_map_InfraredCharacter[(int)IR_NONE] = "IR_NONE";
3207 enum_map_InfraredCharacter[(int)IR_REMOTE_LEFT] = "IR_REMOTE_LEFT";
3208 enum_map_InfraredCharacter[(int)IR_REMOTE_FORWARD] = "IR_REMOTE_FORWARD";
3209 enum_map_InfraredCharacter[(int)IR_REMOTE_RIGHT] = "IR_REMOTE_RIGHT";
3210 enum_map_InfraredCharacter[(int)IR_REMOTE_SPOT] = "IR_REMOTE_SPOT";
3211 enum_map_InfraredCharacter[(int)IR_REMOTE_MAX] = "IR_REMOTE_MAX";
3212 enum_map_InfraredCharacter[(int)IR_REMOTE_SMALL] = "IR_REMOTE_SMALL";
3213 enum_map_InfraredCharacter[(int)IR_REMOTE_MEDIUM] = "IR_REMOTE_MEDIUM";
3214 enum_map_InfraredCharacter[(int)IR_REMOTE_LARGE_CLEAN] = "IR_REMOTE_LARGE_CLEAN";
3215 enum_map_InfraredCharacter[(int)IR_REMOTE_STOP] = "IR_REMOTE_STOP";
3216 enum_map_InfraredCharacter[(int)IR_REMOTE_POWER] = "IR_REMOTE_POWER";
3217 enum_map_InfraredCharacter[(int)IR_REMOTE_ARC_LEFT] = "IR_REMOTE_ARC_LEFT";
3218 enum_map_InfraredCharacter[(int)IR_REMOTE_ARC_RIGHT] = "IR_REMOTE_ARC_RIGHT";
3219 enum_map_InfraredCharacter[(int)IR_REMOTE_STOP2] = "IR_REMOTE_STOP2";
3220 enum_map_InfraredCharacter[(int)IR_SCHED_REMOTE_DOWNLOAD] = "IR_SCHED_REMOTE_DOWNLOAD";
3221 enum_map_InfraredCharacter[(int)IR_SCHED_REMOTE_SEEK_DOCK] = "IR_SCHED_REMOTE_SEEK_DOCK";
3222 enum_map_InfraredCharacter[(int)IR_DISC_DOCK_RESERVED] = "IR_DISC_DOCK_RESERVED";
3223 enum_map_InfraredCharacter[(int)IR_DISC_DOCK_RED_BUOY] = "IR_DISC_DOCK_RED_BUOY";
3224 enum_map_InfraredCharacter[(int)IR_DISC_DOCK_GREEN_BUOY] = "IR_DISC_DOCK_GREEN_BUOY";
3225 enum_map_InfraredCharacter[(int)IR_DISC_DOCK_FORCE_FIELD] = "IR_DISC_DOCK_FORCE_FIELD";
3226 enum_map_InfraredCharacter[(int)IR_DISC_DOCK_RED_GREEN_BUOY] = "IR_DISC_DOCK_RED_GREEN_BUOY";
3227 enum_map_InfraredCharacter[(int)IR_DISC_DOCK_RED_BUOY_FORCE_FIELD] = "IR_DISC_DOCK_RED_BUOY_FORCE_FIELD";
3228 enum_map_InfraredCharacter[(int)IR_DISC_DOCK_GREEN_BUOY_FORCE_FIELD] = "IR_DISC_DOCK_GREEN_BUOY_FORCE_FIELD";
3229 enum_map_InfraredCharacter[(int)IR_DISC_DOCK_RED_GREEN_BUOY_FORCE_FIELD] = "IR_DISC_DOCK_RED_GREEN_BUOY_FORCE_FIELD";
3230 enum_map_InfraredCharacter[(int)IR_DOCK_RESERVED] = "IR_DOCK_RESERVED";
3231 enum_map_InfraredCharacter[(int)IR_DOCK_RED_BUOY] = "IR_DOCK_RED_BUOY";
3232 enum_map_InfraredCharacter[(int)IR_DOCK_GREEN_BUOY] = "IR_DOCK_GREEN_BUOY";
3233 enum_map_InfraredCharacter[(int)IR_DOCK_FORCE_FIELD] = "IR_DOCK_FORCE_FIELD";
3234 enum_map_InfraredCharacter[(int)IR_DOCK_RED_GREEN_BUOY] = "IR_DOCK_RED_GREEN_BUOY";
3235 enum_map_InfraredCharacter[(int)IR_DOCK_RED_BUOY_FORCE_FIELD] = "IR_DOCK_RED_BUOY_FORCE_FIELD";
3236 enum_map_InfraredCharacter[(int)IR_DOCK_GREEN_BUOY_FORCE_FIELD] = "IR_DOCK_GREEN_BUOY_FORCE_FIELD";
3237 enum_map_InfraredCharacter[(int)IR_DOCK_RED_GREEN_BUOY_FORCE_FIELD] = "IR_DOCK_RED_GREEN_BUOY_FORCE_FIELD";
3238 enum_map_InfraredCharacter[(int)IR_VIRTUAL_WALL] = "IR_VIRTUAL_WALL";
3239 enum_map_ChargingState[(int)CHARGING_NO] = "CHARGING_NO";
3240 enum_map_ChargingState[(int)CHARGING_RECONDITIONING] = "CHARGING_RECONDITIONING";
3241 enum_map_ChargingState[(int)CHARGING_FULL] = "CHARGING_FULL";
3242 enum_map_ChargingState[(int)CHARGING_TRICKLE] = "CHARGING_TRICKLE";
3243 enum_map_ChargingState[(int)CHARGING_WAITING] = "CHARGING_WAITING";
3244 enum_map_ChargingState[(int)CHARGING_ERROR] = "CHARGING_ERROR";
3245 enum_map_BrushState[(int)BRUSHSTATE_OFF] = "BRUSHSTATE_OFF";
3246 enum_map_BrushState[(int)BRUSHSTATE_FORWARD] = "BRUSHSTATE_FORWARD";
3247 enum_map_BrushState[(int)BRUSHSTATE_BACKWARD] = "BRUSHSTATE_BACKWARD";
3248 add_fieldinfo(IFT_BOOL, "vacuuming", 1, &data->vacuuming);
3249 add_fieldinfo(IFT_ENUM, "main", 1, &data->main, "BrushState", &enum_map_BrushState);
3250 add_fieldinfo(IFT_ENUM, "side", 1, &data->side, "BrushState", &enum_map_BrushState);
3251}
3252
3253/** Destructor */
3255{
3256 free(data_ptr);
3257}
3258
3259/** Copy constructor.
3260 * @param m message to copy from
3261 */
3263{
3264 data_size = m->data_size;
3265 data_ptr = malloc(data_size);
3266 memcpy(data_ptr, m->data_ptr, data_size);
3267 data = (SetMotorsMessage_data_t *)data_ptr;
3269}
3270
3271/* Methods */
3272/** Get vacuuming value.
3273 * Enable vacuuming?
3274 * @return vacuuming value
3275 */
3276bool
3278{
3279 return data->vacuuming;
3280}
3281
3282/** Get maximum length of vacuuming value.
3283 * @return length of vacuuming value, can be length of the array or number of
3284 * maximum number of characters for a string
3285 */
3286size_t
3288{
3289 return 1;
3290}
3291
3292/** Set vacuuming value.
3293 * Enable vacuuming?
3294 * @param new_vacuuming new vacuuming value
3295 */
3296void
3298{
3299 set_field(data->vacuuming, new_vacuuming);
3300}
3301
3302/** Get main value.
3303 * Main brush state.
3304 * @return main value
3305 */
3308{
3309 return (Roomba500Interface::BrushState)data->main;
3310}
3311
3312/** Get maximum length of main value.
3313 * @return length of main value, can be length of the array or number of
3314 * maximum number of characters for a string
3315 */
3316size_t
3318{
3319 return 1;
3320}
3321
3322/** Set main value.
3323 * Main brush state.
3324 * @param new_main new main value
3325 */
3326void
3328{
3329 set_field(data->main, new_main);
3330}
3331
3332/** Get side value.
3333 * Side brush state.
3334 * @return side value
3335 */
3338{
3339 return (Roomba500Interface::BrushState)data->side;
3340}
3341
3342/** Get maximum length of side value.
3343 * @return length of side value, can be length of the array or number of
3344 * maximum number of characters for a string
3345 */
3346size_t
3348{
3349 return 1;
3350}
3351
3352/** Set side value.
3353 * Side brush state.
3354 * @param new_side new side value
3355 */
3356void
3358{
3359 set_field(data->side, new_side);
3360}
3361
3362/** Clone this message.
3363 * Produces a message of the same type as this message and copies the
3364 * data to the new message.
3365 * @return clone of this message
3366 */
3367Message *
3369{
3370 return new Roomba500Interface::SetMotorsMessage(this);
3371}
3372/** Check if message is valid and can be enqueued.
3373 * @param message Message to check
3374 * @return true if the message is valid, false otherwise.
3375 */
3376bool
3378{
3379 const StopMessage *m0 = dynamic_cast<const StopMessage *>(message);
3380 if ( m0 != NULL ) {
3381 return true;
3382 }
3383 const DockMessage *m1 = dynamic_cast<const DockMessage *>(message);
3384 if ( m1 != NULL ) {
3385 return true;
3386 }
3387 const SetModeMessage *m2 = dynamic_cast<const SetModeMessage *>(message);
3388 if ( m2 != NULL ) {
3389 return true;
3390 }
3391 const DriveStraightMessage *m3 = dynamic_cast<const DriveStraightMessage *>(message);
3392 if ( m3 != NULL ) {
3393 return true;
3394 }
3395 const DriveMessage *m4 = dynamic_cast<const DriveMessage *>(message);
3396 if ( m4 != NULL ) {
3397 return true;
3398 }
3399 const SetMotorsMessage *m5 = dynamic_cast<const SetMotorsMessage *>(message);
3400 if ( m5 != NULL ) {
3401 return true;
3402 }
3403 return false;
3404}
3405
3406/// @cond INTERNALS
3407EXPORT_INTERFACE(Roomba500Interface)
3408/// @endcond
3409
3410
3411} // end namespace fawkes
Base class for all Fawkes BlackBoard interfaces.
Definition: interface.h:80
const char * type() const
Get type of interface.
Definition: interface.cpp:652
void * data_ptr
Pointer to local memory storage.
Definition: interface.h:244
void set_field(FieldT &field, DataT &data)
Set a field, set data_changed to true and update data_changed accordingly.
Definition: interface.h:304
Base class for all messages passed through interfaces in Fawkes BlackBoard.
Definition: message.h:44
void add_fieldinfo(interface_fieldtype_t type, const char *name, size_t length, void *value, const char *enumtype=0, const interface_enum_map_t *enum_map=0)
Add an entry to the info list.
Definition: message.cpp:435
void * data_ptr
Pointer to memory that contains local data.
Definition: message.h:146
message_data_ts_t * data_ts
data timestamp aliasing pointer
Definition: message.h:156
unsigned int data_size
Size of memory needed to hold all data.
Definition: message.h:147
DockMessage Fawkes BlackBoard Interface Message.
virtual Message * clone() const
Clone this message.
DriveMessage Fawkes BlackBoard Interface Message.
size_t maxlenof_radius() const
Get maximum length of radius value.
void set_velocity(const int16_t new_velocity)
Set velocity value.
int16_t velocity() const
Get velocity value.
size_t maxlenof_velocity() const
Get maximum length of velocity value.
int16_t radius() const
Get radius value.
void set_radius(const int16_t new_radius)
Set radius value.
virtual Message * clone() const
Clone this message.
DriveStraightMessage Fawkes BlackBoard Interface Message.
virtual Message * clone() const
Clone this message.
void set_velocity(const int16_t new_velocity)
Set velocity value.
size_t maxlenof_velocity() const
Get maximum length of velocity value.
SetModeMessage Fawkes BlackBoard Interface Message.
virtual Message * clone() const
Clone this message.
size_t maxlenof_mode() const
Get maximum length of mode value.
void set_mode(const Mode new_mode)
Set mode value.
SetMotorsMessage Fawkes BlackBoard Interface Message.
size_t maxlenof_vacuuming() const
Get maximum length of vacuuming value.
void set_side(const BrushState new_side)
Set side value.
void set_vacuuming(const bool new_vacuuming)
Set vacuuming value.
size_t maxlenof_main() const
Get maximum length of main value.
bool is_vacuuming() const
Get vacuuming value.
virtual Message * clone() const
Clone this message.
size_t maxlenof_side() const
Get maximum length of side value.
void set_main(const BrushState new_main)
Set main value.
StopMessage Fawkes BlackBoard Interface Message.
virtual Message * clone() const
Clone this message.
Roomba500Interface Fawkes BlackBoard Interface.
BrushState
State of the brushes.
@ BRUSHSTATE_FORWARD
Brush is turning forward.
@ BRUSHSTATE_BACKWARD
Brush is turning backward.
ChargingState
Current charging state.
@ CHARGING_RECONDITIONING
Reconditioning battery.
@ CHARGING_ERROR
Fault condition.
@ CHARGING_TRICKLE
Trickle charging.
@ CHARGING_FULL
Full charging cycle.
InfraredCharacter
Infrared character values.
@ IR_DISC_DOCK_RESERVED
Roomba Discovery dock: reserved.
@ IR_REMOTE_ARC_LEFT
IR Remote Control: left arc button.
@ IR_REMOTE_POWER
IR Remote Control: power button.
@ IR_DOCK_RED_GREEN_BUOY
Roomba 500 dock: red buoy and force field.
@ IR_DOCK_RESERVED
Roomba 500 dock: reserved.
@ IR_REMOTE_ARC_RIGHT
IR Remote Control: right arc button.
@ IR_DOCK_RED_BUOY_FORCE_FIELD
Roomba 500 dock: green buoy and force field.
@ IR_DOCK_FORCE_FIELD
Roomba 500 dock: red and green buoy.
@ IR_DOCK_RED_BUOY
Roomba 500 dock: red buoy.
@ IR_REMOTE_LARGE_CLEAN
IR Remote Control: large/clean button.
@ IR_DOCK_RED_GREEN_BUOY_FORCE_FIELD
Roomba 500 dock: red and green buoy and force field.
@ IR_REMOTE_RIGHT
IR Remote Control: right button.
@ IR_DISC_DOCK_GREEN_BUOY_FORCE_FIELD
Roomba Discovery dock: green buoy and force field.
@ IR_DISC_DOCK_FORCE_FIELD
Roomba Discovery dock: red and green buoy.
@ IR_REMOTE_SPOT
IR Remote Control: spot button.
@ IR_REMOTE_FORWARD
IR Remote Control: forward button.
@ IR_NONE
No valid IR signal.
@ IR_REMOTE_STOP2
IR Remote Control: stop button.
@ IR_REMOTE_STOP
IR Remote Control: stop button.
@ IR_SCHED_REMOTE_DOWNLOAD
IR scheduling remote: download button.
@ IR_REMOTE_SMALL
IR Remote Control: small button.
@ IR_DISC_DOCK_RED_GREEN_BUOY
Roomba Discovery dock: red buoy and force field.
@ IR_VIRTUAL_WALL
IR Virtual Wall.
@ IR_DISC_DOCK_RED_GREEN_BUOY_FORCE_FIELD
Roomba Discovery dock: red and green buoy and force field.
@ IR_SCHED_REMOTE_SEEK_DOCK
IR scheduling remote: seek dock button.
@ IR_DISC_DOCK_GREEN_BUOY
Roomba Discovery dock: green buoy.
@ IR_DISC_DOCK_RED_BUOY
Roomba Discovery dock: red buoy.
@ IR_REMOTE_MEDIUM
IR Remote Control: medium button.
@ IR_DISC_DOCK_RED_BUOY_FORCE_FIELD
Roomba Discovery dock: green buoy and force field.
@ IR_DOCK_GREEN_BUOY_FORCE_FIELD
Roomba 500 dock: green buoy and force field.
@ IR_REMOTE_LEFT
IR Remote Control: left button.
@ IR_DOCK_GREEN_BUOY
Roomba 500 dock: green buoy.
@ IR_REMOTE_MAX
IR Remote Control: max button.
virtual bool message_valid(const Message *message) const
Check if message is valid and can be enqueued.
@ MODE_FULL
Control acquired, safety measures disabled.
@ MODE_SAFE
Control acquired, safety measures in place.
@ MODE_PASSIVE
Passive mode, no control, only listening.
Fawkes library namespace.
@ IFT_INT16
16 bit integer field
Definition: types.h:40
@ IFT_BOOL
boolean field
Definition: types.h:37
@ IFT_ENUM
field with interface specific enum type
Definition: types.h:50
Timestamp data, must be present and first entries for each interface data structs!...
Definition: message.h:152