Fawkes API  Fawkes Development Version
Roomba500Interface.h
00001 
00002 /***************************************************************************
00003  *  Roomba500Interface.h - 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 #ifndef __INTERFACES_ROOMBA500INTERFACE_H_
00025 #define __INTERFACES_ROOMBA500INTERFACE_H_
00026 
00027 #include <interface/interface.h>
00028 #include <interface/message.h>
00029 #include <interface/field_iterator.h>
00030 
00031 namespace fawkes {
00032 
00033 class Roomba500Interface : public Interface
00034 {
00035  /// @cond INTERNALS
00036  INTERFACE_MGMT_FRIENDS(Roomba500Interface)
00037  /// @endcond
00038  public:
00039   /* constants */
00040 
00041   /** Open Interface mode. */
00042   typedef enum {
00043     MODE_OFF = 0 /**< No connection. */,
00044     MODE_PASSIVE = 1 /**< Passive mode, no control,
00045         only listening. */,
00046     MODE_SAFE = 2 /**< Control acquired, safety measures
00047         in place. */,
00048     MODE_FULL = 3 /**< Control acquired, safety measures
00049         disabled. */
00050   } Mode;
00051   const char * tostring_Mode(Mode value) const;
00052 
00053   /** Infrared character values. */
00054   typedef enum {
00055     IR_NONE = 0 /**< No valid IR signal */,
00056     IR_REMOTE_LEFT = 129 /**< IR Remote Control: left button */,
00057     IR_REMOTE_FORWARD = 130 /**<  IR Remote Control: forward
00058         button */,
00059     IR_REMOTE_RIGHT = 131 /**< IR Remote Control: right
00060         button */,
00061     IR_REMOTE_SPOT = 132 /**< IR Remote Control: spot button */,
00062     IR_REMOTE_MAX = 133 /**< IR Remote Control: max button */,
00063     IR_REMOTE_SMALL = 134 /**< IR Remote Control: small
00064         button */,
00065     IR_REMOTE_MEDIUM = 135 /**< IR Remote Control:
00066         medium button */,
00067     IR_REMOTE_LARGE_CLEAN = 136 /**< IR Remote Control:
00068         large/clean button */,
00069     IR_REMOTE_STOP = 137 /**< IR Remote Control: stop button */,
00070     IR_REMOTE_POWER = 138 /**< IR Remote Control:
00071         power button */,
00072     IR_REMOTE_ARC_LEFT = 139 /**< IR Remote Control:
00073         left arc button */,
00074     IR_REMOTE_ARC_RIGHT = 140 /**< IR Remote Control:
00075         right arc button */,
00076     IR_REMOTE_STOP2 = 141 /**< IR Remote Control:
00077         stop button */,
00078     IR_SCHED_REMOTE_DOWNLOAD = 142 /**< IR scheduling remote:
00079         download button */,
00080     IR_SCHED_REMOTE_SEEK_DOCK = 143 /**< IR scheduling remote:
00081         seek dock button */,
00082     IR_DISC_DOCK_RESERVED = 240 /**< Roomba Discovery dock:
00083         reserved */,
00084     IR_DISC_DOCK_RED_BUOY = 248 /**< Roomba Discovery dock:
00085         red buoy */,
00086     IR_DISC_DOCK_GREEN_BUOY = 244 /**< Roomba Discovery dock:
00087         green buoy */,
00088     IR_DISC_DOCK_FORCE_FIELD = 242 /**< Roomba Discovery dock:
00089         red and green buoy */,
00090     IR_DISC_DOCK_RED_GREEN_BUOY = 252 /**< Roomba Discovery dock:
00091         red buoy and force field */,
00092     IR_DISC_DOCK_RED_BUOY_FORCE_FIELD = 250 /**< Roomba Discovery
00093         dock: green buoy and force field */,
00094     IR_DISC_DOCK_GREEN_BUOY_FORCE_FIELD = 246 /**< Roomba
00095         Discovery dock: green buoy and force field. */,
00096     IR_DISC_DOCK_RED_GREEN_BUOY_FORCE_FIELD = 254 /**< Roomba
00097         Discovery dock: red and green buoy and force field */,
00098     IR_DOCK_RESERVED = 160 /**< Roomba 500 dock: reserved */,
00099     IR_DOCK_RED_BUOY = 168 /**< Roomba 500 dock: red buoy */,
00100     IR_DOCK_GREEN_BUOY = 164 /**< Roomba 500 dock: green buoy */,
00101     IR_DOCK_FORCE_FIELD = 161 /**< Roomba 500 dock: red and green buoy */,
00102     IR_DOCK_RED_GREEN_BUOY = 172 /**< Roomba 500 dock: red buoy and force field */,
00103     IR_DOCK_RED_BUOY_FORCE_FIELD = 169 /**< Roomba 500 dock: green buoy and force field. */,
00104     IR_DOCK_GREEN_BUOY_FORCE_FIELD = 165 /**< Roomba 500 dock: green buoy and force field. */,
00105     IR_DOCK_RED_GREEN_BUOY_FORCE_FIELD = 173 /**< Roomba 500 dock: red and green buoy and force field. */,
00106     IR_VIRTUAL_WALL = 162 /**< IR Virtual Wall */
00107   } InfraredCharacter;
00108   const char * tostring_InfraredCharacter(InfraredCharacter value) const;
00109 
00110   /** 
00111         Current charging state.
00112        */
00113   typedef enum {
00114     CHARGING_NO = 0 /**< Not charging. */,
00115     CHARGING_RECONDITIONING = 1 /**< Reconditioning battery. */,
00116     CHARGING_FULL = 2 /**< Full charging cycle. */,
00117     CHARGING_TRICKLE = 3 /**< Trickle charging. */,
00118     CHARGING_WAITING = 4 /**< Waiting. */,
00119     CHARGING_ERROR = 5 /**< Fault condition. */
00120   } ChargingState;
00121   const char * tostring_ChargingState(ChargingState value) const;
00122 
00123   /** State of the brushes. */
00124   typedef enum {
00125     BRUSHSTATE_OFF /**< Brush is off. */,
00126     BRUSHSTATE_FORWARD /**< Brush is turning forward. */,
00127     BRUSHSTATE_BACKWARD /**< Brush is turning backward. */
00128   } BrushState;
00129   const char * tostring_BrushState(BrushState value) const;
00130 
00131  private:
00132 #pragma pack(push,4)
00133   /** Internal data storage, do NOT modify! */
00134   typedef struct {
00135     int64_t timestamp_sec;  /**< Interface Unix timestamp, seconds */
00136     int64_t timestamp_usec; /**< Interface Unix timestamp, micro-seconds */
00137     int32_t mode; /**< Open Interface mode. */
00138     bool wheel_drop_left; /**< Left wheel drop sensor. */
00139     bool wheel_drop_right; /**< Right wheel drop sensor. */
00140     bool bump_left; /**< Bump on left. */
00141     bool bump_right; /**< Bump on right. */
00142     bool wall; /**< Wall sensor. */
00143     bool cliff_left; /**< Cliff detected left. */
00144     bool cliff_front_left; /**< Cliff detected front left. */
00145     bool cliff_front_right; /**< Cliff detected front right. */
00146     bool cliff_right; /**< Cliff detected right. */
00147     bool virtual_wall; /**< Virtual wall detected. */
00148     bool overcurrent_side_brush; /**< Overcurrent on side brush. */
00149     bool overcurrent_main_brush; /**< Overcurrent on main brush. */
00150     bool overcurrent_left_wheel; /**< Overcurrent on left wheel. */
00151     bool overcurrent_right_wheel; /**< Overcurrent on right wheel. */
00152     bool dirt_detect; /**< Dirt detected? */
00153     int32_t ir_opcode_omni; /**< Omni IR receiver code. */
00154     bool button_clean; /**< Clean button pressed. */
00155     bool button_spot; /**< Spot button pressed. */
00156     bool button_dock; /**< Dock button pressed. */
00157     bool button_minute; /**< Minute button pressed. */
00158     bool button_hour; /**< Hour button pressed. */
00159     bool button_day; /**< Day button pressed. */
00160     bool button_schedule; /**< Schedule button pressed. */
00161     bool button_clock; /**< Clock button pressed. */
00162     int16_t distance; /**< Travelled distance in m. */
00163     int16_t angle; /**< Turned angle in radians. */
00164     int32_t charging_state; /**< Charging state. */
00165     uint16_t voltage; /**< Voltage in mV. */
00166     int16_t current; /**< Current in mA. */
00167     int8_t temperature; /**< Temperature in degree Celsius. */
00168     uint16_t battery_charge; /**< Battery charge in mAh. */
00169     uint16_t battery_capacity; /**< Battery capacity in mAh. */
00170     uint16_t wall_signal; /**< Raw wall signal */
00171     uint16_t cliff_left_signal; /**< Raw left cliff signal. */
00172     uint16_t cliff_front_left_signal; /**< Raw front left
00173       cliff signal. */
00174     uint16_t cliff_front_right_signal; /**< Raw front right
00175       cliff signal. */
00176     uint16_t cliff_right_signal; /**< Raw right cliff signal. */
00177     bool home_base_charger_available; /**< 
00178       Home base charger available? */
00179     bool internal_charger_available; /**< 
00180       Internal charger available? */
00181     uint8_t song_number; /**< Song number. */
00182     bool song_playing; /**< Song playing? */
00183     int16_t velocity; /**< Requested velocity in mm/s. */
00184     int16_t radius; /**< Requested radius in mm. */
00185     int16_t velocity_right; /**< Requested left velocity in mm/s. */
00186     int16_t velocity_left; /**< Requested right velocity in mm/s. */
00187     uint16_t encoder_counts_left; /**< Encoder count left. */
00188     uint16_t encoder_counts_right; /**< Encoder count right. */
00189     bool bumper_left; /**< Left bumper active? */
00190     bool bumper_front_left; /**< Front left bumper active? */
00191     bool bumper_center_left; /**< Center left bumper active? */
00192     bool bumper_center_right; /**< Center right bumper active? */
00193     bool bumper_front_right; /**< Front right bumper active? */
00194     bool bumper_right; /**< Right bumper active? */
00195     uint16_t light_bump_left; /**< Raw left bumper signal. */
00196     uint16_t light_bump_front_left; /**< Raw front left bumper
00197       signal. */
00198     uint16_t light_bump_center_left; /**< Raw center left
00199       bumper signal. */
00200     uint16_t light_bump_center_right; /**< Raw center right
00201       bumper signal. */
00202     uint16_t light_bump_front_right; /**< Raw front right
00203       bumper signal. */
00204     uint16_t light_bump_right; /**< Raw right bumper signal. */
00205     int32_t ir_opcode_left; /**< 
00206       Left receiver opcode. */
00207     int32_t ir_opcode_right; /**< 
00208       Right receiver opcode. */
00209     int16_t left_motor_current; /**< Left motor current in mA. */
00210     int16_t right_motor_current; /**< Right motor current in mA. */
00211     int16_t main_brush_current; /**< Main brush current in mA. */
00212     int16_t side_brush_current; /**< Side brush current in mA. */
00213     bool caster_stasis; /**< Caster wheel stasis. */
00214   } Roomba500Interface_data_t;
00215 #pragma pack(pop)
00216 
00217   Roomba500Interface_data_t *data;
00218 
00219  public:
00220   /* messages */
00221   class StopMessage : public Message
00222   {
00223    private:
00224 #pragma pack(push,4)
00225     /** Internal data storage, do NOT modify! */
00226     typedef struct {
00227       int64_t timestamp_sec;  /**< Interface Unix timestamp, seconds */
00228       int64_t timestamp_usec; /**< Interface Unix timestamp, micro-seconds */
00229     } StopMessage_data_t;
00230 #pragma pack(pop)
00231 
00232     StopMessage_data_t *data;
00233 
00234    public:
00235     StopMessage();
00236     ~StopMessage();
00237 
00238     StopMessage(const StopMessage *m);
00239     /* Methods */
00240     virtual Message * clone() const;
00241   };
00242 
00243   class DockMessage : public Message
00244   {
00245    private:
00246 #pragma pack(push,4)
00247     /** Internal data storage, do NOT modify! */
00248     typedef struct {
00249       int64_t timestamp_sec;  /**< Interface Unix timestamp, seconds */
00250       int64_t timestamp_usec; /**< Interface Unix timestamp, micro-seconds */
00251     } DockMessage_data_t;
00252 #pragma pack(pop)
00253 
00254     DockMessage_data_t *data;
00255 
00256    public:
00257     DockMessage();
00258     ~DockMessage();
00259 
00260     DockMessage(const DockMessage *m);
00261     /* Methods */
00262     virtual Message * clone() const;
00263   };
00264 
00265   class SetModeMessage : public Message
00266   {
00267    private:
00268 #pragma pack(push,4)
00269     /** Internal data storage, do NOT modify! */
00270     typedef struct {
00271       int64_t timestamp_sec;  /**< Interface Unix timestamp, seconds */
00272       int64_t timestamp_usec; /**< Interface Unix timestamp, micro-seconds */
00273       int32_t mode; /**< Open Interface mode. */
00274     } SetModeMessage_data_t;
00275 #pragma pack(pop)
00276 
00277     SetModeMessage_data_t *data;
00278 
00279    public:
00280     SetModeMessage(const Mode ini_mode);
00281     SetModeMessage();
00282     ~SetModeMessage();
00283 
00284     SetModeMessage(const SetModeMessage *m);
00285     /* Methods */
00286     Mode mode() const;
00287     void set_mode(const Mode new_mode);
00288     size_t maxlenof_mode() const;
00289     virtual Message * clone() const;
00290   };
00291 
00292   class DriveStraightMessage : public Message
00293   {
00294    private:
00295 #pragma pack(push,4)
00296     /** Internal data storage, do NOT modify! */
00297     typedef struct {
00298       int64_t timestamp_sec;  /**< Interface Unix timestamp, seconds */
00299       int64_t timestamp_usec; /**< Interface Unix timestamp, micro-seconds */
00300       int16_t velocity; /**< Requested velocity in mm/s. */
00301     } DriveStraightMessage_data_t;
00302 #pragma pack(pop)
00303 
00304     DriveStraightMessage_data_t *data;
00305 
00306    public:
00307     DriveStraightMessage(const int16_t ini_velocity);
00308     DriveStraightMessage();
00309     ~DriveStraightMessage();
00310 
00311     DriveStraightMessage(const DriveStraightMessage *m);
00312     /* Methods */
00313     int16_t velocity() const;
00314     void set_velocity(const int16_t new_velocity);
00315     size_t maxlenof_velocity() const;
00316     virtual Message * clone() const;
00317   };
00318 
00319   class DriveMessage : public Message
00320   {
00321    private:
00322 #pragma pack(push,4)
00323     /** Internal data storage, do NOT modify! */
00324     typedef struct {
00325       int64_t timestamp_sec;  /**< Interface Unix timestamp, seconds */
00326       int64_t timestamp_usec; /**< Interface Unix timestamp, micro-seconds */
00327       int16_t velocity; /**< Requested velocity in mm/s. */
00328       int16_t radius; /**< Requested radius in mm. */
00329     } DriveMessage_data_t;
00330 #pragma pack(pop)
00331 
00332     DriveMessage_data_t *data;
00333 
00334    public:
00335     DriveMessage(const int16_t ini_velocity, const int16_t ini_radius);
00336     DriveMessage();
00337     ~DriveMessage();
00338 
00339     DriveMessage(const DriveMessage *m);
00340     /* Methods */
00341     int16_t velocity() const;
00342     void set_velocity(const int16_t new_velocity);
00343     size_t maxlenof_velocity() const;
00344     int16_t radius() const;
00345     void set_radius(const int16_t new_radius);
00346     size_t maxlenof_radius() const;
00347     virtual Message * clone() const;
00348   };
00349 
00350   class SetMotorsMessage : public Message
00351   {
00352    private:
00353 #pragma pack(push,4)
00354     /** Internal data storage, do NOT modify! */
00355     typedef struct {
00356       int64_t timestamp_sec;  /**< Interface Unix timestamp, seconds */
00357       int64_t timestamp_usec; /**< Interface Unix timestamp, micro-seconds */
00358       bool vacuuming; /**< Enable vacuuming? */
00359       int32_t main; /**< Main brush state. */
00360       int32_t side; /**< Side brush state. */
00361     } SetMotorsMessage_data_t;
00362 #pragma pack(pop)
00363 
00364     SetMotorsMessage_data_t *data;
00365 
00366    public:
00367     SetMotorsMessage(const bool ini_vacuuming, const BrushState ini_main, const BrushState ini_side);
00368     SetMotorsMessage();
00369     ~SetMotorsMessage();
00370 
00371     SetMotorsMessage(const SetMotorsMessage *m);
00372     /* Methods */
00373     bool is_vacuuming() const;
00374     void set_vacuuming(const bool new_vacuuming);
00375     size_t maxlenof_vacuuming() const;
00376     BrushState main() const;
00377     void set_main(const BrushState new_main);
00378     size_t maxlenof_main() const;
00379     BrushState side() const;
00380     void set_side(const BrushState new_side);
00381     size_t maxlenof_side() const;
00382     virtual Message * clone() const;
00383   };
00384 
00385   virtual bool message_valid(const Message *message) const;
00386  private:
00387   Roomba500Interface();
00388   ~Roomba500Interface();
00389 
00390  public:
00391   /* Methods */
00392   Mode mode() const;
00393   void set_mode(const Mode new_mode);
00394   size_t maxlenof_mode() const;
00395   bool is_wheel_drop_left() const;
00396   void set_wheel_drop_left(const bool new_wheel_drop_left);
00397   size_t maxlenof_wheel_drop_left() const;
00398   bool is_wheel_drop_right() const;
00399   void set_wheel_drop_right(const bool new_wheel_drop_right);
00400   size_t maxlenof_wheel_drop_right() const;
00401   bool is_bump_left() const;
00402   void set_bump_left(const bool new_bump_left);
00403   size_t maxlenof_bump_left() const;
00404   bool is_bump_right() const;
00405   void set_bump_right(const bool new_bump_right);
00406   size_t maxlenof_bump_right() const;
00407   bool is_wall() const;
00408   void set_wall(const bool new_wall);
00409   size_t maxlenof_wall() const;
00410   bool is_cliff_left() const;
00411   void set_cliff_left(const bool new_cliff_left);
00412   size_t maxlenof_cliff_left() const;
00413   bool is_cliff_front_left() const;
00414   void set_cliff_front_left(const bool new_cliff_front_left);
00415   size_t maxlenof_cliff_front_left() const;
00416   bool is_cliff_front_right() const;
00417   void set_cliff_front_right(const bool new_cliff_front_right);
00418   size_t maxlenof_cliff_front_right() const;
00419   bool is_cliff_right() const;
00420   void set_cliff_right(const bool new_cliff_right);
00421   size_t maxlenof_cliff_right() const;
00422   bool is_virtual_wall() const;
00423   void set_virtual_wall(const bool new_virtual_wall);
00424   size_t maxlenof_virtual_wall() const;
00425   bool is_overcurrent_side_brush() const;
00426   void set_overcurrent_side_brush(const bool new_overcurrent_side_brush);
00427   size_t maxlenof_overcurrent_side_brush() const;
00428   bool is_overcurrent_main_brush() const;
00429   void set_overcurrent_main_brush(const bool new_overcurrent_main_brush);
00430   size_t maxlenof_overcurrent_main_brush() const;
00431   bool is_overcurrent_left_wheel() const;
00432   void set_overcurrent_left_wheel(const bool new_overcurrent_left_wheel);
00433   size_t maxlenof_overcurrent_left_wheel() const;
00434   bool is_overcurrent_right_wheel() const;
00435   void set_overcurrent_right_wheel(const bool new_overcurrent_right_wheel);
00436   size_t maxlenof_overcurrent_right_wheel() const;
00437   bool is_dirt_detect() const;
00438   void set_dirt_detect(const bool new_dirt_detect);
00439   size_t maxlenof_dirt_detect() const;
00440   InfraredCharacter ir_opcode_omni() const;
00441   void set_ir_opcode_omni(const InfraredCharacter new_ir_opcode_omni);
00442   size_t maxlenof_ir_opcode_omni() const;
00443   bool is_button_clean() const;
00444   void set_button_clean(const bool new_button_clean);
00445   size_t maxlenof_button_clean() const;
00446   bool is_button_spot() const;
00447   void set_button_spot(const bool new_button_spot);
00448   size_t maxlenof_button_spot() const;
00449   bool is_button_dock() const;
00450   void set_button_dock(const bool new_button_dock);
00451   size_t maxlenof_button_dock() const;
00452   bool is_button_minute() const;
00453   void set_button_minute(const bool new_button_minute);
00454   size_t maxlenof_button_minute() const;
00455   bool is_button_hour() const;
00456   void set_button_hour(const bool new_button_hour);
00457   size_t maxlenof_button_hour() const;
00458   bool is_button_day() const;
00459   void set_button_day(const bool new_button_day);
00460   size_t maxlenof_button_day() const;
00461   bool is_button_schedule() const;
00462   void set_button_schedule(const bool new_button_schedule);
00463   size_t maxlenof_button_schedule() const;
00464   bool is_button_clock() const;
00465   void set_button_clock(const bool new_button_clock);
00466   size_t maxlenof_button_clock() const;
00467   int16_t distance() const;
00468   void set_distance(const int16_t new_distance);
00469   size_t maxlenof_distance() const;
00470   int16_t angle() const;
00471   void set_angle(const int16_t new_angle);
00472   size_t maxlenof_angle() const;
00473   ChargingState charging_state() const;
00474   void set_charging_state(const ChargingState new_charging_state);
00475   size_t maxlenof_charging_state() const;
00476   uint16_t voltage() const;
00477   void set_voltage(const uint16_t new_voltage);
00478   size_t maxlenof_voltage() const;
00479   int16_t current() const;
00480   void set_current(const int16_t new_current);
00481   size_t maxlenof_current() const;
00482   int8_t temperature() const;
00483   void set_temperature(const int8_t new_temperature);
00484   size_t maxlenof_temperature() const;
00485   uint16_t battery_charge() const;
00486   void set_battery_charge(const uint16_t new_battery_charge);
00487   size_t maxlenof_battery_charge() const;
00488   uint16_t battery_capacity() const;
00489   void set_battery_capacity(const uint16_t new_battery_capacity);
00490   size_t maxlenof_battery_capacity() const;
00491   uint16_t wall_signal() const;
00492   void set_wall_signal(const uint16_t new_wall_signal);
00493   size_t maxlenof_wall_signal() const;
00494   uint16_t cliff_left_signal() const;
00495   void set_cliff_left_signal(const uint16_t new_cliff_left_signal);
00496   size_t maxlenof_cliff_left_signal() const;
00497   uint16_t cliff_front_left_signal() const;
00498   void set_cliff_front_left_signal(const uint16_t new_cliff_front_left_signal);
00499   size_t maxlenof_cliff_front_left_signal() const;
00500   uint16_t cliff_front_right_signal() const;
00501   void set_cliff_front_right_signal(const uint16_t new_cliff_front_right_signal);
00502   size_t maxlenof_cliff_front_right_signal() const;
00503   uint16_t cliff_right_signal() const;
00504   void set_cliff_right_signal(const uint16_t new_cliff_right_signal);
00505   size_t maxlenof_cliff_right_signal() const;
00506   bool is_home_base_charger_available() const;
00507   void set_home_base_charger_available(const bool new_home_base_charger_available);
00508   size_t maxlenof_home_base_charger_available() const;
00509   bool is_internal_charger_available() const;
00510   void set_internal_charger_available(const bool new_internal_charger_available);
00511   size_t maxlenof_internal_charger_available() const;
00512   uint8_t song_number() const;
00513   void set_song_number(const uint8_t new_song_number);
00514   size_t maxlenof_song_number() const;
00515   bool is_song_playing() const;
00516   void set_song_playing(const bool new_song_playing);
00517   size_t maxlenof_song_playing() const;
00518   int16_t velocity() const;
00519   void set_velocity(const int16_t new_velocity);
00520   size_t maxlenof_velocity() const;
00521   int16_t radius() const;
00522   void set_radius(const int16_t new_radius);
00523   size_t maxlenof_radius() const;
00524   int16_t velocity_right() const;
00525   void set_velocity_right(const int16_t new_velocity_right);
00526   size_t maxlenof_velocity_right() const;
00527   int16_t velocity_left() const;
00528   void set_velocity_left(const int16_t new_velocity_left);
00529   size_t maxlenof_velocity_left() const;
00530   uint16_t encoder_counts_left() const;
00531   void set_encoder_counts_left(const uint16_t new_encoder_counts_left);
00532   size_t maxlenof_encoder_counts_left() const;
00533   uint16_t encoder_counts_right() const;
00534   void set_encoder_counts_right(const uint16_t new_encoder_counts_right);
00535   size_t maxlenof_encoder_counts_right() const;
00536   bool is_bumper_left() const;
00537   void set_bumper_left(const bool new_bumper_left);
00538   size_t maxlenof_bumper_left() const;
00539   bool is_bumper_front_left() const;
00540   void set_bumper_front_left(const bool new_bumper_front_left);
00541   size_t maxlenof_bumper_front_left() const;
00542   bool is_bumper_center_left() const;
00543   void set_bumper_center_left(const bool new_bumper_center_left);
00544   size_t maxlenof_bumper_center_left() const;
00545   bool is_bumper_center_right() const;
00546   void set_bumper_center_right(const bool new_bumper_center_right);
00547   size_t maxlenof_bumper_center_right() const;
00548   bool is_bumper_front_right() const;
00549   void set_bumper_front_right(const bool new_bumper_front_right);
00550   size_t maxlenof_bumper_front_right() const;
00551   bool is_bumper_right() const;
00552   void set_bumper_right(const bool new_bumper_right);
00553   size_t maxlenof_bumper_right() const;
00554   uint16_t light_bump_left() const;
00555   void set_light_bump_left(const uint16_t new_light_bump_left);
00556   size_t maxlenof_light_bump_left() const;
00557   uint16_t light_bump_front_left() const;
00558   void set_light_bump_front_left(const uint16_t new_light_bump_front_left);
00559   size_t maxlenof_light_bump_front_left() const;
00560   uint16_t light_bump_center_left() const;
00561   void set_light_bump_center_left(const uint16_t new_light_bump_center_left);
00562   size_t maxlenof_light_bump_center_left() const;
00563   uint16_t light_bump_center_right() const;
00564   void set_light_bump_center_right(const uint16_t new_light_bump_center_right);
00565   size_t maxlenof_light_bump_center_right() const;
00566   uint16_t light_bump_front_right() const;
00567   void set_light_bump_front_right(const uint16_t new_light_bump_front_right);
00568   size_t maxlenof_light_bump_front_right() const;
00569   uint16_t light_bump_right() const;
00570   void set_light_bump_right(const uint16_t new_light_bump_right);
00571   size_t maxlenof_light_bump_right() const;
00572   InfraredCharacter ir_opcode_left() const;
00573   void set_ir_opcode_left(const InfraredCharacter new_ir_opcode_left);
00574   size_t maxlenof_ir_opcode_left() const;
00575   InfraredCharacter ir_opcode_right() const;
00576   void set_ir_opcode_right(const InfraredCharacter new_ir_opcode_right);
00577   size_t maxlenof_ir_opcode_right() const;
00578   int16_t left_motor_current() const;
00579   void set_left_motor_current(const int16_t new_left_motor_current);
00580   size_t maxlenof_left_motor_current() const;
00581   int16_t right_motor_current() const;
00582   void set_right_motor_current(const int16_t new_right_motor_current);
00583   size_t maxlenof_right_motor_current() const;
00584   int16_t main_brush_current() const;
00585   void set_main_brush_current(const int16_t new_main_brush_current);
00586   size_t maxlenof_main_brush_current() const;
00587   int16_t side_brush_current() const;
00588   void set_side_brush_current(const int16_t new_side_brush_current);
00589   size_t maxlenof_side_brush_current() const;
00590   bool is_caster_stasis() const;
00591   void set_caster_stasis(const bool new_caster_stasis);
00592   size_t maxlenof_caster_stasis() const;
00593   virtual Message * create_message(const char *type) const;
00594 
00595   virtual void copy_values(const Interface *other);
00596   virtual const char * enum_tostring(const char *enumtype, int val) const;
00597 
00598 };
00599 
00600 } // end namespace fawkes
00601 
00602 #endif