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,
"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,
"InfraredCharacter");
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,
"ChargingState");
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,
"InfraredCharacter");
112 add_fieldinfo(IFT_ENUM,
"ir_opcode_right", 1, &data->ir_opcode_right,
"InfraredCharacter");
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;