Relacs DAQ Library  0.9.8
Public Member Functions | Protected Member Functions | Static Protected Attributes | List of all members
DigitalIO Class Referenceabstract

#include <digitalio.h>

Inheritance diagram for DigitalIO:
Inheritance graph
[legend]
Collaboration diagram for DigitalIO:
Collaboration graph
[legend]

Public Member Functions

 DigitalIO (const string &deviceclass)
 
virtual ~DigitalIO (void)
 
virtual int open (const string &device) override
 
virtual int open (Device &device) override
 
virtual bool isOpen (void) const =0
 
virtual void close (void)=0
 
virtual int lines (void) const =0
 
virtual const Options & settings (void) const
 
int allocateLines (unsigned int lines)
 
int allocateLine (unsigned int line)
 
int allocateLine (unsigned int line, int id)
 
void freeLines (int id)
 
bool allocatedLines (unsigned int lines, int id)
 
bool allocatedLines (unsigned int lines)
 
bool allocatedLine (unsigned int line, int id)
 
bool allocatedLine (unsigned int line)
 
virtual int configureLine (unsigned int line, bool output)
 
virtual int configureLines (unsigned int lines, unsigned int output)
 
bool lineConfiguration (unsigned int line) const
 
virtual int write (unsigned int line, bool val)=0
 
virtual int read (unsigned int line, bool &val)=0
 
virtual int writeLines (unsigned int lines, unsigned int val)=0
 
virtual int readLines (unsigned int lines, unsigned int &val)=0
 
virtual int setSyncPulse (int modemask, int modebits, unsigned int line, double duration, int mode=0)
 
virtual int clearSyncPulse (int modemask, int modebits)
 
- Public Member Functions inherited from Device
 Device (int type=MiscellaneousType)
 
 Device (const string &deviceclass, int type=MiscellaneousType)
 
virtual ~Device (void)
 
virtual int reset (void)
 
virtual const Options & info (void) const
 
int deviceType (void) const
 
string deviceTypeStr (void) const
 
string deviceClass (void) const
 
string deviceFile (void) const
 
string deviceName (void) const
 
string deviceVendor (void) const
 
string deviceIdent (void) const
 
virtual void setDeviceIdent (const string &ident)
 
virtual void clearError (void)
 
virtual string errorStr (void) const
 
void setErrorStr (const string &strg)
 
void addErrorStr (const string &strg)
 
void setErrorStr (int errnum)
 
void addErrorStr (int errnum)
 
virtual bool success (void) const
 
virtual bool failed (void) const
 

Protected Member Functions

void freeLines (void)
 
void setInfo (void)
 
- Protected Member Functions inherited from Device
void setDeviceType (int type)
 
void setDeviceClass (const string &deviceclass)
 
void setDeviceFile (const string &devicefile)
 
void setDeviceName (const string &devicename)
 
void setDeviceVendor (const string &devicevendor)
 
void addInfo (void)
 
void lock (void) const
 
void unlock (void) const
 
QMutex * mutex (void) const
 
virtual void initOptions (void)
 

Static Protected Attributes

static const unsigned int MaxDIOLines = 32
 

Additional Inherited Members

- Public Types inherited from Device
enum  DeviceTypes {
  MiscellaneousType = 0, AnalogInputType = 1, AnalogOutputType = 2, DigitalIOType = 3,
  TriggerType = 4, AttenuatorType = 5, AttenuateType = 6, ManipulatorType = 7,
  TemperatureType = 8, CameraType = 9
}
 
- Static Public Member Functions inherited from Device
static int deviceTypes (void)
 
static string deviceTypeStr (int type)
 
static string getErrorStr (int ern)
 
- Static Public Attributes inherited from Device
static const int NotOpen = -1
 
static const int InvalidDevice = -2
 
static const int ReadError = -3
 
static const int WriteError = -4
 
static const int InvalidParam = -5
 
- Protected Attributes inherited from Device
Options Info
 
Options Settings
 

Detailed Description

Interface for accessing digital input and output lines of a data-aquisition board.

Author
Jan Benda
Version
1.0 A digital I/O device has lines() of input or output lines that can be high or low. There a two ways to access the digital I/O lines. Either individually by their line (channel) number, or in groups by a bit pattern, where ech bit represents a single line (channel).

After opening the device by open(), the digitial I/O lines that you are going to use should be allocated by allocateLines() or allocateLine().

Then the digital I/O lines should be configured for input or output using configureLines() or configureLine().

Bits can be read from or written to the digitial I/O lines by the read() and write() functions.

