00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #ifndef ARVERSALOGICIO_H
00027 #define ARVERSALOGICIO_H
00028
00029 #ifndef SWIG
00030
00031 #include "ariaTypedefs.h"
00032 #include "ArRobot.h"
00033
00069 class ArVersalogicIO
00070 {
00071 public:
00072
00073 enum Direction
00074 {
00075 DIGITAL_INPUT,
00076 DIGITAL_OUTPUT
00077 };
00078
00080 AREXPORT ArVersalogicIO(const char * dev = "/dev/amrio");
00082 AREXPORT virtual ~ArVersalogicIO(void);
00083
00085 AREXPORT bool closeIO(void);
00086
00088 AREXPORT bool isEnabled(void) { return myEnabled; }
00089
00091 AREXPORT bool isAnalogSupported(void) { return myAnalogEnabled; }
00092
00096 AREXPORT bool getAnalogValue(int port, double *val);
00097
00100 AREXPORT bool getAnalogValueRaw(int port, int *val);
00101
00103 AREXPORT Direction getDigitalBankDirection(int bank);
00104
00106 AREXPORT bool setDigitalBankDirection(int bank, Direction dir);
00107
00109 AREXPORT bool getDigitalBankInputs(int bank, unsigned char *val);
00110
00112 AREXPORT bool getDigitalBankOutputs(int bank, unsigned char *val);
00113
00115 AREXPORT bool setDigitalBankOutputs(int bank, unsigned char val);
00116
00118 AREXPORT bool getSpecialControlRegister(unsigned char *val);
00119
00121 AREXPORT int lock(void){ return(myMutex.lock()); }
00123 AREXPORT int unlock(void){ return(myMutex.unlock()); }
00124
00126 AREXPORT int tryLock() {return(myMutex.tryLock());}
00127
00128 protected:
00129
00130 static ArMutex myMutex;
00131 int myFD;
00132
00133 bool myEnabled;
00134 bool myAnalogEnabled;
00135
00136 int myNumBanks;
00137
00138 unsigned char myDigitalBank0;
00139 unsigned char myDigitalBank1;
00140 unsigned char myDigitalBank2;
00141 unsigned char myDigitalBank3;
00142
00143 ArRetFunctorC<bool, ArVersalogicIO> myDisconnectCB;
00144 };
00145
00146 #endif // SWIG
00147
00148 #endif // ARVERSALOGICIO_H