24 #include <interfaces/Roomba500Interface.h>
26 #include <core/exceptions/software.h>
46 Roomba500Interface::Roomba500Interface() : Interface()
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};
177 Roomba500Interface::~Roomba500Interface()
186 Roomba500Interface::tostring_Mode(
Mode value)
const
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";
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";
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";
262 Roomba500Interface::tostring_BrushState(
BrushState value)
const
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";
277 Roomba500Interface::mode()
const
287 Roomba500Interface::maxlenof_mode()
const
297 Roomba500Interface::set_mode(
const Mode new_mode)
307 Roomba500Interface::is_wheel_drop_left()
const
309 return data->wheel_drop_left;
317 Roomba500Interface::maxlenof_wheel_drop_left()
const
327 Roomba500Interface::set_wheel_drop_left(
const bool new_wheel_drop_left)
329 data_changed |=
change_field(data->wheel_drop_left, new_wheel_drop_left);
337 Roomba500Interface::is_wheel_drop_right()
const
339 return data->wheel_drop_right;
347 Roomba500Interface::maxlenof_wheel_drop_right()
const
357 Roomba500Interface::set_wheel_drop_right(
const bool new_wheel_drop_right)
359 data_changed |=
change_field(data->wheel_drop_right, new_wheel_drop_right);
367 Roomba500Interface::is_bump_left()
const
369 return data->bump_left;
377 Roomba500Interface::maxlenof_bump_left()
const
387 Roomba500Interface::set_bump_left(
const bool new_bump_left)
389 data_changed |=
change_field(data->bump_left, new_bump_left);
397 Roomba500Interface::is_bump_right()
const
399 return data->bump_right;
407 Roomba500Interface::maxlenof_bump_right()
const
417 Roomba500Interface::set_bump_right(
const bool new_bump_right)
419 data_changed |=
change_field(data->bump_right, new_bump_right);
427 Roomba500Interface::is_wall()
const
437 Roomba500Interface::maxlenof_wall()
const
447 Roomba500Interface::set_wall(
const bool new_wall)
457 Roomba500Interface::is_cliff_left()
const
459 return data->cliff_left;
467 Roomba500Interface::maxlenof_cliff_left()
const
477 Roomba500Interface::set_cliff_left(
const bool new_cliff_left)
479 data_changed |=
change_field(data->cliff_left, new_cliff_left);
487 Roomba500Interface::is_cliff_front_left()
const
489 return data->cliff_front_left;
497 Roomba500Interface::maxlenof_cliff_front_left()
const
507 Roomba500Interface::set_cliff_front_left(
const bool new_cliff_front_left)
509 data_changed |=
change_field(data->cliff_front_left, new_cliff_front_left);
517 Roomba500Interface::is_cliff_front_right()
const
519 return data->cliff_front_right;
527 Roomba500Interface::maxlenof_cliff_front_right()
const
537 Roomba500Interface::set_cliff_front_right(
const bool new_cliff_front_right)
539 data_changed |=
change_field(data->cliff_front_right, new_cliff_front_right);
547 Roomba500Interface::is_cliff_right()
const
549 return data->cliff_right;
557 Roomba500Interface::maxlenof_cliff_right()
const
567 Roomba500Interface::set_cliff_right(
const bool new_cliff_right)
569 data_changed |=
change_field(data->cliff_right, new_cliff_right);
577 Roomba500Interface::is_virtual_wall()
const
579 return data->virtual_wall;
587 Roomba500Interface::maxlenof_virtual_wall()
const
597 Roomba500Interface::set_virtual_wall(
const bool new_virtual_wall)
599 data_changed |=
change_field(data->virtual_wall, new_virtual_wall);
607 Roomba500Interface::is_overcurrent_side_brush()
const
609 return data->overcurrent_side_brush;
617 Roomba500Interface::maxlenof_overcurrent_side_brush()
const
627 Roomba500Interface::set_overcurrent_side_brush(
const bool new_overcurrent_side_brush)
629 data_changed |=
change_field(data->overcurrent_side_brush, new_overcurrent_side_brush);
637 Roomba500Interface::is_overcurrent_main_brush()
const
639 return data->overcurrent_main_brush;
647 Roomba500Interface::maxlenof_overcurrent_main_brush()
const
657 Roomba500Interface::set_overcurrent_main_brush(
const bool new_overcurrent_main_brush)
659 data_changed |=
change_field(data->overcurrent_main_brush, new_overcurrent_main_brush);
667 Roomba500Interface::is_overcurrent_left_wheel()
const
669 return data->overcurrent_left_wheel;
677 Roomba500Interface::maxlenof_overcurrent_left_wheel()
const
687 Roomba500Interface::set_overcurrent_left_wheel(
const bool new_overcurrent_left_wheel)
689 data_changed |=
change_field(data->overcurrent_left_wheel, new_overcurrent_left_wheel);
697 Roomba500Interface::is_overcurrent_right_wheel()
const
699 return data->overcurrent_right_wheel;
707 Roomba500Interface::maxlenof_overcurrent_right_wheel()
const
717 Roomba500Interface::set_overcurrent_right_wheel(
const bool new_overcurrent_right_wheel)
719 data_changed |=
change_field(data->overcurrent_right_wheel, new_overcurrent_right_wheel);
727 Roomba500Interface::is_dirt_detect()
const
729 return data->dirt_detect;
737 Roomba500Interface::maxlenof_dirt_detect()
const
747 Roomba500Interface::set_dirt_detect(
const bool new_dirt_detect)
749 data_changed |=
change_field(data->dirt_detect, new_dirt_detect);
757 Roomba500Interface::ir_opcode_omni()
const
767 Roomba500Interface::maxlenof_ir_opcode_omni()
const
779 data_changed |=
change_field(data->ir_opcode_omni, new_ir_opcode_omni);
787 Roomba500Interface::is_button_clean()
const
789 return data->button_clean;
797 Roomba500Interface::maxlenof_button_clean()
const
807 Roomba500Interface::set_button_clean(
const bool new_button_clean)
809 data_changed |=
change_field(data->button_clean, new_button_clean);
817 Roomba500Interface::is_button_spot()
const
819 return data->button_spot;
827 Roomba500Interface::maxlenof_button_spot()
const
837 Roomba500Interface::set_button_spot(
const bool new_button_spot)
839 data_changed |=
change_field(data->button_spot, new_button_spot);
847 Roomba500Interface::is_button_dock()
const
849 return data->button_dock;
857 Roomba500Interface::maxlenof_button_dock()
const
867 Roomba500Interface::set_button_dock(
const bool new_button_dock)
869 data_changed |=
change_field(data->button_dock, new_button_dock);
877 Roomba500Interface::is_button_minute()
const
879 return data->button_minute;
887 Roomba500Interface::maxlenof_button_minute()
const
897 Roomba500Interface::set_button_minute(
const bool new_button_minute)
899 data_changed |=
change_field(data->button_minute, new_button_minute);
907 Roomba500Interface::is_button_hour()
const
909 return data->button_hour;
917 Roomba500Interface::maxlenof_button_hour()
const
927 Roomba500Interface::set_button_hour(
const bool new_button_hour)
929 data_changed |=
change_field(data->button_hour, new_button_hour);
937 Roomba500Interface::is_button_day()
const
939 return data->button_day;
947 Roomba500Interface::maxlenof_button_day()
const
957 Roomba500Interface::set_button_day(
const bool new_button_day)
959 data_changed |=
change_field(data->button_day, new_button_day);
967 Roomba500Interface::is_button_schedule()
const
969 return data->button_schedule;
977 Roomba500Interface::maxlenof_button_schedule()
const
987 Roomba500Interface::set_button_schedule(
const bool new_button_schedule)
989 data_changed |=
change_field(data->button_schedule, new_button_schedule);
997 Roomba500Interface::is_button_clock()
const
999 return data->button_clock;
1007 Roomba500Interface::maxlenof_button_clock()
const
1017 Roomba500Interface::set_button_clock(
const bool new_button_clock)
1019 data_changed |=
change_field(data->button_clock, new_button_clock);
1027 Roomba500Interface::distance()
const
1029 return data->distance;
1037 Roomba500Interface::maxlenof_distance()
const
1047 Roomba500Interface::set_distance(
const int16_t new_distance)
1049 data_changed |=
change_field(data->distance, new_distance);
1057 Roomba500Interface::angle()
const
1067 Roomba500Interface::maxlenof_angle()
const
1077 Roomba500Interface::set_angle(
const int16_t new_angle)
1087 Roomba500Interface::charging_state()
const
1097 Roomba500Interface::maxlenof_charging_state()
const
1109 data_changed |=
change_field(data->charging_state, new_charging_state);
1117 Roomba500Interface::voltage()
const
1119 return data->voltage;
1127 Roomba500Interface::maxlenof_voltage()
const
1137 Roomba500Interface::set_voltage(
const uint16_t new_voltage)
1139 data_changed |=
change_field(data->voltage, new_voltage);
1147 Roomba500Interface::current()
const
1149 return data->current;
1157 Roomba500Interface::maxlenof_current()
const
1167 Roomba500Interface::set_current(
const int16_t new_current)
1169 data_changed |=
change_field(data->current, new_current);
1177 Roomba500Interface::temperature()
const
1179 return data->temperature;
1187 Roomba500Interface::maxlenof_temperature()
const
1197 Roomba500Interface::set_temperature(
const int8_t new_temperature)
1199 data_changed |=
change_field(data->temperature, new_temperature);
1207 Roomba500Interface::battery_charge()
const
1209 return data->battery_charge;
1217 Roomba500Interface::maxlenof_battery_charge()
const
1227 Roomba500Interface::set_battery_charge(
const uint16_t new_battery_charge)
1229 data_changed |=
change_field(data->battery_charge, new_battery_charge);
1237 Roomba500Interface::battery_capacity()
const
1239 return data->battery_capacity;
1247 Roomba500Interface::maxlenof_battery_capacity()
const
1257 Roomba500Interface::set_battery_capacity(
const uint16_t new_battery_capacity)
1259 data_changed |=
change_field(data->battery_capacity, new_battery_capacity);
1267 Roomba500Interface::wall_signal()
const
1269 return data->wall_signal;
1277 Roomba500Interface::maxlenof_wall_signal()
const
1287 Roomba500Interface::set_wall_signal(
const uint16_t new_wall_signal)
1289 data_changed |=
change_field(data->wall_signal, new_wall_signal);
1297 Roomba500Interface::cliff_left_signal()
const
1299 return data->cliff_left_signal;
1307 Roomba500Interface::maxlenof_cliff_left_signal()
const
1317 Roomba500Interface::set_cliff_left_signal(
const uint16_t new_cliff_left_signal)
1319 data_changed |=
change_field(data->cliff_left_signal, new_cliff_left_signal);
1328 Roomba500Interface::cliff_front_left_signal()
const
1330 return data->cliff_front_left_signal;
1338 Roomba500Interface::maxlenof_cliff_front_left_signal()
const
1349 Roomba500Interface::set_cliff_front_left_signal(
const uint16_t new_cliff_front_left_signal)
1351 data_changed |=
change_field(data->cliff_front_left_signal, new_cliff_front_left_signal);
1360 Roomba500Interface::cliff_front_right_signal()
const
1362 return data->cliff_front_right_signal;
1370 Roomba500Interface::maxlenof_cliff_front_right_signal()
const
1381 Roomba500Interface::set_cliff_front_right_signal(
const uint16_t new_cliff_front_right_signal)
1383 data_changed |=
change_field(data->cliff_front_right_signal, new_cliff_front_right_signal);
1391 Roomba500Interface::cliff_right_signal()
const
1393 return data->cliff_right_signal;
1401 Roomba500Interface::maxlenof_cliff_right_signal()
const
1411 Roomba500Interface::set_cliff_right_signal(
const uint16_t new_cliff_right_signal)
1413 data_changed |=
change_field(data->cliff_right_signal, new_cliff_right_signal);
1422 Roomba500Interface::is_home_base_charger_available()
const
1424 return data->home_base_charger_available;
1432 Roomba500Interface::maxlenof_home_base_charger_available()
const
1443 Roomba500Interface::set_home_base_charger_available(
const bool new_home_base_charger_available)
1445 data_changed |=
change_field(data->home_base_charger_available, new_home_base_charger_available);
1454 Roomba500Interface::is_internal_charger_available()
const
1456 return data->internal_charger_available;
1464 Roomba500Interface::maxlenof_internal_charger_available()
const
1475 Roomba500Interface::set_internal_charger_available(
const bool new_internal_charger_available)
1477 data_changed |=
change_field(data->internal_charger_available, new_internal_charger_available);
1485 Roomba500Interface::song_number()
const
1487 return data->song_number;
1495 Roomba500Interface::maxlenof_song_number()
const
1505 Roomba500Interface::set_song_number(
const uint8_t new_song_number)
1507 data_changed |=
change_field(data->song_number, new_song_number);
1515 Roomba500Interface::is_song_playing()
const
1517 return data->song_playing;
1525 Roomba500Interface::maxlenof_song_playing()
const
1535 Roomba500Interface::set_song_playing(
const bool new_song_playing)
1537 data_changed |=
change_field(data->song_playing, new_song_playing);
1545 Roomba500Interface::velocity()
const
1547 return data->velocity;
1555 Roomba500Interface::maxlenof_velocity()
const
1565 Roomba500Interface::set_velocity(
const int16_t new_velocity)
1567 data_changed |=
change_field(data->velocity, new_velocity);
1575 Roomba500Interface::radius()
const
1577 return data->radius;
1585 Roomba500Interface::maxlenof_radius()
const
1595 Roomba500Interface::set_radius(
const int16_t new_radius)
1597 data_changed |=
change_field(data->radius, new_radius);
1605 Roomba500Interface::velocity_right()
const
1607 return data->velocity_right;
1615 Roomba500Interface::maxlenof_velocity_right()
const
1625 Roomba500Interface::set_velocity_right(
const int16_t new_velocity_right)
1627 data_changed |=
change_field(data->velocity_right, new_velocity_right);
1635 Roomba500Interface::velocity_left()
const
1637 return data->velocity_left;
1645 Roomba500Interface::maxlenof_velocity_left()
const
1655 Roomba500Interface::set_velocity_left(
const int16_t new_velocity_left)
1657 data_changed |=
change_field(data->velocity_left, new_velocity_left);
1665 Roomba500Interface::encoder_counts_left()
const
1667 return data->encoder_counts_left;
1675 Roomba500Interface::maxlenof_encoder_counts_left()
const
1685 Roomba500Interface::set_encoder_counts_left(
const uint16_t new_encoder_counts_left)
1687 data_changed |=
change_field(data->encoder_counts_left, new_encoder_counts_left);
1695 Roomba500Interface::encoder_counts_right()
const
1697 return data->encoder_counts_right;
1705 Roomba500Interface::maxlenof_encoder_counts_right()
const
1715 Roomba500Interface::set_encoder_counts_right(
const uint16_t new_encoder_counts_right)
1717 data_changed |=
change_field(data->encoder_counts_right, new_encoder_counts_right);
1725 Roomba500Interface::is_bumper_left()
const
1727 return data->bumper_left;
1735 Roomba500Interface::maxlenof_bumper_left()
const
1745 Roomba500Interface::set_bumper_left(
const bool new_bumper_left)
1747 data_changed |=
change_field(data->bumper_left, new_bumper_left);
1755 Roomba500Interface::is_bumper_front_left()
const
1757 return data->bumper_front_left;
1765 Roomba500Interface::maxlenof_bumper_front_left()
const
1775 Roomba500Interface::set_bumper_front_left(
const bool new_bumper_front_left)
1777 data_changed |=
change_field(data->bumper_front_left, new_bumper_front_left);
1785 Roomba500Interface::is_bumper_center_left()
const
1787 return data->bumper_center_left;
1795 Roomba500Interface::maxlenof_bumper_center_left()
const
1805 Roomba500Interface::set_bumper_center_left(
const bool new_bumper_center_left)
1807 data_changed |=
change_field(data->bumper_center_left, new_bumper_center_left);
1815 Roomba500Interface::is_bumper_center_right()
const
1817 return data->bumper_center_right;
1825 Roomba500Interface::maxlenof_bumper_center_right()
const
1835 Roomba500Interface::set_bumper_center_right(
const bool new_bumper_center_right)
1837 data_changed |=
change_field(data->bumper_center_right, new_bumper_center_right);
1845 Roomba500Interface::is_bumper_front_right()
const
1847 return data->bumper_front_right;
1855 Roomba500Interface::maxlenof_bumper_front_right()
const
1865 Roomba500Interface::set_bumper_front_right(
const bool new_bumper_front_right)
1867 data_changed |=
change_field(data->bumper_front_right, new_bumper_front_right);
1875 Roomba500Interface::is_bumper_right()
const
1877 return data->bumper_right;
1885 Roomba500Interface::maxlenof_bumper_right()
const
1895 Roomba500Interface::set_bumper_right(
const bool new_bumper_right)
1897 data_changed |=
change_field(data->bumper_right, new_bumper_right);
1905 Roomba500Interface::light_bump_left()
const
1907 return data->light_bump_left;
1915 Roomba500Interface::maxlenof_light_bump_left()
const
1925 Roomba500Interface::set_light_bump_left(
const uint16_t new_light_bump_left)
1927 data_changed |=
change_field(data->light_bump_left, new_light_bump_left);
1936 Roomba500Interface::light_bump_front_left()
const
1938 return data->light_bump_front_left;
1946 Roomba500Interface::maxlenof_light_bump_front_left()
const
1957 Roomba500Interface::set_light_bump_front_left(
const uint16_t new_light_bump_front_left)
1959 data_changed |=
change_field(data->light_bump_front_left, new_light_bump_front_left);
1968 Roomba500Interface::light_bump_center_left()
const
1970 return data->light_bump_center_left;
1978 Roomba500Interface::maxlenof_light_bump_center_left()
const
1989 Roomba500Interface::set_light_bump_center_left(
const uint16_t new_light_bump_center_left)
1991 data_changed |=
change_field(data->light_bump_center_left, new_light_bump_center_left);
2000 Roomba500Interface::light_bump_center_right()
const
2002 return data->light_bump_center_right;
2010 Roomba500Interface::maxlenof_light_bump_center_right()
const
2021 Roomba500Interface::set_light_bump_center_right(
const uint16_t new_light_bump_center_right)
2023 data_changed |=
change_field(data->light_bump_center_right, new_light_bump_center_right);
2032 Roomba500Interface::light_bump_front_right()
const
2034 return data->light_bump_front_right;
2042 Roomba500Interface::maxlenof_light_bump_front_right()
const
2053 Roomba500Interface::set_light_bump_front_right(
const uint16_t new_light_bump_front_right)
2055 data_changed |=
change_field(data->light_bump_front_right, new_light_bump_front_right);
2063 Roomba500Interface::light_bump_right()
const
2065 return data->light_bump_right;
2073 Roomba500Interface::maxlenof_light_bump_right()
const
2083 Roomba500Interface::set_light_bump_right(
const uint16_t new_light_bump_right)
2085 data_changed |=
change_field(data->light_bump_right, new_light_bump_right);
2094 Roomba500Interface::ir_opcode_left()
const
2104 Roomba500Interface::maxlenof_ir_opcode_left()
const
2117 data_changed |=
change_field(data->ir_opcode_left, new_ir_opcode_left);
2126 Roomba500Interface::ir_opcode_right()
const
2136 Roomba500Interface::maxlenof_ir_opcode_right()
const
2149 data_changed |=
change_field(data->ir_opcode_right, new_ir_opcode_right);
2157 Roomba500Interface::left_motor_current()
const
2159 return data->left_motor_current;
2167 Roomba500Interface::maxlenof_left_motor_current()
const
2177 Roomba500Interface::set_left_motor_current(
const int16_t new_left_motor_current)
2179 data_changed |=
change_field(data->left_motor_current, new_left_motor_current);
2187 Roomba500Interface::right_motor_current()
const
2189 return data->right_motor_current;
2197 Roomba500Interface::maxlenof_right_motor_current()
const
2207 Roomba500Interface::set_right_motor_current(
const int16_t new_right_motor_current)
2209 data_changed |=
change_field(data->right_motor_current, new_right_motor_current);
2217 Roomba500Interface::main_brush_current()
const
2219 return data->main_brush_current;
2227 Roomba500Interface::maxlenof_main_brush_current()
const
2237 Roomba500Interface::set_main_brush_current(
const int16_t new_main_brush_current)
2239 data_changed |=
change_field(data->main_brush_current, new_main_brush_current);
2247 Roomba500Interface::side_brush_current()
const
2249 return data->side_brush_current;
2257 Roomba500Interface::maxlenof_side_brush_current()
const
2267 Roomba500Interface::set_side_brush_current(
const int16_t new_side_brush_current)
2269 data_changed |=
change_field(data->side_brush_current, new_side_brush_current);
2277 Roomba500Interface::is_caster_stasis()
const
2279 return data->caster_stasis;
2287 Roomba500Interface::maxlenof_caster_stasis()
const
2297 Roomba500Interface::set_caster_stasis(
const bool new_caster_stasis)
2299 data_changed |=
change_field(data->caster_stasis, new_caster_stasis);
2304 Roomba500Interface::create_message(
const char *type)
const
2306 if ( strncmp(
"StopMessage", type, INTERFACE_MESSAGE_TYPE_SIZE_ - 1) == 0 ) {
2308 }
else if ( strncmp(
"DockMessage", type, INTERFACE_MESSAGE_TYPE_SIZE_ - 1) == 0 ) {
2310 }
else if ( strncmp(
"SetModeMessage", type, INTERFACE_MESSAGE_TYPE_SIZE_ - 1) == 0 ) {
2312 }
else if ( strncmp(
"DriveStraightMessage", type, INTERFACE_MESSAGE_TYPE_SIZE_ - 1) == 0 ) {
2314 }
else if ( strncmp(
"DriveMessage", type, INTERFACE_MESSAGE_TYPE_SIZE_ - 1) == 0 ) {
2316 }
else if ( strncmp(
"SetMotorsMessage", type, INTERFACE_MESSAGE_TYPE_SIZE_ - 1) == 0 ) {
2320 "message type for this interface type.", type);
2334 type(), other->
type());
2336 memcpy(data, oi->data,
sizeof(Roomba500Interface_data_t));
2340 Roomba500Interface::enum_tostring(
const char *enumtype,
int val)
const
2342 if (strcmp(enumtype,
"Mode") == 0) {
2343 return tostring_Mode((
Mode)val);
2345 if (strcmp(enumtype,
"InfraredCharacter") == 0) {
2348 if (strcmp(enumtype,
"ChargingState") == 0) {
2351 if (strcmp(enumtype,
"BrushState") == 0) {
2366 Roomba500Interface::StopMessage::StopMessage() :
Message(
"StopMessage")
2371 data = (StopMessage_data_t *)
data_ptr;
2373 enum_map_Mode[(int)
MODE_OFF] =
"MODE_OFF";
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";
2381 enum_map_InfraredCharacter[(int)
IR_REMOTE_SPOT] =
"IR_REMOTE_SPOT";
2382 enum_map_InfraredCharacter[(int)
IR_REMOTE_MAX] =
"IR_REMOTE_MAX";
2386 enum_map_InfraredCharacter[(int)
IR_REMOTE_STOP] =
"IR_REMOTE_STOP";
2410 enum_map_ChargingState[(int)
CHARGING_NO] =
"CHARGING_NO";
2412 enum_map_ChargingState[(int)
CHARGING_FULL] =
"CHARGING_FULL";
2435 data = (StopMessage_data_t *)
data_ptr;
2463 data = (DockMessage_data_t *)
data_ptr;
2465 enum_map_Mode[(int)
MODE_OFF] =
"MODE_OFF";
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";
2473 enum_map_InfraredCharacter[(int)
IR_REMOTE_SPOT] =
"IR_REMOTE_SPOT";
2474 enum_map_InfraredCharacter[(int)
IR_REMOTE_MAX] =
"IR_REMOTE_MAX";
2478 enum_map_InfraredCharacter[(int)
IR_REMOTE_STOP] =
"IR_REMOTE_STOP";
2502 enum_map_ChargingState[(int)
CHARGING_NO] =
"CHARGING_NO";
2504 enum_map_ChargingState[(int)
CHARGING_FULL] =
"CHARGING_FULL";
2527 data = (DockMessage_data_t *)
data_ptr;
2554 data_size =
sizeof(SetModeMessage_data_t);
2557 data = (SetModeMessage_data_t *)
data_ptr;
2559 data->mode = ini_mode;
2560 enum_map_Mode[(int)
MODE_OFF] =
"MODE_OFF";
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";
2568 enum_map_InfraredCharacter[(int)
IR_REMOTE_SPOT] =
"IR_REMOTE_SPOT";
2569 enum_map_InfraredCharacter[(int)
IR_REMOTE_MAX] =
"IR_REMOTE_MAX";
2573 enum_map_InfraredCharacter[(int)
IR_REMOTE_STOP] =
"IR_REMOTE_STOP";
2597 enum_map_ChargingState[(int)
CHARGING_NO] =
"CHARGING_NO";
2599 enum_map_ChargingState[(int)
CHARGING_FULL] =
"CHARGING_FULL";
2611 data_size =
sizeof(SetModeMessage_data_t);
2614 data = (SetModeMessage_data_t *)
data_ptr;
2616 enum_map_Mode[(int)
MODE_OFF] =
"MODE_OFF";
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";
2624 enum_map_InfraredCharacter[(int)
IR_REMOTE_SPOT] =
"IR_REMOTE_SPOT";
2625 enum_map_InfraredCharacter[(int)
IR_REMOTE_MAX] =
"IR_REMOTE_MAX";
2629 enum_map_InfraredCharacter[(int)
IR_REMOTE_STOP] =
"IR_REMOTE_STOP";
2653 enum_map_ChargingState[(int)
CHARGING_NO] =
"CHARGING_NO";
2655 enum_map_ChargingState[(int)
CHARGING_FULL] =
"CHARGING_FULL";
2679 data = (SetModeMessage_data_t *)
data_ptr;
2736 data_size =
sizeof(DriveStraightMessage_data_t);
2739 data = (DriveStraightMessage_data_t *)
data_ptr;
2741 data->velocity = ini_velocity;
2742 enum_map_Mode[(int)
MODE_OFF] =
"MODE_OFF";
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";
2750 enum_map_InfraredCharacter[(int)
IR_REMOTE_SPOT] =
"IR_REMOTE_SPOT";
2751 enum_map_InfraredCharacter[(int)
IR_REMOTE_MAX] =
"IR_REMOTE_MAX";
2755 enum_map_InfraredCharacter[(int)
IR_REMOTE_STOP] =
"IR_REMOTE_STOP";
2779 enum_map_ChargingState[(int)
CHARGING_NO] =
"CHARGING_NO";
2781 enum_map_ChargingState[(int)
CHARGING_FULL] =
"CHARGING_FULL";
2793 data_size =
sizeof(DriveStraightMessage_data_t);
2796 data = (DriveStraightMessage_data_t *)
data_ptr;
2798 enum_map_Mode[(int)
MODE_OFF] =
"MODE_OFF";
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";
2806 enum_map_InfraredCharacter[(int)
IR_REMOTE_SPOT] =
"IR_REMOTE_SPOT";
2807 enum_map_InfraredCharacter[(int)
IR_REMOTE_MAX] =
"IR_REMOTE_MAX";
2811 enum_map_InfraredCharacter[(int)
IR_REMOTE_STOP] =
"IR_REMOTE_STOP";
2835 enum_map_ChargingState[(int)
CHARGING_NO] =
"CHARGING_NO";
2837 enum_map_ChargingState[(int)
CHARGING_FULL] =
"CHARGING_FULL";
2861 data = (DriveStraightMessage_data_t *)
data_ptr;
2873 return data->velocity;
2919 data_size =
sizeof(DriveMessage_data_t);
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";
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";
2934 enum_map_InfraredCharacter[(int)
IR_REMOTE_SPOT] =
"IR_REMOTE_SPOT";
2935 enum_map_InfraredCharacter[(int)
IR_REMOTE_MAX] =
"IR_REMOTE_MAX";
2939 enum_map_InfraredCharacter[(int)
IR_REMOTE_STOP] =
"IR_REMOTE_STOP";
2963 enum_map_ChargingState[(int)
CHARGING_NO] =
"CHARGING_NO";
2965 enum_map_ChargingState[(int)
CHARGING_FULL] =
"CHARGING_FULL";
2978 data_size =
sizeof(DriveMessage_data_t);
2981 data = (DriveMessage_data_t *)
data_ptr;
2983 enum_map_Mode[(int)
MODE_OFF] =
"MODE_OFF";
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";
2991 enum_map_InfraredCharacter[(int)
IR_REMOTE_SPOT] =
"IR_REMOTE_SPOT";
2992 enum_map_InfraredCharacter[(int)
IR_REMOTE_MAX] =
"IR_REMOTE_MAX";
2996 enum_map_InfraredCharacter[(int)
IR_REMOTE_STOP] =
"IR_REMOTE_STOP";
3020 enum_map_ChargingState[(int)
CHARGING_NO] =
"CHARGING_NO";
3022 enum_map_ChargingState[(int)
CHARGING_FULL] =
"CHARGING_FULL";
3047 data = (DriveMessage_data_t *)
data_ptr;
3059 return data->velocity;
3089 return data->radius;
3136 data_size =
sizeof(SetMotorsMessage_data_t);
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";
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";
3152 enum_map_InfraredCharacter[(int)
IR_REMOTE_SPOT] =
"IR_REMOTE_SPOT";
3153 enum_map_InfraredCharacter[(int)
IR_REMOTE_MAX] =
"IR_REMOTE_MAX";
3157 enum_map_InfraredCharacter[(int)
IR_REMOTE_STOP] =
"IR_REMOTE_STOP";
3181 enum_map_ChargingState[(int)
CHARGING_NO] =
"CHARGING_NO";
3183 enum_map_ChargingState[(int)
CHARGING_FULL] =
"CHARGING_FULL";
3197 data_size =
sizeof(SetMotorsMessage_data_t);
3200 data = (SetMotorsMessage_data_t *)
data_ptr;
3202 enum_map_Mode[(int)
MODE_OFF] =
"MODE_OFF";
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";
3210 enum_map_InfraredCharacter[(int)
IR_REMOTE_SPOT] =
"IR_REMOTE_SPOT";
3211 enum_map_InfraredCharacter[(int)
IR_REMOTE_MAX] =
"IR_REMOTE_MAX";
3215 enum_map_InfraredCharacter[(int)
IR_REMOTE_STOP] =
"IR_REMOTE_STOP";
3239 enum_map_ChargingState[(int)
CHARGING_NO] =
"CHARGING_NO";
3241 enum_map_ChargingState[(int)
CHARGING_FULL] =
"CHARGING_FULL";
3267 data = (SetMotorsMessage_data_t *)
data_ptr;
3279 return data->vacuuming;
Base class for all Fawkes BlackBoard interfaces.
const char * type() const
Get type of interface.
void * data_ptr
Pointer to local memory storage.
Base class for all messages passed through interfaces in Fawkes BlackBoard.
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.
void * data_ptr
Pointer to memory that contains local data.
message_data_ts_t * data_ts
data timestamp aliasing pointer
unsigned int data_size
Size of memory needed to hold all data.
DockMessage Fawkes BlackBoard Interface Message.
virtual Message * clone() const
Clone this message.
~DockMessage()
Destructor.
DockMessage()
Constructor.
DriveMessage Fawkes BlackBoard Interface Message.
~DriveMessage()
Destructor.
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.
DriveMessage()
Constructor.
DriveStraightMessage Fawkes BlackBoard Interface Message.
virtual Message * clone() const
Clone this message.
~DriveStraightMessage()
Destructor.
void set_velocity(const int16_t new_velocity)
Set velocity value.
size_t maxlenof_velocity() const
Get maximum length of velocity value.
DriveStraightMessage()
Constructor.
int16_t velocity() const
Get 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.
~SetModeMessage()
Destructor.
Mode mode() const
Get mode value.
SetModeMessage()
Constructor.
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.
SetMotorsMessage()
Constructor.
void set_vacuuming(const bool new_vacuuming)
Set vacuuming value.
size_t maxlenof_main() const
Get maximum length of main value.
BrushState main() const
Get main value.
~SetMotorsMessage()
Destructor.
bool is_vacuuming() const
Get vacuuming value.
BrushState side() const
Get side 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.
~StopMessage()
Destructor.
virtual Message * clone() const
Clone this message.
StopMessage()
Constructor.
Roomba500Interface Fawkes BlackBoard Interface.
BrushState
State of the brushes.
@ BRUSHSTATE_FORWARD
Brush is turning forward.
@ BRUSHSTATE_BACKWARD
Brush is turning backward.
@ BRUSHSTATE_OFF
Brush is off.
ChargingState
Current charging state.
@ CHARGING_RECONDITIONING
Reconditioning battery.
@ CHARGING_ERROR
Fault condition.
@ CHARGING_TRICKLE
Trickle charging.
@ CHARGING_FULL
Full charging cycle.
@ CHARGING_WAITING
Waiting.
@ CHARGING_NO
Not charging.
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
@ IFT_ENUM
field with interface specific enum type
bool change_field(FieldT &field, const DataT &value)
Set a field and return whether it changed.
Timestamp data, must be present and first entries for each interface data structs!...