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
00027 #ifndef ARVERSALOGICIO_H
00028 #define ARVERSALOGICIO_H
00029
00030 #ifndef SWIG
00031
00032 #include "ariaTypedefs.h"
00033 #include "ArRobot.h"
00034
00059 class ArVersalogicIO
00060 {
00061 public:
00062
00063 enum Direction
00064 {
00065 DIGITAL_INPUT,
00066 DIGITAL_OUTPUT
00067 };
00068
00070 ArVersalogicIO(const char * dev = "/dev/amrio");
00072 virtual ~ArVersalogicIO(void);
00073
00075 bool isEnabled(void) { return myEnabled; }
00076
00078 bool isAnalogSupported(void) { return false; }
00079
00081 bool getAnalogValue(int port, double *val);
00082
00084 Direction getDigitalBankDirection(int bank);
00085
00087 bool setDigitalBankDirection(int bank, Direction dir);
00088
00090 bool getDigitalBankInputs(int bank, unsigned char *val);
00091
00093 bool getDigitalBankOutputs(int bank, unsigned char *val);
00094
00096 bool setDigitalBankOutputs(int bank, unsigned char val);
00097
00099 bool getSpecialControlRegister(unsigned char *val);
00100
00102 int lock(void){ return(myMutex.lock()); }
00104 int unlock(void){ return(myMutex.unlock()); }
00105
00107 int tryLock() {return(myMutex.tryLock());}
00108
00109 protected:
00110
00111 static ArMutex myMutex;
00112 int myFD;
00113
00114 bool myEnabled;
00115 bool myAnalogEnabled;
00116
00117 int myNumBanks;
00118
00119 unsigned char myDigitalBank0;
00120 unsigned char myDigitalBank1;
00121 unsigned char myDigitalBank2;
00122 unsigned char myDigitalBank3;
00123 };
00124
00125 #endif // SWIG
00126
00127 #endif // ARVERSALOGICIO_H