24 #include <interfaces/Roomba500Interface.h>
26 #include <core/exceptions/software.h>
44 Roomba500Interface::Roomba500Interface() : Interface()
46 data_size =
sizeof(Roomba500Interface_data_t);
47 data_ptr = malloc(data_size);
48 data = (Roomba500Interface_data_t *)data_ptr;
49 data_ts = (interface_data_ts_t *)data_ptr;
50 memset(data_ptr, 0, data_size);
51 add_fieldinfo(IFT_ENUM,
"mode", 1, &data->mode);
52 add_fieldinfo(IFT_BOOL,
"wheel_drop_left", 1, &data->wheel_drop_left,
"");
53 add_fieldinfo(IFT_BOOL,
"wheel_drop_right", 1, &data->wheel_drop_right,
"");
54 add_fieldinfo(IFT_BOOL,
"bump_left", 1, &data->bump_left,
"");
55 add_fieldinfo(IFT_BOOL,
"bump_right", 1, &data->bump_right,
"");
56 add_fieldinfo(IFT_BOOL,
"wall", 1, &data->wall,
"");
57 add_fieldinfo(IFT_BOOL,
"cliff_left", 1, &data->cliff_left,
"");
58 add_fieldinfo(IFT_BOOL,
"cliff_front_left", 1, &data->cliff_front_left,
"");
59 add_fieldinfo(IFT_BOOL,
"cliff_front_right", 1, &data->cliff_front_right,
"");
60 add_fieldinfo(IFT_BOOL,
"cliff_right", 1, &data->cliff_right,
"");
61 add_fieldinfo(IFT_BOOL,
"virtual_wall", 1, &data->virtual_wall,
"");
62 add_fieldinfo(IFT_BOOL,
"overcurrent_side_brush", 1, &data->overcurrent_side_brush,
"");
63 add_fieldinfo(IFT_BOOL,
"overcurrent_main_brush", 1, &data->overcurrent_main_brush,
"");
64 add_fieldinfo(IFT_BOOL,
"overcurrent_left_wheel", 1, &data->overcurrent_left_wheel,
"");
65 add_fieldinfo(IFT_BOOL,
"overcurrent_right_wheel", 1, &data->overcurrent_right_wheel,
"");
66 add_fieldinfo(IFT_BOOL,
"dirt_detect", 1, &data->dirt_detect,
"");
67 add_fieldinfo(IFT_ENUM,
"ir_opcode_omni", 1, &data->ir_opcode_omni);
68 add_fieldinfo(IFT_BOOL,
"button_clean", 1, &data->button_clean,
"");
69 add_fieldinfo(IFT_BOOL,
"button_spot", 1, &data->button_spot,
"");
70 add_fieldinfo(IFT_BOOL,
"button_dock", 1, &data->button_dock,
"");
71 add_fieldinfo(IFT_BOOL,
"button_minute", 1, &data->button_minute,
"");
72 add_fieldinfo(IFT_BOOL,
"button_hour", 1, &data->button_hour,
"");
73 add_fieldinfo(IFT_BOOL,
"button_day", 1, &data->button_day,
"");
74 add_fieldinfo(IFT_BOOL,
"button_schedule", 1, &data->button_schedule,
"");
75 add_fieldinfo(IFT_BOOL,
"button_clock", 1, &data->button_clock,
"");
76 add_fieldinfo(IFT_INT16,
"distance", 1, &data->distance,
"");
77 add_fieldinfo(IFT_INT16,
"angle", 1, &data->angle,
"");
78 add_fieldinfo(IFT_ENUM,
"charging_state", 1, &data->charging_state);
79 add_fieldinfo(IFT_UINT16,
"voltage", 1, &data->voltage,
"");
80 add_fieldinfo(IFT_INT16,
"current", 1, &data->current,
"");
81 add_fieldinfo(IFT_INT8,
"temperature", 1, &data->temperature,
"");
82 add_fieldinfo(IFT_UINT16,
"battery_charge", 1, &data->battery_charge,
"");
83 add_fieldinfo(IFT_UINT16,
"battery_capacity", 1, &data->battery_capacity,
"");
84 add_fieldinfo(IFT_UINT16,
"wall_signal", 1, &data->wall_signal,
"");
85 add_fieldinfo(IFT_UINT16,
"cliff_left_signal", 1, &data->cliff_left_signal,
"");
86 add_fieldinfo(IFT_UINT16,
"cliff_front_left_signal", 1, &data->cliff_front_left_signal,
"");
87 add_fieldinfo(IFT_UINT16,
"cliff_front_right_signal", 1, &data->cliff_front_right_signal,
"");
88 add_fieldinfo(IFT_UINT16,
"cliff_right_signal", 1, &data->cliff_right_signal,
"");
89 add_fieldinfo(IFT_BOOL,
"home_base_charger_available", 1, &data->home_base_charger_available,
"");
90 add_fieldinfo(IFT_BOOL,
"internal_charger_available", 1, &data->internal_charger_available,
"");
91 add_fieldinfo(IFT_UINT8,
"song_number", 1, &data->song_number,
"");
92 add_fieldinfo(IFT_BOOL,
"song_playing", 1, &data->song_playing,
"");
93 add_fieldinfo(IFT_INT16,
"velocity", 1, &data->velocity,
"");
94 add_fieldinfo(IFT_INT16,
"radius", 1, &data->radius,
"");
95 add_fieldinfo(IFT_INT16,
"velocity_right", 1, &data->velocity_right,
"");
96 add_fieldinfo(IFT_INT16,
"velocity_left", 1, &data->velocity_left,
"");
97 add_fieldinfo(IFT_UINT16,
"encoder_counts_left", 1, &data->encoder_counts_left,
"");
98 add_fieldinfo(IFT_UINT16,
"encoder_counts_right", 1, &data->encoder_counts_right,
"");
99 add_fieldinfo(IFT_BOOL,
"bumper_left", 1, &data->bumper_left,
"");
100 add_fieldinfo(IFT_BOOL,
"bumper_front_left", 1, &data->bumper_front_left,
"");
101 add_fieldinfo(IFT_BOOL,
"bumper_center_left", 1, &data->bumper_center_left,
"");
102 add_fieldinfo(IFT_BOOL,
"bumper_center_right", 1, &data->bumper_center_right,
"");
103 add_fieldinfo(IFT_BOOL,
"bumper_front_right", 1, &data->bumper_front_right,
"");
104 add_fieldinfo(IFT_BOOL,
"bumper_right", 1, &data->bumper_right,
"");
105 add_fieldinfo(IFT_UINT16,
"light_bump_left", 1, &data->light_bump_left,
"");
106 add_fieldinfo(IFT_UINT16,
"light_bump_front_left", 1, &data->light_bump_front_left,
"");
107 add_fieldinfo(IFT_UINT16,
"light_bump_center_left", 1, &data->light_bump_center_left,
"");
108 add_fieldinfo(IFT_UINT16,
"light_bump_center_right", 1, &data->light_bump_center_right,
"");
109 add_fieldinfo(IFT_UINT16,
"light_bump_front_right", 1, &data->light_bump_front_right,
"");
110 add_fieldinfo(IFT_UINT16,
"light_bump_right", 1, &data->light_bump_right,
"");
111 add_fieldinfo(IFT_ENUM,
"ir_opcode_left", 1, &data->ir_opcode_left);
112 add_fieldinfo(IFT_ENUM,
"ir_opcode_right", 1, &data->ir_opcode_right);
113 add_fieldinfo(IFT_INT16,
"left_motor_current", 1, &data->left_motor_current,
"");
114 add_fieldinfo(IFT_INT16,
"right_motor_current", 1, &data->right_motor_current,
"");
115 add_fieldinfo(IFT_INT16,
"main_brush_current", 1, &data->main_brush_current,
"");
116 add_fieldinfo(IFT_INT16,
"side_brush_current", 1, &data->side_brush_current,
"");
117 add_fieldinfo(IFT_BOOL,
"caster_stasis", 1, &data->caster_stasis,
"");
118 add_messageinfo(
"StopMessage");
119 add_messageinfo(
"DockMessage");
120 add_messageinfo(
"SetModeMessage");
121 add_messageinfo(
"DriveStraightMessage");
122 add_messageinfo(
"DriveMessage");
123 add_messageinfo(
"SetMotorsMessage");
124 unsigned char tmp_hash[] = {0x60, 0xa1, 0x1e, 0x86, 0x89, 0x2, 0x20, 0x34, 0x89, 0x32, 0xdb, 0x69, 0xee, 0x12, 0x86, 0x43};
129 Roomba500Interface::~Roomba500Interface()
138 Roomba500Interface::tostring_Mode(
Mode value)
const
141 case MODE_OFF:
return "MODE_OFF";
142 case MODE_PASSIVE:
return "MODE_PASSIVE";
143 case MODE_SAFE:
return "MODE_SAFE";
144 case MODE_FULL:
return "MODE_FULL";
145 default:
return "UNKNOWN";
156 case IR_NONE:
return "IR_NONE";
157 case IR_REMOTE_LEFT:
return "IR_REMOTE_LEFT";
158 case IR_REMOTE_FORWARD:
return "IR_REMOTE_FORWARD";
159 case IR_REMOTE_RIGHT:
return "IR_REMOTE_RIGHT";
160 case IR_REMOTE_SPOT:
return "IR_REMOTE_SPOT";
161 case IR_REMOTE_MAX:
return "IR_REMOTE_MAX";
162 case IR_REMOTE_SMALL:
return "IR_REMOTE_SMALL";
163 case IR_REMOTE_MEDIUM:
return "IR_REMOTE_MEDIUM";
164 case IR_REMOTE_LARGE_CLEAN:
return "IR_REMOTE_LARGE_CLEAN";
165 case IR_REMOTE_STOP:
return "IR_REMOTE_STOP";
166 case IR_REMOTE_POWER:
return "IR_REMOTE_POWER";
167 case IR_REMOTE_ARC_LEFT:
return "IR_REMOTE_ARC_LEFT";
168 case IR_REMOTE_ARC_RIGHT:
return "IR_REMOTE_ARC_RIGHT";
169 case IR_REMOTE_STOP2:
return "IR_REMOTE_STOP2";
170 case IR_SCHED_REMOTE_DOWNLOAD:
return "IR_SCHED_REMOTE_DOWNLOAD";
171 case IR_SCHED_REMOTE_SEEK_DOCK:
return "IR_SCHED_REMOTE_SEEK_DOCK";
172 case IR_DISC_DOCK_RESERVED:
return "IR_DISC_DOCK_RESERVED";
173 case IR_DISC_DOCK_RED_BUOY:
return "IR_DISC_DOCK_RED_BUOY";
174 case IR_DISC_DOCK_GREEN_BUOY:
return "IR_DISC_DOCK_GREEN_BUOY";
175 case IR_DISC_DOCK_FORCE_FIELD:
return "IR_DISC_DOCK_FORCE_FIELD";
176 case IR_DISC_DOCK_RED_GREEN_BUOY:
return "IR_DISC_DOCK_RED_GREEN_BUOY";
177 case IR_DISC_DOCK_RED_BUOY_FORCE_FIELD:
return "IR_DISC_DOCK_RED_BUOY_FORCE_FIELD";
178 case IR_DISC_DOCK_GREEN_BUOY_FORCE_FIELD:
return "IR_DISC_DOCK_GREEN_BUOY_FORCE_FIELD";
179 case IR_DISC_DOCK_RED_GREEN_BUOY_FORCE_FIELD:
return "IR_DISC_DOCK_RED_GREEN_BUOY_FORCE_FIELD";
180 case IR_DOCK_RESERVED:
return "IR_DOCK_RESERVED";
181 case IR_DOCK_RED_BUOY:
return "IR_DOCK_RED_BUOY";
182 case IR_DOCK_GREEN_BUOY:
return "IR_DOCK_GREEN_BUOY";
183 case IR_DOCK_FORCE_FIELD:
return "IR_DOCK_FORCE_FIELD";
184 case IR_DOCK_RED_GREEN_BUOY:
return "IR_DOCK_RED_GREEN_BUOY";
185 case IR_DOCK_RED_BUOY_FORCE_FIELD:
return "IR_DOCK_RED_BUOY_FORCE_FIELD";
186 case IR_DOCK_GREEN_BUOY_FORCE_FIELD:
return "IR_DOCK_GREEN_BUOY_FORCE_FIELD";
187 case IR_DOCK_RED_GREEN_BUOY_FORCE_FIELD:
return "IR_DOCK_RED_GREEN_BUOY_FORCE_FIELD";
188 case IR_VIRTUAL_WALL:
return "IR_VIRTUAL_WALL";
189 default:
return "UNKNOWN";
200 case CHARGING_NO:
return "CHARGING_NO";
201 case CHARGING_RECONDITIONING:
return "CHARGING_RECONDITIONING";
202 case CHARGING_FULL:
return "CHARGING_FULL";
203 case CHARGING_TRICKLE:
return "CHARGING_TRICKLE";
204 case CHARGING_WAITING:
return "CHARGING_WAITING";
205 case CHARGING_ERROR:
return "CHARGING_ERROR";
206 default:
return "UNKNOWN";
214 Roomba500Interface::tostring_BrushState(
BrushState value)
const
217 case BRUSHSTATE_OFF:
return "BRUSHSTATE_OFF";
218 case BRUSHSTATE_FORWARD:
return "BRUSHSTATE_FORWARD";
219 case BRUSHSTATE_BACKWARD:
return "BRUSHSTATE_BACKWARD";
220 default:
return "UNKNOWN";
229 Roomba500Interface::mode()
const
239 Roomba500Interface::maxlenof_mode()
const
249 Roomba500Interface::set_mode(
const Mode new_mode)
251 data->mode = new_mode;
260 Roomba500Interface::is_wheel_drop_left()
const
262 return data->wheel_drop_left;
270 Roomba500Interface::maxlenof_wheel_drop_left()
const
280 Roomba500Interface::set_wheel_drop_left(
const bool new_wheel_drop_left)
282 data->wheel_drop_left = new_wheel_drop_left;
291 Roomba500Interface::is_wheel_drop_right()
const
293 return data->wheel_drop_right;
301 Roomba500Interface::maxlenof_wheel_drop_right()
const
311 Roomba500Interface::set_wheel_drop_right(
const bool new_wheel_drop_right)
313 data->wheel_drop_right = new_wheel_drop_right;
322 Roomba500Interface::is_bump_left()
const
324 return data->bump_left;
332 Roomba500Interface::maxlenof_bump_left()
const
342 Roomba500Interface::set_bump_left(
const bool new_bump_left)
344 data->bump_left = new_bump_left;
353 Roomba500Interface::is_bump_right()
const
355 return data->bump_right;
363 Roomba500Interface::maxlenof_bump_right()
const
373 Roomba500Interface::set_bump_right(
const bool new_bump_right)
375 data->bump_right = new_bump_right;
384 Roomba500Interface::is_wall()
const
394 Roomba500Interface::maxlenof_wall()
const
404 Roomba500Interface::set_wall(
const bool new_wall)
406 data->wall = new_wall;
415 Roomba500Interface::is_cliff_left()
const
417 return data->cliff_left;
425 Roomba500Interface::maxlenof_cliff_left()
const
435 Roomba500Interface::set_cliff_left(
const bool new_cliff_left)
437 data->cliff_left = new_cliff_left;
446 Roomba500Interface::is_cliff_front_left()
const
448 return data->cliff_front_left;
456 Roomba500Interface::maxlenof_cliff_front_left()
const
466 Roomba500Interface::set_cliff_front_left(
const bool new_cliff_front_left)
468 data->cliff_front_left = new_cliff_front_left;
477 Roomba500Interface::is_cliff_front_right()
const
479 return data->cliff_front_right;
487 Roomba500Interface::maxlenof_cliff_front_right()
const
497 Roomba500Interface::set_cliff_front_right(
const bool new_cliff_front_right)
499 data->cliff_front_right = new_cliff_front_right;
508 Roomba500Interface::is_cliff_right()
const
510 return data->cliff_right;
518 Roomba500Interface::maxlenof_cliff_right()
const
528 Roomba500Interface::set_cliff_right(
const bool new_cliff_right)
530 data->cliff_right = new_cliff_right;
539 Roomba500Interface::is_virtual_wall()
const
541 return data->virtual_wall;
549 Roomba500Interface::maxlenof_virtual_wall()
const
559 Roomba500Interface::set_virtual_wall(
const bool new_virtual_wall)
561 data->virtual_wall = new_virtual_wall;
570 Roomba500Interface::is_overcurrent_side_brush()
const
572 return data->overcurrent_side_brush;
580 Roomba500Interface::maxlenof_overcurrent_side_brush()
const
590 Roomba500Interface::set_overcurrent_side_brush(
const bool new_overcurrent_side_brush)
592 data->overcurrent_side_brush = new_overcurrent_side_brush;
601 Roomba500Interface::is_overcurrent_main_brush()
const
603 return data->overcurrent_main_brush;
611 Roomba500Interface::maxlenof_overcurrent_main_brush()
const
621 Roomba500Interface::set_overcurrent_main_brush(
const bool new_overcurrent_main_brush)
623 data->overcurrent_main_brush = new_overcurrent_main_brush;
632 Roomba500Interface::is_overcurrent_left_wheel()
const
634 return data->overcurrent_left_wheel;
642 Roomba500Interface::maxlenof_overcurrent_left_wheel()
const
652 Roomba500Interface::set_overcurrent_left_wheel(
const bool new_overcurrent_left_wheel)
654 data->overcurrent_left_wheel = new_overcurrent_left_wheel;
663 Roomba500Interface::is_overcurrent_right_wheel()
const
665 return data->overcurrent_right_wheel;
673 Roomba500Interface::maxlenof_overcurrent_right_wheel()
const
683 Roomba500Interface::set_overcurrent_right_wheel(
const bool new_overcurrent_right_wheel)
685 data->overcurrent_right_wheel = new_overcurrent_right_wheel;
694 Roomba500Interface::is_dirt_detect()
const
696 return data->dirt_detect;
704 Roomba500Interface::maxlenof_dirt_detect()
const
714 Roomba500Interface::set_dirt_detect(
const bool new_dirt_detect)
716 data->dirt_detect = new_dirt_detect;
725 Roomba500Interface::ir_opcode_omni()
const
735 Roomba500Interface::maxlenof_ir_opcode_omni()
const
747 data->ir_opcode_omni = new_ir_opcode_omni;
756 Roomba500Interface::is_button_clean()
const
758 return data->button_clean;
766 Roomba500Interface::maxlenof_button_clean()
const
776 Roomba500Interface::set_button_clean(
const bool new_button_clean)
778 data->button_clean = new_button_clean;
787 Roomba500Interface::is_button_spot()
const
789 return data->button_spot;
797 Roomba500Interface::maxlenof_button_spot()
const
807 Roomba500Interface::set_button_spot(
const bool new_button_spot)
809 data->button_spot = new_button_spot;
818 Roomba500Interface::is_button_dock()
const
820 return data->button_dock;
828 Roomba500Interface::maxlenof_button_dock()
const
838 Roomba500Interface::set_button_dock(
const bool new_button_dock)
840 data->button_dock = new_button_dock;
849 Roomba500Interface::is_button_minute()
const
851 return data->button_minute;
859 Roomba500Interface::maxlenof_button_minute()
const
869 Roomba500Interface::set_button_minute(
const bool new_button_minute)
871 data->button_minute = new_button_minute;
880 Roomba500Interface::is_button_hour()
const
882 return data->button_hour;
890 Roomba500Interface::maxlenof_button_hour()
const
900 Roomba500Interface::set_button_hour(
const bool new_button_hour)
902 data->button_hour = new_button_hour;
911 Roomba500Interface::is_button_day()
const
913 return data->button_day;
921 Roomba500Interface::maxlenof_button_day()
const
931 Roomba500Interface::set_button_day(
const bool new_button_day)
933 data->button_day = new_button_day;
942 Roomba500Interface::is_button_schedule()
const
944 return data->button_schedule;
952 Roomba500Interface::maxlenof_button_schedule()
const
962 Roomba500Interface::set_button_schedule(
const bool new_button_schedule)
964 data->button_schedule = new_button_schedule;
973 Roomba500Interface::is_button_clock()
const
975 return data->button_clock;
983 Roomba500Interface::maxlenof_button_clock()
const
993 Roomba500Interface::set_button_clock(
const bool new_button_clock)
995 data->button_clock = new_button_clock;
1004 Roomba500Interface::distance()
const
1006 return data->distance;
1014 Roomba500Interface::maxlenof_distance()
const
1024 Roomba500Interface::set_distance(
const int16_t new_distance)
1026 data->distance = new_distance;
1027 data_changed =
true;
1035 Roomba500Interface::angle()
const
1045 Roomba500Interface::maxlenof_angle()
const
1055 Roomba500Interface::set_angle(
const int16_t new_angle)
1057 data->angle = new_angle;
1058 data_changed =
true;
1066 Roomba500Interface::charging_state()
const
1076 Roomba500Interface::maxlenof_charging_state()
const
1088 data->charging_state = new_charging_state;
1089 data_changed =
true;
1097 Roomba500Interface::voltage()
const
1099 return data->voltage;
1107 Roomba500Interface::maxlenof_voltage()
const
1117 Roomba500Interface::set_voltage(
const uint16_t new_voltage)
1119 data->voltage = new_voltage;
1120 data_changed =
true;
1128 Roomba500Interface::current()
const
1130 return data->current;
1138 Roomba500Interface::maxlenof_current()
const
1148 Roomba500Interface::set_current(
const int16_t new_current)
1150 data->current = new_current;
1151 data_changed =
true;
1159 Roomba500Interface::temperature()
const
1161 return data->temperature;
1169 Roomba500Interface::maxlenof_temperature()
const
1179 Roomba500Interface::set_temperature(
const int8_t new_temperature)
1181 data->temperature = new_temperature;
1182 data_changed =
true;
1190 Roomba500Interface::battery_charge()
const
1192 return data->battery_charge;
1200 Roomba500Interface::maxlenof_battery_charge()
const
1210 Roomba500Interface::set_battery_charge(
const uint16_t new_battery_charge)
1212 data->battery_charge = new_battery_charge;
1213 data_changed =
true;
1221 Roomba500Interface::battery_capacity()
const
1223 return data->battery_capacity;
1231 Roomba500Interface::maxlenof_battery_capacity()
const
1241 Roomba500Interface::set_battery_capacity(
const uint16_t new_battery_capacity)
1243 data->battery_capacity = new_battery_capacity;
1244 data_changed =
true;
1252 Roomba500Interface::wall_signal()
const
1254 return data->wall_signal;
1262 Roomba500Interface::maxlenof_wall_signal()
const
1272 Roomba500Interface::set_wall_signal(
const uint16_t new_wall_signal)
1274 data->wall_signal = new_wall_signal;
1275 data_changed =
true;
1283 Roomba500Interface::cliff_left_signal()
const
1285 return data->cliff_left_signal;
1293 Roomba500Interface::maxlenof_cliff_left_signal()
const
1303 Roomba500Interface::set_cliff_left_signal(
const uint16_t new_cliff_left_signal)
1305 data->cliff_left_signal = new_cliff_left_signal;
1306 data_changed =
true;
1315 Roomba500Interface::cliff_front_left_signal()
const
1317 return data->cliff_front_left_signal;
1325 Roomba500Interface::maxlenof_cliff_front_left_signal()
const
1336 Roomba500Interface::set_cliff_front_left_signal(
const uint16_t new_cliff_front_left_signal)
1338 data->cliff_front_left_signal = new_cliff_front_left_signal;
1339 data_changed =
true;
1348 Roomba500Interface::cliff_front_right_signal()
const
1350 return data->cliff_front_right_signal;
1358 Roomba500Interface::maxlenof_cliff_front_right_signal()
const
1369 Roomba500Interface::set_cliff_front_right_signal(
const uint16_t new_cliff_front_right_signal)
1371 data->cliff_front_right_signal = new_cliff_front_right_signal;
1372 data_changed =
true;
1380 Roomba500Interface::cliff_right_signal()
const
1382 return data->cliff_right_signal;
1390 Roomba500Interface::maxlenof_cliff_right_signal()
const
1400 Roomba500Interface::set_cliff_right_signal(
const uint16_t new_cliff_right_signal)
1402 data->cliff_right_signal = new_cliff_right_signal;
1403 data_changed =
true;
1412 Roomba500Interface::is_home_base_charger_available()
const
1414 return data->home_base_charger_available;
1422 Roomba500Interface::maxlenof_home_base_charger_available()
const
1433 Roomba500Interface::set_home_base_charger_available(
const bool new_home_base_charger_available)
1435 data->home_base_charger_available = new_home_base_charger_available;
1436 data_changed =
true;
1445 Roomba500Interface::is_internal_charger_available()
const
1447 return data->internal_charger_available;
1455 Roomba500Interface::maxlenof_internal_charger_available()
const
1466 Roomba500Interface::set_internal_charger_available(
const bool new_internal_charger_available)
1468 data->internal_charger_available = new_internal_charger_available;
1469 data_changed =
true;
1477 Roomba500Interface::song_number()
const
1479 return data->song_number;
1487 Roomba500Interface::maxlenof_song_number()
const
1497 Roomba500Interface::set_song_number(
const uint8_t new_song_number)
1499 data->song_number = new_song_number;
1500 data_changed =
true;
1508 Roomba500Interface::is_song_playing()
const
1510 return data->song_playing;
1518 Roomba500Interface::maxlenof_song_playing()
const
1528 Roomba500Interface::set_song_playing(
const bool new_song_playing)
1530 data->song_playing = new_song_playing;
1531 data_changed =
true;
1539 Roomba500Interface::velocity()
const
1541 return data->velocity;
1549 Roomba500Interface::maxlenof_velocity()
const
1559 Roomba500Interface::set_velocity(
const int16_t new_velocity)
1561 data->velocity = new_velocity;
1562 data_changed =
true;
1570 Roomba500Interface::radius()
const
1572 return data->radius;
1580 Roomba500Interface::maxlenof_radius()
const
1590 Roomba500Interface::set_radius(
const int16_t new_radius)
1592 data->radius = new_radius;
1593 data_changed =
true;
1601 Roomba500Interface::velocity_right()
const
1603 return data->velocity_right;
1611 Roomba500Interface::maxlenof_velocity_right()
const
1621 Roomba500Interface::set_velocity_right(
const int16_t new_velocity_right)
1623 data->velocity_right = new_velocity_right;
1624 data_changed =
true;
1632 Roomba500Interface::velocity_left()
const
1634 return data->velocity_left;
1642 Roomba500Interface::maxlenof_velocity_left()
const
1652 Roomba500Interface::set_velocity_left(
const int16_t new_velocity_left)
1654 data->velocity_left = new_velocity_left;
1655 data_changed =
true;
1663 Roomba500Interface::encoder_counts_left()
const
1665 return data->encoder_counts_left;
1673 Roomba500Interface::maxlenof_encoder_counts_left()
const
1683 Roomba500Interface::set_encoder_counts_left(
const uint16_t new_encoder_counts_left)
1685 data->encoder_counts_left = new_encoder_counts_left;
1686 data_changed =
true;
1694 Roomba500Interface::encoder_counts_right()
const
1696 return data->encoder_counts_right;
1704 Roomba500Interface::maxlenof_encoder_counts_right()
const
1714 Roomba500Interface::set_encoder_counts_right(
const uint16_t new_encoder_counts_right)
1716 data->encoder_counts_right = new_encoder_counts_right;
1717 data_changed =
true;
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->bumper_left = new_bumper_left;
1748 data_changed =
true;
1756 Roomba500Interface::is_bumper_front_left()
const
1758 return data->bumper_front_left;
1766 Roomba500Interface::maxlenof_bumper_front_left()
const
1776 Roomba500Interface::set_bumper_front_left(
const bool new_bumper_front_left)
1778 data->bumper_front_left = new_bumper_front_left;
1779 data_changed =
true;
1787 Roomba500Interface::is_bumper_center_left()
const
1789 return data->bumper_center_left;
1797 Roomba500Interface::maxlenof_bumper_center_left()
const
1807 Roomba500Interface::set_bumper_center_left(
const bool new_bumper_center_left)
1809 data->bumper_center_left = new_bumper_center_left;
1810 data_changed =
true;
1818 Roomba500Interface::is_bumper_center_right()
const
1820 return data->bumper_center_right;
1828 Roomba500Interface::maxlenof_bumper_center_right()
const
1838 Roomba500Interface::set_bumper_center_right(
const bool new_bumper_center_right)
1840 data->bumper_center_right = new_bumper_center_right;
1841 data_changed =
true;
1849 Roomba500Interface::is_bumper_front_right()
const
1851 return data->bumper_front_right;
1859 Roomba500Interface::maxlenof_bumper_front_right()
const
1869 Roomba500Interface::set_bumper_front_right(
const bool new_bumper_front_right)
1871 data->bumper_front_right = new_bumper_front_right;
1872 data_changed =
true;
1880 Roomba500Interface::is_bumper_right()
const
1882 return data->bumper_right;
1890 Roomba500Interface::maxlenof_bumper_right()
const
1900 Roomba500Interface::set_bumper_right(
const bool new_bumper_right)
1902 data->bumper_right = new_bumper_right;
1903 data_changed =
true;
1911 Roomba500Interface::light_bump_left()
const
1913 return data->light_bump_left;
1921 Roomba500Interface::maxlenof_light_bump_left()
const
1931 Roomba500Interface::set_light_bump_left(
const uint16_t new_light_bump_left)
1933 data->light_bump_left = new_light_bump_left;
1934 data_changed =
true;
1943 Roomba500Interface::light_bump_front_left()
const
1945 return data->light_bump_front_left;
1953 Roomba500Interface::maxlenof_light_bump_front_left()
const
1964 Roomba500Interface::set_light_bump_front_left(
const uint16_t new_light_bump_front_left)
1966 data->light_bump_front_left = new_light_bump_front_left;
1967 data_changed =
true;
1976 Roomba500Interface::light_bump_center_left()
const
1978 return data->light_bump_center_left;
1986 Roomba500Interface::maxlenof_light_bump_center_left()
const
1997 Roomba500Interface::set_light_bump_center_left(
const uint16_t new_light_bump_center_left)
1999 data->light_bump_center_left = new_light_bump_center_left;
2000 data_changed =
true;
2009 Roomba500Interface::light_bump_center_right()
const
2011 return data->light_bump_center_right;
2019 Roomba500Interface::maxlenof_light_bump_center_right()
const
2030 Roomba500Interface::set_light_bump_center_right(
const uint16_t new_light_bump_center_right)
2032 data->light_bump_center_right = new_light_bump_center_right;
2033 data_changed =
true;
2042 Roomba500Interface::light_bump_front_right()
const
2044 return data->light_bump_front_right;
2052 Roomba500Interface::maxlenof_light_bump_front_right()
const
2063 Roomba500Interface::set_light_bump_front_right(
const uint16_t new_light_bump_front_right)
2065 data->light_bump_front_right = new_light_bump_front_right;
2066 data_changed =
true;
2074 Roomba500Interface::light_bump_right()
const
2076 return data->light_bump_right;
2084 Roomba500Interface::maxlenof_light_bump_right()
const
2094 Roomba500Interface::set_light_bump_right(
const uint16_t new_light_bump_right)
2096 data->light_bump_right = new_light_bump_right;
2097 data_changed =
true;
2106 Roomba500Interface::ir_opcode_left()
const
2116 Roomba500Interface::maxlenof_ir_opcode_left()
const
2129 data->ir_opcode_left = new_ir_opcode_left;
2130 data_changed =
true;
2139 Roomba500Interface::ir_opcode_right()
const
2149 Roomba500Interface::maxlenof_ir_opcode_right()
const
2162 data->ir_opcode_right = new_ir_opcode_right;
2163 data_changed =
true;
2171 Roomba500Interface::left_motor_current()
const
2173 return data->left_motor_current;
2181 Roomba500Interface::maxlenof_left_motor_current()
const
2191 Roomba500Interface::set_left_motor_current(
const int16_t new_left_motor_current)
2193 data->left_motor_current = new_left_motor_current;
2194 data_changed =
true;
2202 Roomba500Interface::right_motor_current()
const
2204 return data->right_motor_current;
2212 Roomba500Interface::maxlenof_right_motor_current()
const
2222 Roomba500Interface::set_right_motor_current(
const int16_t new_right_motor_current)
2224 data->right_motor_current = new_right_motor_current;
2225 data_changed =
true;
2233 Roomba500Interface::main_brush_current()
const
2235 return data->main_brush_current;
2243 Roomba500Interface::maxlenof_main_brush_current()
const
2253 Roomba500Interface::set_main_brush_current(
const int16_t new_main_brush_current)
2255 data->main_brush_current = new_main_brush_current;
2256 data_changed =
true;
2264 Roomba500Interface::side_brush_current()
const
2266 return data->side_brush_current;
2274 Roomba500Interface::maxlenof_side_brush_current()
const
2284 Roomba500Interface::set_side_brush_current(
const int16_t new_side_brush_current)
2286 data->side_brush_current = new_side_brush_current;
2287 data_changed =
true;
2295 Roomba500Interface::is_caster_stasis()
const
2297 return data->caster_stasis;
2305 Roomba500Interface::maxlenof_caster_stasis()
const
2315 Roomba500Interface::set_caster_stasis(
const bool new_caster_stasis)
2317 data->caster_stasis = new_caster_stasis;
2318 data_changed =
true;
2323 Roomba500Interface::create_message(
const char *type)
const
2325 if ( strncmp(
"StopMessage", type, __INTERFACE_MESSAGE_TYPE_SIZE) == 0 ) {
2327 }
else if ( strncmp(
"DockMessage", type, __INTERFACE_MESSAGE_TYPE_SIZE) == 0 ) {
2329 }
else if ( strncmp(
"SetModeMessage", type, __INTERFACE_MESSAGE_TYPE_SIZE) == 0 ) {
2331 }
else if ( strncmp(
"DriveStraightMessage", type, __INTERFACE_MESSAGE_TYPE_SIZE) == 0 ) {
2333 }
else if ( strncmp(
"DriveMessage", type, __INTERFACE_MESSAGE_TYPE_SIZE) == 0 ) {
2335 }
else if ( strncmp(
"SetMotorsMessage", type, __INTERFACE_MESSAGE_TYPE_SIZE) == 0 ) {
2339 "message type for this interface type.", type);
2353 type(), other->
type());
2355 memcpy(data, oi->data,
sizeof(Roomba500Interface_data_t));
2359 Roomba500Interface::enum_tostring(
const char *enumtype,
int val)
const
2361 if (strcmp(enumtype,
"Mode") == 0) {
2362 return tostring_Mode((
Mode)val);
2364 if (strcmp(enumtype,
"InfraredCharacter") == 0) {
2367 if (strcmp(enumtype,
"ChargingState") == 0) {
2370 if (strcmp(enumtype,
"BrushState") == 0) {
2385 Roomba500Interface::StopMessage::StopMessage() :
Message(
"StopMessage")
2390 data = (StopMessage_data_t *)
data_ptr;
2408 data = (StopMessage_data_t *)
data_ptr;
2436 data = (DockMessage_data_t *)
data_ptr;
2454 data = (DockMessage_data_t *)
data_ptr;
2481 data_size =
sizeof(SetModeMessage_data_t);
2484 data = (SetModeMessage_data_t *)
data_ptr;
2486 data->mode = ini_mode;
2492 data_size =
sizeof(SetModeMessage_data_t);
2495 data = (SetModeMessage_data_t *)
data_ptr;
2514 data = (SetModeMessage_data_t *)
data_ptr;
2546 data->mode = new_mode;
2571 data_size =
sizeof(DriveStraightMessage_data_t);
2574 data = (DriveStraightMessage_data_t *)
data_ptr;
2576 data->velocity = ini_velocity;
2582 data_size =
sizeof(DriveStraightMessage_data_t);
2585 data = (DriveStraightMessage_data_t *)
data_ptr;
2604 data = (DriveStraightMessage_data_t *)
data_ptr;
2616 return data->velocity;
2636 data->velocity = new_velocity;
2662 data_size =
sizeof(DriveMessage_data_t);
2665 data = (DriveMessage_data_t *)
data_ptr;
2667 data->velocity = ini_velocity;
2668 data->radius = ini_radius;
2675 data_size =
sizeof(DriveMessage_data_t);
2678 data = (DriveMessage_data_t *)
data_ptr;
2698 data = (DriveMessage_data_t *)
data_ptr;
2710 return data->velocity;
2730 data->velocity = new_velocity;
2740 return data->radius;
2760 data->radius = new_radius;
2787 data_size =
sizeof(SetMotorsMessage_data_t);
2790 data = (SetMotorsMessage_data_t *)
data_ptr;
2792 data->vacuuming = ini_vacuuming;
2793 data->main = ini_main;
2794 data->side = ini_side;
2802 data_size =
sizeof(SetMotorsMessage_data_t);
2805 data = (SetMotorsMessage_data_t *)
data_ptr;
2826 data = (SetMotorsMessage_data_t *)
data_ptr;
2838 return data->vacuuming;
2858 data->vacuuming = new_vacuuming;
2888 data->main = new_main;
2918 data->side = new_side;
void set_velocity(const int16_t new_velocity)
Set velocity value.
int16_t velocity() const
Get velocity value.
void * data_ptr
Pointer to memory that contains local data.
size_t maxlenof_main() const
Get maximum length of main value.
virtual Message * clone() const
Clone this message.
Base class for all messages passed through interfaces in Fawkes BlackBoard.
ChargingState
Current charging state.
SetMotorsMessage()
Constructor.
int16_t velocity() const
Get velocity value.
virtual Message * clone() const
Clone this message.
StopMessage Fawkes BlackBoard Interface Message.
StopMessage()
Constructor.
void set_radius(const int16_t new_radius)
Set radius value.
virtual Message * clone() const
Clone this message.
Fawkes library namespace.
virtual Message * clone() const
Clone this message.
Timestamp data, must be present and first entries for each interface data structs! This leans on time...
void set_main(const BrushState new_main)
Set main value.
bool is_vacuuming() const
Get vacuuming value.
InfraredCharacter
Infrared character values.
Mode mode() const
Get mode value.
Base class for all Fawkes BlackBoard interfaces.
~DriveStraightMessage()
Destructor.
DockMessage Fawkes BlackBoard Interface Message.
message_data_ts_t * data_ts
data timestamp aliasing pointer
DriveStraightMessage()
Constructor.
unsigned int data_size
Size of memory needed to hold all data.
size_t maxlenof_velocity() const
Get maximum length of velocity value.
DockMessage()
Constructor.
virtual bool message_valid(const Message *message) const
Check if message is valid and can be enqueued.
void * data_ptr
Pointer to local memory storage.
void set_side(const BrushState new_side)
Set side value.
size_t maxlenof_radius() const
Get maximum length of radius value.
size_t maxlenof_mode() const
Get maximum length of mode value.
void set_vacuuming(const bool new_vacuuming)
Set vacuuming value.
~DockMessage()
Destructor.
BrushState main() const
Get main value.
SetMotorsMessage Fawkes BlackBoard Interface Message.
void set_mode(const Mode new_mode)
Set mode value.
int16_t radius() const
Get radius value.
size_t maxlenof_side() const
Get maximum length of side value.
size_t maxlenof_vacuuming() const
Get maximum length of vacuuming value.
Roomba500Interface Fawkes BlackBoard Interface.
SetModeMessage Fawkes BlackBoard Interface Message.
BrushState side() const
Get side value.
~StopMessage()
Destructor.
size_t maxlenof_velocity() const
Get maximum length of velocity value.
DriveMessage()
Constructor.
SetModeMessage()
Constructor.
void add_fieldinfo(interface_fieldtype_t type, const char *name, size_t length, void *value, const char *enumtype=0)
Add an entry to the info list.
void set_velocity(const int16_t new_velocity)
Set velocity value.
~DriveMessage()
Destructor.
DriveStraightMessage Fawkes BlackBoard Interface Message.
virtual Message * clone() const
Clone this message.
~SetModeMessage()
Destructor.
const char * type() const
Get type of interface.
DriveMessage Fawkes BlackBoard Interface Message.
BrushState
State of the brushes.
field with interface specific enum type
virtual Message * clone() const
Clone this message.
~SetMotorsMessage()
Destructor.