AMOR API library  V1.1.44
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator
amor.h
Go to the documentation of this file.
00001 #ifndef AMOR_H
00002 #define AMOR_H
00003 
00017 #ifdef __cplusplus
00018 extern "C" {
00019 #endif // __cplusplus
00020 
00021 #ifndef AMOR_EXPORT
00022     #define AMOR_EXPORT
00023 #endif
00024 
00030 // TYPE DEFINITIONS
00031 
00033 typedef void*   AMOR_HANDLE;
00035 typedef int     AMOR_RESULT;
00037 typedef double  real;
00038 
00040 #define         AMOR_SUCCESS                  0
00041 
00042 #define         AMOR_FAILED                   -1
00043 
00044 #define         AMOR_INVALID_HANDLE           0
00045 
00047 #define         AMOR_NO_WARNING               0
00048 
00049 #define         AMOR_WARN_TEMPERATURE         1
00050 
00051 #define         AMOR_WARN_LOWER_END_SWITCH    2
00052 
00053 #define         AMOR_WARN_UPPER_END_SWITCH    3
00054 
00055 #define         AMOR_WARN_BUFFER_EMPTY        5
00056 
00058 #define         AMOR_NUM_JOINTS               7
00059 
00061 #define         AMOR_ERROR_NONE               0
00062 
00063 #define         AMOR_ERROR_UNKNOWN            1
00064 
00065 #define         AMOR_ERROR_CONNECTION_FAILURE 2
00066 
00067 #define         AMOR_ERROR_INVALID_ARGUMENT   3
00068 
00069 #define         AMOR_ERROR_COMMUNICATION      4
00070 
00071 #define         AMOR_ERROR_CAN_DRIVER         5
00072 
00074 typedef struct tagAMOR_JOINT_INFO {
00076     real maxCurrent;
00078     real maxVoltage;
00080     real maxVelocity;
00082     real maxAcceleration;
00084     real lowerJointLimit;
00086     real upperJointLimit;
00087 } AMOR_JOINT_INFO;
00088 
00090 typedef struct tagAMOR_JOINT_VERSION {
00092     unsigned char major;
00094     unsigned char minor;
00096     unsigned short revision;
00098     unsigned char parameters_version;
00099 } AMOR_JOINT_VERSION;
00100 
00102 typedef real AMOR_VECTOR7[AMOR_NUM_JOINTS];
00103 
00105 typedef struct tagAMOR_MATRIX44 {
00106     union {
00107         struct {
00108             real        _11, _12, _13, _14;
00109             real        _21, _22, _23, _24;
00110             real        _31, _32, _33, _34;
00111             real        _41, _42, _43, _44;
00112         };
00113         real m[4][4];
00114     };
00115 } AMOR_MATRIX44;
00116 
00118 enum amor_movement_status{
00120     AMOR_MOVEMENT_STATUS_MOVING,
00122     AMOR_MOVEMENT_STATUS_PENDING,
00124     AMOR_MOVEMENT_STATUS_FINISHED
00125 };
00126 
00136 AMOR_EXPORT void amor_get_library_version(int* major, int* minor, int* build);
00137 
00159 AMOR_EXPORT AMOR_HANDLE amor_connect(char* libraryName, int can_port);
00160 
00170 AMOR_EXPORT AMOR_RESULT amor_set_currents(AMOR_HANDLE handle, AMOR_VECTOR7 currents);
00171 
00180 AMOR_EXPORT AMOR_RESULT amor_get_req_currents(AMOR_HANDLE handle, AMOR_VECTOR7 *currents);
00181 
00191 AMOR_EXPORT AMOR_RESULT amor_get_actual_currents(AMOR_HANDLE handle, AMOR_VECTOR7 *currents);
00192 
00201 AMOR_EXPORT AMOR_RESULT amor_set_voltages(AMOR_HANDLE handle, AMOR_VECTOR7 voltages);
00202 
00211 AMOR_EXPORT AMOR_RESULT amor_get_req_voltages(AMOR_HANDLE handle, AMOR_VECTOR7 *voltages);
00212 
00222 AMOR_EXPORT AMOR_RESULT amor_get_actual_voltages(AMOR_HANDLE handle, AMOR_VECTOR7* voltages);
00223 
00236 AMOR_EXPORT AMOR_RESULT amor_set_positions(AMOR_HANDLE handle, AMOR_VECTOR7 positions);
00237 
00244 AMOR_EXPORT AMOR_RESULT amor_get_req_positions(AMOR_HANDLE handle, AMOR_VECTOR7* positions);
00245 
00258 AMOR_EXPORT AMOR_RESULT amor_get_actual_positions(AMOR_HANDLE handle, AMOR_VECTOR7* positions);
00259 
00272 AMOR_EXPORT AMOR_RESULT amor_set_velocities(AMOR_HANDLE handle, AMOR_VECTOR7 velocities);
00273 
00280 AMOR_EXPORT AMOR_RESULT amor_get_req_velocities(AMOR_HANDLE handle, AMOR_VECTOR7* velocities);
00281 
00294 AMOR_EXPORT AMOR_RESULT amor_get_actual_velocities(AMOR_HANDLE handle, AMOR_VECTOR7* velocities);
00295 
00317 AMOR_EXPORT AMOR_RESULT amor_emergency_stop(AMOR_HANDLE handle);
00318 
00335 AMOR_EXPORT AMOR_RESULT amor_controlled_stop(AMOR_HANDLE handle);
00336 
00344 AMOR_EXPORT AMOR_RESULT amor_release(AMOR_HANDLE handle);
00345 
00351 AMOR_EXPORT AMOR_RESULT amor_get_status(AMOR_HANDLE handle, int joint, int *status);
00352 
00364 AMOR_EXPORT AMOR_RESULT amor_get_joint_info(AMOR_HANDLE handle, int joint, AMOR_JOINT_INFO* parameters);
00365 
00376 AMOR_EXPORT AMOR_RESULT amor_get_movement_status(AMOR_HANDLE handle, amor_movement_status* status);
00377 
00390 AMOR_EXPORT AMOR_RESULT amor_set_cartesian_velocities(AMOR_HANDLE handle, AMOR_VECTOR7 velocities);
00391 
00404 AMOR_EXPORT AMOR_RESULT amor_set_cartesian_positions(AMOR_HANDLE handle, AMOR_VECTOR7 positions);
00405 
00415 AMOR_EXPORT AMOR_RESULT amor_get_cartesian_position(AMOR_HANDLE handle, AMOR_VECTOR7 &positions);
00416 
00418 AMOR_EXPORT unsigned int amor_errno();
00419 
00421 AMOR_EXPORT const char* amor_error();
00422 
00425 #ifdef __cplusplus
00426 }
00427 #endif /* __cplusplus */
00428 
00429 #endif // AMOR_H