00001
00028
00029
00030 #ifndef SDHBASE_H_
00031 #define SDHBASE_H_
00032
00033 #include "sdhlibrary_settings.h"
00034
00035 #if SDH_USE_VCC
00036 # pragma warning(disable : 4290)
00037 #endif
00038
00039
00040
00041
00042
00043 #include "iostream"
00044
00045
00046
00047
00048
00049 #include "dbg.h"
00050 #include "sdhexception.h"
00051 #include "simplevector.h"
00052
00053
00054
00055
00056
00057 NAMESPACE_SDH_START
00058
00059
00060
00061
00062
00063
00064 extern VCC_EXPORT std::ostream* g_sdh_debug_log;
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00078 class VCC_EXPORT cSDHErrorInvalidParameter: public cSDHLibraryException
00079 {
00080 public:
00081 cSDHErrorInvalidParameter( cMsg const & _msg )
00082 : cSDHLibraryException( "cSDHErrorInvalidParameter", _msg )
00083 {}
00084 };
00085
00086
00097 class VCC_EXPORT cSDHBase
00098 {
00099 public:
00100
00102 enum {
00103 All = -1
00104 };
00105
00106
00112 enum eErrorCode
00113 {
00114 eEC_SUCCESS = 0,
00115 eEC_NOT_AVAILABLE,
00116 eEC_NOT_INITIALIZED,
00117 eEC_ALREADY_RUNNING,
00118 eEC_FEATURE_NOT_SUPPORTED,
00119 eEC_INCONSISTENT_DATA,
00120 eEC_TIMEOUT,
00121 eEC_READ_ERROR,
00122 eEC_WRITE_ERROR,
00123 eEC_INSUFFICIENT_RESOURCES,
00124 eEC_CHECKSUM_ERROR,
00125 eEC_NOT_ENOUGH_PARAMS,
00126 eEC_NO_PARAMS_EXPECTED,
00127 eEC_CMD_UNKNOWN,
00128 eEC_CMD_FORMAT_ERROR,
00129 eEC_ACCESS_DENIED,
00130 eEC_ALREADY_OPEN,
00131 eEC_CMD_FAILED,
00132 eEC_CMD_ABORTED,
00133 eEC_INVALID_HANDLE,
00134 eEC_DEVICE_NOT_FOUND,
00135 eEC_DEVICE_NOT_OPENED,
00136 eEC_IO_ERROR,
00137 eEC_INVALID_PARAMETER,
00138 eEC_RANGE_ERROR,
00139 eEC_NO_DATAPIPE,
00140 eEC_INDEX_OUT_OF_BOUNDS,
00141 eEC_HOMING_ERROR,
00142 eEC_AXIS_DISABLED,
00143 eEC_OVER_TEMPERATURE,
00144 eEC_MAX_COMMANDS_EXCEEDED,
00145 eEC_INVALID_PASSWORD,
00146 eEC_MAX_COMMANDLINE_EXCEEDED,
00147 eEC_CRC_ERROR,
00148 eEC_NO_COMMAND,
00149
00150 eEC_INTERNAL,
00151 eEC_UNKNOWN_ERROR,
00152
00153 eEC_DIMENSION
00154 };
00155
00156
00162 enum eGraspId
00163 {
00164
00165 eGID_INVALID = -1,
00166 eGID_CENTRICAL = 0,
00167 eGID_PARALLEL = 1,
00168 eGID_CYLINDRICAL = 2,
00169 eGID_SPHERICAL = 3,
00170
00171 eGID_DIMENSION
00172 };
00173
00174
00176 enum eControllerType
00177 {
00178 eCT_INVALID = -1,
00179 eCT_POSE = 0,
00180 eCT_VELOCITY,
00181 eCT_VELOCITY_ACCELERATION,
00182
00183
00184
00185
00186 eCT_DIMENSION
00187 };
00188
00189
00191 enum eVelocityProfile
00192 {
00193 eVP_INVALID = -1,
00194 eVP_SIN_SQUARE,
00195 eVP_RAMP,
00196
00197 eVP_DIMENSION
00198 };
00199
00200
00210 cSDHBase( int debug_level );
00211
00212
00213
00217 virtual ~cSDHBase()
00218 {}
00219
00220
00222 void CheckIndex( int index, int maxindex, char const* name="" )
00223 throw (cSDHErrorInvalidParameter*);
00224
00225
00227 void CheckRange( double value, double minvalue, double maxvalue, char const* name="" )
00228 throw (cSDHErrorInvalidParameter*);
00229
00230
00232 void CheckRange( double* values, double* minvalues, double* maxvalues, char const* name="" )
00233 throw (cSDHErrorInvalidParameter*);
00234
00235
00237 static char const* GetStringFromErrorCode( eErrorCode error_code );
00238
00239
00241 static char const* GetStringFromGraspId( eGraspId grasp_id );
00242
00243
00245 static char const* GetStringFromControllerType( eControllerType controller_type );
00246
00247
00249 int GetNumberOfAxes( void );
00250
00251
00253 int GetNumberOfFingers( void );
00254
00255
00257 int GetNumberOfTemperatureSensors( void );
00258
00259
00261 eErrorCode GetFirmwareState( void );
00262
00263
00265 double GetEps( void );
00266
00267
00269 cSimpleVector const & GetEpsVector( void );
00270
00271
00273 virtual bool IsOpen( void ) = 0;
00274
00276 virtual void SetDebugOutput( std::ostream* debuglog )
00277 {
00278 cdbg.SetOutput( debuglog );
00279 }
00280 protected:
00282 cDBG cdbg;
00283
00285 int debug_level;
00286
00288 static char const* firmware_error_codes[];
00289
00290
00292 static char const* grasp_id_name[];
00293
00294
00296 static char const* controller_type_name[];
00297
00298
00300 int NUMBER_OF_AXES;
00301
00303 int NUMBER_OF_FINGERS;
00304
00306 int NUMBER_OF_TEMPERATURE_SENSORS;
00307
00309 int all_axes_used;
00310
00312 eErrorCode firmware_state;
00313
00318 double eps;
00319
00321 cSimpleVector eps_v;
00322
00324
00325
00327
00328
00330 cSimpleVector min_angle_v;
00331
00333 cSimpleVector max_angle_v;
00334
00335 };
00336
00337
00338
00339
00340 NAMESPACE_SDH_END
00341
00342 #endif
00343
00344
00345
00346
00347
00348
00349
00350
00351
00352
00353
00354
00355