In case you want to use a digitial I/O device within RELACS, your DigitalIO implementation needs to provide a void default constructor (i.e. with no parameters) that does not open the device. Also, include the header file <relacs/relacsplugin.h> and make the AnalogInput device known to RELACS with the addDigitalIO( ClassNameOfYourDigitalIOImplementation, PluginSetName ) macro.

Constructor & Destructor Documentation

DigitalIO ( const string &  deviceclass)

Constructs an DigitalIO with device class deviceclass.

See Also
setDeviceClass()

References DigitalIO::freeLines(), and DigitalIO::MaxDIOLines.

~DigitalIO ( void  )
virtual

Close the daq driver. Reimplement this destructor.

Member Function Documentation

int open ( const string &  device)
overridevirtual

Open the digital I/O device specified by device.

Returns
zero on success, or InvalidDevice (or any other negative number indicating the error). You should call freeLines() somewhere at the beginning and setInfo() somewhere at the end of the reimplmentation of this function.
See Also
isOpen(), close()

Reimplemented from Device.

References DigitalIO::freeLines(), Device::Info, Device::InvalidDevice, DigitalIO::MaxDIOLines, Device::setDeviceFile(), and Device::Settings.

int open ( Device device)
overridevirtual

Open the digital I/O device specified by device.

Returns
zero on success, or InvalidDevice (or any other negative number indicating the error). You should call freeLines() somewhere at the beginning and setInfo() somewhere at the end of the reimplementation of this function.
See Also
isOpen(), close()

Reimplemented from Device.

References Device::deviceIdent(), DigitalIO::freeLines(), Device::Info, Device::InvalidDevice, DigitalIO::MaxDIOLines, Device::setDeviceFile(), and Device::Settings.

virtual bool isOpen ( void  ) const
pure virtual
Returns
true if the device is open.
See Also
open(), close()

Implements Device.

virtual void close ( void  )
pure virtual

Close the device.

See Also
open(), isOpen()

Implements Device.

virtual int lines ( void  ) const
pure virtual
Returns
the number of digital I/O lines the device supports

Referenced by DigitalIO::setInfo(), and DigitalIO::settings().

const Options & settings ( void  ) const
virtual

Returns the ids for each digital I/O line.

Reimplemented from Device.

References DigitalIO::lines(), and Device::Settings.

int allocateLines ( unsigned int  lines)

Allocate the lines lines of the digital I/O device.

Parameters
[in]linesa bit mask of the digital lines to be allocated.
Returns
the id, a positive number, of the allocated lines
WriteError if some of the lines have been already allocated
See Also
freeLines(), allocatedLines()

References DigitalIO::MaxDIOLines.

int allocateLine ( unsigned int  line)

Allocate the single digital I/O line line of the digital I/O device. Further lines can be allocated by calling allocateLine( int, int ).

Parameters
[in]linethe digital line (not its bitmask!) to be allocated.
Returns
the id, a positive number, of the allocated line
WriteError if the line has been already allocated
See Also
freeLines(), allocatedLine()

References relacs::line(), DigitalIO::MaxDIOLines, and Device::WriteError.

int allocateLine ( unsigned int  line,
int  id 
)

Allocate one more digital I/O line line of the digital I/O device for id id. The id should be the returned value of a previous call to allocateLine( int ).

Parameters
[in]linethe digital line (not its bitmask!) to be allocated.
[in]idthe id under which this line should be allocated.
Returns
the id, a positive number, of the allocated line (same as id)
WriteError if the line has been already allocated
See Also
freeLines(), allocatedLine()

References relacs::line(), DigitalIO::MaxDIOLines, and Device::WriteError.

void freeLines ( int  id)

Free the previously allocated digital I/O lines with id id.

See Also
allocateLines()

References DigitalIO::MaxDIOLines.

bool allocatedLines ( unsigned int  lines,
int  id 
)
Returns
true if all the digitial I/O lines lines have been allocated under id id.
Parameters
[in]linesthe bit mask of the digital lines.
[in]idthe id under which this line was previously allocated.
See Also
allocateLines()

References DigitalIO::MaxDIOLines.

bool allocatedLines ( unsigned int  lines)
Returns
true if all the digitial I/O lines lines have been allocated, independent of the ids.
Parameters
[in]linesthe bit mask of the digital lines.
See Also
allocateLines()

References DigitalIO::MaxDIOLines.

bool allocatedLine ( unsigned int  line,
int  id 
)
Returns
true if digitial I/O line line was allocated under id id.
Parameters
[in]linethe digital line (not its bitmask!)
[in]idthe id under which this line was previously allocated.
See Also
allocateLine()

References DigitalIO::MaxDIOLines.

bool allocatedLine ( unsigned int  line)
Returns
true if digitial I/O line line is allocated, independent of the id.
Parameters
[in]linethe digital line (not its bitmask!)
See Also
allocateLine()

