00001
00009 #include <termios.h>
00010 #include <sys/types.h>
00011 #include <sys/stat.h>
00012 #include <pthread.h>
00015 #define SCPATH "/dev/ttyS0"
00016
00022
00023 #define INPUTCTRL 0x00
00024
00025 #define MOTORMODE 0x01
00026
00027 #define AMPLIMIT 0x02
00028
00029 #define ACCELERATION 0x03
00030
00031 #define INPUTSWITCH 0x04
00032
00033 #define BRAKE 0x05
00034
00035 #define JOYDEADBAND 0x06
00036
00037 #define EXPON1 0x07
00038
00039 #define EXPON2 0x08
00040
00041 #define GAININT 0x0F
00042
00043 #define GAINDIFF 0x10
00044
00045 #define GAINPROP 0x11
00046
00047
00048 #ifndef ROBOTEQSC_H
00049 #define ROBOTEQSC_H
00050
00051 class RoboteqSC{
00052 public:
00056 enum {
00057 baudrate = B9600
00058 };
00062 enum status {
00064 OPEN = 1,
00066 CLOSED = 0,
00068 ERROR = -1
00069 };
00070
00074 enum Motor {
00076 MOTOR0 = 0x41,
00078 MOTOR1 = 0x42,
00080 MOTOR0BKW = 0x61,
00082 MOTOR1BKW = 0x62
00083 };
00084
00090 static RoboteqSC * theInstance();
00091
00096 inline status getStatus() {return SCStatus;}
00097
00103 int openSC();
00104
00110 int closeSC();
00111
00121 int setMotorSpeed(int motor, int speed);
00122
00128 int getPower(int motor);
00129
00135 int getAmps(int motor);
00136
00141 int getControllerTemp();
00142
00148 int convertTemp(int input);
00149
00155 int applyParam();
00156
00160 void resetController();
00161
00167 int readParamSetting(int param);
00168
00176 int setParam(int param, int value);
00177
00182 int sem_P();
00183
00188 int sem_V();
00189
00199 static void watchDog();
00200
00206 int openCommand();
00207
00212 int getfd();
00213
00214 protected:
00218 RoboteqSC();
00219
00223 ~RoboteqSC();
00224
00225 private:
00227 status SCStatus;
00228
00230 int fd;
00231
00233 struct termios oldttyS;
00234
00236 struct termios newttyS;
00237
00239 fd_set set;
00240
00242 struct timeval tv;
00243
00245 pthread_t scThread;
00246
00248 int roboteqsv;
00249 };
00250 #endif //ROBOTEQSC_H
00251