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