References DigitalIO::MaxDIOLines.

int configureLine ( unsigned int  line,
bool  output 
)
virtual

Configure digital I/O line line for input (output = false) or output (output = true). When reimplementing this function, call this function on success.

Parameters
[in]linethe digital line (not its bitmask!)
[in]outputtrue if this line should be configured for output.
Returns
0 on success, otherwise a negative number indicating the error.
See Also
configureLines(), lineConfiguration()

References relacs::line(), DigitalIO::MaxDIOLines, and Device::WriteError.

int configureLines ( unsigned int  lines,
unsigned int  output 
)
virtual

Configure digital I/O lines specified by lines for input (0) or output (1) according to output. When reimplementing this function, call this function on success.

Parameters
[in]linesa bit mask of the digital lines to be configured.
[in]outputa bitmask for tha digital I/O lines that should be configured for output.
Returns
0 on success, otherwise a negative number indicating the error.
See Also
configureLine(), lineConfiguration()

References DigitalIO::MaxDIOLines.

bool lineConfiguration ( unsigned int  line) const

Returns the configuation of an digital I/O line.

Parameters
[in]linethe digital line (channel)
Returns
true, if the line has been configured for output.
See Also
configureLine(), configureLines()

References relacs::line(), and DigitalIO::MaxDIOLines.

virtual int write ( unsigned int  line,
bool  val 
)
pure virtual

Write val to the digital I/O line line.

Parameters
[in]linethe digital line (not its bitmask!)
[in]valthe value that should be written to the digital output line (true: high, false: low).
Returns
0 on success, otherwise a negative number indicating the error
See Also
read()
virtual int read ( unsigned int  line,
bool &  val 
)
pure virtual

Read from digital I/O line line and return value in val.

Parameters
[in]linethe digital line (not its bitmask!)
[out]valthe value that was read from to the digital input line (true: high, false: low).
Returns
0 on success, otherwise a negative number indicating the error
See Also
write()
virtual int writeLines ( unsigned int  lines,
unsigned int  val 
)
pure virtual

Write val to the digital I/O lines defined in lines.

Parameters
[in]linesa bit mask selecting the digital lines to be written.
[in]vala bit mask indicating what should be written to the digital output lines (1: high, 0: low).
Returns
0 on success, otherwise a negative number indicating the error
See Also
read()
virtual int readLines ( unsigned int  lines,
unsigned int &  val 
)
pure virtual

Read digital I/O lines and return them in val.

Parameters
[in]linesa bit mask selecting the digital lines from which to read.
[out]vala bit field returning the values read from to the digital input lines (1: high, 0: low).
Returns
0 on success, otherwise a negative number indicating the error
See Also
write()
int setSyncPulse ( int  modemask,
int  modebits,
unsigned int  line,
double  duration,
int  mode = 0 
)
virtual

Enables generation of TTL Pulses on DIO line line and the scaling of the current for analog output according to the measured period divided by the curent injection time of duration microseconds. This is used for synchronizing a discontinous current-clamp amplifier with an dynamic-clamp loop.

Parameters
[in]modemaskthe dio lines that switch the mode of the amplifier
[in]modebitsthe dio lines to be set high to switch the mode of the amplifier into synchronized current clamp mode
[in]linethe dio line where to put out the synchronizing pulses
[in]durationthe duration of the current injection of the amplifier in seconds.
[in]modehow the measured period is determined: 0: the fixed requested sampling interval, 1: the current period, > 1: the average over the mode last periods.
Returns
0 on success, a Device error code on failure.
See Also
clearSyncPulse()

References Device::InvalidDevice.

int clearSyncPulse ( int  modemask,
int  modebits 
)
virtual

Disable TTL Pulse generation and current scaling. Switch amplifier into a different mode.

Parameters
[in]modemaskthe dio lines that switch the mode of the amplifier
[in]modebitsthe dio lines to be set high to switch into the desired non syncrhonizing mode into synchronized current clamp mode
Returns
0 on success, a Device error code on failure.
See Also
setSyncPulse()

References Device::InvalidDevice.

void freeLines ( void  )
protected

Free all allocated digital I/O lines.

See Also
freeLines()

References DigitalIO::MaxDIOLines.

Referenced by DigitalIO::DigitalIO(), and DigitalIO::open().

void setInfo ( void  )
protected

Set the device info(). Call this function from open().

See Also
info()

References Device::addInfo(), Device::Info, and DigitalIO::lines().

Member Data Documentation

const unsigned int MaxDIOLines = 32
staticprotected

The documentation for this class was generated from the following files: