UniSet  1.4.0
include/ComediInterface.h
00001 // -----------------------------------------------------------------------------
00002 #ifndef ComediInterface_H_
00003 #define ComediInterface_H_
00004 // -----------------------------------------------------------------------------
00005 #include <string>
00006 #include <comedilib.h>
00007 #include "Exceptions.h"
00008 // -----------------------------------------------------------------------------
00010 class ComediInterface
00011 {
00012     public:
00013         ComediInterface( const std::string dev );
00014         ~ComediInterface();
00015 
00016         int getAnalogChannel( int subdev, int channel, int range=0, int aref=AREF_GROUND ) 
00017                 throw(UniSetTypes::Exception);
00018 
00019         void setAnalogChannel( int subdev, int channel, int data, int range=0, int aref=AREF_GROUND ) 
00020                 throw(UniSetTypes::Exception);
00021 
00022         bool getDigitalChannel( int subdev, int channel )
00023                 throw(UniSetTypes::Exception);
00024 
00025         void setDigitalChannel( int subdev, int channel, bool bit )
00026                 throw(UniSetTypes::Exception);
00027 
00028 
00029         // Конфигурирование входов / выходов
00030         enum ChannelType
00031         {
00032             DI  = INSN_CONFIG_DIO_INPUT,
00033             DO  = INSN_CONFIG_DIO_OUTPUT,
00034             AI  = 100,  // INSN_CONFIG_AIO_INPUT,
00035             AO  = 101   // INSN_CONFIG_AIO_OUTPUT
00036         };
00037         
00038         enum SubdevType
00039         {
00040             Unknown = 0,
00041             TBI24_0 = 1,
00042             TBI0_24 = 2,
00043             TBI16_8 = 3,
00044             GRAYHILL = 4
00045         };
00046         
00047         static std::string type2str( SubdevType t );
00048         static SubdevType str2type( const std::string s );
00049 
00050         void configureSubdev( int subdev, SubdevType type ) throw(UniSetTypes::Exception);
00051 
00052         
00053         void configureChannel( int subdev, int channel, ChannelType type, int range=0, int aref=0 )
00054                 throw(UniSetTypes::Exception);
00055         
00056         inline const std::string devname(){ return dname; }
00057         
00058     protected:
00059 
00060         comedi_t* card; 
00061         std::string dname;
00062 
00063     private:
00064 };
00065 // -----------------------------------------------------------------------------
00066 #endif // ComediInterface_H_
00067 // -----------------------------------------------------------------------------
00068