Fawkes API
Fawkes Development Version
|
00001 00002 /*************************************************************************** 00003 * Roomba500Interface.cpp - Fawkes BlackBoard Interface - Roomba500Interface 00004 * 00005 * Templated created: Thu Oct 12 10:49:19 2006 00006 * Copyright 2011 Tim Niemueller 00007 * 00008 ****************************************************************************/ 00009 00010 /* This program is free software; you can redistribute it and/or modify 00011 * it under the terms of the GNU General Public License as published by 00012 * the Free Software Foundation; either version 2 of the License, or 00013 * (at your option) any later version. A runtime exception applies to 00014 * this software (see LICENSE.GPL_WRE file mentioned below for details). 00015 * 00016 * This program is distributed in the hope that it will be useful, 00017 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00018 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00019 * GNU Library General Public License for more details. 00020 * 00021 * Read the full text in the LICENSE.GPL_WRE file in the doc directory. 00022 */ 00023 00024 #include <interfaces/Roomba500Interface.h> 00025 00026 #include <core/exceptions/software.h> 00027 00028 #include <cstring> 00029 #include <cstdlib> 00030 00031 namespace fawkes { 00032 00033 /** @class Roomba500Interface <interfaces/Roomba500Interface.h> 00034 * Roomba500Interface Fawkes BlackBoard Interface. 00035 * 00036 Roomba 500 hardware interface. 00037 00038 * @ingroup FawkesInterfaces 00039 */ 00040 00041 00042 00043 /** Constructor */ 00044 Roomba500Interface::Roomba500Interface() : Interface() 00045 { 00046 data_size = sizeof(Roomba500Interface_data_t); 00047 data_ptr = malloc(data_size); 00048 data = (Roomba500Interface_data_t *)data_ptr; 00049 data_ts = (interface_data_ts_t *)data_ptr; 00050 memset(data_ptr, 0, data_size); 00051 add_fieldinfo(IFT_ENUM, "mode", 1, &data->mode, "Mode"); 00052 add_fieldinfo(IFT_BOOL, "wheel_drop_left", 1, &data->wheel_drop_left); 00053 add_fieldinfo(IFT_BOOL, "wheel_drop_right", 1, &data->wheel_drop_right); 00054 add_fieldinfo(IFT_BOOL, "bump_left", 1, &data->bump_left); 00055 add_fieldinfo(IFT_BOOL, "bump_right", 1, &data->bump_right); 00056 add_fieldinfo(IFT_BOOL, "wall", 1, &data->wall); 00057 add_fieldinfo(IFT_BOOL, "cliff_left", 1, &data->cliff_left); 00058 add_fieldinfo(IFT_BOOL, "cliff_front_left", 1, &data->cliff_front_left); 00059 add_fieldinfo(IFT_BOOL, "cliff_front_right", 1, &data->cliff_front_right); 00060 add_fieldinfo(IFT_BOOL, "cliff_right", 1, &data->cliff_right); 00061 add_fieldinfo(IFT_BOOL, "virtual_wall", 1, &data->virtual_wall); 00062 add_fieldinfo(IFT_BOOL, "overcurrent_side_brush", 1, &data->overcurrent_side_brush); 00063 add_fieldinfo(IFT_BOOL, "overcurrent_main_brush", 1, &data->overcurrent_main_brush); 00064 add_fieldinfo(IFT_BOOL, "overcurrent_left_wheel", 1, &data->overcurrent_left_wheel); 00065 add_fieldinfo(IFT_BOOL, "overcurrent_right_wheel", 1, &data->overcurrent_right_wheel); 00066 add_fieldinfo(IFT_BOOL, "dirt_detect", 1, &data->dirt_detect); 00067 add_fieldinfo(IFT_ENUM, "ir_opcode_omni", 1, &data->ir_opcode_omni, "InfraredCharacter"); 00068 add_fieldinfo(IFT_BOOL, "button_clean", 1, &data->button_clean); 00069 add_fieldinfo(IFT_BOOL, "button_spot", 1, &data->button_spot); 00070 add_fieldinfo(IFT_BOOL, "button_dock", 1, &data->button_dock); 00071 add_fieldinfo(IFT_BOOL, "button_minute", 1, &data->button_minute); 00072 add_fieldinfo(IFT_BOOL, "button_hour", 1, &data->button_hour); 00073 add_fieldinfo(IFT_BOOL, "button_day", 1, &data->button_day); 00074 add_fieldinfo(IFT_BOOL, "button_schedule", 1, &data->button_schedule); 00075 add_fieldinfo(IFT_BOOL, "button_clock", 1, &data->button_clock); 00076 add_fieldinfo(IFT_INT16, "distance", 1, &data->distance); 00077 add_fieldinfo(IFT_INT16, "angle", 1, &data->angle); 00078 add_fieldinfo(IFT_ENUM, "charging_state", 1, &data->charging_state, "ChargingState"); 00079 add_fieldinfo(IFT_UINT16, "voltage", 1, &data->voltage); 00080 add_fieldinfo(IFT_INT16, "current", 1, &data->current); 00081 add_fieldinfo(IFT_INT8, "temperature", 1, &data->temperature); 00082 add_fieldinfo(IFT_UINT16, "battery_charge", 1, &data->battery_charge); 00083 add_fieldinfo(IFT_UINT16, "battery_capacity", 1, &data->battery_capacity); 00084 add_fieldinfo(IFT_UINT16, "wall_signal", 1, &data->wall_signal); 00085 add_fieldinfo(IFT_UINT16, "cliff_left_signal", 1, &data->cliff_left_signal); 00086 add_fieldinfo(IFT_UINT16, "cliff_front_left_signal", 1, &data->cliff_front_left_signal); 00087 add_fieldinfo(IFT_UINT16, "cliff_front_right_signal", 1, &data->cliff_front_right_signal); 00088 add_fieldinfo(IFT_UINT16, "cliff_right_signal", 1, &data->cliff_right_signal); 00089 add_fieldinfo(IFT_BOOL, "home_base_charger_available", 1, &data->home_base_charger_available); 00090 add_fieldinfo(IFT_BOOL, "internal_charger_available", 1, &data->internal_charger_available); 00091 add_fieldinfo(IFT_UINT8, "song_number", 1, &data->song_number); 00092 add_fieldinfo(IFT_BOOL, "song_playing", 1, &data->song_playing); 00093 add_fieldinfo(IFT_INT16, "velocity", 1, &data->velocity); 00094 add_fieldinfo(IFT_INT16, "radius", 1, &data->radius); 00095 add_fieldinfo(IFT_INT16, "velocity_right", 1, &data->velocity_right); 00096 add_fieldinfo(IFT_INT16, "velocity_left", 1, &data->velocity_left); 00097 add_fieldinfo(IFT_UINT16, "encoder_counts_left", 1, &data->encoder_counts_left); 00098 add_fieldinfo(IFT_UINT16, "encoder_counts_right", 1, &data->encoder_counts_right); 00099 add_fieldinfo(IFT_BOOL, "bumper_left", 1, &data->bumper_left); 00100 add_fieldinfo(IFT_BOOL, "bumper_front_left", 1, &data->bumper_front_left); 00101 add_fieldinfo(IFT_BOOL, "bumper_center_left", 1, &data->bumper_center_left); 00102 add_fieldinfo(IFT_BOOL, "bumper_center_right", 1, &data->bumper_center_right); 00103 add_fieldinfo(IFT_BOOL, "bumper_front_right", 1, &data->bumper_front_right); 00104 add_fieldinfo(IFT_BOOL, "bumper_right", 1, &data->bumper_right); 00105 add_fieldinfo(IFT_UINT16, "light_bump_left", 1, &data->light_bump_left); 00106 add_fieldinfo(IFT_UINT16, "light_bump_front_left", 1, &data->light_bump_front_left); 00107 add_fieldinfo(IFT_UINT16, "light_bump_center_left", 1, &data->light_bump_center_left); 00108 add_fieldinfo(IFT_UINT16, "light_bump_center_right", 1, &data->light_bump_center_right); 00109 add_fieldinfo(IFT_UINT16, "light_bump_front_right", 1, &data->light_bump_front_right); 00110 add_fieldinfo(IFT_UINT16, "light_bump_right", 1, &data->light_bump_right); 00111 add_fieldinfo(IFT_ENUM, "ir_opcode_left", 1, &data->ir_opcode_left, "InfraredCharacter"); 00112 add_fieldinfo(IFT_ENUM, "ir_opcode_right", 1, &data->ir_opcode_right, "InfraredCharacter"); 00113 add_fieldinfo(IFT_INT16, "left_motor_current", 1, &data->left_motor_current); 00114 add_fieldinfo(IFT_INT16, "right_motor_current", 1, &data->right_motor_current); 00115 add_fieldinfo(IFT_INT16, "main_brush_current", 1, &data->main_brush_current); 00116 add_fieldinfo(IFT_INT16, "side_brush_current", 1, &data->side_brush_current); 00117 add_fieldinfo(IFT_BOOL, "caster_stasis", 1, &data->caster_stasis); 00118 add_messageinfo("StopMessage"); 00119 add_messageinfo("DockMessage"); 00120 add_messageinfo("SetModeMessage"); 00121 add_messageinfo("DriveStraightMessage"); 00122 add_messageinfo("DriveMessage"); 00123 add_messageinfo("SetMotorsMessage"); 00124 unsigned char tmp_hash[] = {0x60, 0xa1, 0x1e, 0x86, 0x89, 0x2, 0x20, 0x34, 0x89, 0x32, 0xdb, 0x69, 0xee, 0x12, 0x86, 0x43}; 00125 set_hash(tmp_hash); 00126 } 00127 00128 /** Destructor */ 00129 Roomba500Interface::~Roomba500Interface() 00130 { 00131 free(data_ptr); 00132 } 00133 /** Convert Mode constant to string. 00134 * @param value value to convert to string 00135 * @return constant value as string. 00136 */ 00137 const char * 00138 Roomba500Interface::tostring_Mode(Mode value) const 00139 { 00140 switch (value) { 00141 case MODE_OFF: return "MODE_OFF"; 00142 case MODE_PASSIVE: return "MODE_PASSIVE"; 00143 case MODE_SAFE: return "MODE_SAFE"; 00144 case MODE_FULL: return "MODE_FULL"; 00145 default: return "UNKNOWN"; 00146 } 00147 } 00148 /** Convert InfraredCharacter constant to string. 00149 * @param value value to convert to string 00150 * @return constant value as string. 00151 */ 00152 const char * 00153 Roomba500Interface::tostring_InfraredCharacter(InfraredCharacter value) const 00154 { 00155 switch (value) { 00156 case IR_NONE: return "IR_NONE"; 00157 case IR_REMOTE_LEFT: return "IR_REMOTE_LEFT"; 00158 case IR_REMOTE_FORWARD: return "IR_REMOTE_FORWARD"; 00159 case IR_REMOTE_RIGHT: return "IR_REMOTE_RIGHT"; 00160 case IR_REMOTE_SPOT: return "IR_REMOTE_SPOT"; 00161 case IR_REMOTE_MAX: return "IR_REMOTE_MAX"; 00162 case IR_REMOTE_SMALL: return "IR_REMOTE_SMALL"; 00163 case IR_REMOTE_MEDIUM: return "IR_REMOTE_MEDIUM"; 00164 case IR_REMOTE_LARGE_CLEAN: return "IR_REMOTE_LARGE_CLEAN"; 00165 case IR_REMOTE_STOP: return "IR_REMOTE_STOP"; 00166 case IR_REMOTE_POWER: return "IR_REMOTE_POWER"; 00167 case IR_REMOTE_ARC_LEFT: return "IR_REMOTE_ARC_LEFT"; 00168 case IR_REMOTE_ARC_RIGHT: return "IR_REMOTE_ARC_RIGHT"; 00169 case IR_REMOTE_STOP2: return "IR_REMOTE_STOP2"; 00170 case IR_SCHED_REMOTE_DOWNLOAD: return "IR_SCHED_REMOTE_DOWNLOAD"; 00171 case IR_SCHED_REMOTE_SEEK_DOCK: return "IR_SCHED_REMOTE_SEEK_DOCK"; 00172 case IR_DISC_DOCK_RESERVED: return "IR_DISC_DOCK_RESERVED"; 00173 case IR_DISC_DOCK_RED_BUOY: return "IR_DISC_DOCK_RED_BUOY"; 00174 case IR_DISC_DOCK_GREEN_BUOY: return "IR_DISC_DOCK_GREEN_BUOY"; 00175 case IR_DISC_DOCK_FORCE_FIELD: return "IR_DISC_DOCK_FORCE_FIELD"; 00176 case IR_DISC_DOCK_RED_GREEN_BUOY: return "IR_DISC_DOCK_RED_GREEN_BUOY"; 00177 case IR_DISC_DOCK_RED_BUOY_FORCE_FIELD: return "IR_DISC_DOCK_RED_BUOY_FORCE_FIELD"; 00178 case IR_DISC_DOCK_GREEN_BUOY_FORCE_FIELD: return "IR_DISC_DOCK_GREEN_BUOY_FORCE_FIELD"; 00179 case IR_DISC_DOCK_RED_GREEN_BUOY_FORCE_FIELD: return "IR_DISC_DOCK_RED_GREEN_BUOY_FORCE_FIELD"; 00180 case IR_DOCK_RESERVED: return "IR_DOCK_RESERVED"; 00181 case IR_DOCK_RED_BUOY: return "IR_DOCK_RED_BUOY"; 00182 case IR_DOCK_GREEN_BUOY: return "IR_DOCK_GREEN_BUOY"; 00183 case IR_DOCK_FORCE_FIELD: return "IR_DOCK_FORCE_FIELD"; 00184 case IR_DOCK_RED_GREEN_BUOY: return "IR_DOCK_RED_GREEN_BUOY"; 00185 case IR_DOCK_RED_BUOY_FORCE_FIELD: return "IR_DOCK_RED_BUOY_FORCE_FIELD"; 00186 case IR_DOCK_GREEN_BUOY_FORCE_FIELD: return "IR_DOCK_GREEN_BUOY_FORCE_FIELD"; 00187 case IR_DOCK_RED_GREEN_BUOY_FORCE_FIELD: return "IR_DOCK_RED_GREEN_BUOY_FORCE_FIELD"; 00188 case IR_VIRTUAL_WALL: return "IR_VIRTUAL_WALL"; 00189 default: return "UNKNOWN"; 00190 } 00191 } 00192 /** Convert ChargingState constant to string. 00193 * @param value value to convert to string 00194 * @return constant value as string. 00195 */ 00196 const char * 00197 Roomba500Interface::tostring_ChargingState(ChargingState value) const 00198 { 00199 switch (value) { 00200 case CHARGING_NO: return "CHARGING_NO"; 00201 case CHARGING_RECONDITIONING: return "CHARGING_RECONDITIONING"; 00202 case CHARGING_FULL: return "CHARGING_FULL"; 00203 case CHARGING_TRICKLE: return "CHARGING_TRICKLE"; 00204 case CHARGING_WAITING: return "CHARGING_WAITING"; 00205 case CHARGING_ERROR: return "CHARGING_ERROR"; 00206 default: return "UNKNOWN"; 00207 } 00208 } 00209 /** Convert BrushState constant to string. 00210 * @param value value to convert to string 00211 * @return constant value as string. 00212 */ 00213 const char * 00214 Roomba500Interface::tostring_BrushState(BrushState value) const 00215 { 00216 switch (value) { 00217 case BRUSHSTATE_OFF: return "BRUSHSTATE_OFF"; 00218 case BRUSHSTATE_FORWARD: return "BRUSHSTATE_FORWARD"; 00219 case BRUSHSTATE_BACKWARD: return "BRUSHSTATE_BACKWARD"; 00220 default: return "UNKNOWN"; 00221 } 00222 } 00223 /* Methods */ 00224 /** Get mode value. 00225 * Open Interface mode. 00226 * @return mode value 00227 */ 00228 Roomba500Interface::Mode 00229 Roomba500Interface::mode() const 00230 { 00231 return (Roomba500Interface::Mode)data->mode; 00232 } 00233 00234 /** Get maximum length of mode value. 00235 * @return length of mode value, can be length of the array or number of 00236 * maximum number of characters for a string 00237 */ 00238 size_t 00239 Roomba500Interface::maxlenof_mode() const 00240 { 00241 return 1; 00242 } 00243 00244 /** Set mode value. 00245 * Open Interface mode. 00246 * @param new_mode new mode value 00247 */ 00248 void 00249 Roomba500Interface::set_mode(const Mode new_mode) 00250 { 00251 data->mode = new_mode; 00252 data_changed = true; 00253 } 00254 00255 /** Get wheel_drop_left value. 00256 * Left wheel drop sensor. 00257 * @return wheel_drop_left value 00258 */ 00259 bool 00260 Roomba500Interface::is_wheel_drop_left() const 00261 { 00262 return data->wheel_drop_left; 00263 } 00264 00265 /** Get maximum length of wheel_drop_left value. 00266 * @return length of wheel_drop_left value, can be length of the array or number of 00267 * maximum number of characters for a string 00268 */ 00269 size_t 00270 Roomba500Interface::maxlenof_wheel_drop_left() const 00271 { 00272 return 1; 00273 } 00274 00275 /** Set wheel_drop_left value. 00276 * Left wheel drop sensor. 00277 * @param new_wheel_drop_left new wheel_drop_left value 00278 */ 00279 void 00280 Roomba500Interface::set_wheel_drop_left(const bool new_wheel_drop_left) 00281 { 00282 data->wheel_drop_left = new_wheel_drop_left; 00283 data_changed = true; 00284 } 00285 00286 /** Get wheel_drop_right value. 00287 * Right wheel drop sensor. 00288 * @return wheel_drop_right value 00289 */ 00290 bool 00291 Roomba500Interface::is_wheel_drop_right() const 00292 { 00293 return data->wheel_drop_right; 00294 } 00295 00296 /** Get maximum length of wheel_drop_right value. 00297 * @return length of wheel_drop_right value, can be length of the array or number of 00298 * maximum number of characters for a string 00299 */ 00300 size_t 00301 Roomba500Interface::maxlenof_wheel_drop_right() const 00302 { 00303 return 1; 00304 } 00305 00306 /** Set wheel_drop_right value. 00307 * Right wheel drop sensor. 00308 * @param new_wheel_drop_right new wheel_drop_right value 00309 */ 00310 void 00311 Roomba500Interface::set_wheel_drop_right(const bool new_wheel_drop_right) 00312 { 00313 data->wheel_drop_right = new_wheel_drop_right; 00314 data_changed = true; 00315 } 00316 00317 /** Get bump_left value. 00318 * Bump on left. 00319 * @return bump_left value 00320 */ 00321 bool 00322 Roomba500Interface::is_bump_left() const 00323 { 00324 return data->bump_left; 00325 } 00326 00327 /** Get maximum length of bump_left value. 00328 * @return length of bump_left value, can be length of the array or number of 00329 * maximum number of characters for a string 00330 */ 00331 size_t 00332 Roomba500Interface::maxlenof_bump_left() const 00333 { 00334 return 1; 00335 } 00336 00337 /** Set bump_left value. 00338 * Bump on left. 00339 * @param new_bump_left new bump_left value 00340 */ 00341 void 00342 Roomba500Interface::set_bump_left(const bool new_bump_left) 00343 { 00344 data->bump_left = new_bump_left; 00345 data_changed = true; 00346 } 00347 00348 /** Get bump_right value. 00349 * Bump on right. 00350 * @return bump_right value 00351 */ 00352 bool 00353 Roomba500Interface::is_bump_right() const 00354 { 00355 return data->bump_right; 00356 } 00357 00358 /** Get maximum length of bump_right value. 00359 * @return length of bump_right value, can be length of the array or number of 00360 * maximum number of characters for a string 00361 */ 00362 size_t 00363 Roomba500Interface::maxlenof_bump_right() const 00364 { 00365 return 1; 00366 } 00367 00368 /** Set bump_right value. 00369 * Bump on right. 00370 * @param new_bump_right new bump_right value 00371 */ 00372 void 00373 Roomba500Interface::set_bump_right(const bool new_bump_right) 00374 { 00375 data->bump_right = new_bump_right; 00376 data_changed = true; 00377 } 00378 00379 /** Get wall value. 00380 * Wall sensor. 00381 * @return wall value 00382 */ 00383 bool 00384 Roomba500Interface::is_wall() const 00385 { 00386 return data->wall; 00387 } 00388 00389 /** Get maximum length of wall value. 00390 * @return length of wall value, can be length of the array or number of 00391 * maximum number of characters for a string 00392 */ 00393 size_t 00394 Roomba500Interface::maxlenof_wall() const 00395 { 00396 return 1; 00397 } 00398 00399 /** Set wall value. 00400 * Wall sensor. 00401 * @param new_wall new wall value 00402 */ 00403 void 00404 Roomba500Interface::set_wall(const bool new_wall) 00405 { 00406 data->wall = new_wall; 00407 data_changed = true; 00408 } 00409 00410 /** Get cliff_left value. 00411 * Cliff detected left. 00412 * @return cliff_left value 00413 */ 00414 bool 00415 Roomba500Interface::is_cliff_left() const 00416 { 00417 return data->cliff_left; 00418 } 00419 00420 /** Get maximum length of cliff_left value. 00421 * @return length of cliff_left value, can be length of the array or number of 00422 * maximum number of characters for a string 00423 */ 00424 size_t 00425 Roomba500Interface::maxlenof_cliff_left() const 00426 { 00427 return 1; 00428 } 00429 00430 /** Set cliff_left value. 00431 * Cliff detected left. 00432 * @param new_cliff_left new cliff_left value 00433 */ 00434 void 00435 Roomba500Interface::set_cliff_left(const bool new_cliff_left) 00436 { 00437 data->cliff_left = new_cliff_left; 00438 data_changed = true; 00439 } 00440 00441 /** Get cliff_front_left value. 00442 * Cliff detected front left. 00443 * @return cliff_front_left value 00444 */ 00445 bool 00446 Roomba500Interface::is_cliff_front_left() const 00447 { 00448 return data->cliff_front_left; 00449 } 00450 00451 /** Get maximum length of cliff_front_left value. 00452 * @return length of cliff_front_left value, can be length of the array or number of 00453 * maximum number of characters for a string 00454 */ 00455 size_t 00456 Roomba500Interface::maxlenof_cliff_front_left() const 00457 { 00458 return 1; 00459 } 00460 00461 /** Set cliff_front_left value. 00462 * Cliff detected front left. 00463 * @param new_cliff_front_left new cliff_front_left value 00464 */ 00465 void 00466 Roomba500Interface::set_cliff_front_left(const bool new_cliff_front_left) 00467 { 00468 data->cliff_front_left = new_cliff_front_left; 00469 data_changed = true; 00470 } 00471 00472 /** Get cliff_front_right value. 00473 * Cliff detected front right. 00474 * @return cliff_front_right value 00475 */ 00476 bool 00477 Roomba500Interface::is_cliff_front_right() const 00478 { 00479 return data->cliff_front_right; 00480 } 00481 00482 /** Get maximum length of cliff_front_right value. 00483 * @return length of cliff_front_right value, can be length of the array or number of 00484 * maximum number of characters for a string 00485 */ 00486 size_t 00487 Roomba500Interface::maxlenof_cliff_front_right() const 00488 { 00489 return 1; 00490 } 00491 00492 /** Set cliff_front_right value. 00493 * Cliff detected front right. 00494 * @param new_cliff_front_right new cliff_front_right value 00495 */ 00496 void 00497 Roomba500Interface::set_cliff_front_right(const bool new_cliff_front_right) 00498 { 00499 data->cliff_front_right = new_cliff_front_right; 00500 data_changed = true; 00501 } 00502 00503 /** Get cliff_right value. 00504 * Cliff detected right. 00505 * @return cliff_right value 00506 */ 00507 bool 00508 Roomba500Interface::is_cliff_right() const 00509 { 00510 return data->cliff_right; 00511 } 00512 00513 /** Get maximum length of cliff_right value. 00514 * @return length of cliff_right value, can be length of the array or number of 00515 * maximum number of characters for a string 00516 */ 00517 size_t 00518 Roomba500Interface::maxlenof_cliff_right() const 00519 { 00520 return 1; 00521 } 00522 00523 /** Set cliff_right value. 00524 * Cliff detected right. 00525 * @param new_cliff_right new cliff_right value 00526 */ 00527 void 00528 Roomba500Interface::set_cliff_right(const bool new_cliff_right) 00529 { 00530 data->cliff_right = new_cliff_right; 00531 data_changed = true; 00532 } 00533 00534 /** Get virtual_wall value. 00535 * Virtual wall detected. 00536 * @return virtual_wall value 00537 */ 00538 bool 00539 Roomba500Interface::is_virtual_wall() const 00540 { 00541 return data->virtual_wall; 00542 } 00543 00544 /** Get maximum length of virtual_wall value. 00545 * @return length of virtual_wall value, can be length of the array or number of 00546 * maximum number of characters for a string 00547 */ 00548 size_t 00549 Roomba500Interface::maxlenof_virtual_wall() const 00550 { 00551 return 1; 00552 } 00553 00554 /** Set virtual_wall value. 00555 * Virtual wall detected. 00556 * @param new_virtual_wall new virtual_wall value 00557 */ 00558 void 00559 Roomba500Interface::set_virtual_wall(const bool new_virtual_wall) 00560 { 00561 data->virtual_wall = new_virtual_wall; 00562 data_changed = true; 00563 } 00564 00565 /** Get overcurrent_side_brush value. 00566 * Overcurrent on side brush. 00567 * @return overcurrent_side_brush value 00568 */ 00569 bool 00570 Roomba500Interface::is_overcurrent_side_brush() const 00571 { 00572 return data->overcurrent_side_brush; 00573 } 00574 00575 /** Get maximum length of overcurrent_side_brush value. 00576 * @return length of overcurrent_side_brush value, can be length of the array or number of 00577 * maximum number of characters for a string 00578 */ 00579 size_t 00580 Roomba500Interface::maxlenof_overcurrent_side_brush() const 00581 { 00582 return 1; 00583 } 00584 00585 /** Set overcurrent_side_brush value. 00586 * Overcurrent on side brush. 00587 * @param new_overcurrent_side_brush new overcurrent_side_brush value 00588 */ 00589 void 00590 Roomba500Interface::set_overcurrent_side_brush(const bool new_overcurrent_side_brush) 00591 { 00592 data->overcurrent_side_brush = new_overcurrent_side_brush; 00593 data_changed = true; 00594 } 00595 00596 /** Get overcurrent_main_brush value. 00597 * Overcurrent on main brush. 00598 * @return overcurrent_main_brush value 00599 */ 00600 bool 00601 Roomba500Interface::is_overcurrent_main_brush() const 00602 { 00603 return data->overcurrent_main_brush; 00604 } 00605 00606 /** Get maximum length of overcurrent_main_brush value. 00607 * @return length of overcurrent_main_brush value, can be length of the array or number of 00608 * maximum number of characters for a string 00609 */ 00610 size_t 00611 Roomba500Interface::maxlenof_overcurrent_main_brush() const 00612 { 00613 return 1; 00614 } 00615 00616 /** Set overcurrent_main_brush value. 00617 * Overcurrent on main brush. 00618 * @param new_overcurrent_main_brush new overcurrent_main_brush value 00619 */ 00620 void 00621 Roomba500Interface::set_overcurrent_main_brush(const bool new_overcurrent_main_brush) 00622 { 00623 data->overcurrent_main_brush = new_overcurrent_main_brush; 00624 data_changed = true; 00625 } 00626 00627 /** Get overcurrent_left_wheel value. 00628 * Overcurrent on left wheel. 00629 * @return overcurrent_left_wheel value 00630 */ 00631 bool 00632 Roomba500Interface::is_overcurrent_left_wheel() const 00633 { 00634 return data->overcurrent_left_wheel; 00635 } 00636 00637 /** Get maximum length of overcurrent_left_wheel value. 00638 * @return length of overcurrent_left_wheel value, can be length of the array or number of 00639 * maximum number of characters for a string 00640 */ 00641 size_t 00642 Roomba500Interface::maxlenof_overcurrent_left_wheel() const 00643 { 00644 return 1; 00645 } 00646 00647 /** Set overcurrent_left_wheel value. 00648 * Overcurrent on left wheel. 00649 * @param new_overcurrent_left_wheel new overcurrent_left_wheel value 00650 */ 00651 void 00652 Roomba500Interface::set_overcurrent_left_wheel(const bool new_overcurrent_left_wheel) 00653 { 00654 data->overcurrent_left_wheel = new_overcurrent_left_wheel; 00655 data_changed = true; 00656 } 00657 00658 /** Get overcurrent_right_wheel value. 00659 * Overcurrent on right wheel. 00660 * @return overcurrent_right_wheel value 00661 */ 00662 bool 00663 Roomba500Interface::is_overcurrent_right_wheel() const 00664 { 00665 return data->overcurrent_right_wheel; 00666 } 00667 00668 /** Get maximum length of overcurrent_right_wheel value. 00669 * @return length of overcurrent_right_wheel value, can be length of the array or number of 00670 * maximum number of characters for a string 00671 */ 00672 size_t 00673 Roomba500Interface::maxlenof_overcurrent_right_wheel() const 00674 { 00675 return 1; 00676 } 00677 00678 /** Set overcurrent_right_wheel value. 00679 * Overcurrent on right wheel. 00680 * @param new_overcurrent_right_wheel new overcurrent_right_wheel value 00681 */ 00682 void 00683 Roomba500Interface::set_overcurrent_right_wheel(const bool new_overcurrent_right_wheel) 00684 { 00685 data->overcurrent_right_wheel = new_overcurrent_right_wheel; 00686 data_changed = true; 00687 } 00688 00689 /** Get dirt_detect value. 00690 * Dirt detected? 00691 * @return dirt_detect value 00692 */ 00693 bool 00694 Roomba500Interface::is_dirt_detect() const 00695 { 00696 return data->dirt_detect; 00697 } 00698 00699 /** Get maximum length of dirt_detect value. 00700 * @return length of dirt_detect value, can be length of the array or number of 00701 * maximum number of characters for a string 00702 */ 00703 size_t 00704 Roomba500Interface::maxlenof_dirt_detect() const 00705 { 00706 return 1; 00707 } 00708 00709 /** Set dirt_detect value. 00710 * Dirt detected? 00711 * @param new_dirt_detect new dirt_detect value 00712 */ 00713 void 00714 Roomba500Interface::set_dirt_detect(const bool new_dirt_detect) 00715 { 00716 data->dirt_detect = new_dirt_detect; 00717 data_changed = true; 00718 } 00719 00720 /** Get ir_opcode_omni value. 00721 * Omni IR receiver code. 00722 * @return ir_opcode_omni value 00723 */ 00724 Roomba500Interface::InfraredCharacter 00725 Roomba500Interface::ir_opcode_omni() const 00726 { 00727 return (Roomba500Interface::InfraredCharacter)data->ir_opcode_omni; 00728 } 00729 00730 /** Get maximum length of ir_opcode_omni value. 00731 * @return length of ir_opcode_omni value, can be length of the array or number of 00732 * maximum number of characters for a string 00733 */ 00734 size_t 00735 Roomba500Interface::maxlenof_ir_opcode_omni() const 00736 { 00737 return 1; 00738 } 00739 00740 /** Set ir_opcode_omni value. 00741 * Omni IR receiver code. 00742 * @param new_ir_opcode_omni new ir_opcode_omni value 00743 */ 00744 void 00745 Roomba500Interface::set_ir_opcode_omni(const InfraredCharacter new_ir_opcode_omni) 00746 { 00747 data->ir_opcode_omni = new_ir_opcode_omni; 00748 data_changed = true; 00749 } 00750 00751 /** Get button_clean value. 00752 * Clean button pressed. 00753 * @return button_clean value 00754 */ 00755 bool 00756 Roomba500Interface::is_button_clean() const 00757 { 00758 return data->button_clean; 00759 } 00760 00761 /** Get maximum length of button_clean value. 00762 * @return length of button_clean value, can be length of the array or number of 00763 * maximum number of characters for a string 00764 */ 00765 size_t 00766 Roomba500Interface::maxlenof_button_clean() const 00767 { 00768 return 1; 00769 } 00770 00771 /** Set button_clean value. 00772 * Clean button pressed. 00773 * @param new_button_clean new button_clean value 00774 */ 00775 void 00776 Roomba500Interface::set_button_clean(const bool new_button_clean) 00777 { 00778 data->button_clean = new_button_clean; 00779 data_changed = true; 00780 } 00781 00782 /** Get button_spot value. 00783 * Spot button pressed. 00784 * @return button_spot value 00785 */ 00786 bool 00787 Roomba500Interface::is_button_spot() const 00788 { 00789 return data->button_spot; 00790 } 00791 00792 /** Get maximum length of button_spot value. 00793 * @return length of button_spot value, can be length of the array or number of 00794 * maximum number of characters for a string 00795 */ 00796 size_t 00797 Roomba500Interface::maxlenof_button_spot() const 00798 { 00799 return 1; 00800 } 00801 00802 /** Set button_spot value. 00803 * Spot button pressed. 00804 * @param new_button_spot new button_spot value 00805 */ 00806 void 00807 Roomba500Interface::set_button_spot(const bool new_button_spot) 00808 { 00809 data->button_spot = new_button_spot; 00810 data_changed = true; 00811 } 00812 00813 /** Get button_dock value. 00814 * Dock button pressed. 00815 * @return button_dock value 00816 */ 00817 bool 00818 Roomba500Interface::is_button_dock() const 00819 { 00820 return data->button_dock; 00821 } 00822 00823 /** Get maximum length of button_dock value. 00824 * @return length of button_dock value, can be length of the array or number of 00825 * maximum number of characters for a string 00826 */ 00827 size_t 00828 Roomba500Interface::maxlenof_button_dock() const 00829 { 00830 return 1; 00831 } 00832 00833 /** Set button_dock value. 00834 * Dock button pressed. 00835 * @param new_button_dock new button_dock value 00836 */ 00837 void 00838 Roomba500Interface::set_button_dock(const bool new_button_dock) 00839 { 00840 data->button_dock = new_button_dock; 00841 data_changed = true; 00842 } 00843 00844 /** Get button_minute value. 00845 * Minute button pressed. 00846 * @return button_minute value 00847 */ 00848 bool 00849 Roomba500Interface::is_button_minute() const 00850 { 00851 return data->button_minute; 00852 } 00853 00854 /** Get maximum length of button_minute value. 00855 * @return length of button_minute value, can be length of the array or number of 00856 * maximum number of characters for a string 00857 */ 00858 size_t 00859 Roomba500Interface::maxlenof_button_minute() const 00860 { 00861 return 1; 00862 } 00863 00864 /** Set button_minute value. 00865 * Minute button pressed. 00866 * @param new_button_minute new button_minute value 00867 */ 00868 void 00869 Roomba500Interface::set_button_minute(const bool new_button_minute) 00870 { 00871 data->button_minute = new_button_minute; 00872 data_changed = true; 00873 } 00874 00875 /** Get button_hour value. 00876 * Hour button pressed. 00877 * @return button_hour value 00878 */ 00879 bool 00880 Roomba500Interface::is_button_hour() const 00881 { 00882 return data->button_hour; 00883 } 00884 00885 /** Get maximum length of button_hour value. 00886 * @return length of button_hour value, can be length of the array or number of 00887 * maximum number of characters for a string 00888 */ 00889 size_t 00890 Roomba500Interface::maxlenof_button_hour() const 00891 { 00892 return 1; 00893 } 00894 00895 /** Set button_hour value. 00896 * Hour button pressed. 00897 * @param new_button_hour new button_hour value 00898 */ 00899 void 00900 Roomba500Interface::set_button_hour(const bool new_button_hour) 00901 { 00902 data->button_hour = new_button_hour; 00903 data_changed = true; 00904 } 00905 00906 /** Get button_day value. 00907 * Day button pressed. 00908 * @return button_day value 00909 */ 00910 bool 00911 Roomba500Interface::is_button_day() const 00912 { 00913 return data->button_day; 00914 } 00915 00916 /** Get maximum length of button_day value. 00917 * @return length of button_day value, can be length of the array or number of 00918 * maximum number of characters for a string 00919 */ 00920 size_t 00921 Roomba500Interface::maxlenof_button_day() const 00922 { 00923 return 1; 00924 } 00925 00926 /** Set button_day value. 00927 * Day button pressed. 00928 * @param new_button_day new button_day value 00929 */ 00930 void 00931 Roomba500Interface::set_button_day(const bool new_button_day) 00932 { 00933 data->button_day = new_button_day; 00934 data_changed = true; 00935 } 00936 00937 /** Get button_schedule value. 00938 * Schedule button pressed. 00939 * @return button_schedule value 00940 */ 00941 bool 00942 Roomba500Interface::is_button_schedule() const 00943 { 00944 return data->button_schedule; 00945 } 00946 00947 /** Get maximum length of button_schedule value. 00948 * @return length of button_schedule value, can be length of the array or number of 00949 * maximum number of characters for a string 00950 */ 00951 size_t 00952 Roomba500Interface::maxlenof_button_schedule() const 00953 { 00954 return 1; 00955 } 00956 00957 /** Set button_schedule value. 00958 * Schedule button pressed. 00959 * @param new_button_schedule new button_schedule value 00960 */ 00961 void 00962 Roomba500Interface::set_button_schedule(const bool new_button_schedule) 00963 { 00964 data->button_schedule = new_button_schedule; 00965 data_changed = true; 00966 } 00967 00968 /** Get button_clock value. 00969 * Clock button pressed. 00970 * @return button_clock value 00971 */ 00972 bool 00973 Roomba500Interface::is_button_clock() const 00974 { 00975 return data->button_clock; 00976 } 00977 00978 /** Get maximum length of button_clock value. 00979 * @return length of button_clock value, can be length of the array or number of 00980 * maximum number of characters for a string 00981 */ 00982 size_t 00983 Roomba500Interface::maxlenof_button_clock() const 00984 { 00985 return 1; 00986 } 00987 00988 /** Set button_clock value. 00989 * Clock button pressed. 00990 * @param new_button_clock new button_clock value 00991 */ 00992 void 00993 Roomba500Interface::set_button_clock(const bool new_button_clock) 00994 { 00995 data->button_clock = new_button_clock; 00996 data_changed = true; 00997 } 00998 00999 /** Get distance value. 01000 * Travelled distance in m. 01001 * @return distance value 01002 */ 01003 int16_t 01004 Roomba500Interface::distance() const 01005 { 01006 return data->distance; 01007 } 01008 01009 /** Get maximum length of distance value. 01010 * @return length of distance value, can be length of the array or number of 01011 * maximum number of characters for a string 01012 */ 01013 size_t 01014 Roomba500Interface::maxlenof_distance() const 01015 { 01016 return 1; 01017 } 01018 01019 /** Set distance value. 01020 * Travelled distance in m. 01021 * @param new_distance new distance value 01022 */ 01023 void 01024 Roomba500Interface::set_distance(const int16_t new_distance) 01025 { 01026 data->distance = new_distance; 01027 data_changed = true; 01028 } 01029 01030 /** Get angle value. 01031 * Turned angle in radians. 01032 * @return angle value 01033 */ 01034 int16_t 01035 Roomba500Interface::angle() const 01036 { 01037 return data->angle; 01038 } 01039 01040 /** Get maximum length of angle value. 01041 * @return length of angle value, can be length of the array or number of 01042 * maximum number of characters for a string 01043 */ 01044 size_t 01045 Roomba500Interface::maxlenof_angle() const 01046 { 01047 return 1; 01048 } 01049 01050 /** Set angle value. 01051 * Turned angle in radians. 01052 * @param new_angle new angle value 01053 */ 01054 void 01055 Roomba500Interface::set_angle(const int16_t new_angle) 01056 { 01057 data->angle = new_angle; 01058 data_changed = true; 01059 } 01060 01061 /** Get charging_state value. 01062 * Charging state. 01063 * @return charging_state value 01064 */ 01065 Roomba500Interface::ChargingState 01066 Roomba500Interface::charging_state() const 01067 { 01068 return (Roomba500Interface::ChargingState)data->charging_state; 01069 } 01070 01071 /** Get maximum length of charging_state value. 01072 * @return length of charging_state value, can be length of the array or number of 01073 * maximum number of characters for a string 01074 */ 01075 size_t 01076 Roomba500Interface::maxlenof_charging_state() const 01077 { 01078 return 1; 01079 } 01080 01081 /** Set charging_state value. 01082 * Charging state. 01083 * @param new_charging_state new charging_state value 01084 */ 01085 void 01086 Roomba500Interface::set_charging_state(const ChargingState new_charging_state) 01087 { 01088 data->charging_state = new_charging_state; 01089 data_changed = true; 01090 } 01091 01092 /** Get voltage value. 01093 * Voltage in mV. 01094 * @return voltage value 01095 */ 01096 uint16_t 01097 Roomba500Interface::voltage() const 01098 { 01099 return data->voltage; 01100 } 01101 01102 /** Get maximum length of voltage value. 01103 * @return length of voltage value, can be length of the array or number of 01104 * maximum number of characters for a string 01105 */ 01106 size_t 01107 Roomba500Interface::maxlenof_voltage() const 01108 { 01109 return 1; 01110 } 01111 01112 /** Set voltage value. 01113 * Voltage in mV. 01114 * @param new_voltage new voltage value 01115 */ 01116 void 01117 Roomba500Interface::set_voltage(const uint16_t new_voltage) 01118 { 01119 data->voltage = new_voltage; 01120 data_changed = true; 01121 } 01122 01123 /** Get current value. 01124 * Current in mA. 01125 * @return current value 01126 */ 01127 int16_t 01128 Roomba500Interface::current() const 01129 { 01130 return data->current; 01131 } 01132 01133 /** Get maximum length of current value. 01134 * @return length of current value, can be length of the array or number of 01135 * maximum number of characters for a string 01136 */ 01137 size_t 01138 Roomba500Interface::maxlenof_current() const 01139 { 01140 return 1; 01141 } 01142 01143 /** Set current value. 01144 * Current in mA. 01145 * @param new_current new current value 01146 */ 01147 void 01148 Roomba500Interface::set_current(const int16_t new_current) 01149 { 01150 data->current = new_current; 01151 data_changed = true; 01152 } 01153 01154 /** Get temperature value. 01155 * Temperature in degree Celsius. 01156 * @return temperature value 01157 */ 01158 int8_t 01159 Roomba500Interface::temperature() const 01160 { 01161 return data->temperature; 01162 } 01163 01164 /** Get maximum length of temperature value. 01165 * @return length of temperature value, can be length of the array or number of 01166 * maximum number of characters for a string 01167 */ 01168 size_t 01169 Roomba500Interface::maxlenof_temperature() const 01170 { 01171 return 1; 01172 } 01173 01174 /** Set temperature value. 01175 * Temperature in degree Celsius. 01176 * @param new_temperature new temperature value 01177 */ 01178 void 01179 Roomba500Interface::set_temperature(const int8_t new_temperature) 01180 { 01181 data->temperature = new_temperature; 01182 data_changed = true; 01183 } 01184 01185 /** Get battery_charge value. 01186 * Battery charge in mAh. 01187 * @return battery_charge value 01188 */ 01189 uint16_t 01190 Roomba500Interface::battery_charge() const 01191 { 01192 return data->battery_charge; 01193 } 01194 01195 /** Get maximum length of battery_charge value. 01196 * @return length of battery_charge value, can be length of the array or number of 01197 * maximum number of characters for a string 01198 */ 01199 size_t 01200 Roomba500Interface::maxlenof_battery_charge() const 01201 { 01202 return 1; 01203 } 01204 01205 /** Set battery_charge value. 01206 * Battery charge in mAh. 01207 * @param new_battery_charge new battery_charge value 01208 */ 01209 void 01210 Roomba500Interface::set_battery_charge(const uint16_t new_battery_charge) 01211 { 01212 data->battery_charge = new_battery_charge; 01213 data_changed = true; 01214 } 01215 01216 /** Get battery_capacity value. 01217 * Battery capacity in mAh. 01218 * @return battery_capacity value 01219 */ 01220 uint16_t 01221 Roomba500Interface::battery_capacity() const 01222 { 01223 return data->battery_capacity; 01224 } 01225 01226 /** Get maximum length of battery_capacity value. 01227 * @return length of battery_capacity value, can be length of the array or number of 01228 * maximum number of characters for a string 01229 */ 01230 size_t 01231 Roomba500Interface::maxlenof_battery_capacity() const 01232 { 01233 return 1; 01234 } 01235 01236 /** Set battery_capacity value. 01237 * Battery capacity in mAh. 01238 * @param new_battery_capacity new battery_capacity value 01239 */ 01240 void 01241 Roomba500Interface::set_battery_capacity(const uint16_t new_battery_capacity) 01242 { 01243 data->battery_capacity = new_battery_capacity; 01244 data_changed = true; 01245 } 01246 01247 /** Get wall_signal value. 01248 * Raw wall signal 01249 * @return wall_signal value 01250 */ 01251 uint16_t 01252 Roomba500Interface::wall_signal() const 01253 { 01254 return data->wall_signal; 01255 } 01256 01257 /** Get maximum length of wall_signal value. 01258 * @return length of wall_signal value, can be length of the array or number of 01259 * maximum number of characters for a string 01260 */ 01261 size_t 01262 Roomba500Interface::maxlenof_wall_signal() const 01263 { 01264 return 1; 01265 } 01266 01267 /** Set wall_signal value. 01268 * Raw wall signal 01269 * @param new_wall_signal new wall_signal value 01270 */ 01271 void 01272 Roomba500Interface::set_wall_signal(const uint16_t new_wall_signal) 01273 { 01274 data->wall_signal = new_wall_signal; 01275 data_changed = true; 01276 } 01277 01278 /** Get cliff_left_signal value. 01279 * Raw left cliff signal. 01280 * @return cliff_left_signal value 01281 */ 01282 uint16_t 01283 Roomba500Interface::cliff_left_signal() const 01284 { 01285 return data->cliff_left_signal; 01286 } 01287 01288 /** Get maximum length of cliff_left_signal value. 01289 * @return length of cliff_left_signal value, can be length of the array or number of 01290 * maximum number of characters for a string 01291 */ 01292 size_t 01293 Roomba500Interface::maxlenof_cliff_left_signal() const 01294 { 01295 return 1; 01296 } 01297 01298 /** Set cliff_left_signal value. 01299 * Raw left cliff signal. 01300 * @param new_cliff_left_signal new cliff_left_signal value 01301 */ 01302 void 01303 Roomba500Interface::set_cliff_left_signal(const uint16_t new_cliff_left_signal) 01304 { 01305 data->cliff_left_signal = new_cliff_left_signal; 01306 data_changed = true; 01307 } 01308 01309 /** Get cliff_front_left_signal value. 01310 * Raw front left 01311 cliff signal. 01312 * @return cliff_front_left_signal value 01313 */ 01314 uint16_t 01315 Roomba500Interface::cliff_front_left_signal() const 01316 { 01317 return data->cliff_front_left_signal; 01318 } 01319 01320 /** Get maximum length of cliff_front_left_signal value. 01321 * @return length of cliff_front_left_signal value, can be length of the array or number of 01322 * maximum number of characters for a string 01323 */ 01324 size_t 01325 Roomba500Interface::maxlenof_cliff_front_left_signal() const 01326 { 01327 return 1; 01328 } 01329 01330 /** Set cliff_front_left_signal value. 01331 * Raw front left 01332 cliff signal. 01333 * @param new_cliff_front_left_signal new cliff_front_left_signal value 01334 */ 01335 void 01336 Roomba500Interface::set_cliff_front_left_signal(const uint16_t new_cliff_front_left_signal) 01337 { 01338 data->cliff_front_left_signal = new_cliff_front_left_signal; 01339 data_changed = true; 01340 } 01341 01342 /** Get cliff_front_right_signal value. 01343 * Raw front right 01344 cliff signal. 01345 * @return cliff_front_right_signal value 01346 */ 01347 uint16_t 01348 Roomba500Interface::cliff_front_right_signal() const 01349 { 01350 return data->cliff_front_right_signal; 01351 } 01352 01353 /** Get maximum length of cliff_front_right_signal value. 01354 * @return length of cliff_front_right_signal value, can be length of the array or number of 01355 * maximum number of characters for a string 01356 */ 01357 size_t 01358 Roomba500Interface::maxlenof_cliff_front_right_signal() const 01359 { 01360 return 1; 01361 } 01362 01363 /** Set cliff_front_right_signal value. 01364 * Raw front right 01365 cliff signal. 01366 * @param new_cliff_front_right_signal new cliff_front_right_signal value 01367 */ 01368 void 01369 Roomba500Interface::set_cliff_front_right_signal(const uint16_t new_cliff_front_right_signal) 01370 { 01371 data->cliff_front_right_signal = new_cliff_front_right_signal; 01372 data_changed = true; 01373 } 01374 01375 /** Get cliff_right_signal value. 01376 * Raw right cliff signal. 01377 * @return cliff_right_signal value 01378 */ 01379 uint16_t 01380 Roomba500Interface::cliff_right_signal() const 01381 { 01382 return data->cliff_right_signal; 01383 } 01384 01385 /** Get maximum length of cliff_right_signal value. 01386 * @return length of cliff_right_signal value, can be length of the array or number of 01387 * maximum number of characters for a string 01388 */ 01389 size_t 01390 Roomba500Interface::maxlenof_cliff_right_signal() const 01391 { 01392 return 1; 01393 } 01394 01395 /** Set cliff_right_signal value. 01396 * Raw right cliff signal. 01397 * @param new_cliff_right_signal new cliff_right_signal value 01398 */ 01399 void 01400 Roomba500Interface::set_cliff_right_signal(const uint16_t new_cliff_right_signal) 01401 { 01402 data->cliff_right_signal = new_cliff_right_signal; 01403 data_changed = true; 01404 } 01405 01406 /** Get home_base_charger_available value. 01407 * 01408 Home base charger available? 01409 * @return home_base_charger_available value 01410 */ 01411 bool 01412 Roomba500Interface::is_home_base_charger_available() const 01413 { 01414 return data->home_base_charger_available; 01415 } 01416 01417 /** Get maximum length of home_base_charger_available value. 01418 * @return length of home_base_charger_available value, can be length of the array or number of 01419 * maximum number of characters for a string 01420 */ 01421 size_t 01422 Roomba500Interface::maxlenof_home_base_charger_available() const 01423 { 01424 return 1; 01425 } 01426 01427 /** Set home_base_charger_available value. 01428 * 01429 Home base charger available? 01430 * @param new_home_base_charger_available new home_base_charger_available value 01431 */ 01432 void 01433 Roomba500Interface::set_home_base_charger_available(const bool new_home_base_charger_available) 01434 { 01435 data->home_base_charger_available = new_home_base_charger_available; 01436 data_changed = true; 01437 } 01438 01439 /** Get internal_charger_available value. 01440 * 01441 Internal charger available? 01442 * @return internal_charger_available value 01443 */ 01444 bool 01445 Roomba500Interface::is_internal_charger_available() const 01446 { 01447 return data->internal_charger_available; 01448 } 01449 01450 /** Get maximum length of internal_charger_available value. 01451 * @return length of internal_charger_available value, can be length of the array or number of 01452 * maximum number of characters for a string 01453 */ 01454 size_t 01455 Roomba500Interface::maxlenof_internal_charger_available() const 01456 { 01457 return 1; 01458 } 01459 01460 /** Set internal_charger_available value. 01461 * 01462 Internal charger available? 01463 * @param new_internal_charger_available new internal_charger_available value 01464 */ 01465 void 01466 Roomba500Interface::set_internal_charger_available(const bool new_internal_charger_available) 01467 { 01468 data->internal_charger_available = new_internal_charger_available; 01469 data_changed = true; 01470 } 01471 01472 /** Get song_number value. 01473 * Song number. 01474 * @return song_number value 01475 */ 01476 uint8_t 01477 Roomba500Interface::song_number() const 01478 { 01479 return data->song_number; 01480 } 01481 01482 /** Get maximum length of song_number value. 01483 * @return length of song_number value, can be length of the array or number of 01484 * maximum number of characters for a string 01485 */ 01486 size_t 01487 Roomba500Interface::maxlenof_song_number() const 01488 { 01489 return 1; 01490 } 01491 01492 /** Set song_number value. 01493 * Song number. 01494 * @param new_song_number new song_number value 01495 */ 01496 void 01497 Roomba500Interface::set_song_number(const uint8_t new_song_number) 01498 { 01499 data->song_number = new_song_number; 01500 data_changed = true; 01501 } 01502 01503 /** Get song_playing value. 01504 * Song playing? 01505 * @return song_playing value 01506 */ 01507 bool 01508 Roomba500Interface::is_song_playing() const 01509 { 01510 return data->song_playing; 01511 } 01512 01513 /** Get maximum length of song_playing value. 01514 * @return length of song_playing value, can be length of the array or number of 01515 * maximum number of characters for a string 01516 */ 01517 size_t 01518 Roomba500Interface::maxlenof_song_playing() const 01519 { 01520 return 1; 01521 } 01522 01523 /** Set song_playing value. 01524 * Song playing? 01525 * @param new_song_playing new song_playing value 01526 */ 01527 void 01528 Roomba500Interface::set_song_playing(const bool new_song_playing) 01529 { 01530 data->song_playing = new_song_playing; 01531 data_changed = true; 01532 } 01533 01534 /** Get velocity value. 01535 * Requested velocity in mm/s. 01536 * @return velocity value 01537 */ 01538 int16_t 01539 Roomba500Interface::velocity() const 01540 { 01541 return data->velocity; 01542 } 01543 01544 /** Get maximum length of velocity value. 01545 * @return length of velocity value, can be length of the array or number of 01546 * maximum number of characters for a string 01547 */ 01548 size_t 01549 Roomba500Interface::maxlenof_velocity() const 01550 { 01551 return 1; 01552 } 01553 01554 /** Set velocity value. 01555 * Requested velocity in mm/s. 01556 * @param new_velocity new velocity value 01557 */ 01558 void 01559 Roomba500Interface::set_velocity(const int16_t new_velocity) 01560 { 01561 data->velocity = new_velocity; 01562 data_changed = true; 01563 } 01564 01565 /** Get radius value. 01566 * Requested radius in mm. 01567 * @return radius value 01568 */ 01569 int16_t 01570 Roomba500Interface::radius() const 01571 { 01572 return data->radius; 01573 } 01574 01575 /** Get maximum length of radius value. 01576 * @return length of radius value, can be length of the array or number of 01577 * maximum number of characters for a string 01578 */ 01579 size_t 01580 Roomba500Interface::maxlenof_radius() const 01581 { 01582 return 1; 01583 } 01584 01585 /** Set radius value. 01586 * Requested radius in mm. 01587 * @param new_radius new radius value 01588 */ 01589 void 01590 Roomba500Interface::set_radius(const int16_t new_radius) 01591 { 01592 data->radius = new_radius; 01593 data_changed = true; 01594 } 01595 01596 /** Get velocity_right value. 01597 * Requested left velocity in mm/s. 01598 * @return velocity_right value 01599 */ 01600 int16_t 01601 Roomba500Interface::velocity_right() const 01602 { 01603 return data->velocity_right; 01604 } 01605 01606 /** Get maximum length of velocity_right value. 01607 * @return length of velocity_right value, can be length of the array or number of 01608 * maximum number of characters for a string 01609 */ 01610 size_t 01611 Roomba500Interface::maxlenof_velocity_right() const 01612 { 01613 return 1; 01614 } 01615 01616 /** Set velocity_right value. 01617 * Requested left velocity in mm/s. 01618 * @param new_velocity_right new velocity_right value 01619 */ 01620 void 01621 Roomba500Interface::set_velocity_right(const int16_t new_velocity_right) 01622 { 01623 data->velocity_right = new_velocity_right; 01624 data_changed = true; 01625 } 01626 01627 /** Get velocity_left value. 01628 * Requested right velocity in mm/s. 01629 * @return velocity_left value 01630 */ 01631 int16_t 01632 Roomba500Interface::velocity_left() const 01633 { 01634 return data->velocity_left; 01635 } 01636 01637 /** Get maximum length of velocity_left value. 01638 * @return length of velocity_left value, can be length of the array or number of 01639 * maximum number of characters for a string 01640 */ 01641 size_t 01642 Roomba500Interface::maxlenof_velocity_left() const 01643 { 01644 return 1; 01645 } 01646 01647 /** Set velocity_left value. 01648 * Requested right velocity in mm/s. 01649 * @param new_velocity_left new velocity_left value 01650 */ 01651 void 01652 Roomba500Interface::set_velocity_left(const int16_t new_velocity_left) 01653 { 01654 data->velocity_left = new_velocity_left; 01655 data_changed = true; 01656 } 01657 01658 /** Get encoder_counts_left value. 01659 * Encoder count left. 01660 * @return encoder_counts_left value 01661 */ 01662 uint16_t 01663 Roomba500Interface::encoder_counts_left() const 01664 { 01665 return data->encoder_counts_left; 01666 } 01667 01668 /** Get maximum length of encoder_counts_left value. 01669 * @return length of encoder_counts_left value, can be length of the array or number of 01670 * maximum number of characters for a string 01671 */ 01672 size_t 01673 Roomba500Interface::maxlenof_encoder_counts_left() const 01674 { 01675 return 1; 01676 } 01677 01678 /** Set encoder_counts_left value. 01679 * Encoder count left. 01680 * @param new_encoder_counts_left new encoder_counts_left value 01681 */ 01682 void 01683 Roomba500Interface::set_encoder_counts_left(const uint16_t new_encoder_counts_left) 01684 { 01685 data->encoder_counts_left = new_encoder_counts_left; 01686 data_changed = true; 01687 } 01688 01689 /** Get encoder_counts_right value. 01690 * Encoder count right. 01691 * @return encoder_counts_right value 01692 */ 01693 uint16_t 01694 Roomba500Interface::encoder_counts_right() const 01695 { 01696 return data->encoder_counts_right; 01697 } 01698 01699 /** Get maximum length of encoder_counts_right value. 01700 * @return length of encoder_counts_right value, can be length of the array or number of 01701 * maximum number of characters for a string 01702 */ 01703 size_t 01704 Roomba500Interface::maxlenof_encoder_counts_right() const 01705 { 01706 return 1; 01707 } 01708 01709 /** Set encoder_counts_right value. 01710 * Encoder count right. 01711 * @param new_encoder_counts_right new encoder_counts_right value 01712 */ 01713 void 01714 Roomba500Interface::set_encoder_counts_right(const uint16_t new_encoder_counts_right) 01715 { 01716 data->encoder_counts_right = new_encoder_counts_right; 01717 data_changed = true; 01718 } 01719 01720 /** Get bumper_left value. 01721 * Left bumper active? 01722 * @return bumper_left value 01723 */ 01724 bool 01725 Roomba500Interface::is_bumper_left() const 01726 { 01727 return data->bumper_left; 01728 } 01729 01730 /** Get maximum length of bumper_left value. 01731 * @return length of bumper_left value, can be length of the array or number of 01732 * maximum number of characters for a string 01733 */ 01734 size_t 01735 Roomba500Interface::maxlenof_bumper_left() const 01736 { 01737 return 1; 01738 } 01739 01740 /** Set bumper_left value. 01741 * Left bumper active? 01742 * @param new_bumper_left new bumper_left value 01743 */ 01744 void 01745 Roomba500Interface::set_bumper_left(const bool new_bumper_left) 01746 { 01747 data->bumper_left = new_bumper_left; 01748 data_changed = true; 01749 } 01750 01751 /** Get bumper_front_left value. 01752 * Front left bumper active? 01753 * @return bumper_front_left value 01754 */ 01755 bool 01756 Roomba500Interface::is_bumper_front_left() const 01757 { 01758 return data->bumper_front_left; 01759 } 01760 01761 /** Get maximum length of bumper_front_left value. 01762 * @return length of bumper_front_left value, can be length of the array or number of 01763 * maximum number of characters for a string 01764 */ 01765 size_t 01766 Roomba500Interface::maxlenof_bumper_front_left() const 01767 { 01768 return 1; 01769 } 01770 01771 /** Set bumper_front_left value. 01772 * Front left bumper active? 01773 * @param new_bumper_front_left new bumper_front_left value 01774 */ 01775 void 01776 Roomba500Interface::set_bumper_front_left(const bool new_bumper_front_left) 01777 { 01778 data->bumper_front_left = new_bumper_front_left; 01779 data_changed = true; 01780 } 01781 01782 /** Get bumper_center_left value. 01783 * Center left bumper active? 01784 * @return bumper_center_left value 01785 */ 01786 bool 01787 Roomba500Interface::is_bumper_center_left() const 01788 { 01789 return data->bumper_center_left; 01790 } 01791 01792 /** Get maximum length of bumper_center_left value. 01793 * @return length of bumper_center_left value, can be length of the array or number of 01794 * maximum number of characters for a string 01795 */ 01796 size_t 01797 Roomba500Interface::maxlenof_bumper_center_left() const 01798 { 01799 return 1; 01800 } 01801 01802 /** Set bumper_center_left value. 01803 * Center left bumper active? 01804 * @param new_bumper_center_left new bumper_center_left value 01805 */ 01806 void 01807 Roomba500Interface::set_bumper_center_left(const bool new_bumper_center_left) 01808 { 01809 data->bumper_center_left = new_bumper_center_left; 01810 data_changed = true; 01811 } 01812 01813 /** Get bumper_center_right value. 01814 * Center right bumper active? 01815 * @return bumper_center_right value 01816 */ 01817 bool 01818 Roomba500Interface::is_bumper_center_right() const 01819 { 01820 return data->bumper_center_right; 01821 } 01822 01823 /** Get maximum length of bumper_center_right value. 01824 * @return length of bumper_center_right value, can be length of the array or number of 01825 * maximum number of characters for a string 01826 */ 01827 size_t 01828 Roomba500Interface::maxlenof_bumper_center_right() const 01829 { 01830 return 1; 01831 } 01832 01833 /** Set bumper_center_right value. 01834 * Center right bumper active? 01835 * @param new_bumper_center_right new bumper_center_right value 01836 */ 01837 void 01838 Roomba500Interface::set_bumper_center_right(const bool new_bumper_center_right) 01839 { 01840 data->bumper_center_right = new_bumper_center_right; 01841 data_changed = true; 01842 } 01843 01844 /** Get bumper_front_right value. 01845 * Front right bumper active? 01846 * @return bumper_front_right value 01847 */ 01848 bool 01849 Roomba500Interface::is_bumper_front_right() const 01850 { 01851 return data->bumper_front_right; 01852 } 01853 01854 /** Get maximum length of bumper_front_right value. 01855 * @return length of bumper_front_right value, can be length of the array or number of 01856 * maximum number of characters for a string 01857 */ 01858 size_t 01859 Roomba500Interface::maxlenof_bumper_front_right() const 01860 { 01861 return 1; 01862 } 01863 01864 /** Set bumper_front_right value. 01865 * Front right bumper active? 01866 * @param new_bumper_front_right new bumper_front_right value 01867 */ 01868 void 01869 Roomba500Interface::set_bumper_front_right(const bool new_bumper_front_right) 01870 { 01871 data->bumper_front_right = new_bumper_front_right; 01872 data_changed = true; 01873 } 01874 01875 /** Get bumper_right value. 01876 * Right bumper active? 01877 * @return bumper_right value 01878 */ 01879 bool 01880 Roomba500Interface::is_bumper_right() const 01881 { 01882 return data->bumper_right; 01883 } 01884 01885 /** Get maximum length of bumper_right value. 01886 * @return length of bumper_right value, can be length of the array or number of 01887 * maximum number of characters for a string 01888 */ 01889 size_t 01890 Roomba500Interface::maxlenof_bumper_right() const 01891 { 01892 return 1; 01893 } 01894 01895 /** Set bumper_right value. 01896 * Right bumper active? 01897 * @param new_bumper_right new bumper_right value 01898 */ 01899 void 01900 Roomba500Interface::set_bumper_right(const bool new_bumper_right) 01901 { 01902 data->bumper_right = new_bumper_right; 01903 data_changed = true; 01904 } 01905 01906 /** Get light_bump_left value. 01907 * Raw left bumper signal. 01908 * @return light_bump_left value 01909 */ 01910 uint16_t 01911 Roomba500Interface::light_bump_left() const 01912 { 01913 return data->light_bump_left; 01914 } 01915 01916 /** Get maximum length of light_bump_left value. 01917 * @return length of light_bump_left value, can be length of the array or number of 01918 * maximum number of characters for a string 01919 */ 01920 size_t 01921 Roomba500Interface::maxlenof_light_bump_left() const 01922 { 01923 return 1; 01924 } 01925 01926 /** Set light_bump_left value. 01927 * Raw left bumper signal. 01928 * @param new_light_bump_left new light_bump_left value 01929 */ 01930 void 01931 Roomba500Interface::set_light_bump_left(const uint16_t new_light_bump_left) 01932 { 01933 data->light_bump_left = new_light_bump_left; 01934 data_changed = true; 01935 } 01936 01937 /** Get light_bump_front_left value. 01938 * Raw front left bumper 01939 signal. 01940 * @return light_bump_front_left value 01941 */ 01942 uint16_t 01943 Roomba500Interface::light_bump_front_left() const 01944 { 01945 return data->light_bump_front_left; 01946 } 01947 01948 /** Get maximum length of light_bump_front_left value. 01949 * @return length of light_bump_front_left value, can be length of the array or number of 01950 * maximum number of characters for a string 01951 */ 01952 size_t 01953 Roomba500Interface::maxlenof_light_bump_front_left() const 01954 { 01955 return 1; 01956 } 01957 01958 /** Set light_bump_front_left value. 01959 * Raw front left bumper 01960 signal. 01961 * @param new_light_bump_front_left new light_bump_front_left value 01962 */ 01963 void 01964 Roomba500Interface::set_light_bump_front_left(const uint16_t new_light_bump_front_left) 01965 { 01966 data->light_bump_front_left = new_light_bump_front_left; 01967 data_changed = true; 01968 } 01969 01970 /** Get light_bump_center_left value. 01971 * Raw center left 01972 bumper signal. 01973 * @return light_bump_center_left value 01974 */ 01975 uint16_t 01976 Roomba500Interface::light_bump_center_left() const 01977 { 01978 return data->light_bump_center_left; 01979 } 01980 01981 /** Get maximum length of light_bump_center_left value. 01982 * @return length of light_bump_center_left value, can be length of the array or number of 01983 * maximum number of characters for a string 01984 */ 01985 size_t 01986 Roomba500Interface::maxlenof_light_bump_center_left() const 01987 { 01988 return 1; 01989 } 01990 01991 /** Set light_bump_center_left value. 01992 * Raw center left 01993 bumper signal. 01994 * @param new_light_bump_center_left new light_bump_center_left value 01995 */ 01996 void 01997 Roomba500Interface::set_light_bump_center_left(const uint16_t new_light_bump_center_left) 01998 { 01999 data->light_bump_center_left = new_light_bump_center_left; 02000 data_changed = true; 02001 } 02002 02003 /** Get light_bump_center_right value. 02004 * Raw center right 02005 bumper signal. 02006 * @return light_bump_center_right value 02007 */ 02008 uint16_t 02009 Roomba500Interface::light_bump_center_right() const 02010 { 02011 return data->light_bump_center_right; 02012 } 02013 02014 /** Get maximum length of light_bump_center_right value. 02015 * @return length of light_bump_center_right value, can be length of the array or number of 02016 * maximum number of characters for a string 02017 */ 02018 size_t 02019 Roomba500Interface::maxlenof_light_bump_center_right() const 02020 { 02021 return 1; 02022 } 02023 02024 /** Set light_bump_center_right value. 02025 * Raw center right 02026 bumper signal. 02027 * @param new_light_bump_center_right new light_bump_center_right value 02028 */ 02029 void 02030 Roomba500Interface::set_light_bump_center_right(const uint16_t new_light_bump_center_right) 02031 { 02032 data->light_bump_center_right = new_light_bump_center_right; 02033 data_changed = true; 02034 } 02035 02036 /** Get light_bump_front_right value. 02037 * Raw front right 02038 bumper signal. 02039 * @return light_bump_front_right value 02040 */ 02041 uint16_t 02042 Roomba500Interface::light_bump_front_right() const 02043 { 02044 return data->light_bump_front_right; 02045 } 02046 02047 /** Get maximum length of light_bump_front_right value. 02048 * @return length of light_bump_front_right value, can be length of the array or number of 02049 * maximum number of characters for a string 02050 */ 02051 size_t 02052 Roomba500Interface::maxlenof_light_bump_front_right() const 02053 { 02054 return 1; 02055 } 02056 02057 /** Set light_bump_front_right value. 02058 * Raw front right 02059 bumper signal. 02060 * @param new_light_bump_front_right new light_bump_front_right value 02061 */ 02062 void 02063 Roomba500Interface::set_light_bump_front_right(const uint16_t new_light_bump_front_right) 02064 { 02065 data->light_bump_front_right = new_light_bump_front_right; 02066 data_changed = true; 02067 } 02068 02069 /** Get light_bump_right value. 02070 * Raw right bumper signal. 02071 * @return light_bump_right value 02072 */ 02073 uint16_t 02074 Roomba500Interface::light_bump_right() const 02075 { 02076 return data->light_bump_right; 02077 } 02078 02079 /** Get maximum length of light_bump_right value. 02080 * @return length of light_bump_right value, can be length of the array or number of 02081 * maximum number of characters for a string 02082 */ 02083 size_t 02084 Roomba500Interface::maxlenof_light_bump_right() const 02085 { 02086 return 1; 02087 } 02088 02089 /** Set light_bump_right value. 02090 * Raw right bumper signal. 02091 * @param new_light_bump_right new light_bump_right value 02092 */ 02093 void 02094 Roomba500Interface::set_light_bump_right(const uint16_t new_light_bump_right) 02095 { 02096 data->light_bump_right = new_light_bump_right; 02097 data_changed = true; 02098 } 02099 02100 /** Get ir_opcode_left value. 02101 * 02102 Left receiver opcode. 02103 * @return ir_opcode_left value 02104 */ 02105 Roomba500Interface::InfraredCharacter 02106 Roomba500Interface::ir_opcode_left() const 02107 { 02108 return (Roomba500Interface::InfraredCharacter)data->ir_opcode_left; 02109 } 02110 02111 /** Get maximum length of ir_opcode_left value. 02112 * @return length of ir_opcode_left value, can be length of the array or number of 02113 * maximum number of characters for a string 02114 */ 02115 size_t 02116 Roomba500Interface::maxlenof_ir_opcode_left() const 02117 { 02118 return 1; 02119 } 02120 02121 /** Set ir_opcode_left value. 02122 * 02123 Left receiver opcode. 02124 * @param new_ir_opcode_left new ir_opcode_left value 02125 */ 02126 void 02127 Roomba500Interface::set_ir_opcode_left(const InfraredCharacter new_ir_opcode_left) 02128 { 02129 data->ir_opcode_left = new_ir_opcode_left; 02130 data_changed = true; 02131 } 02132 02133 /** Get ir_opcode_right value. 02134 * 02135 Right receiver opcode. 02136 * @return ir_opcode_right value 02137 */ 02138 Roomba500Interface::InfraredCharacter 02139 Roomba500Interface::ir_opcode_right() const 02140 { 02141 return (Roomba500Interface::InfraredCharacter)data->ir_opcode_right; 02142 } 02143 02144 /** Get maximum length of ir_opcode_right value. 02145 * @return length of ir_opcode_right value, can be length of the array or number of 02146 * maximum number of characters for a string 02147 */ 02148 size_t 02149 Roomba500Interface::maxlenof_ir_opcode_right() const 02150 { 02151 return 1; 02152 } 02153 02154 /** Set ir_opcode_right value. 02155 * 02156 Right receiver opcode. 02157 * @param new_ir_opcode_right new ir_opcode_right value 02158 */ 02159 void 02160 Roomba500Interface::set_ir_opcode_right(const InfraredCharacter new_ir_opcode_right) 02161 { 02162 data->ir_opcode_right = new_ir_opcode_right; 02163 data_changed = true; 02164 } 02165 02166 /** Get left_motor_current value. 02167 * Left motor current in mA. 02168 * @return left_motor_current value 02169 */ 02170 int16_t 02171 Roomba500Interface::left_motor_current() const 02172 { 02173 return data->left_motor_current; 02174 } 02175 02176 /** Get maximum length of left_motor_current value. 02177 * @return length of left_motor_current value, can be length of the array or number of 02178 * maximum number of characters for a string 02179 */ 02180 size_t 02181 Roomba500Interface::maxlenof_left_motor_current() const 02182 { 02183 return 1; 02184 } 02185 02186 /** Set left_motor_current value. 02187 * Left motor current in mA. 02188 * @param new_left_motor_current new left_motor_current value 02189 */ 02190 void 02191 Roomba500Interface::set_left_motor_current(const int16_t new_left_motor_current) 02192 { 02193 data->left_motor_current = new_left_motor_current; 02194 data_changed = true; 02195 } 02196 02197 /** Get right_motor_current value. 02198 * Right motor current in mA. 02199 * @return right_motor_current value 02200 */ 02201 int16_t 02202 Roomba500Interface::right_motor_current() const 02203 { 02204 return data->right_motor_current; 02205 } 02206 02207 /** Get maximum length of right_motor_current value. 02208 * @return length of right_motor_current value, can be length of the array or number of 02209 * maximum number of characters for a string 02210 */ 02211 size_t 02212 Roomba500Interface::maxlenof_right_motor_current() const 02213 { 02214 return 1; 02215 } 02216 02217 /** Set right_motor_current value. 02218 * Right motor current in mA. 02219 * @param new_right_motor_current new right_motor_current value 02220 */ 02221 void 02222 Roomba500Interface::set_right_motor_current(const int16_t new_right_motor_current) 02223 { 02224 data->right_motor_current = new_right_motor_current; 02225 data_changed = true; 02226 } 02227 02228 /** Get main_brush_current value. 02229 * Main brush current in mA. 02230 * @return main_brush_current value 02231 */ 02232 int16_t 02233 Roomba500Interface::main_brush_current() const 02234 { 02235 return data->main_brush_current; 02236 } 02237 02238 /** Get maximum length of main_brush_current value. 02239 * @return length of main_brush_current value, can be length of the array or number of 02240 * maximum number of characters for a string 02241 */ 02242 size_t 02243 Roomba500Interface::maxlenof_main_brush_current() const 02244 { 02245 return 1; 02246 } 02247 02248 /** Set main_brush_current value. 02249 * Main brush current in mA. 02250 * @param new_main_brush_current new main_brush_current value 02251 */ 02252 void 02253 Roomba500Interface::set_main_brush_current(const int16_t new_main_brush_current) 02254 { 02255 data->main_brush_current = new_main_brush_current; 02256 data_changed = true; 02257 } 02258 02259 /** Get side_brush_current value. 02260 * Side brush current in mA. 02261 * @return side_brush_current value 02262 */ 02263 int16_t 02264 Roomba500Interface::side_brush_current() const 02265 { 02266 return data->side_brush_current; 02267 } 02268 02269 /** Get maximum length of side_brush_current value. 02270 * @return length of side_brush_current value, can be length of the array or number of 02271 * maximum number of characters for a string 02272 */ 02273 size_t 02274 Roomba500Interface::maxlenof_side_brush_current() const 02275 { 02276 return 1; 02277 } 02278 02279 /** Set side_brush_current value. 02280 * Side brush current in mA. 02281 * @param new_side_brush_current new side_brush_current value 02282 */ 02283 void 02284 Roomba500Interface::set_side_brush_current(const int16_t new_side_brush_current) 02285 { 02286 data->side_brush_current = new_side_brush_current; 02287 data_changed = true; 02288 } 02289 02290 /** Get caster_stasis value. 02291 * Caster wheel stasis. 02292 * @return caster_stasis value 02293 */ 02294 bool 02295 Roomba500Interface::is_caster_stasis() const 02296 { 02297 return data->caster_stasis; 02298 } 02299 02300 /** Get maximum length of caster_stasis value. 02301 * @return length of caster_stasis value, can be length of the array or number of 02302 * maximum number of characters for a string 02303 */ 02304 size_t 02305 Roomba500Interface::maxlenof_caster_stasis() const 02306 { 02307 return 1; 02308 } 02309 02310 /** Set caster_stasis value. 02311 * Caster wheel stasis. 02312 * @param new_caster_stasis new caster_stasis value 02313 */ 02314 void 02315 Roomba500Interface::set_caster_stasis(const bool new_caster_stasis) 02316 { 02317 data->caster_stasis = new_caster_stasis; 02318 data_changed = true; 02319 } 02320 02321 /* =========== message create =========== */ 02322 Message * 02323 Roomba500Interface::create_message(const char *type) const 02324 { 02325 if ( strncmp("StopMessage", type, __INTERFACE_MESSAGE_TYPE_SIZE) == 0 ) { 02326 return new StopMessage(); 02327 } else if ( strncmp("DockMessage", type, __INTERFACE_MESSAGE_TYPE_SIZE) == 0 ) { 02328 return new DockMessage(); 02329 } else if ( strncmp("SetModeMessage", type, __INTERFACE_MESSAGE_TYPE_SIZE) == 0 ) { 02330 return new SetModeMessage(); 02331 } else if ( strncmp("DriveStraightMessage", type, __INTERFACE_MESSAGE_TYPE_SIZE) == 0 ) { 02332 return new DriveStraightMessage(); 02333 } else if ( strncmp("DriveMessage", type, __INTERFACE_MESSAGE_TYPE_SIZE) == 0 ) { 02334 return new DriveMessage(); 02335 } else if ( strncmp("SetMotorsMessage", type, __INTERFACE_MESSAGE_TYPE_SIZE) == 0 ) { 02336 return new SetMotorsMessage(); 02337 } else { 02338 throw UnknownTypeException("The given type '%s' does not match any known " 02339 "message type for this interface type.", type); 02340 } 02341 } 02342 02343 02344 /** Copy values from other interface. 02345 * @param other other interface to copy values from 02346 */ 02347 void 02348 Roomba500Interface::copy_values(const Interface *other) 02349 { 02350 const Roomba500Interface *oi = dynamic_cast<const Roomba500Interface *>(other); 02351 if (oi == NULL) { 02352 throw TypeMismatchException("Can only copy values from interface of same type (%s vs. %s)", 02353 type(), other->type()); 02354 } 02355 memcpy(data, oi->data, sizeof(Roomba500Interface_data_t)); 02356 } 02357 02358 const char * 02359 Roomba500Interface::enum_tostring(const char *enumtype, int val) const 02360 { 02361 if (strcmp(enumtype, "Mode") == 0) { 02362 return tostring_Mode((Mode)val); 02363 } 02364 if (strcmp(enumtype, "InfraredCharacter") == 0) { 02365 return tostring_InfraredCharacter((InfraredCharacter)val); 02366 } 02367 if (strcmp(enumtype, "ChargingState") == 0) { 02368 return tostring_ChargingState((ChargingState)val); 02369 } 02370 if (strcmp(enumtype, "BrushState") == 0) { 02371 return tostring_BrushState((BrushState)val); 02372 } 02373 throw UnknownTypeException("Unknown enum type %s", enumtype); 02374 } 02375 02376 /* =========== messages =========== */ 02377 /** @class Roomba500Interface::StopMessage <interfaces/Roomba500Interface.h> 02378 * StopMessage Fawkes BlackBoard Interface Message. 02379 * 02380 02381 */ 02382 02383 02384 /** Constructor */ 02385 Roomba500Interface::StopMessage::StopMessage() : Message("StopMessage") 02386 { 02387 data_size = sizeof(StopMessage_data_t); 02388 data_ptr = malloc(data_size); 02389 memset(data_ptr, 0, data_size); 02390 data = (StopMessage_data_t *)data_ptr; 02391 data_ts = (message_data_ts_t *)data_ptr; 02392 } 02393 02394 /** Destructor */ 02395 Roomba500Interface::StopMessage::~StopMessage() 02396 { 02397 free(data_ptr); 02398 } 02399 02400 /** Copy constructor. 02401 * @param m message to copy from 02402 */ 02403 Roomba500Interface::StopMessage::StopMessage(const StopMessage *m) : Message("StopMessage") 02404 { 02405 data_size = m->data_size; 02406 data_ptr = malloc(data_size); 02407 memcpy(data_ptr, m->data_ptr, data_size); 02408 data = (StopMessage_data_t *)data_ptr; 02409 data_ts = (message_data_ts_t *)data_ptr; 02410 } 02411 02412 /* Methods */ 02413 /** Clone this message. 02414 * Produces a message of the same type as this message and copies the 02415 * data to the new message. 02416 * @return clone of this message 02417 */ 02418 Message * 02419 Roomba500Interface::StopMessage::clone() const 02420 { 02421 return new Roomba500Interface::StopMessage(this); 02422 } 02423 /** @class Roomba500Interface::DockMessage <interfaces/Roomba500Interface.h> 02424 * DockMessage Fawkes BlackBoard Interface Message. 02425 * 02426 02427 */ 02428 02429 02430 /** Constructor */ 02431 Roomba500Interface::DockMessage::DockMessage() : Message("DockMessage") 02432 { 02433 data_size = sizeof(DockMessage_data_t); 02434 data_ptr = malloc(data_size); 02435 memset(data_ptr, 0, data_size); 02436 data = (DockMessage_data_t *)data_ptr; 02437 data_ts = (message_data_ts_t *)data_ptr; 02438 } 02439 02440 /** Destructor */ 02441 Roomba500Interface::DockMessage::~DockMessage() 02442 { 02443 free(data_ptr); 02444 } 02445 02446 /** Copy constructor. 02447 * @param m message to copy from 02448 */ 02449 Roomba500Interface::DockMessage::DockMessage(const DockMessage *m) : Message("DockMessage") 02450 { 02451 data_size = m->data_size; 02452 data_ptr = malloc(data_size); 02453 memcpy(data_ptr, m->data_ptr, data_size); 02454 data = (DockMessage_data_t *)data_ptr; 02455 data_ts = (message_data_ts_t *)data_ptr; 02456 } 02457 02458 /* Methods */ 02459 /** Clone this message. 02460 * Produces a message of the same type as this message and copies the 02461 * data to the new message. 02462 * @return clone of this message 02463 */ 02464 Message * 02465 Roomba500Interface::DockMessage::clone() const 02466 { 02467 return new Roomba500Interface::DockMessage(this); 02468 } 02469 /** @class Roomba500Interface::SetModeMessage <interfaces/Roomba500Interface.h> 02470 * SetModeMessage Fawkes BlackBoard Interface Message. 02471 * 02472 02473 */ 02474 02475 02476 /** Constructor with initial values. 02477 * @param ini_mode initial value for mode 02478 */ 02479 Roomba500Interface::SetModeMessage::SetModeMessage(const Mode ini_mode) : Message("SetModeMessage") 02480 { 02481 data_size = sizeof(SetModeMessage_data_t); 02482 data_ptr = malloc(data_size); 02483 memset(data_ptr, 0, data_size); 02484 data = (SetModeMessage_data_t *)data_ptr; 02485 data_ts = (message_data_ts_t *)data_ptr; 02486 data->mode = ini_mode; 02487 add_fieldinfo(IFT_ENUM, "mode", 1, &data->mode, "Mode"); 02488 } 02489 /** Constructor */ 02490 Roomba500Interface::SetModeMessage::SetModeMessage() : Message("SetModeMessage") 02491 { 02492 data_size = sizeof(SetModeMessage_data_t); 02493 data_ptr = malloc(data_size); 02494 memset(data_ptr, 0, data_size); 02495 data = (SetModeMessage_data_t *)data_ptr; 02496 data_ts = (message_data_ts_t *)data_ptr; 02497 add_fieldinfo(IFT_ENUM, "mode", 1, &data->mode, "Mode"); 02498 } 02499 02500 /** Destructor */ 02501 Roomba500Interface::SetModeMessage::~SetModeMessage() 02502 { 02503 free(data_ptr); 02504 } 02505 02506 /** Copy constructor. 02507 * @param m message to copy from 02508 */ 02509 Roomba500Interface::SetModeMessage::SetModeMessage(const SetModeMessage *m) : Message("SetModeMessage") 02510 { 02511 data_size = m->data_size; 02512 data_ptr = malloc(data_size); 02513 memcpy(data_ptr, m->data_ptr, data_size); 02514 data = (SetModeMessage_data_t *)data_ptr; 02515 data_ts = (message_data_ts_t *)data_ptr; 02516 } 02517 02518 /* Methods */ 02519 /** Get mode value. 02520 * Open Interface mode. 02521 * @return mode value 02522 */ 02523 Roomba500Interface::Mode 02524 Roomba500Interface::SetModeMessage::mode() const 02525 { 02526 return (Roomba500Interface::Mode)data->mode; 02527 } 02528 02529 /** Get maximum length of mode value. 02530 * @return length of mode value, can be length of the array or number of 02531 * maximum number of characters for a string 02532 */ 02533 size_t 02534 Roomba500Interface::SetModeMessage::maxlenof_mode() const 02535 { 02536 return 1; 02537 } 02538 02539 /** Set mode value. 02540 * Open Interface mode. 02541 * @param new_mode new mode value 02542 */ 02543 void 02544 Roomba500Interface::SetModeMessage::set_mode(const Mode new_mode) 02545 { 02546 data->mode = new_mode; 02547 } 02548 02549 /** Clone this message. 02550 * Produces a message of the same type as this message and copies the 02551 * data to the new message. 02552 * @return clone of this message 02553 */ 02554 Message * 02555 Roomba500Interface::SetModeMessage::clone() const 02556 { 02557 return new Roomba500Interface::SetModeMessage(this); 02558 } 02559 /** @class Roomba500Interface::DriveStraightMessage <interfaces/Roomba500Interface.h> 02560 * DriveStraightMessage Fawkes BlackBoard Interface Message. 02561 * 02562 02563 */ 02564 02565 02566 /** Constructor with initial values. 02567 * @param ini_velocity initial value for velocity 02568 */ 02569 Roomba500Interface::DriveStraightMessage::DriveStraightMessage(const int16_t ini_velocity) : Message("DriveStraightMessage") 02570 { 02571 data_size = sizeof(DriveStraightMessage_data_t); 02572 data_ptr = malloc(data_size); 02573 memset(data_ptr, 0, data_size); 02574 data = (DriveStraightMessage_data_t *)data_ptr; 02575 data_ts = (message_data_ts_t *)data_ptr; 02576 data->velocity = ini_velocity; 02577 add_fieldinfo(IFT_INT16, "velocity", 1, &data->velocity); 02578 } 02579 /** Constructor */ 02580 Roomba500Interface::DriveStraightMessage::DriveStraightMessage() : Message("DriveStraightMessage") 02581 { 02582 data_size = sizeof(DriveStraightMessage_data_t); 02583 data_ptr = malloc(data_size); 02584 memset(data_ptr, 0, data_size); 02585 data = (DriveStraightMessage_data_t *)data_ptr; 02586 data_ts = (message_data_ts_t *)data_ptr; 02587 add_fieldinfo(IFT_INT16, "velocity", 1, &data->velocity); 02588 } 02589 02590 /** Destructor */ 02591 Roomba500Interface::DriveStraightMessage::~DriveStraightMessage() 02592 { 02593 free(data_ptr); 02594 } 02595 02596 /** Copy constructor. 02597 * @param m message to copy from 02598 */ 02599 Roomba500Interface::DriveStraightMessage::DriveStraightMessage(const DriveStraightMessage *m) : Message("DriveStraightMessage") 02600 { 02601 data_size = m->data_size; 02602 data_ptr = malloc(data_size); 02603 memcpy(data_ptr, m->data_ptr, data_size); 02604 data = (DriveStraightMessage_data_t *)data_ptr; 02605 data_ts = (message_data_ts_t *)data_ptr; 02606 } 02607 02608 /* Methods */ 02609 /** Get velocity value. 02610 * Requested velocity in mm/s. 02611 * @return velocity value 02612 */ 02613 int16_t 02614 Roomba500Interface::DriveStraightMessage::velocity() const 02615 { 02616 return data->velocity; 02617 } 02618 02619 /** Get maximum length of velocity value. 02620 * @return length of velocity value, can be length of the array or number of 02621 * maximum number of characters for a string 02622 */ 02623 size_t 02624 Roomba500Interface::DriveStraightMessage::maxlenof_velocity() const 02625 { 02626 return 1; 02627 } 02628 02629 /** Set velocity value. 02630 * Requested velocity in mm/s. 02631 * @param new_velocity new velocity value 02632 */ 02633 void 02634 Roomba500Interface::DriveStraightMessage::set_velocity(const int16_t new_velocity) 02635 { 02636 data->velocity = new_velocity; 02637 } 02638 02639 /** Clone this message. 02640 * Produces a message of the same type as this message and copies the 02641 * data to the new message. 02642 * @return clone of this message 02643 */ 02644 Message * 02645 Roomba500Interface::DriveStraightMessage::clone() const 02646 { 02647 return new Roomba500Interface::DriveStraightMessage(this); 02648 } 02649 /** @class Roomba500Interface::DriveMessage <interfaces/Roomba500Interface.h> 02650 * DriveMessage Fawkes BlackBoard Interface Message. 02651 * 02652 02653 */ 02654 02655 02656 /** Constructor with initial values. 02657 * @param ini_velocity initial value for velocity 02658 * @param ini_radius initial value for radius 02659 */ 02660 Roomba500Interface::DriveMessage::DriveMessage(const int16_t ini_velocity, const int16_t ini_radius) : Message("DriveMessage") 02661 { 02662 data_size = sizeof(DriveMessage_data_t); 02663 data_ptr = malloc(data_size); 02664 memset(data_ptr, 0, data_size); 02665 data = (DriveMessage_data_t *)data_ptr; 02666 data_ts = (message_data_ts_t *)data_ptr; 02667 data->velocity = ini_velocity; 02668 data->radius = ini_radius; 02669 add_fieldinfo(IFT_INT16, "velocity", 1, &data->velocity); 02670 add_fieldinfo(IFT_INT16, "radius", 1, &data->radius); 02671 } 02672 /** Constructor */ 02673 Roomba500Interface::DriveMessage::DriveMessage() : Message("DriveMessage") 02674 { 02675 data_size = sizeof(DriveMessage_data_t); 02676 data_ptr = malloc(data_size); 02677 memset(data_ptr, 0, data_size); 02678 data = (DriveMessage_data_t *)data_ptr; 02679 data_ts = (message_data_ts_t *)data_ptr; 02680 add_fieldinfo(IFT_INT16, "velocity", 1, &data->velocity); 02681 add_fieldinfo(IFT_INT16, "radius", 1, &data->radius); 02682 } 02683 02684 /** Destructor */ 02685 Roomba500Interface::DriveMessage::~DriveMessage() 02686 { 02687 free(data_ptr); 02688 } 02689 02690 /** Copy constructor. 02691 * @param m message to copy from 02692 */ 02693 Roomba500Interface::DriveMessage::DriveMessage(const DriveMessage *m) : Message("DriveMessage") 02694 { 02695 data_size = m->data_size; 02696 data_ptr = malloc(data_size); 02697 memcpy(data_ptr, m->data_ptr, data_size); 02698 data = (DriveMessage_data_t *)data_ptr; 02699 data_ts = (message_data_ts_t *)data_ptr; 02700 } 02701 02702 /* Methods */ 02703 /** Get velocity value. 02704 * Requested velocity in mm/s. 02705 * @return velocity value 02706 */ 02707 int16_t 02708 Roomba500Interface::DriveMessage::velocity() const 02709 { 02710 return data->velocity; 02711 } 02712 02713 /** Get maximum length of velocity value. 02714 * @return length of velocity value, can be length of the array or number of 02715 * maximum number of characters for a string 02716 */ 02717 size_t 02718 Roomba500Interface::DriveMessage::maxlenof_velocity() const 02719 { 02720 return 1; 02721 } 02722 02723 /** Set velocity value. 02724 * Requested velocity in mm/s. 02725 * @param new_velocity new velocity value 02726 */ 02727 void 02728 Roomba500Interface::DriveMessage::set_velocity(const int16_t new_velocity) 02729 { 02730 data->velocity = new_velocity; 02731 } 02732 02733 /** Get radius value. 02734 * Requested radius in mm. 02735 * @return radius value 02736 */ 02737 int16_t 02738 Roomba500Interface::DriveMessage::radius() const 02739 { 02740 return data->radius; 02741 } 02742 02743 /** Get maximum length of radius value. 02744 * @return length of radius value, can be length of the array or number of 02745 * maximum number of characters for a string 02746 */ 02747 size_t 02748 Roomba500Interface::DriveMessage::maxlenof_radius() const 02749 { 02750 return 1; 02751 } 02752 02753 /** Set radius value. 02754 * Requested radius in mm. 02755 * @param new_radius new radius value 02756 */ 02757 void 02758 Roomba500Interface::DriveMessage::set_radius(const int16_t new_radius) 02759 { 02760 data->radius = new_radius; 02761 } 02762 02763 /** Clone this message. 02764 * Produces a message of the same type as this message and copies the 02765 * data to the new message. 02766 * @return clone of this message 02767 */ 02768 Message * 02769 Roomba500Interface::DriveMessage::clone() const 02770 { 02771 return new Roomba500Interface::DriveMessage(this); 02772 } 02773 /** @class Roomba500Interface::SetMotorsMessage <interfaces/Roomba500Interface.h> 02774 * SetMotorsMessage Fawkes BlackBoard Interface Message. 02775 * 02776 02777 */ 02778 02779 02780 /** Constructor with initial values. 02781 * @param ini_vacuuming initial value for vacuuming 02782 * @param ini_main initial value for main 02783 * @param ini_side initial value for side 02784 */ 02785 Roomba500Interface::SetMotorsMessage::SetMotorsMessage(const bool ini_vacuuming, const BrushState ini_main, const BrushState ini_side) : Message("SetMotorsMessage") 02786 { 02787 data_size = sizeof(SetMotorsMessage_data_t); 02788 data_ptr = malloc(data_size); 02789 memset(data_ptr, 0, data_size); 02790 data = (SetMotorsMessage_data_t *)data_ptr; 02791 data_ts = (message_data_ts_t *)data_ptr; 02792 data->vacuuming = ini_vacuuming; 02793 data->main = ini_main; 02794 data->side = ini_side; 02795 add_fieldinfo(IFT_BOOL, "vacuuming", 1, &data->vacuuming); 02796 add_fieldinfo(IFT_ENUM, "main", 1, &data->main, "BrushState"); 02797 add_fieldinfo(IFT_ENUM, "side", 1, &data->side, "BrushState"); 02798 } 02799 /** Constructor */ 02800 Roomba500Interface::SetMotorsMessage::SetMotorsMessage() : Message("SetMotorsMessage") 02801 { 02802 data_size = sizeof(SetMotorsMessage_data_t); 02803 data_ptr = malloc(data_size); 02804 memset(data_ptr, 0, data_size); 02805 data = (SetMotorsMessage_data_t *)data_ptr; 02806 data_ts = (message_data_ts_t *)data_ptr; 02807 add_fieldinfo(IFT_BOOL, "vacuuming", 1, &data->vacuuming); 02808 add_fieldinfo(IFT_ENUM, "main", 1, &data->main, "BrushState"); 02809 add_fieldinfo(IFT_ENUM, "side", 1, &data->side, "BrushState"); 02810 } 02811 02812 /** Destructor */ 02813 Roomba500Interface::SetMotorsMessage::~SetMotorsMessage() 02814 { 02815 free(data_ptr); 02816 } 02817 02818 /** Copy constructor. 02819 * @param m message to copy from 02820 */ 02821 Roomba500Interface::SetMotorsMessage::SetMotorsMessage(const SetMotorsMessage *m) : Message("SetMotorsMessage") 02822 { 02823 data_size = m->data_size; 02824 data_ptr = malloc(data_size); 02825 memcpy(data_ptr, m->data_ptr, data_size); 02826 data = (SetMotorsMessage_data_t *)data_ptr; 02827 data_ts = (message_data_ts_t *)data_ptr; 02828 } 02829 02830 /* Methods */ 02831 /** Get vacuuming value. 02832 * Enable vacuuming? 02833 * @return vacuuming value 02834 */ 02835 bool 02836 Roomba500Interface::SetMotorsMessage::is_vacuuming() const 02837 { 02838 return data->vacuuming; 02839 } 02840 02841 /** Get maximum length of vacuuming value. 02842 * @return length of vacuuming value, can be length of the array or number of 02843 * maximum number of characters for a string 02844 */ 02845 size_t 02846 Roomba500Interface::SetMotorsMessage::maxlenof_vacuuming() const 02847 { 02848 return 1; 02849 } 02850 02851 /** Set vacuuming value. 02852 * Enable vacuuming? 02853 * @param new_vacuuming new vacuuming value 02854 */ 02855 void 02856 Roomba500Interface::SetMotorsMessage::set_vacuuming(const bool new_vacuuming) 02857 { 02858 data->vacuuming = new_vacuuming; 02859 } 02860 02861 /** Get main value. 02862 * Main brush state. 02863 * @return main value 02864 */ 02865 Roomba500Interface::BrushState 02866 Roomba500Interface::SetMotorsMessage::main() const 02867 { 02868 return (Roomba500Interface::BrushState)data->main; 02869 } 02870 02871 /** Get maximum length of main value. 02872 * @return length of main value, can be length of the array or number of 02873 * maximum number of characters for a string 02874 */ 02875 size_t 02876 Roomba500Interface::SetMotorsMessage::maxlenof_main() const 02877 { 02878 return 1; 02879 } 02880 02881 /** Set main value. 02882 * Main brush state. 02883 * @param new_main new main value 02884 */ 02885 void 02886 Roomba500Interface::SetMotorsMessage::set_main(const BrushState new_main) 02887 { 02888 data->main = new_main; 02889 } 02890 02891 /** Get side value. 02892 * Side brush state. 02893 * @return side value 02894 */ 02895 Roomba500Interface::BrushState 02896 Roomba500Interface::SetMotorsMessage::side() const 02897 { 02898 return (Roomba500Interface::BrushState)data->side; 02899 } 02900 02901 /** Get maximum length of side value. 02902 * @return length of side value, can be length of the array or number of 02903 * maximum number of characters for a string 02904 */ 02905 size_t 02906 Roomba500Interface::SetMotorsMessage::maxlenof_side() const 02907 { 02908 return 1; 02909 } 02910 02911 /** Set side value. 02912 * Side brush state. 02913 * @param new_side new side value 02914 */ 02915 void 02916 Roomba500Interface::SetMotorsMessage::set_side(const BrushState new_side) 02917 { 02918 data->side = new_side; 02919 } 02920 02921 /** Clone this message. 02922 * Produces a message of the same type as this message and copies the 02923 * data to the new message. 02924 * @return clone of this message 02925 */ 02926 Message * 02927 Roomba500Interface::SetMotorsMessage::clone() const 02928 { 02929 return new Roomba500Interface::SetMotorsMessage(this); 02930 } 02931 /** Check if message is valid and can be enqueued. 02932 * @param message Message to check 02933 * @return true if the message is valid, false otherwise. 02934 */ 02935 bool 02936 Roomba500Interface::message_valid(const Message *message) const 02937 { 02938 const StopMessage *m0 = dynamic_cast<const StopMessage *>(message); 02939 if ( m0 != NULL ) { 02940 return true; 02941 } 02942 const DockMessage *m1 = dynamic_cast<const DockMessage *>(message); 02943 if ( m1 != NULL ) { 02944 return true; 02945 } 02946 const SetModeMessage *m2 = dynamic_cast<const SetModeMessage *>(message); 02947 if ( m2 != NULL ) { 02948 return true; 02949 } 02950 const DriveStraightMessage *m3 = dynamic_cast<const DriveStraightMessage *>(message); 02951 if ( m3 != NULL ) { 02952 return true; 02953 } 02954 const DriveMessage *m4 = dynamic_cast<const DriveMessage *>(message); 02955 if ( m4 != NULL ) { 02956 return true; 02957 } 02958 const SetMotorsMessage *m5 = dynamic_cast<const SetMotorsMessage *>(message); 02959 if ( m5 != NULL ) { 02960 return true; 02961 } 02962 return false; 02963 } 02964 02965 /// @cond INTERNALS 02966 EXPORT_INTERFACE(Roomba500Interface) 02967 /// @endcond 02968 02969 02970 } // end namespace fawkes