Remove comedilib_reference, rebuild comedilib*html
This commit is contained in:
parent
1f1293e649
commit
0f8fd728ae
10 changed files with 956 additions and 3021 deletions
|
@ -36,12 +36,11 @@ int aref = AREF_GROUND; /* more on this later */
|
|||
int main(int argc,char *argv[])
|
||||
{
|
||||
comedi_t *it;
|
||||
int chan=0;
|
||||
lsampl_t data;
|
||||
|
||||
|
||||
it=comedi_open("/dev/comedi0");
|
||||
|
||||
comedi_data_read(it,subdev,chan,range,aref,& data);
|
||||
comedi_data_read(it,subdev,chan,range,aref,&data);
|
||||
|
||||
printf("%d\n",data);
|
||||
|
||||
|
@ -51,10 +50,10 @@ int main(int argc,char *argv[])
|
|||
</CODE></BLOCKQUOTE>
|
||||
</P>
|
||||
|
||||
<P>Should be understandable. Open the device, get the data,
|
||||
<P>Should be understandable: open the device, get the data,
|
||||
print it out. This is basically the guts of <CODE>demo/inp.c</CODE>,
|
||||
without error checking or fancy options.
|
||||
Compile it using </P>
|
||||
Compile it using</P>
|
||||
<P>
|
||||
<BLOCKQUOTE><CODE>
|
||||
<PRE>
|
||||
|
@ -74,7 +73,7 @@ aref, which determines the analog reference used.</P>
|
|||
</H2>
|
||||
|
||||
|
||||
<P>If you selected an analog input subdevice, you should notice
|
||||
<P>If you selected an analog input subdevice, you probably noticed
|
||||
that the output of <CODE>tut1</CODE> is a number between
|
||||
0 and 4095, or 0 and 65535, depending on the number of bits
|
||||
in the A/D converter. Comedi samples are <B>always</B> unsigned,
|
||||
|
@ -89,7 +88,7 @@ manner?"</P>
|
|||
input, and Comedi allows you to select which of these to
|
||||
use. This parameter is called the "range parameter", since
|
||||
it specifies the "input range" for analog input (or "output range"
|
||||
analog output.) The range parameter represents both the gain
|
||||
for analog output.) The range parameter represents both the gain
|
||||
and the unipolar/bipolar aspects.</P>
|
||||
<P>Comedi keeps the number of available ranges and the largest
|
||||
sample value for each subdevice/channel combination. (Some
|
||||
|
@ -205,7 +204,7 @@ that we've added what we've learned.</P>
|
|||
<PRE>
|
||||
#include <stdio.h> /* for printf() */
|
||||
#include <comedi.h> /* also included by comedilib.h */
|
||||
#include <comedilib.h> /* for comedi_get() */
|
||||
#include <comedilib.h> /* 'cuz we're using comedilib */
|
||||
|
||||
int subdev = 0; /* change this to your input subdevice */
|
||||
int chan = 0; /* change this to your channel */
|
||||
|
@ -216,7 +215,7 @@ int main(int argc,char *argv[])
|
|||
{
|
||||
comedi_t *cf;
|
||||
int chan=0;
|
||||
int data;
|
||||
lsampl_t data;
|
||||
int maxdata,rangetype;
|
||||
double volts;
|
||||
|
||||
|
@ -226,7 +225,7 @@ int main(int argc,char *argv[])
|
|||
|
||||
rangetype=comedi_get_rangetype(cf,subdev,chan);
|
||||
|
||||
data=comedi_get(cf->fd,subdev,chan,range,aref);
|
||||
comedi_data_read(cf->fd,subdev,chan,range,aref,&data);
|
||||
|
||||
volts=comedi_to_phys(data,rangetype,range,maxdata);
|
||||
|
||||
|
@ -238,14 +237,6 @@ int main(int argc,char *argv[])
|
|||
</CODE></BLOCKQUOTE>
|
||||
</P>
|
||||
|
||||
<P>By now, the <CODE>comedi_read_data()</CODE> line looks a little archaic, using
|
||||
the UNIX file descriptor cf->fd instead of just cf. (By the
|
||||
way, somewhere in the heart of <CODE>comedi_open()</CODE> is the line
|
||||
<CODE>cf->fd=open(filename,O_RDWR)</CODE>.) Well, there isn't one good
|
||||
replacement, since it highly depends on your application
|
||||
what additional features you might want in a <CODE>comedi_get()</CODE>
|
||||
replacement. But this is the topic of a different section.</P>
|
||||
|
||||
|
||||
|
||||
<HR>
|
||||
|
|
|
@ -3,11 +3,12 @@
|
|||
<HEAD>
|
||||
<META NAME="GENERATOR" CONTENT="LinuxDoc-Tools 0.9.7.4">
|
||||
<TITLE>Comedi Documentation: Application-specific functions</TITLE>
|
||||
<LINK HREF="comedilib-6.html" REL=next>
|
||||
<LINK HREF="comedilib-4.html" REL=previous>
|
||||
<LINK HREF="comedilib.html#toc5" REL=contents>
|
||||
</HEAD>
|
||||
<BODY>
|
||||
Next
|
||||
<A HREF="comedilib-6.html">Next</A>
|
||||
<A HREF="comedilib-4.html">Previous</A>
|
||||
<A HREF="comedilib.html#toc5">Contents</A>
|
||||
<HR>
|
||||
|
@ -109,8 +110,13 @@ is only accurate to part-per-thousand.</P>
|
|||
<P>Many data acquisition devices have the capability to directly
|
||||
control acquisition using either an on-board timer or an external
|
||||
triggering input. Comedi commands are used to control this kind
|
||||
of acquisition. The same structure (comedi_cmd) used to control
|
||||
acquisition is used to query the capabilities of a device.</P>
|
||||
of acquisition. The
|
||||
<A HREF="comedilib-6.html#comedi_cmd">comedi_cmd</A> structure is
|
||||
used to control acquisition and query the capabilities of a device
|
||||
(see also
|
||||
<A HREF="comedilib-6.html#comedi_command">comedi_command()</A>,
|
||||
<A HREF="comedilib-6.html#comedi_command_test">comedi_command_test()</A>, and
|
||||
<A HREF="comedilib-6.html#comedi_get_cmd_src_mask">comedi_get_cmd_src_mask()</A>).</P>
|
||||
<P>Commands specify a particular data acquisition sequence, which
|
||||
is comprised of a number of scans. Each scan is comprised of
|
||||
a number of conversions, which usually corresponds to a single
|
||||
|
@ -118,41 +124,120 @@ A/D or D/A conversion. The start and end of the sequence, and
|
|||
the start and end of each scan, and each conversion is called an
|
||||
event.</P>
|
||||
<P>Each of these 5 types of events are caused by a triggering
|
||||
source. The source types are:</P>
|
||||
source, specified through the *_src members of the
|
||||
<A HREF="comedilib-6.html#comedi_cmd">comedi_cmd</A> structure. The source types are:</P>
|
||||
<P>
|
||||
<UL>
|
||||
<LI>TRIG_NONE don't ever cause event</LI>
|
||||
<LI>TRIG_NOW cause event to occur immediately</LI>
|
||||
<LI>TRIG_FOLLOW (see notes below)</LI>
|
||||
<LI>TRIG_TIME cause event to occur at a particular time</LI>
|
||||
<LI>TRIG_TIMER cause event to occur repeatedly at a specific rate</LI>
|
||||
<LI>TRIG_COUNT cause event when count reaches specific value</LI>
|
||||
<LI>TRIG_EXT external signal causes event</LI>
|
||||
<LI>TRIG_INT internal signal causes event</LI>
|
||||
<LI>TRIG_NONE: don't ever cause an event</LI>
|
||||
<LI>TRIG_NOW: cause event to occur immediately</LI>
|
||||
<LI>TRIG_FOLLOW: see notes below</LI>
|
||||
<LI>TRIG_TIME: cause event to occur at a particular time</LI>
|
||||
<LI>TRIG_TIMER: cause event to occur repeatedly at a specific rate</LI>
|
||||
<LI>TRIG_COUNT: cause event when count reaches specific value</LI>
|
||||
<LI>TRIG_EXT: external signal causes event</LI>
|
||||
<LI>TRIG_INT: internal signal causes event</LI>
|
||||
<LI>TRIG_OTHER: driver-specific meaning</LI>
|
||||
</UL>
|
||||
</P>
|
||||
<P>For every trigger, there is a corresponding
|
||||
argument (the *_arg members of the
|
||||
<A HREF="comedilib-6.html#comedi_cmd">comedi_cmd</A>
|
||||
structure) whose meaning depends on the type of trigger. The meanings
|
||||
of the arguments are as follows:</P>
|
||||
|
||||
<P>Not all triggers are applicable to all events. Supported triggers
|
||||
for specific events depends significantly on your particular
|
||||
device. In addition, for every trigger type, there is a cooresponding
|
||||
argument that specifies the rate, the count, which external signal,
|
||||
etc.</P>
|
||||
<P>TRIG_FOLLOW is a special type of trigger for scan_begin events that
|
||||
triggers on the next lower level trigger, in this case, the trigger
|
||||
for convert events. It may or may not be supported. Later, it may
|
||||
also be used for start events if you want to chain multiple commands.</P>
|
||||
<P>In particular, scan_end events will almost always be triggered on
|
||||
TRIG_COUNT, with the argument being the number of channels in the
|
||||
scan. (Actually, samples in the scan, since on most boards you can
|
||||
measure a single channel multiple times in a scan.) Also, until
|
||||
otherwise supported, start events can only be TRIG_NOW.</P>
|
||||
device.</P>
|
||||
<P>TRIG_NONE is typically used only as a stop_src. The arg for TRIG_NONE
|
||||
is reserved and should be set to 0.</P>
|
||||
<P>TRIG_NOW is most often used as a start_src. The arg for TRIG_NOW is
|
||||
the number of nanoseconds between when the command is issued and when
|
||||
the event should occur. In the case of using TRIG now as a start_src,
|
||||
it indicates a delay between issuing the command and the start of
|
||||
acquisition. Most drivers only support a delay of 0.</P>
|
||||
<P>TRIG_FOLLOW is a special type of trigger for events that trigger on
|
||||
the completion of some other, logically connected event. The argument
|
||||
is reserved and should be set to 0. When used
|
||||
as a scan_begin_src, it indicates that a trigger should occur as a
|
||||
logical continuation of convert events. This is done in order to
|
||||
properly describe boards that do not have separate timers for
|
||||
convert and scan_begin events. When used as a start_src for analog
|
||||
output subdevices, it indicates that conversion of output samples
|
||||
should begin when samples are written to the buffer.</P>
|
||||
<P>TRIG_TIME is reserved for future use.</P>
|
||||
<P>TRIG_TIMER is most often used as a convert_src, a scan_begin_src, or
|
||||
both. It indicates that triggers should occur at a specific rate.
|
||||
The argument specifies the interval between triggers in nanoseconds.</P>
|
||||
<P>TRIG_COUNT is used for scan_end_src and stop_src. It indicates that
|
||||
a trigger should occur when the specified number of corresponding
|
||||
lower-level triggers (convert and scan_begin, respectively) occur.
|
||||
The argument is the count of lower-level triggers.</P>
|
||||
<P>TRIG_EXT can be useful as any of the trigger sources. It indicates
|
||||
that an external digital line should be used to trigger the event.
|
||||
The exact meaning of digital line is device-dependent. Some devices
|
||||
have one dedicated line, others may allow generic digital input
|
||||
lines to be used. The argument indicates the particular external
|
||||
line to use as the trigger.</P>
|
||||
<P>TRIG_INT is typically used as a start_src. This trigger occurs when
|
||||
the application performs an INSN_INTTRIG instruction. Using TRIG_INT
|
||||
is a method by which the application can accurately record the time of
|
||||
the start of acquisition, since the parsing and setup time of a
|
||||
particular command may be significant. The argument associated with
|
||||
TRIG_INT is reserved and should be set to 0.</P>
|
||||
<P>TRIG_OTHER can be useful as any of the trigger sources. The exact
|
||||
meaning of TRIG_OTHER is driver-specific, and implements a feature
|
||||
that otherwise does not fit into the command interface. Configuration
|
||||
of TRIG_OTHER features are done by INSN_CONFIG insns. The argument
|
||||
is reserved and should be set to 0.</P>
|
||||
|
||||
<P>The chanlist member of the
|
||||
<A HREF="comedilib-6.html#comedi_cmd">comedi_cmd</A>
|
||||
structure should point to an array whose number of elements is specificed by chanlist_len
|
||||
(this will generally be the same as the scan_end_arg).
|
||||
The chanlist specifies the sequence of channels and gains (and analog references)
|
||||
that should be stepped through for each scan. The elements of the chanlist array
|
||||
should be initialized by packing the channel, range and reference information
|
||||
together with the
|
||||
<A HREF="comedilib-6.html#CR_PACK">CR_PACK(channel, range, aref)</A> macro.</P>
|
||||
<P>The final member of the
|
||||
<A HREF="comedilib-6.html#comedi_cmd">comedi_cmd</A> structure is 'flags'.
|
||||
The following flags are valid, and can be bitwise-or'd together.</P>
|
||||
<P>
|
||||
<UL>
|
||||
<LI>TRIG_BOGUS: do the motions??</LI>
|
||||
<LI>TRIG_DITHER: enable dithering??</LI>
|
||||
<LI>TRIG_DEGLITCH: enable deglitching??</LI>
|
||||
<LI>TRIG_RT: ask driver to use a hard real-time interrupt handler. This will
|
||||
reduce latency in handling interrupts from your data aquisition hardware. It can
|
||||
be useful if you are sampling at high frequency, or if your hardware has a small onboard
|
||||
fifo. You must have a real-time kernel (RTAI or RTLinux) and must compile
|
||||
comedi with real-time support or this flag will do nothing.</LI>
|
||||
<LI>TRIG_CONFIG: perform configuration, not triggering.</LI>
|
||||
<LI>TRIG_WAKE_EOS: some drivers will change their behaviour when this flag is set,
|
||||
trying to transfer data at the end of every scan (instead of, for example, passing
|
||||
data in chunks whenever the board's onboard fifo is half full). This flag
|
||||
may degrade a driver's performance at higher frequencies.</LI>
|
||||
<LI>TRIG_WRITE: write to bidirectional devices. Could be useful in principle, if someone
|
||||
wrote a driver that supported commands for a digital i/o device that could do either
|
||||
input or output.</LI>
|
||||
</UL>
|
||||
|
||||
There are also a few flags that indicate how timing arguments should be rounded
|
||||
if the hardware cannot achieve the exact timing requested.
|
||||
<UL>
|
||||
<LI>TRIG_ROUND_NEAREST: round to nearest supported timing period, the default.</LI>
|
||||
<LI>TRIG_ROUND_DOWN: round period down.</LI>
|
||||
<LI>TRIG_ROUND_UP: round period up.</LI>
|
||||
<LI>TRIG_ROUND_UP_NEXT: this one doesn't do anything, and I don't know what it was intended
|
||||
to do??</LI>
|
||||
</UL>
|
||||
</P>
|
||||
|
||||
|
||||
|
||||
|
||||
<HR>
|
||||
Next
|
||||
<A HREF="comedilib-6.html">Next</A>
|
||||
<A HREF="comedilib-4.html">Previous</A>
|
||||
<A HREF="comedilib.html#toc5">Contents</A>
|
||||
</BODY>
|
||||
|
|
1122
doc/comedilib-6.html
1122
doc/comedilib-6.html
File diff suppressed because it is too large
Load diff
|
@ -14,7 +14,8 @@ Contents
|
|||
<HR>
|
||||
<H1>Comedi Documentation</H1>
|
||||
|
||||
<H2>David Schleef, <CODE>ds@stm.lbl.gov</CODE></H2>
|
||||
<H2>David Schleef <CODE>ds@stm.lbl.gov</CODE>,
|
||||
Frank Hess <CODE>fmhess@uiuc.edu</CODE></H2>
|
||||
<P>
|
||||
<H2><A NAME="toc1">1.</A> <A HREF="comedilib-1.html">Introduction</A></H2>
|
||||
|
||||
|
@ -30,6 +31,9 @@ Contents
|
|||
<P>
|
||||
<H2><A NAME="toc5">5.</A> <A HREF="comedilib-5.html">Application-specific functions</A></H2>
|
||||
|
||||
<P>
|
||||
<H2><A NAME="toc6">6.</A> <A HREF="comedilib-6.html">Libcomedi Reference</A></H2>
|
||||
|
||||
<HR>
|
||||
<A HREF="comedilib-1.html">Next</A>
|
||||
Previous
|
||||
|
|
|
@ -1,906 +0,0 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<META NAME="GENERATOR" CONTENT="LinuxDoc-Tools 0.9.7.4">
|
||||
<TITLE>Comedi Documentation: Libcomedi Reference</TITLE>
|
||||
|
||||
<LINK HREF="comedilib_reference.html#toc1" REL=contents>
|
||||
</HEAD>
|
||||
<BODY>
|
||||
Next
|
||||
Previous
|
||||
<A HREF="comedilib_reference.html#toc1">Contents</A>
|
||||
<HR>
|
||||
<H2><A NAME="s1">1.</A> <A HREF="comedilib_reference.html#toc1">Libcomedi Reference</A></H2>
|
||||
|
||||
|
||||
|
||||
<H2><A NAME="ss1.1">1.1 Constants and Macros</A>
|
||||
</H2>
|
||||
|
||||
|
||||
|
||||
|
||||
<H3>RANGE_LENGTH() <I>(deprecated)</I></H3>
|
||||
|
||||
<P>
|
||||
<A NAME="RANGE_LENGTH"></A> </P>
|
||||
<P><CODE>RANGE_LENGTH(rangetype)</CODE></P>
|
||||
|
||||
<P>Rangetype values are library-internal tokens that represent an
|
||||
array of range information structures. These numbers are primarily
|
||||
used for communication between the kernel and library.</P>
|
||||
|
||||
<P>The RANGE_LENGTH() macro returns the length of the array that is
|
||||
specified by the rangetype token.</P>
|
||||
|
||||
<P>The RANGE_LENGTH() macro is deprecated, and should not be used in
|
||||
new applications. It is scheduled to be removed from the header
|
||||
file at version 1.0. Binary compatibility may be broken for version
|
||||
1.1.</P>
|
||||
|
||||
|
||||
|
||||
<H2><A NAME="ss1.2">1.2 Data Types and Structures</A>
|
||||
</H2>
|
||||
|
||||
|
||||
<H3><A NAME="comedi_t"></A> comedi_t</H3>
|
||||
|
||||
<P>The data type <CODE>comedi_t</CODE> is used to represent an open Comedi
|
||||
device. A valid <CODE>comedi_t</CODE> pointer is returned by a successful
|
||||
call to <CODE>comedi_open()</CODE>, and should be used for subsequent
|
||||
access to the device.
|
||||
It is a transparent type, and pointers to type <CODE>comedi_t</CODE>
|
||||
should not be dereferenced by the application.</P>
|
||||
|
||||
|
||||
|
||||
<H3><A NAME="sampl_t"></A> sampl_t</H3>
|
||||
|
||||
<P>The data type <CODE>sampl_t</CODE> is one of the generic types used to represent
|
||||
data values in libcomedi. It is used in a few places where a shorter
|
||||
data type is useful, but is limited to 16 bits on the i386 architecture.</P>
|
||||
|
||||
|
||||
|
||||
<H3><A NAME="lsampl_t"></A> lsampl_t</H3>
|
||||
|
||||
<P>The data type <CODE>lsampl_t</CODE> is one of the generic types used to represent
|
||||
data values in libcomedi. It is currently defined to be <CODE>unsigned int</CODE>.</P>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<H3><A NAME="comedi_trig_struct"></A> comedi_trig_struct <I>(deprecated)</I></H3>
|
||||
|
||||
|
||||
<P>The <CODE>comedi_trig</CODE> structure</P>
|
||||
<P>
|
||||
<BLOCKQUOTE><CODE>
|
||||
<PRE>
|
||||
struct comedi_trig_struct{
|
||||
unsigned int subdev; /* subdevice */
|
||||
unsigned int mode; /* mode */
|
||||
unsigned int flags;
|
||||
unsigned int n_chan; /* number of channels */
|
||||
unsigned int *chanlist; /* channel/range list */
|
||||
sampl_t *data; /* data list, size depends on subd flags */
|
||||
unsigned int n; /* number of scans */
|
||||
unsigned int trigsrc;
|
||||
unsigned int trigvar;
|
||||
unsigned int trigvar1;
|
||||
unsigned int data_len;
|
||||
unsigned int unused[3];
|
||||
}
|
||||
</PRE>
|
||||
</CODE></BLOCKQUOTE>
|
||||
</P>
|
||||
<P>The <CODE>comedi_trig</CODE> structure is a control structure used by the
|
||||
COMEDI_TRIG ioctl, an older method of communicating
|
||||
instructions to the driver and hardware. Use of comedi_trig is
|
||||
deprecated, and should not be used in new applications.</P>
|
||||
|
||||
<P>This structure is defined as part of the Comedi kernel interface.</P>
|
||||
|
||||
|
||||
<H3><A NAME="comedi_sv_t"></A> comedi_sv_t</H3>
|
||||
|
||||
|
||||
<P>
|
||||
<BLOCKQUOTE><CODE>
|
||||
<PRE>
|
||||
struct comedi_sv_struct{
|
||||
comedi_t *dev;
|
||||
unsigned int subdevice;
|
||||
unsigned int chan;
|
||||
|
||||
/* range policy */
|
||||
int range;
|
||||
int aref;
|
||||
|
||||
/* number of measurements to average (for ai) */
|
||||
int n;
|
||||
|
||||
lsampl_t maxdata;
|
||||
}
|
||||
</PRE>
|
||||
</CODE></BLOCKQUOTE>
|
||||
</P>
|
||||
<P>The <CODE>comedi_sv_t</CODE> structure is used by the <CODE>comedi_sv_*()</CODE>
|
||||
functions to provide a simple method of accurately measuring
|
||||
slowly varying inputs. See the relevant section for more
|
||||
details.</P>
|
||||
|
||||
|
||||
|
||||
<H3><A NAME="comedi_cmd"></A> comedi_cmd</H3>
|
||||
|
||||
|
||||
<P>undocumented</P>
|
||||
|
||||
<P>Related functions are described in section XXX.</P>
|
||||
|
||||
<P>This structure is defined as part of the Comedi kernel interface.</P>
|
||||
|
||||
|
||||
<H3><A NAME="comedi_insn"></A> comedi_insn</H3>
|
||||
|
||||
|
||||
<P>undocumented</P>
|
||||
|
||||
<P>Related functions are described in section XXX.</P>
|
||||
|
||||
<P>This structure is defined as part of the Comedi kernel interface.</P>
|
||||
|
||||
|
||||
|
||||
<H3><A NAME="comedi_range"></A> comedi_range</H3>
|
||||
|
||||
|
||||
<P>undocumented</P>
|
||||
|
||||
|
||||
|
||||
<H2><A NAME="ss1.3">1.3 Functions</A>
|
||||
</H2>
|
||||
|
||||
|
||||
|
||||
<H3><A NAME="comedi_close"></A> comedi_close()</H3>
|
||||
|
||||
|
||||
<P><CODE>void comedi_close(comedi_t *it);</CODE></P>
|
||||
|
||||
<P>Closes a device previously opened by comedi_open().</P>
|
||||
|
||||
<P>The return type of this function will change to <CODE>int</CODE>, in
|
||||
order to match <CODE>fclose</CODE>.</P>
|
||||
|
||||
<P>Source: <CODE>/lib/comedi.c</CODE></P>
|
||||
|
||||
|
||||
<H3><A NAME="comedi_data_read"></A> comedi_data_read()</H3>
|
||||
|
||||
|
||||
<P><CODE>int comedi_data_read(comedi_t *it,unsigned int subd,unsigned int chan,
|
||||
unsigned int range,unsigned int aref,lsampl_t *data);</CODE></P>
|
||||
|
||||
<P>Reads a single sample on the channel that
|
||||
is specified by the comedi device <CODE>it</CODE>, the
|
||||
subdevice <CODE>subd</CODE>, and the channel <CODE>chan</CODE>.
|
||||
For the A/D conversion (if appropriate),
|
||||
the device is configured to use range specification
|
||||
<CODE>range</CODE> and (if appropriate) analog reference type
|
||||
<CODE>aref</CODE>. Analog reference types that are not supported
|
||||
by the device are silently ignored.</P>
|
||||
|
||||
<P><CODE>comedi_data_read()</CODE> reads one data value from
|
||||
the specified channel and places the
|
||||
data value that is read in the location pointed to by
|
||||
<CODE>data</CODE>.</P>
|
||||
|
||||
<P>On sucess, <CODE>comedi_data_read()</CODE> returns 0. If there is an
|
||||
error, -1 is returned.</P>
|
||||
|
||||
<P>Valid analog reference numbers are:</P>
|
||||
<P>
|
||||
<UL>
|
||||
<LI>AREF_GROUND Reference to analog ground</LI>
|
||||
<LI>AREF_COMMON Reference to analog common</LI>
|
||||
<LI>AREF_DIFF Differential reference</LI>
|
||||
<LI>AREF_OTHER Board-specific meaning</LI>
|
||||
</UL>
|
||||
</P>
|
||||
<P>Valid data values returned by these function is an unsigned integer
|
||||
less than or equal to <CODE>maxdata</CODE>, which is channel-dependent.
|
||||
Conversion of these data value to physical units can be performed
|
||||
by <CODE>
|
||||
<A HREF="#comedi_to_phys">comedi_to_phys()</A></CODE>.</P>
|
||||
<P>Source: <CODE>/lib/data.c</CODE></P>
|
||||
|
||||
|
||||
<H3>comedi_data_write()</H3>
|
||||
|
||||
|
||||
<P><CODE>int comedi_data_write(comedi_t *it,unsigned int subd,unsigned int chan,
|
||||
unsigned int range,unsigned int aref,lsampl_t data);</CODE></P>
|
||||
|
||||
<P>Writes a single sample on the channel that
|
||||
is specified by the comedi device <CODE>it</CODE>, the
|
||||
subdevice <CODE>subd</CODE>, and the channel <CODE>chan</CODE>.
|
||||
For the D/A conversion (if appropriate), the device is
|
||||
configured to use range specification
|
||||
<CODE>range</CODE> and (if appropriate) analog reference type
|
||||
<CODE>aref</CODE>. Analog reference types that are not supported
|
||||
by the device are silently ignored.</P>
|
||||
<P><CODE>comedi_data_write()</CODE> writes the data value
|
||||
specified by the argument <CODE>data</CODE> to
|
||||
the specified channel.</P>
|
||||
<P>On sucess, <CODE>comedi_data_write()</CODE> returns 0. If there is an error, -1 is
|
||||
returned.</P>
|
||||
<P>Valid analog reference numbers are:</P>
|
||||
<P>
|
||||
<UL>
|
||||
<LI>AREF_GROUND Reference to analog ground</LI>
|
||||
<LI>AREF_COMMON Reference to analog common</LI>
|
||||
<LI>AREF_DIFF Differential reference</LI>
|
||||
<LI>AREF_OTHER Board-specific meaning</LI>
|
||||
</UL>
|
||||
</P>
|
||||
<P>Valid data values used by these functions is an unsigned integer
|
||||
less than or equal to <CODE>maxdata</CODE>, which is channel-dependent.
|
||||
Conversion of physical units to these data value can be performed
|
||||
by <CODE>
|
||||
<A HREF="#comedi_from_phys">comedi_from_phys()</A></CODE>.</P>
|
||||
<P>Source: <CODE>/lib/data.c</CODE></P>
|
||||
|
||||
|
||||
|
||||
<H3>comedi_dio_bitfield();</H3>
|
||||
|
||||
<P><CODE>int comedi_dio_bitfield(comedi_t *it,unsigned int subd,unsigned
|
||||
int write_mask,unsigned int *bits);</CODE></P>
|
||||
|
||||
<P>The function <CODE>comedi_dio_bitfield()</CODE> allows multiple channels to
|
||||
be read simultaneously from a digital input or digital I/O device.
|
||||
The parameter <CODE>write_mask</CODE> and the value pointed to by <CODE>bits</CODE>
|
||||
are interpreted as bit fields, with the least significant bit
|
||||
representing channel 0. For each bit in <CODE>write_mask</CODE> that is
|
||||
set, the cooresponding bit in <CODE>*bits</CODE> is written to the digital
|
||||
output channel. Each digital input channel is read, and the result
|
||||
placed in the approprate bits in <CODE>*bits</CODE>.</P>
|
||||
|
||||
<P>The current implementation reads and writes bits using separate
|
||||
system calls, which is not ideal. When the kernel driver supports
|
||||
simultaneous reading/writing, this will be fixed in the library.</P>
|
||||
|
||||
<P>It should be noted that it is not possible to access channels
|
||||
greater than 31 using this function.</P>
|
||||
|
||||
<P>Source: <CODE>/lib/dio.c</CODE></P>
|
||||
|
||||
|
||||
|
||||
<H3>comedi_dio_config()</H3>
|
||||
|
||||
<P><CODE>int comedi_dio_config(comedi_t *it,unsigned int subd,unsigned
|
||||
int chan,unsigned int dir);</CODE></P>
|
||||
|
||||
<P>The function <CODE>comedi_dio_config</CODE> configures individual channels
|
||||
in a digital I/O subdevice to be either input or output, depending
|
||||
on the value of parameter <CODE>dir</CODE>. Depending on the capabilities
|
||||
of the hardware device, multiple channels may be affected by
|
||||
a single call to <CODE>comedi_dio_config</CODE>.</P>
|
||||
|
||||
<P>Valid directions are:
|
||||
<UL>
|
||||
<LI> COMEDI_INPUT</LI>
|
||||
<LI> COMEDI_OUTPUT</LI>
|
||||
</UL>
|
||||
</P>
|
||||
<P>Source: <CODE>/lib/dio.c</CODE></P>
|
||||
|
||||
|
||||
|
||||
<H3>comedi_dio_read()</H3>
|
||||
|
||||
<P><CODE>int comedi_dio_read(comedi_t *it,unsigned int subd,unsigned int
|
||||
chan,unsigned int *bit);</CODE></P>
|
||||
|
||||
<P>The function reads the status of channel <CODE>chan</CODE> belonging to the digital
|
||||
input subdevice <CODE>subd</CODE> of device <CODE>it</CODE>. The result, 0 or 1, is stored
|
||||
in bit. Returns -1 on failure.</P>
|
||||
|
||||
<P>This function is equivalent to <CODE>comedi_data_read(it,subd,chan,0,0,bit)</CODE>.</P>
|
||||
|
||||
<P>Source: <CODE>/lib/dio.c</CODE></P>
|
||||
|
||||
|
||||
<H3>comedi_dio_write()</H3>
|
||||
|
||||
<P><CODE>int comedi_dio_write(comedi_t *it,unsigned int subd,unsigned
|
||||
int chan,unsigned int bit);</CODE></P>
|
||||
|
||||
<P>The function writes the value of <CODE>bit</CODE>, 0 or 1, to channel <CODE>chan</CODE>,
|
||||
belonging to the digital output device <CODE>subd</CODE> of device <CODE>it</CODE>. Returns
|
||||
-1 on failure.</P>
|
||||
|
||||
<P>Source: <CODE>/lib/dio.c</CODE></P>
|
||||
|
||||
|
||||
<H3>comedi_fileno()</H3>
|
||||
|
||||
|
||||
<P><CODE>int comedi_fileno(comedi_t *it);</CODE></P>
|
||||
|
||||
<P>The function <CODE>comedi_fileno</CODE>
|
||||
returns the integer descriptor for the handle <CODE>it</CODE>. It
|
||||
is equivalent to the standard function <CODE>fileno</CODE>. If
|
||||
<CODE>it</CODE> is an invalid <CODE>comedi_t</CODE> pointer, the function
|
||||
returns -1 and sets the appropriate libcomedi error value.</P>
|
||||
<P>Source: <CODE>/lib/comedi.c</CODE></P>
|
||||
|
||||
|
||||
|
||||
<H3>comedi_find_range()</H3>
|
||||
|
||||
|
||||
<P><CODE>int comedi_find_range(comedi_t *it, unsigned int subdevice, unsigned
|
||||
int chan, unsigned int unit, double min, double max);</CODE></P>
|
||||
|
||||
<P>The function <CODE>comedi_find_range</CODE> tries to
|
||||
locate the optimal (smallest) range for the channel <CODE>chan</CODE>
|
||||
belonging to a <CODE>subdevice</CODE> of the comedi device <CODE>it</CODE>,
|
||||
that includes both <CODE>min</CODE> and <CODE>max</CODE> in <CODE>units</CODE>.
|
||||
If it finds a matching range, it returns its index. If no
|
||||
matching range is available, it returns -1.</P>
|
||||
|
||||
<P>Valid units are:</P>
|
||||
<P>
|
||||
<UL>
|
||||
<LI>UNIT_volt </LI>
|
||||
<LI>UNIT_mA</LI>
|
||||
<LI>UNIT_none</LI>
|
||||
</UL>
|
||||
</P>
|
||||
<P>Source: <CODE>/lib/range.c</CODE></P>
|
||||
|
||||
|
||||
|
||||
<H3><A NAME="comedi_errno"></A> comedi_errno()</H3>
|
||||
|
||||
<P><CODE>int comedi_errno(void);</CODE></P>
|
||||
|
||||
<P>The function <CODE>comedi_errno()</CODE>
|
||||
returns an integer describing the most recent comedilib error. This
|
||||
integer may be used as the <CODE>errnum</CODE> parameter for
|
||||
<CODE>
|
||||
<A HREF="#comedi_strerror">comedi_strerror()</A></CODE>.</P>
|
||||
<P>When a libcomedi function fails, it usually returns -1 or
|
||||
NULL, depending on the return type. An internal library
|
||||
variable stores an error number, which can be retrieved with
|
||||
<CODE>comedi_errno()</CODE>. This error number can be
|
||||
converted to a human-readable form by the functions
|
||||
<CODE>
|
||||
<A HREF="#comedi_perror">comedi_perror()</A></CODE>
|
||||
and <CODE>
|
||||
<A HREF="#comedi_strerror">comedi_strerror()</A></CODE>.</P>
|
||||
<P>These functions are intended to mimic the behavior of the
|
||||
standard C library functions <CODE>perror()</CODE>,
|
||||
<CODE>strerror</CODE>, and <CODE>errno()</CODE>. In particular,
|
||||
libcomedi functions sometimes return an error that is generated
|
||||
by the C library; the Comedi error message in this case
|
||||
is the same as the C library.</P>
|
||||
<P>Source: <CODE>/lib/error.c</CODE></P>
|
||||
|
||||
|
||||
|
||||
<H3>comedi_find_subdevice_by_type()</H3>
|
||||
|
||||
|
||||
<P><CODE>int comedi_find_subdevice_by_type(comedi_t *it,int type,unsigned int
|
||||
start_subdevice);</CODE></P>
|
||||
|
||||
<P>The function <CODE>comedi_find_subdevice_by_type</CODE> tries to
|
||||
locate a subdevice belonging to comedi device <CODE>it</CODE>,
|
||||
having type <CODE>type</CODE>, starting with the subdevice
|
||||
<CODE>start_subdevice</CODE>. If it finds the requested subdevice,
|
||||
it returns its index. If it does not locate the requested
|
||||
subdevice, it returns -1 and sets the comedi error number to
|
||||
"subdevice not found". If there is an error, the function
|
||||
returns -1 and sets the appropriate error.</P>
|
||||
|
||||
<P>For subdevice types, see the manual page for the function
|
||||
<CODE>
|
||||
<A HREF="#comedi_get_subdevice_type">comedi_get_subdevice_type()</A></CODE>.</P>
|
||||
<P>Source: <CODE>/lib/get.c</CODE></P>
|
||||
|
||||
|
||||
|
||||
<H3><A NAME="comedi_from_phys"></A> comedi_from_phys()</H3>
|
||||
|
||||
|
||||
<P><CODE>lsampl_t comedi_from_phys(double data, comedi_range *rng,
|
||||
lsampl_t maxdata);</CODE></P>
|
||||
<P>Converts data given in physical units (<CODE>data</CODE>) into sample values
|
||||
(lsampl_t, between 0 and maxdata). The parameter <CODE>rng</CODE>
|
||||
represents the conversion information to use, and the parameter
|
||||
<CODE>maxdata</CODE> represents the maximum possible data value for the
|
||||
channel that the data will be written to.</P>
|
||||
|
||||
<P>Source: <CODE>/lib/range.c</CODE></P>
|
||||
|
||||
|
||||
|
||||
<H3>comedi_get_board_name()</H3>
|
||||
|
||||
|
||||
<P><CODE>char *comedi_get_board_name(comedi_t *it);</CODE></P>
|
||||
<P>The function <CODE>comedi_get_board_name</CODE> returns a pointer
|
||||
to a string containing the name of the device. This pointer is
|
||||
valid until the comedi descriptor <CODE>it</CODE> is closed. This
|
||||
function returns <CODE>NULL</CODE> if there is an error.</P>
|
||||
<P>Source: <CODE>/lib/get.c</CODE></P>
|
||||
|
||||
|
||||
|
||||
<H3>comedi_get_driver_name()</H3>
|
||||
|
||||
|
||||
<P><CODE>char *comedi_get_driver_name(comedi_t *it);</CODE></P>
|
||||
<P>The function <CODE>comedi_get_driver_name</CODE> returns a pointer
|
||||
to a string containing the name of the driver being used by comedi
|
||||
for the comedi device represented by <CODE>it</CODE>. This pointer is
|
||||
valid until the comedi descriptor <CODE>it</CODE> is closed. This
|
||||
function returns <CODE>NULL</CODE> if there is an error.</P>
|
||||
<P>Source: <CODE>/lib/get.c</CODE></P>
|
||||
|
||||
|
||||
|
||||
<H3>comedi_get_maxdata()</H3>
|
||||
|
||||
|
||||
<P><CODE>lsampl_t comedi_get_maxdata(comedi_t *it,unsigned int
|
||||
subdevice,unsigned int chan);</CODE></P>
|
||||
|
||||
<P>The function <CODE>comedi_get_maxdata()</CODE> returns the maximum
|
||||
valid data value for channel <CODE>chan</CODE> of subdevice
|
||||
<CODE>subdevice</CODE> belonging to the comedi device <CODE>it</CODE>
|
||||
This function returns 0 on error.</P>
|
||||
<P>Source: <CODE>/lib/get.c</CODE></P>
|
||||
|
||||
|
||||
|
||||
<H3>comedi_get_n_channels()</H3>
|
||||
|
||||
|
||||
<P><CODE>int comedi_get_n_channels(comedi_t *it,unsigned int subdevice);</CODE></P>
|
||||
<P>The function <CODE>comedi_get_n_channels()</CODE> returns the number
|
||||
of channels of the subdevice belonging to the comedi device <CODE>it</CODE>
|
||||
and having index <CODE>subdevice</CODE>. This function returns -1 on error.</P>
|
||||
<P>Source: <CODE>/lib/get.c</CODE></P>
|
||||
|
||||
|
||||
|
||||
<H3>comedi_get_n_ranges()</H3>
|
||||
|
||||
|
||||
<P><CODE>int comedi_get_n_ranges(comedi_t *it,unsigned int subdevice, unsigned int
|
||||
chan);</CODE></P>
|
||||
<P>The function <CODE>comedi_get_n_ranges()</CODE> returns the number
|
||||
of ranges of the channel <CODE>chan</CODE> belonging to the <CODE>subdevice</CODE>
|
||||
of the comedi device <CODE>it</CODE>. This function returns -1 on error.</P>
|
||||
<P>Source: <CODE>/lib/range.c</CODE></P>
|
||||
|
||||
|
||||
|
||||
<H3>comedi_get_n_subdevices()</H3>
|
||||
|
||||
|
||||
<P><CODE>int comedi_get_n_subdevices(comedi_t *it);</CODE></P>
|
||||
<P>The function <CODE>comedi_get_n_subdevices</CODE> returns the
|
||||
number of subdevices associated with the comedi descriptor
|
||||
<CODE>it</CODE>, or -1 if there is an error.</P>
|
||||
<P>Source: <CODE>/lib/get.c</CODE></P>
|
||||
|
||||
|
||||
|
||||
<H3>comedi_get_range()</H3>
|
||||
|
||||
|
||||
<P><CODE>comedi_range * comedi_get_range(comedi_t *it,unsigned int subdevice,unsigned int chan,unsigned int
|
||||
range);</CODE></P>
|
||||
<P>The function <CODE>comedi_get_range</CODE> returns a pointer to a
|
||||
comedi_range structure that contains information that can be used to
|
||||
convert sample values to or from physical units. The pointer is valid
|
||||
until the comedi device <CODE>it</CODE> is closed. If there is an
|
||||
error, NULL is returned.</P>
|
||||
<P>Source: <CODE>/lib/get.c</CODE></P>
|
||||
|
||||
|
||||
<H3>comedi_get_rangetype() <I>deprecated</I></H3>
|
||||
|
||||
|
||||
<P><CODE>int comedi_get_rangetype(comedi_t *it,unsigned int subdevice,unsigned int
|
||||
chan);</CODE></P>
|
||||
<P>The function <CODE>comedi_get_rangetype()</CODE> returns an integer
|
||||
that represents the number of range specifications available for a
|
||||
particular channel <CODE>chan</CODE> of the subdevice <CODE>subdevice</CODE>, as well as a conversion table to convert sample
|
||||
values to/from physical units. </P>
|
||||
<P>The macro
|
||||
<CODE>RANGE_LENGTH(rangetype)</CODE>
|
||||
can be used to determine the number of range specifications for a given
|
||||
range type.</P>
|
||||
|
||||
<P>This function is deprecated and should not be used in new code.</P>
|
||||
<P>Source: <CODE>/lib/get.c</CODE></P>
|
||||
|
||||
|
||||
<H3><A NAME="comedi_get_subdevice_type"></A> comedi_get_subdevice_type()</H3>
|
||||
|
||||
|
||||
<P><CODE>int comedi_get_subdevice_type(comedi_t *it,unsigned int subdevice);</CODE></P>
|
||||
<P>The function <CODE>comedi_get_subdevice_type()</CODE> returns an
|
||||
integer describing the type of subdevice that belongs to the comedi
|
||||
device <CODE>it</CODE> and has the index <CODE>subdevice</CODE>. The
|
||||
function returns -1 is there is an error.</P>
|
||||
<P>Valid subdevice types are:</P>
|
||||
<P>
|
||||
<UL>
|
||||
<LI><CODE>COMEDI_SUBD_UNUSED</CODE>
|
||||
Subdevice has no functionality, i.e., a place-holder.</LI>
|
||||
<LI><CODE>COMEDI_SUBD_AI</CODE> Analog input</LI>
|
||||
<LI><CODE>COMEDI_SUBD_AO</CODE> Analog output</LI>
|
||||
<LI><CODE>COMEDI_SUBD_DI</CODE> Digital input</LI>
|
||||
<LI><CODE>COMEDI_SUBD_DO</CODE> Digital output</LI>
|
||||
<LI><CODE>COMEDI_SUBD_DIO</CODE>
|
||||
Digital input/output. Channels are configurable as to whether they
|
||||
are inputs or outputs.</LI>
|
||||
<LI><CODE>COMEDI_SUBD_COUNTER</CODE> Counter</LI>
|
||||
<LI><CODE>COMEDI_SUBD_TIMER</CODE> Timer</LI>
|
||||
<LI><CODE>COMEDI_SUBD_MEMORY</CODE>
|
||||
Memory, e.g., EEPROM or dual-ported RAM</LI>
|
||||
<LI><CODE>COMEDI_SUBD_CALIB</CODE>
|
||||
Calibration DACs</LI>
|
||||
<LI><CODE>COMEDI_SUBD_PROC</CODE>
|
||||
Processor or DSP</LI>
|
||||
</UL>
|
||||
</P>
|
||||
<P>Source: <CODE>/lib/get.c</CODE></P>
|
||||
|
||||
|
||||
<H3>comedi_get_timer() <I>(deprecated)</I></H3>
|
||||
|
||||
|
||||
<P><CODE>int comedi_get_timer(comedi_t *it,unsigned int subdev, double
|
||||
freq,unsigned int *trigvar, double *actual_freq);</CODE></P>
|
||||
|
||||
<P>The function <CODE>comedi_get_timer</CODE> converts the frequency <CODE>freq</CODE>
|
||||
to a number suitable to send to the driver in a <CODE>comedi_trig</CODE>
|
||||
structure. This function remains for compatibility with very
|
||||
old versions of Comedi, that converted sampling rates to timer
|
||||
values in the libary. This conversion is now done in the kernel,
|
||||
and every device has the timer type <CODE>nanosec_timer</CODE>, indicating
|
||||
that timer values are simply a time specified in nanoseconds.</P>
|
||||
|
||||
<P>This function is deprecated and should not be used in new applications.</P>
|
||||
|
||||
<P>Source: <CODE>/lib/timer.c</CODE></P>
|
||||
|
||||
|
||||
<H3>comedi_get_version_code()</H3>
|
||||
|
||||
|
||||
<P><CODE>int comedi_get_version_code(comedi_t *it);</CODE></P>
|
||||
|
||||
<P>The function <CODE>comedi_get_version_code()</CODE> returns the
|
||||
version code of the currently running comedi module. The version
|
||||
code is of the form 0x01072b, which is the version code for
|
||||
version 1.7.43.</P>
|
||||
|
||||
<P>This function is of limited usefulness. A typical mis-application
|
||||
of this function is to use it to determine if a certain feature is
|
||||
supported. If the application needs
|
||||
to know of the existence of a particular feature, an existence
|
||||
test function should be written and put in the libcomedi source.</P>
|
||||
<P>Source: <CODE>/lib/get.c</CODE></P>
|
||||
|
||||
|
||||
<H3>comedi_loglevel()</H3>
|
||||
|
||||
|
||||
<P><CODE>int comedi_loglevel(int loglevel);</CODE></P>
|
||||
|
||||
<P>This function affects the output of debugging and error messages
|
||||
from libcomedi. By increasing the loglevel, additional debugging
|
||||
information will be printed. This function returns the previous
|
||||
loglevel. Error messages and debugging are printed to the
|
||||
stream <CODE>stderr</CODE>. The loglevel can also be affected by the
|
||||
environment variable COMEDI_LOGLEVEL.</P>
|
||||
|
||||
<P>In order to conserve resources, some debugging information is
|
||||
disabled when libcomedi is compiled.</P>
|
||||
|
||||
<P>The meaning of the loglevels is as follows:</P>
|
||||
<P>
|
||||
<UL>
|
||||
<LI><CODE>COMEDILIB_LOGLEVEL=0</CODE>
|
||||
|
||||
Comedilib prints nothing.
|
||||
</LI>
|
||||
<LI><CODE>COMEDILIB_LOGLEVEL=1</CODE> (default)
|
||||
|
||||
Comedilib only prints error messages when there is a
|
||||
self-consistency error (i.e., internal bug).
|
||||
</LI>
|
||||
<LI><CODE>COMEDILIB_LOGLEVEL=2</CODE>
|
||||
|
||||
Comedilib prints an error message when an invalid
|
||||
parameter is passed to comedilib.
|
||||
</LI>
|
||||
<LI><CODE>COMEDILIB_LOGLEVEL=3</CODE>
|
||||
|
||||
Comedilib prints an error message whenever an error is generated
|
||||
in the comedilib library or is generated in the C library when
|
||||
called by comedilib.
|
||||
</LI>
|
||||
<LI><CODE>COMEDILIB_LOGLEVEL=4</CODE>
|
||||
|
||||
Comedilib prints a lot of debugging messages.
|
||||
</LI>
|
||||
</UL>
|
||||
</P>
|
||||
<P>Bugs: Libcomedi doesn't currently have much debugging information.</P>
|
||||
<P>Source: <CODE>/lib/error.c</CODE></P>
|
||||
|
||||
|
||||
<H3>comedi_open()</H3>
|
||||
|
||||
|
||||
<P><CODE>comedi_t *comedi_open(char *filename);</CODE></P>
|
||||
<P>Opens a comedi device specified by the filename <CODE>filename</CODE>.
|
||||
Returns NULL on error. On sucess, it returns a handle that is
|
||||
given as a parameter to other libcomedi functions.</P>
|
||||
|
||||
<P>You are not supposed to have access to the internals of the
|
||||
<CODE>comedi_t</CODE> structure.</P>
|
||||
<P>Bugs: Not strictly identical to <CODE>fopen</CODE></P>
|
||||
<P>Source: <CODE>/lib/comedi.c</CODE></P>
|
||||
|
||||
|
||||
|
||||
<H3><A NAME="comedi_perror"></A> comedi_perror()</H3>
|
||||
|
||||
|
||||
<P><CODE>void comedi_perror(const char *s);</CODE></P>
|
||||
<P>When a comedilib function fails, it usually returns -1 or
|
||||
NULL, depending on the return type. An internal library
|
||||
variable stores an error number, which can be retrieved with
|
||||
<CODE>
|
||||
<A HREF="#comedi_errno">comedi_errno()</A></CODE>.
|
||||
This error number can be
|
||||
converted to a human-readable form by the functions
|
||||
<CODE>comedi_perror()</CODE>
|
||||
and <CODE>
|
||||
<A HREF="#comedi_strerror">comedi_strerror()</A></CODE>.</P>
|
||||
<P>These functions are intended to mimic the behavior of the
|
||||
standard C library functions <CODE>perror()</CODE>,
|
||||
<CODE>strerror</CODE>, and <CODE>errno()</CODE>. In particular,
|
||||
comedilib functions sometimes return an error that is generated
|
||||
inside the C library; the comedi error message in this case
|
||||
is the same as the C library.</P>
|
||||
<P>The function <CODE>comedi_perror()</CODE> prints an error
|
||||
message to stderr. The error message consists of the
|
||||
argument string, a colon, a space, a description of the error
|
||||
condition, and a new line.</P>
|
||||
<P>Bugs: Does not support internationalization.</P>
|
||||
<P>Source: <CODE>/lib/error.c</CODE></P>
|
||||
|
||||
|
||||
|
||||
<H3><A NAME="comedi_strerror"></A> comedi_strerror()</H3>
|
||||
|
||||
|
||||
<P><CODE>*comedi_strerror(int errnum);</CODE></P>
|
||||
<P>When a comedilib function fails, it usually returns -1 or
|
||||
NULL, depending on the return type. An internal library
|
||||
variable stores an error number, which can be retrieved with
|
||||
<CODE>
|
||||
<A HREF="#comedi_errno">comedi_errno()</A></CODE>. This error number can be
|
||||
converted to a human-readable form by the functions
|
||||
<CODE>
|
||||
<A HREF="#comedi_perror">comedi_perror()</A></CODE>
|
||||
and <CODE>comedi_strerror()</CODE>.</P>
|
||||
<P>These functions are intended to mimic the behavior of the
|
||||
standard C library functions <CODE>perror()</CODE>,
|
||||
<CODE>strerror</CODE>, and <CODE>errno()</CODE>. In particular,
|
||||
comedilib functions sometimes return an error that is generated
|
||||
inside the C library; the comedi error message in this case
|
||||
is the same as the C library.</P>
|
||||
<P>The function <CODE>comedi_strerror()</CODE> returns a pointer to a
|
||||
character string
|
||||
describing the comedilib error <CODE>errnum</CODE>. The persistence
|
||||
of the returned pointer is undefined, and should not be trusted
|
||||
after the next libcomedi call. An unrecognized error number will
|
||||
return a pointer to the string "undefined error", or similar.</P>
|
||||
<P>Bugs: Does not support internationalization.</P>
|
||||
<P>Source: <CODE>/lib/error.c</CODE></P>
|
||||
|
||||
|
||||
|
||||
<H3>comedi_sv_init()</H3>
|
||||
|
||||
|
||||
<P><CODE>int comedi_sv_init(comedi_sv_t *sv,comedi_t *dev,unsigned int subd,
|
||||
unsigned int chan);</CODE></P>
|
||||
|
||||
<P><CODE>comedi_sv_init</CODE> initializes the slow varying comedi structure
|
||||
<CODE>sv</CODE> of the device <CODE>dev</CODE>, the subdevice <CODE>subd</CODE> (analog input) and
|
||||
the channel <CODE>chan</CODE>.
|
||||
The slow varying comedi structure <CODE>sv</CODE> of type <CODE>
|
||||
<A HREF="#comedi_sv_t">comedi_sv_t</A></CODE>
|
||||
specifies the signal measurement. The default number of averaged
|
||||
samples is 100. Returns zero on success, -1 on error.</P>
|
||||
<P>Bugs: comedi_sv_* was very poorly designed.</P>
|
||||
<P>Source: <CODE>/lib/sv.c</CODE></P>
|
||||
|
||||
|
||||
|
||||
<H3>comedi_sv_update()</H3>
|
||||
|
||||
|
||||
<P><CODE>int comedi_sv_update(comedi_sv_t *sv);</CODE></P>
|
||||
<P>The function <CODE>comedi_sv_update</CODE> updates the slow varying comedi structure
|
||||
<CODE>sv</CODE>.
|
||||
Returns zero on success, -1 on error.</P>
|
||||
<P>Source: <CODE>/lib/sv.c</CODE></P>
|
||||
|
||||
|
||||
|
||||
<H3>int comedi_sv_measure()</H3>
|
||||
|
||||
|
||||
<P><CODE>int comedi_sv_measure(comedi_sv_t *it,double *data);</CODE></P>
|
||||
<P><CODE>comedi_sv_measure</CODE> measures the slow variing signal. The measurement
|
||||
is specified by the slow varying comedi structure <CODE>sv</CODE>, the result is
|
||||
stored in <CODE>data</CODE>.
|
||||
On success returns the number of samples, -1 on error.</P>
|
||||
<P>Source: <CODE>/lib/sv.c</CODE></P>
|
||||
|
||||
|
||||
|
||||
<H3><A NAME="comedi_to_phys"></A> comedi_to_phys()</H3>
|
||||
|
||||
|
||||
<P><CODE>double comedi_to_phys(lsampl_t data, comedi_range *rng,
|
||||
lsampl_t maxdata);</CODE></P>
|
||||
<P>Converts data given in sample values (lsampl_t, between 0 and
|
||||
maxdata) into physical units (double). The parameter <CODE>rng</CODE>
|
||||
represents the conversion information to use, and the parameter
|
||||
<CODE>maxdata</CODE> represents the maximum possible data value for the
|
||||
channel that the data was read.</P>
|
||||
<P>Source: <CODE>/lib/range.c</CODE></P>
|
||||
|
||||
|
||||
|
||||
<H3>comedi_trigger() <I>(deprecated)</I></H3>
|
||||
|
||||
|
||||
<P><CODE>int comedi_trigger(comedi_t *it,comedi_trig *trig);</CODE></P>
|
||||
<P>The function <CODE>comedi_trigger</CODE> instructs comedi to
|
||||
perform the command specified by the
|
||||
<A HREF="#comedi_trig_struct">trigger structure</A> <CODE>trig</CODE>. Results depend on
|
||||
the particular command being issued. If there is an
|
||||
error, -1 is returned.</P>
|
||||
<P>Lifetime: removal at 1.0.</P>
|
||||
<P>Source: <CODE>/lib/comedi.c</CODE></P>
|
||||
|
||||
|
||||
|
||||
<H3><A NAME="comedi_get_subdevice_flags"></A> comedi_get_subdevice_flags()</H3>
|
||||
|
||||
|
||||
<P><CODE>int comedi_get_subdevice_flags(comedi_t *dev, unsigned int subdevice);</CODE></P>
|
||||
|
||||
<P>This function returns a bitfield describing the capabilities of the
|
||||
specified subdevice. If there is an error, -1 is returned.</P>
|
||||
|
||||
<P>The bits are:</P>
|
||||
<P>
|
||||
<UL>
|
||||
<LI>SDF_BUSY subdevice is running a command</LI>
|
||||
<LI>SDF_BUSY_OWNER subdevice is running a command started by
|
||||
the file descriptor used by <CODE>dev</CODE>.</LI>
|
||||
<LI>SDF_LOCKED subdevice is locked</LI>
|
||||
<LI>SDF_LOCKED_OWNER subdevice is locked by the file descriptor used
|
||||
by <CODE>dev</CODE>.</LI>
|
||||
<LI>SDF_MAXDATA maximum data values are channel dependent</LI>
|
||||
<LI>SDF_FLAGS channel flags are channel dependent</LI>
|
||||
<LI>SDF_RANGETYPE range types are channel dependent</LI>
|
||||
<LI>SDF_MODE0 deprecated</LI>
|
||||
<LI>SDF_MODE1 deprecated</LI>
|
||||
<LI>SDF_MODE2 deprecated</LI>
|
||||
<LI>SDF_MODE3 deprecated</LI>
|
||||
<LI>SDF_MODE4 deprecated</LI>
|
||||
<LI>SDF_CMD subdevice supports commands</LI>
|
||||
<LI>SDF_READABLE subdevice can be read from</LI>
|
||||
<LI>SDF_WRITEABLE subdevice can be written to</LI>
|
||||
<LI>SDF_RT deprecated</LI>
|
||||
<LI>SDF_GROUND subdevice is capable of ground analog reference</LI>
|
||||
<LI>SDF_COMMON subdevice is capable of common analog reference</LI>
|
||||
<LI>SDF_DIFF subdevice is capable of differential analog reference</LI>
|
||||
<LI>SDF_OTHER subdevice is capable of other analog reference</LI>
|
||||
<LI>SDF_DITHER subdevice recognizes dither flag</LI>
|
||||
<LI>SDF_DEGLITCH subdevice recognizes deglitch flag</LI>
|
||||
<LI>SDF_MMAP deprecated</LI>
|
||||
<LI>SDF_RUNNING subdevice is acquiring data (i.e., command has not
|
||||
completed)</LI>
|
||||
<LI>SDF_LSAMPL subdevice uses samples of type lsampl_t (otherwise
|
||||
sampl_t)</LI>
|
||||
<LI>SDF_PACKED subdevice uses bitfield samples (otherwise it uses
|
||||
one sample per channel)</LI>
|
||||
</UL>
|
||||
</P>
|
||||
|
||||
|
||||
|
||||
<P>The bit definitions are part of the Comedi kernel interface.</P>
|
||||
|
||||
|
||||
|
||||
<H3><A NAME="comedi_range_is_chan_specific"></A> comedi_range_is_chan_specific()</H3>
|
||||
|
||||
|
||||
<P><CODE>int comedi_range_is_chan_specific(comedi_t *dev,unsigned int subdevice);</CODE></P>
|
||||
|
||||
<P>If each channel of the specified subdevice has a different range
|
||||
specification, this function returns 1. Otherwise, this function
|
||||
returns 0. On error, this function returns -1.</P>
|
||||
|
||||
|
||||
|
||||
<H3><A NAME="undocumented"></A> Undocumented functions</H3>
|
||||
|
||||
|
||||
|
||||
<P>
|
||||
<UL>
|
||||
<LI>comedi_maxdata_is_chan_specific()</LI>
|
||||
<LI>comedi_get_buffer_size()</LI>
|
||||
<LI>comedi_get_max_buffer_size()</LI>
|
||||
<LI>comedi_set_buffer_size()</LI>
|
||||
<LI>comedi_set_max_buffer_size()</LI>
|
||||
<LI>comedi_do_insnlist()</LI>
|
||||
<LI>comedi_do_insn()</LI>
|
||||
<LI>comedi_lock()</LI>
|
||||
<LI>comedi_unlock()</LI>
|
||||
<LI>comedi_get_cmd_src_mask()</LI>
|
||||
<LI>comedi_get_cmd_generic_timed()</LI>
|
||||
<LI>comedi_cancel()</LI>
|
||||
<LI>comedi_command()</LI>
|
||||
<LI>comedi_command_test()</LI>
|
||||
<LI>comedi_poll()</LI>
|
||||
<LI>comedi_get_buffer_contents()</LI>
|
||||
<LI>comedi_mark_buffer_read()</LI>
|
||||
<LI>comedi_get_buffer_offset()</LI>
|
||||
<LI>comedi_set_global_oor_behavior()</LI>
|
||||
</UL>
|
||||
</P>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<HR>
|
||||
Next
|
||||
Previous
|
||||
<A HREF="comedilib_reference.html#toc1">Contents</A>
|
||||
</BODY>
|
||||
</HTML>
|
|
@ -1,39 +0,0 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
|
||||
<TITLE>Comedi Documentation: Reference Comedilib-0.7.9: types</TITLE>
|
||||
<LINK HREF="comedilib_reference-3.html" REL=next>
|
||||
<LINK HREF="comedilib_reference-1.html" REL=previous>
|
||||
<LINK HREF="comedilib_reference.html#toc2" REL=contents>
|
||||
</HEAD>
|
||||
<BODY>
|
||||
<A HREF="comedilib_reference-3.html">Next</A>
|
||||
<A HREF="comedilib_reference-1.html">Previous</A>
|
||||
<A HREF="comedilib_reference.html#toc2">Contents</A>
|
||||
<HR>
|
||||
<H2><A NAME="s2">2. Reference Comedilib-0.7.9: types</A></H2>
|
||||
|
||||
<P>
|
||||
<H2><A NAME="ss2.1">2.1 sampl_t</A>
|
||||
</H2>
|
||||
|
||||
<P>defined in <CODE>comedi.h</CODE>
|
||||
correspond to <CODE>unsigned int</CODE>
|
||||
type of the sample data
|
||||
<P>
|
||||
<P>
|
||||
<H2><A NAME="comedi_sv_t"></A> <A NAME="ss2.2">2.2 comedi_sv_t</A>
|
||||
</H2>
|
||||
|
||||
<P>defined in <CODE>comedilib.h</CODE>
|
||||
correspond to <CODE>
|
||||
<A HREF="comedilib_reference-3.html#comedi_sv_struct">comedi_sv_struct</A></CODE>
|
||||
<P>
|
||||
<P>
|
||||
<HR>
|
||||
<A HREF="comedilib_reference-3.html">Next</A>
|
||||
<A HREF="comedilib_reference-1.html">Previous</A>
|
||||
<A HREF="comedilib_reference.html#toc2">Contents</A>
|
||||
</BODY>
|
||||
</HTML>
|
|
@ -1,72 +0,0 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
|
||||
<TITLE>Comedi Documentation: Reference Comedilib-0.7.9: structures</TITLE>
|
||||
<LINK HREF="comedilib_reference-4.html" REL=next>
|
||||
<LINK HREF="comedilib_reference-2.html" REL=previous>
|
||||
<LINK HREF="comedilib_reference.html#toc3" REL=contents>
|
||||
</HEAD>
|
||||
<BODY>
|
||||
<A HREF="comedilib_reference-4.html">Next</A>
|
||||
<A HREF="comedilib_reference-2.html">Previous</A>
|
||||
<A HREF="comedilib_reference.html#toc3">Contents</A>
|
||||
<HR>
|
||||
<H2><A NAME="s3">3. Reference Comedilib-0.7.9: structures</A></H2>
|
||||
|
||||
<P>
|
||||
<P>
|
||||
<H2><A NAME="comedi_trig_struct"></A> <A NAME="ss3.1">3.1 comedi_trig_struct</A>
|
||||
</H2>
|
||||
|
||||
<P>
|
||||
<P>
|
||||
<BLOCKQUOTE><CODE>
|
||||
<PRE>
|
||||
struct comedi_trig_struct{
|
||||
unsigned int subdev; /* subdevice */
|
||||
unsigned int mode; /* mode */
|
||||
unsigned int flags;
|
||||
unsigned int n_chan; /* number of channels */
|
||||
unsigned int *chanlist; /* channel/range list */
|
||||
sampl_t *data; /* data list, size depends on subd flags */
|
||||
unsigned int n; /* number of scans */
|
||||
unsigned int trigsrc;
|
||||
unsigned int trigvar;
|
||||
unsigned int trigvar1;
|
||||
unsigned int data_len;
|
||||
unsigned int unused[3];
|
||||
}
|
||||
</PRE>
|
||||
</CODE></BLOCKQUOTE>
|
||||
<P>
|
||||
<P>
|
||||
<H2><A NAME="comedi_sv_struct"></A> <A NAME="ss3.2">3.2 comedi_sv_struct</A>
|
||||
</H2>
|
||||
|
||||
<P>
|
||||
<BLOCKQUOTE><CODE>
|
||||
<PRE>
|
||||
struct comedi_sv_struct{
|
||||
comedi_t *dev;
|
||||
unsigned int subdevice;
|
||||
unsigned int chan;
|
||||
|
||||
/* range policy */
|
||||
int range;
|
||||
int aref;
|
||||
|
||||
/* number of measurements to average (for ai) */
|
||||
int n;
|
||||
|
||||
lsampl_t maxdata;
|
||||
}
|
||||
</PRE>
|
||||
</CODE></BLOCKQUOTE>
|
||||
<P>
|
||||
<HR>
|
||||
<A HREF="comedilib_reference-4.html">Next</A>
|
||||
<A HREF="comedilib_reference-2.html">Previous</A>
|
||||
<A HREF="comedilib_reference.html#toc3">Contents</A>
|
||||
</BODY>
|
||||
</HTML>
|
|
@ -1,646 +0,0 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
|
||||
<TITLE>Comedi Documentation: Reference Comedilib-0.7.9: functions</TITLE>
|
||||
<LINK HREF="comedilib_reference-3.html" REL=previous>
|
||||
<LINK HREF="comedilib_reference.html#toc4" REL=contents>
|
||||
</HEAD>
|
||||
<BODY>
|
||||
Next
|
||||
<A HREF="comedilib_reference-3.html">Previous</A>
|
||||
<A HREF="comedilib_reference.html#toc4">Contents</A>
|
||||
<HR>
|
||||
<H2><A NAME="s4">4. Reference Comedilib-0.7.9: functions</A></H2>
|
||||
|
||||
<P>
|
||||
<P>
|
||||
<H2><A NAME="ss4.1">4.1 comedi_close()</A>
|
||||
</H2>
|
||||
|
||||
<P>
|
||||
<P><CODE>void comedi_close(comedi_t *it);</CODE>
|
||||
<P>Closes a device previously opened by comedi_open().
|
||||
<P>Source: <CODE>/lib/comedi.c</CODE>
|
||||
<P>
|
||||
<H2><A NAME="ss4.2">4.2 comedi_data_read()</A>
|
||||
</H2>
|
||||
|
||||
<P>
|
||||
<P><CODE>int comedi_data_read(comedi_t *it,unsigned int subd,unsigned int chan,
|
||||
unsigned int range,unsigned int aref,lsampl_t *data);</CODE>
|
||||
<P>Reads a single sample on the channel that
|
||||
is specified by the comedi device <CODE>it</CODE>, the
|
||||
subdevice <CODE>subd</CODE>, and the channel <CODE>chan</CODE>.
|
||||
For the operation,
|
||||
the device is configured to use range specification
|
||||
<CODE>range</CODE> and (if appropriate) analog reference type
|
||||
<CODE>aref</CODE>. Analog reference types that are not supported
|
||||
by the device are silently ignored.
|
||||
<P><CODE>comedi_data_read()</CODE> reads one data value from
|
||||
the specified channel and places the
|
||||
data value that is read in the location pointed to by
|
||||
<CODE>data</CODE>.
|
||||
<P>On sucess, <CODE>comedi_data_read()</CODE> returns 0. If there is an error, -1 is
|
||||
returned.
|
||||
<P>Valid analog reference numbers are:
|
||||
<P>
|
||||
<UL>
|
||||
<LI>AREF_GROUND Reference to analog ground</LI>
|
||||
<LI>AREF_COMMON Reference to analog common</LI>
|
||||
<LI>AREF_DIFF Differential reference</LI>
|
||||
<LI>AREF_OTHER Board-specific meaning</LI>
|
||||
</UL>
|
||||
<P>Valid data values used by these function is an unsigned integer
|
||||
less than or equal to <CODE>maxdata</CODE>, which is channel-dependent.
|
||||
Conversion of these data value to physical units can be performed
|
||||
by <CODE>
|
||||
<A HREF="#comedi_to_phys">comedi_to_phys()</A></CODE>.
|
||||
<P>Source: <CODE>/lib/data.c</CODE>
|
||||
<P>
|
||||
<P>
|
||||
<H2><A NAME="ss4.3">4.3 comedi_data_write()</A>
|
||||
</H2>
|
||||
|
||||
<P>
|
||||
<P><CODE>int comedi_data_write(comedi_t *it,unsigned int subd,unsigned int chan,
|
||||
unsigned int range,unsigned int aref,lsampl_t data);</CODE>
|
||||
<P>Writes a single sample on the channel that
|
||||
is specified by the comedi device <CODE>it</CODE>, the
|
||||
subdevice <CODE>subd</CODE>, and the channel <CODE>chan</CODE>.
|
||||
For the operation,
|
||||
the device is configured to use range specification
|
||||
<CODE>range</CODE> and (if appropriate) analog reference type
|
||||
<CODE>aref</CODE>. Analog reference types that are not supported
|
||||
by the device are silently ignored.
|
||||
<P><CODE>comedi_data_write()</CODE> writes the data value
|
||||
specified by the argument <CODE>data</CODE> to
|
||||
the specified channel.
|
||||
<P>On sucess, <CODE>comedi_data_write()</CODE> returns 0. If there is an error, -1 is
|
||||
returned.
|
||||
<P>Valid analog reference numbers are:
|
||||
<P>
|
||||
<UL>
|
||||
<LI>AREF_GROUND Reference to analog ground</LI>
|
||||
<LI>AREF_COMMON Reference to analog common</LI>
|
||||
<LI>AREF_DIFF Differential reference</LI>
|
||||
<LI>AREF_OTHER Board-specific meaning</LI>
|
||||
</UL>
|
||||
<P>Valid data values used by these functions is an unsigned integer
|
||||
less than or equal to <CODE>maxdata</CODE>, which is channel-dependent.
|
||||
Conversion of physical units to these data value can be performed
|
||||
by <CODE>
|
||||
<A HREF="#comedi_from_phys">comedi_from_phys()</A></CODE>.
|
||||
<P>Source: <CODE>/lib/data.c</CODE>
|
||||
<P>
|
||||
<P>
|
||||
<P>
|
||||
<H2><A NAME="ss4.4">4.4 comedi_dio_bitfield();</A>
|
||||
</H2>
|
||||
|
||||
<P>int comedi_dio_bitfield(comedi_t *it,unsigned int subd,unsigned int write_mask,
|
||||
unsigned int *bits);
|
||||
<P>Source: <CODE>/lib/dio.c</CODE>
|
||||
<P>
|
||||
<P>
|
||||
<H2><A NAME="ss4.5">4.5 comedi_dio_config()</A>
|
||||
</H2>
|
||||
|
||||
<P><CODE>int comedi_dio_config(comedi_t *it,unsigned int subd,unsigned int chan,unsigned int dir);</CODE>
|
||||
<P>The function <CODE>comedi_dio_config</CODE> configures the direction <CODE>dir</CODE> of
|
||||
channel <CODE>chan</CODE> belonging to the configurable digital input/output subdevice
|
||||
<CODE>subd</CODE> of the device <CODE>it</CODE>. Returns -1 on failure.
|
||||
<P>
|
||||
<P>Valid directions are:
|
||||
<UL>
|
||||
<LI> COMEDI_INPUT</LI>
|
||||
<LI> COMEDI_OUTPUT</LI>
|
||||
</UL>
|
||||
<P>Source: <CODE>/lib/dio.c</CODE>
|
||||
<P>
|
||||
<P>
|
||||
<H2><A NAME="ss4.6">4.6 comedi_dio_read()</A>
|
||||
</H2>
|
||||
|
||||
<P><CODE>int comedi_dio_read(comedi_t *it,unsigned int subd,unsigned int chan,unsigned int *bit);</CODE>
|
||||
<P>The function reads the status of channel <CODE>chan</CODE> belonging to the digital
|
||||
input subdevice <CODE>subd</CODE> of device <CODE>it</CODE>. The result, 0 or 1, is stored
|
||||
in bit. Returns -1 on failure.
|
||||
<P>Source: <CODE>/lib/dio.c</CODE>
|
||||
<P>
|
||||
<P>
|
||||
<H2><A NAME="ss4.7">4.7 comedi_dio_write()</A>
|
||||
</H2>
|
||||
|
||||
<P><CODE>int comedi_dio_write(comedi_t *it,unsigned int subd,unsigned int chan,unsigned int bit);</CODE>
|
||||
<P>The function writes the value of <CODE>bit</CODE>, 0 or 1, in channel <CODE>chan</CODE>,
|
||||
belonging to the digital output device <CODE>subd</CODE> of device <CODE>it</CODE>. Returns
|
||||
-1 on failure.
|
||||
<P>Source: <CODE>/lib/dio.c</CODE>
|
||||
<P>
|
||||
<P>
|
||||
<H2><A NAME="ss4.8">4.8 comedi_fileno()</A>
|
||||
</H2>
|
||||
|
||||
<P>
|
||||
<P><CODE>int comedi_fileno(comedi_t *it);</CODE>
|
||||
<P>The function <CODE>comedi_fileno</CODE>
|
||||
returns the integer descriptor for the handle <CODE>it</CODE>. If
|
||||
<CODE>it</CODE> is an invalid <CODE>comedi_t</CODE> pointer, the function
|
||||
returns -1 and sets the appropriate comedilib error value.
|
||||
<P>Source: <CODE>/lib/comedi.c</CODE>
|
||||
<P>
|
||||
<P>
|
||||
<P>
|
||||
<H2><A NAME="ss4.9">4.9 comedi_find_range()</A>
|
||||
</H2>
|
||||
|
||||
<P>
|
||||
<P><CODE>int comedi_find_range(comedi_t *it, unsigned int subdevice, unsigned
|
||||
int chan, unsigned int unit, double min, double max);</CODE>
|
||||
<P>The function <CODE>comedi_find_range</CODE> tries to
|
||||
locate the optimal (smallest) range of a channel <CODE>chan</CODE> belonging to a
|
||||
<CODE>subdevice</CODE> of the comedi device <CODE>it</CODE>, which includes the data
|
||||
range between <CODE>min</CODE> and <CODE>max</CODE> in <CODE>units</CODE> with highest
|
||||
precision. If it finds a matching range,
|
||||
it returns its index. If no matching range is available, it returns -1.
|
||||
<P>Valid units are:
|
||||
<P>
|
||||
<UL>
|
||||
<LI>UNIT_volt </LI>
|
||||
<LI>UNIT_mA</LI>
|
||||
<LI>UNIT_none</LI>
|
||||
</UL>
|
||||
<P>Source: <CODE>/lib/range.c</CODE>
|
||||
<P>
|
||||
<P>
|
||||
<P>
|
||||
<H2><A NAME="comedi_errno"></A> <A NAME="ss4.10">4.10 comedi_errno()</A>
|
||||
</H2>
|
||||
|
||||
<P><CODE>int comedi_errno(void);</CODE>
|
||||
<P>
|
||||
<P>When a comedilib function fails, it usually returns -1 or
|
||||
NULL, depending on the return type. An internal library
|
||||
variable stores an error number, which can be retrieved with
|
||||
<CODE>comedi_errno()</CODE>. This error number can be
|
||||
converted to a human-readable form by the functions
|
||||
<CODE>
|
||||
<A HREF="#comedi_perror">comedi_perror()</A></CODE>
|
||||
and <CODE>
|
||||
<A HREF="#comedi_strerror">comedi_strerror()</A></CODE>.
|
||||
<P>These functions are intended to mimic the behavior of the
|
||||
standard C library functions <CODE>perror()</CODE>,
|
||||
<CODE>strerror</CODE>, and <CODE>errno()</CODE>. In particular,
|
||||
comedilib functions sometimes return an error that is generated
|
||||
inside the C library; the comedi error message in this case
|
||||
is the same as the C library.
|
||||
<P>The function <CODE>comedi_errno()</CODE>
|
||||
returns an integer describing the most recent comedilib error. This
|
||||
integer may be used as the <CODE>errnum</CODE> parameter for
|
||||
<CODE>
|
||||
<A HREF="#comedi_strerror">comedi_strerror()</A></CODE>.
|
||||
<P>Source: <CODE>/lib/error.c</CODE>
|
||||
<P>
|
||||
<P>
|
||||
<P>
|
||||
<H2><A NAME="ss4.11">4.11 comedi_find_subdevice_by_type()</A>
|
||||
</H2>
|
||||
|
||||
<P>
|
||||
<P><CODE>int comedi_find_subdevice_by_type(comedi_t *it,int type,unsigned int
|
||||
start_subdevice);</CODE>
|
||||
<P>The function <CODE>comedi_find_subdevice_by_type</CODE> tries to
|
||||
locate a subdevice belonging to comedi device <CODE>it</CODE>,
|
||||
having type <CODE>type</CODE>, starting with the subdevice
|
||||
<CODE>start_subdevice</CODE>. If it finds the requested subdevice,
|
||||
it returns its index. If it does not locate the requested
|
||||
subdevice, it returns -1 and sets the comedi error number to
|
||||
"subdevice not found". If there is an error, the function
|
||||
returns -1 and sets the appropriate error.
|
||||
<P>For subdevice types, see the manual page for the function
|
||||
<CODE>
|
||||
<A HREF="#comedi_get_subdevice_type">comedi_get_subdevice_type()</A></CODE>.
|
||||
<P>Source: <CODE>/lib/get.c</CODE>
|
||||
<P>
|
||||
<P>
|
||||
<P>
|
||||
<H2><A NAME="comedi_from_phys"></A> <A NAME="ss4.12">4.12 comedi_from_phys()</A>
|
||||
</H2>
|
||||
|
||||
<P>
|
||||
<P><CODE>lsampl_t comedi_from_phys(double data, comedi_range *rng, lsampl_t maxdata);</CODE>
|
||||
<P>Converts data given in physical units (double) into sample values (lsampl_t, between 0 and maxdata).
|
||||
The parameter <CODE>rng</CODE> represents the conversion information to use, and the parameter <CODE>maxdata</CODE> represents
|
||||
the maximum possible data value for the channel that the data will be written to.
|
||||
<P>Source: <CODE>/lib/range.c</CODE>
|
||||
<P>
|
||||
<P>
|
||||
<P>
|
||||
<H2><A NAME="ss4.13">4.13 comedi_get_board_name()</A>
|
||||
</H2>
|
||||
|
||||
<P>
|
||||
<P><CODE>char *comedi_get_board_name(comedi_t *it);</CODE>
|
||||
<P>The function <CODE>comedi_get_board_name</CODE> returns a pointer
|
||||
to a string containing the name of the device. This pointer is
|
||||
valid until the comedi descriptor <CODE>it</CODE> is closed. This
|
||||
function returns NULL if there is an error.
|
||||
<P>Source: <CODE>/lib/get.c</CODE>
|
||||
<P>
|
||||
<P>
|
||||
<P>
|
||||
<H2><A NAME="ss4.14">4.14 comedi_get_driver_name()</A>
|
||||
</H2>
|
||||
|
||||
<P>
|
||||
<P><CODE>char *comedi_get_driver_name(comedi_t *it);</CODE>
|
||||
<P>The function <CODE>comedi_get_driver_name</CODE> returns a pointer
|
||||
to a string containing the name of the driver being used by comedi
|
||||
for the comedi device represented by <CODE>it</CODE>. This pointer is
|
||||
valid until the comedi descriptor <CODE>it</CODE> is closed. This
|
||||
function returns NULL if there is an error.
|
||||
<P>Source: <CODE>/lib/get.c</CODE>
|
||||
<P>
|
||||
<P>
|
||||
<P>
|
||||
<H2><A NAME="ss4.15">4.15 comedi_get_maxdata()</A>
|
||||
</H2>
|
||||
|
||||
<P>
|
||||
<P><CODE>lsampl_t comedi_get_maxdata(comedi_t *it,unsigned int subdevice,unsigned int
|
||||
chan);</CODE>
|
||||
<P>The function <CODE>comedi_get_maxdata()</CODE> returns the maximum
|
||||
valid data value for channel <CODE>chan</CODE> of subdevice
|
||||
<CODE>subdevice</CODE> belonging to the comedi device <CODE>it</CODE>
|
||||
This function returns 0 on error.
|
||||
<P>Source: <CODE>/lib/get.c</CODE>
|
||||
<P>
|
||||
<P>
|
||||
<P>
|
||||
<H2><A NAME="ss4.16">4.16 comedi_get_n_channels()</A>
|
||||
</H2>
|
||||
|
||||
<P>
|
||||
<P><CODE>int comedi_get_n_channels(comedi_t *it,unsigned int subdevice);</CODE>
|
||||
<P>The function <CODE>comedi_get_n_channels()</CODE> returns the number
|
||||
of channels of the subdevice belonging to the comedi device <CODE>it</CODE>
|
||||
and having index <CODE>subdevice</CODE>. This function returns -1 on error.
|
||||
<P>Source: <CODE>/lib/get.c</CODE>
|
||||
<P>
|
||||
<P>
|
||||
<P>
|
||||
<H2><A NAME="ss4.17">4.17 comedi_get_n_ranges()</A>
|
||||
</H2>
|
||||
|
||||
<P>
|
||||
<P><CODE>int comedi_get_n_ranges(comedi_t *it,unsigned int subdevice, unsigned int
|
||||
chan);</CODE>
|
||||
<P>The function <CODE>comedi_get_n_ranges()</CODE> returns the number
|
||||
of ranges of the channel <CODE>chan</CODE> belonging to the <CODE>subdevice</CODE>
|
||||
of the comedi device <CODE>it</CODE>. This function returns -1 on error.
|
||||
<P>Source: <CODE>/lib/range.c</CODE>
|
||||
<P>
|
||||
<P>
|
||||
<P>
|
||||
<H2><A NAME="ss4.18">4.18 comedi_get_n_subdevices()</A>
|
||||
</H2>
|
||||
|
||||
<P>
|
||||
<P><CODE>int comedi_get_n_subdevices(comedi_t *it);</CODE>
|
||||
<P>The function <CODE>comedi_get_n_subdevices</CODE> returns the
|
||||
number of subdevices associated with the comedi descriptor
|
||||
<CODE>it</CODE>, or -1 if there is an error.
|
||||
<P>Source: <CODE>/lib/get.c</CODE>
|
||||
<P>
|
||||
<P>
|
||||
<P>
|
||||
<H2><A NAME="ss4.19">4.19 comedi_get_range()</A>
|
||||
</H2>
|
||||
|
||||
<P>
|
||||
<P><CODE>comedi_range * comedi_get_range(comedi_t *it,unsigned int subdevice,unsigned int chan,unsigned int
|
||||
range);</CODE>
|
||||
<P>The function <CODE>comedi_get_range</CODE> returns a pointer to a
|
||||
comedi_range structure that contains information that can be used to
|
||||
convert sample values to or from physical units. The pointer is valid
|
||||
until the comedi device <CODE>it</CODE> is closed. If there is an
|
||||
error, NULL is returned.
|
||||
<P>Source: <CODE>/lib/get.c</CODE>
|
||||
<P>
|
||||
<P>
|
||||
<H2><A NAME="ss4.20">4.20 comedi_get_rangetype()</A>
|
||||
</H2>
|
||||
|
||||
<P>
|
||||
<P><CODE>int comedi_get_rangetype(comedi_t *it,unsigned int subdevice,unsigned int
|
||||
chan);</CODE>
|
||||
<P>The function <CODE>comedi_get_rangetype()</CODE> returns an integer
|
||||
that represents the number of range specifications available for a
|
||||
particular channel <CODE>chan</CODE> of the subdevice <CODE>subdevice</CODE>, as well as a conversion table to convert sample
|
||||
values to/from physical units.
|
||||
<P>The macro
|
||||
<CODE>RANGE_LENGTH(rangetype)</CODE>
|
||||
can be used to determine the number of range specifications for a given
|
||||
range type.
|
||||
<P>Source: <CODE>/lib/get.c</CODE>
|
||||
<P>
|
||||
<P>
|
||||
<H2><A NAME="comedi_get_subdevice_type"></A> <A NAME="ss4.21">4.21 comedi_get_subdevice_type()</A>
|
||||
</H2>
|
||||
|
||||
<P>
|
||||
<P><CODE>int comedi_get_subdevice_type(comedi_t *it,unsigned int subdevice);</CODE>
|
||||
<P>The function <CODE>comedi_get_subdevice_type()</CODE> returns an
|
||||
integer describing the type of subdevice that belongs to the comedi
|
||||
device <CODE>it</CODE> and has the index <CODE>subdevice</CODE>. The
|
||||
function returns -1 is there is an error.
|
||||
<P>Valid subdevice types are:
|
||||
<P>
|
||||
<UL>
|
||||
<LI><CODE>COMEDI_SUBD_UNUSED</CODE>
|
||||
Subdevice has no functionality, i.e., a place-holder.</LI>
|
||||
<LI><CODE>COMEDI_SUBD_AI</CODE> Analog input</LI>
|
||||
<LI><CODE>COMEDI_SUBD_AO</CODE> Analog output</LI>
|
||||
<LI><CODE>COMEDI_SUBD_DI</CODE> Digital input</LI>
|
||||
<LI><CODE>COMEDI_SUBD_DO</CODE> Digital output</LI>
|
||||
<LI><CODE>COMEDI_SUBD_DIO</CODE>
|
||||
Digital input/output. Channels are configurable as to whether they
|
||||
are inputs or outputs.</LI>
|
||||
<LI><CODE>COMEDI_SUBD_COUNTER</CODE> Counter</LI>
|
||||
<LI><CODE>COMEDI_SUBD_TIMER</CODE> Timer</LI>
|
||||
<LI><CODE>COMEDI_SUBD_MEMORY</CODE>
|
||||
Memory, e.g., EEPROM or dual-ported RAM</LI>
|
||||
<LI><CODE>COMEDI_SUBD_CALIB</CODE>
|
||||
Calibration DACs</LI>
|
||||
<LI><CODE>COMEDI_SUBD_PROC</CODE>
|
||||
Processor or DSP</LI>
|
||||
</UL>
|
||||
<P>Source: <CODE>/lib/get.c</CODE>
|
||||
<P>
|
||||
<P>
|
||||
<H2><A NAME="ss4.22">4.22 comedi_get_timer()</A>
|
||||
</H2>
|
||||
|
||||
<P>
|
||||
<P>
|
||||
<BLOCKQUOTE><CODE>
|
||||
<PRE>
|
||||
int comedi_get_timer(comedi_t *it,unsigned int subdev, double freq,unsigned int *trigvar,
|
||||
double *actual_freq);
|
||||
</PRE>
|
||||
</CODE></BLOCKQUOTE>
|
||||
<P><CODE>comedi_get_timer</CODE> returns the type of the timer of the subdevice
|
||||
<CODE>subdev</CODE> of the device <CODE>it</CODE> ,
|
||||
<P>Supported timers are:
|
||||
<P>
|
||||
<UL>
|
||||
<LI>NULL</LI>
|
||||
<LI>dt282x_timer</LI>
|
||||
<LI>dt2814_timer</LI>
|
||||
<LI>atmio_timer</LI>
|
||||
<LI>acl8112_timer</LI>
|
||||
<LI>nanosec_timer</LI>
|
||||
</UL>
|
||||
<P>Source: <CODE>/lib/timer.c</CODE>
|
||||
<P>
|
||||
<P>
|
||||
<H2><A NAME="ss4.23">4.23 comedi_get_version_code()</A>
|
||||
</H2>
|
||||
|
||||
<P>
|
||||
<P><CODE>int comedi_get_version_code(comedi_t *it);</CODE>
|
||||
<P>The function <CODE>comedi_get_version_code()</CODE> returns the
|
||||
version code of the currently running comedi module. The version
|
||||
code is of the form 0x01072b, which is the version code for
|
||||
version 1.7.43.
|
||||
<P>Source: <CODE>/lib/get.c</CODE>
|
||||
<P>
|
||||
<P>
|
||||
<H2><A NAME="ss4.24">4.24 comedi_loglevel()</A>
|
||||
</H2>
|
||||
|
||||
<P>
|
||||
<P><CODE>int comedi_loglevel(int loglevel);</CODE>
|
||||
<P>This function affects the output of debugging and error messages
|
||||
from comedlib. By increasing the loglevel, additional debugging
|
||||
information will be printed. This function returns the previous
|
||||
loglevel. Some debugging information will only be printed if
|
||||
comedilib was compiled with this debugging information included.
|
||||
The loglevel can also be affected by the environment
|
||||
variable COMEDI_LOGLEVEL. The meaning of the loglevels is as
|
||||
follows:
|
||||
<P>COMEDILIB_LOGLEVEL=0
|
||||
<P>Comedilib prints nothing.
|
||||
<P>COMEDILIB_LOGLEVEL=1 (default)
|
||||
<P>Comedilib only prints error messages when there is a
|
||||
self-consistency error.
|
||||
<P>COMEDILIB_LOGLEVEL=2
|
||||
<P>Comedilib prints an error message whenever an invalid
|
||||
parameter is passed to comedilib.
|
||||
<P>COMEDILIB_LOGLEVEL=3
|
||||
<P>Comedilib prints an error message whenever an error is generated
|
||||
in the comedilib library or is generated in the C library when
|
||||
called by comedilib.
|
||||
<P>COMEDILIB_LOGLEVEL=4
|
||||
<P>Comedilib prints a lot of debugging messages.
|
||||
<P>
|
||||
<P>Source: <CODE>/lib/error.c</CODE>
|
||||
<P>
|
||||
<P>
|
||||
<H2><A NAME="ss4.25">4.25 comedi_open()</A>
|
||||
</H2>
|
||||
|
||||
<P>
|
||||
<P><CODE>comedi_t *comedi_open(char *fn);</CODE>
|
||||
<P>Opens a comedi device specified by the filename fn. Returns NULL
|
||||
on error. Returns a handle that is given as a parameter to other
|
||||
comedilib functions.
|
||||
<P>You are not supposed to have access to the structure comedi_t.
|
||||
<P>Source: <CODE>/lib/comedi.c</CODE>
|
||||
<P>
|
||||
<P>
|
||||
<P>
|
||||
<H2><A NAME="comedi_perror"></A> <A NAME="ss4.26">4.26 comedi_perror()</A>
|
||||
</H2>
|
||||
|
||||
<P>
|
||||
<P><CODE>void comedi_perror(const char *s);</CODE>
|
||||
<P>When a comedilib function fails, it usually returns -1 or
|
||||
NULL, depending on the return type. An internal library
|
||||
variable stores an error number, which can be retrieved with
|
||||
<CODE>
|
||||
<A HREF="#comedi_errno">comedi_errno()</A></CODE>.
|
||||
This error number can be
|
||||
converted to a human-readable form by the functions
|
||||
<CODE>comedi_perror()</CODE>
|
||||
and <CODE>
|
||||
<A HREF="#comedi_strerror">comedi_strerror()</A></CODE>.
|
||||
<P>These functions are intended to mimic the behavior of the
|
||||
standard C library functions <CODE>perror()</CODE>,
|
||||
<CODE>strerror</CODE>, and <CODE>errno()</CODE>. In particular,
|
||||
comedilib functions sometimes return an error that is generated
|
||||
inside the C library; the comedi error message in this case
|
||||
is the same as the C library.
|
||||
<P>The function <CODE>comedi_perror()</CODE> prints an error
|
||||
message to stderr. The error message consists of the
|
||||
argument string, a colon, a space, a description of the error
|
||||
condition, and a new line.
|
||||
<P>Source: <CODE>/lib/error.c</CODE>
|
||||
<P>
|
||||
<P>
|
||||
<P>
|
||||
<H2><A NAME="comedi_strerror"></A> <A NAME="ss4.27">4.27 comedi_strerror()</A>
|
||||
</H2>
|
||||
|
||||
<P>
|
||||
<P><CODE>*comedi_strerror(int errnum);</CODE>
|
||||
<P>When a comedilib function fails, it usually returns -1 or
|
||||
NULL, depending on the return type. An internal library
|
||||
variable stores an error number, which can be retrieved with
|
||||
<CODE>
|
||||
<A HREF="#comedi_errno">comedi_errno()</A></CODE>. This error number can be
|
||||
converted to a human-readable form by the functions
|
||||
<CODE>
|
||||
<A HREF="#comedi_perror">comedi_perror()</A></CODE>
|
||||
and <CODE>comedi_strerror()</CODE>.
|
||||
<P>These functions are intended to mimic the behavior of the
|
||||
standard C library functions <CODE>perror()</CODE>,
|
||||
<CODE>strerror</CODE>, and <CODE>errno()</CODE>. In particular,
|
||||
comedilib functions sometimes return an error that is generated
|
||||
inside the C library; the comedi error message in this case
|
||||
is the same as the C library.
|
||||
<P>The function <CODE>comedi_strerror()</CODE> returns a pointer to a
|
||||
character string
|
||||
describing the comedilib error <CODE>errnum</CODE>. The persistence
|
||||
of the returned pointer is undefined, and should not be trusted
|
||||
after the next comedilib call. An unrecognized error number will
|
||||
return a pointer to the string "undefined error", or similar.
|
||||
<P>Valid error strings are:
|
||||
<P>
|
||||
<UL>
|
||||
<LI><CODE>"No error"</CODE></LI>
|
||||
<LI><CODE>"Unknown error</CODE></LI>
|
||||
<LI><CODE>"Bad comedi_t structure"</CODE></LI>
|
||||
<LI><CODE>"Invalid subdevice"</CODE></LI>
|
||||
<LI><CODE>"Invalid channel"</CODE></LI>
|
||||
</UL>
|
||||
<P>Source: <CODE>/lib/error.c</CODE>
|
||||
<P>
|
||||
<P>
|
||||
<P>
|
||||
<H2><A NAME="ss4.28">4.28 comedi_sv_init()</A>
|
||||
</H2>
|
||||
|
||||
<P>
|
||||
<P><CODE>int comedi_sv_init(comedi_sv_t *sv,comedi_t *dev,unsigned int subd,
|
||||
unsigned int chan);</CODE>
|
||||
<P>The special functions <CODE>comedi_sv_*()</CODE> are designed to
|
||||
make it easy to accurately measure slowly varying analog inputs.
|
||||
A slowly varying input is one that is effectively constant over the course
|
||||
of approximately 100 A/D conversions. However, since these
|
||||
conversions can sometimes be pre-empted by scheduling, for most
|
||||
purposes, a slowly varying signal should be effectively constant
|
||||
for greater than 20 ms (the default Linux timeslice).
|
||||
<P>By averaging many A/D conversions of a relatively constant
|
||||
signal, it is possible to get a better measurement of the signal
|
||||
than a single A/D conversion. In general, the uncertainty of the
|
||||
measurement decreases as the square root of the number of samples.
|
||||
This is limited by the rate that which the signal varies, and
|
||||
ultimately by the spurious free dynamic range of the A/D converter.
|
||||
<P><CODE>comedi_sv_init</CODE> initializes the slow varying comedi structure
|
||||
<CODE>sv</CODE> of the device <CODE>dev</CODE>, the subdevice <CODE>subd</CODE> (analog input) and
|
||||
the channel <CODE>chan</CODE>.
|
||||
The slow varying comedi structure <CODE>sv</CODE> of type <CODE>
|
||||
<A HREF="comedilib_reference-2.html#comedi_sv_t">comedi_sv_t</A></CODE>
|
||||
specifies the signal measurement. Default number of averaged samples is 100.
|
||||
Returns zero on success, -1 on error.
|
||||
<P>Source: <CODE>/lib/sv.c</CODE>
|
||||
<P>
|
||||
<P>
|
||||
<P>
|
||||
<H2><A NAME="ss4.29">4.29 comedi_sv_update()</A>
|
||||
</H2>
|
||||
|
||||
<P>
|
||||
<P><CODE>int comedi_sv_update(comedi_sv_t *sv);</CODE>
|
||||
<P><CODE>comedi_sv_update</CODE> updates the slow varying comedi structure
|
||||
<CODE>sv</CODE>.
|
||||
Returns zero on success, -1 on error.
|
||||
<P>Source: <CODE>/lib/sv.c</CODE>
|
||||
<P>
|
||||
<P>
|
||||
<P>
|
||||
<H2><A NAME="ss4.30">4.30 int comedi_sv_measure()</A>
|
||||
</H2>
|
||||
|
||||
<P>
|
||||
<P><CODE>int comedi_sv_measure(comedi_sv_t *it,double *data);</CODE>
|
||||
<P><CODE>comedi_sv_measure</CODE> measures the slow variing signal. The measurement
|
||||
is specified by the slow varying comedi structure <CODE>sv</CODE>, the result is
|
||||
stored in <CODE>data</CODE>.
|
||||
On success returns the number of samples, -1 on error.
|
||||
<P>Source: <CODE>/lib/sv.c</CODE>
|
||||
<P>
|
||||
<P>
|
||||
<P>
|
||||
<H2><A NAME="comedi_to_phys"></A> <A NAME="ss4.31">4.31 comedi_to_phys()</A>
|
||||
</H2>
|
||||
|
||||
<P>
|
||||
<P><CODE>double comedi_to_phys(lsampl_t data, comedi_range *rng, lsampl_t maxdata);</CODE>
|
||||
<P>Converts data given in sample values (lsampl_t, between 0 and maxdata) into physical units (double).
|
||||
The parameter <CODE>rng</CODE> represents the conversion information to use, and the parameter <CODE>maxdata</CODE> represents
|
||||
the maximum possible data value for the channel that the data was read.
|
||||
<P>Source: <CODE>/lib/range.c</CODE>
|
||||
<P>
|
||||
<P>
|
||||
<P>
|
||||
<H2><A NAME="ss4.32">4.32 comedi_trigger()</A>
|
||||
</H2>
|
||||
|
||||
<P>
|
||||
<P><CODE>int comedi_trigger(comedi_t *it,comedi_trig *trig);</CODE>
|
||||
<P>The function <CODE>comedi_trigger()</CODE> instructs comedi to
|
||||
perform the command specified by the
|
||||
<A HREF="comedilib_reference-3.html#comedi_trig_struct">trigger structure</A>
|
||||
<CODE>trig</CODE>. Results depend on the particular command
|
||||
being issued. If there is an error, -1 is returned.
|
||||
<P>Complete information about comedi commands is given in the
|
||||
manual page comedi(8).
|
||||
<P>Source: <CODE>/lib/comedi.c</CODE>
|
||||
<P>
|
||||
<P>
|
||||
<P>
|
||||
<P>
|
||||
<P>
|
||||
<P>
|
||||
<P>
|
||||
<P>
|
||||
<P>
|
||||
<P>
|
||||
<P>
|
||||
<P>
|
||||
<P>
|
||||
<P>
|
||||
<H2><A NAME="ss4.33">4.33 comedi_get_timer()</A>
|
||||
</H2>
|
||||
|
||||
<P>
|
||||
<P>
|
||||
<BLOCKQUOTE><CODE>
|
||||
<PRE>
|
||||
int comedi_get_timer(comedi_t *it,unsigned int subdev,double freq,unsigned int *trigvar,
|
||||
double *actual_freq);
|
||||
</PRE>
|
||||
</CODE></BLOCKQUOTE>
|
||||
<P>
|
||||
<P>
|
||||
<P>
|
||||
<P>
|
||||
<HR>
|
||||
Next
|
||||
<A HREF="comedilib_reference-3.html">Previous</A>
|
||||
<A HREF="comedilib_reference.html#toc4">Contents</A>
|
||||
</BODY>
|
||||
</HTML>
|
|
@ -1,26 +0,0 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<META NAME="GENERATOR" CONTENT="LinuxDoc-Tools 0.9.7.4">
|
||||
<TITLE>Comedi Documentation</TITLE>
|
||||
<LINK HREF="comedilib_reference-1.html" REL=next>
|
||||
|
||||
|
||||
</HEAD>
|
||||
<BODY>
|
||||
<A HREF="comedilib_reference-1.html">Next</A>
|
||||
Previous
|
||||
Contents
|
||||
<HR>
|
||||
<H1>Comedi Documentation</H1>
|
||||
|
||||
<H2>David Schleef, <CODE>ds@stm.lbl.gov</CODE> </H2>
|
||||
<P>
|
||||
<H2><A NAME="toc1">1.</A> <A HREF="comedilib_reference-1.html">Libcomedi Reference</A></H2>
|
||||
|
||||
<HR>
|
||||
<A HREF="comedilib_reference-1.html">Next</A>
|
||||
Previous
|
||||
Contents
|
||||
</BODY>
|
||||
</HTML>
|
|
@ -1,998 +0,0 @@
|
|||
<!doctype linuxdoc public "-//LinuxDoc//DTD LinuxDoc 96//EN">
|
||||
|
||||
<article>
|
||||
<title>Comedi Documentation
|
||||
<author>David Schleef, <tt/ds@stm.lbl.gov/
|
||||
|
||||
|
||||
|
||||
|
||||
<sect>Libcomedi Reference
|
||||
<p>
|
||||
|
||||
<sect1>Constants and Macros
|
||||
<p>
|
||||
|
||||
|
||||
<sect2>RANGE_LENGTH() <it/(deprecated)/
|
||||
<p>
|
||||
<label id="RANGE_LENGTH">
|
||||
|
||||
<tt/RANGE_LENGTH(rangetype)/
|
||||
|
||||
<p>
|
||||
Rangetype values are library-internal tokens that represent an
|
||||
array of range information structures. These numbers are primarily
|
||||
used for communication between the kernel and library.
|
||||
|
||||
<p>
|
||||
The RANGE_LENGTH() macro returns the length of the array that is
|
||||
specified by the rangetype token.
|
||||
|
||||
<p>
|
||||
The RANGE_LENGTH() macro is deprecated, and should not be used in
|
||||
new applications. It is scheduled to be removed from the header
|
||||
file at version 1.0. Binary compatibility may be broken for version
|
||||
1.1.
|
||||
|
||||
|
||||
<p>
|
||||
<sect1>Data Types and Structures
|
||||
|
||||
<p>
|
||||
<sect2>comedi_t
|
||||
<label id="comedi_t">
|
||||
|
||||
<p>
|
||||
The data type <tt/comedi_t/ is used to represent an open Comedi
|
||||
device. A valid <tt/comedi_t/ pointer is returned by a successful
|
||||
call to <tt/comedi_open()/, and should be used for subsequent
|
||||
access to the device.
|
||||
It is a transparent type, and pointers to type <tt/comedi_t/
|
||||
should not be dereferenced by the application.
|
||||
|
||||
|
||||
<p>
|
||||
<sect2>sampl_t
|
||||
<label id="sampl_t">
|
||||
|
||||
<p>
|
||||
The data type <tt/sampl_t/ is one of the generic types used to represent
|
||||
data values in libcomedi. It is used in a few places where a shorter
|
||||
data type is useful, but is limited to 16 bits on the i386 architecture.
|
||||
|
||||
|
||||
<p>
|
||||
<sect2>lsampl_t
|
||||
<label id="lsampl_t">
|
||||
|
||||
<p>
|
||||
The data type <tt/lsampl_t/ is one of the generic types used to represent
|
||||
data values in libcomedi. It is currently defined to be <tt/unsigned int/.
|
||||
|
||||
|
||||
|
||||
|
||||
<p>
|
||||
<sect2>comedi_trig_struct <it/(deprecated)/
|
||||
<label id="comedi_trig_struct">
|
||||
<p>
|
||||
|
||||
The <tt/comedi_trig/ structure
|
||||
|
||||
<tscreen><verb>
|
||||
struct comedi_trig_struct{
|
||||
unsigned int subdev; /* subdevice */
|
||||
unsigned int mode; /* mode */
|
||||
unsigned int flags;
|
||||
unsigned int n_chan; /* number of channels */
|
||||
unsigned int *chanlist; /* channel/range list */
|
||||
sampl_t *data; /* data list, size depends on subd flags */
|
||||
unsigned int n; /* number of scans */
|
||||
unsigned int trigsrc;
|
||||
unsigned int trigvar;
|
||||
unsigned int trigvar1;
|
||||
unsigned int data_len;
|
||||
unsigned int unused[3];
|
||||
}
|
||||
</verb></tscreen>
|
||||
|
||||
The <tt/comedi_trig/ structure is a control structure used by the
|
||||
COMEDI_TRIG ioctl, an older method of communicating
|
||||
instructions to the driver and hardware. Use of comedi_trig is
|
||||
deprecated, and should not be used in new applications.
|
||||
|
||||
<p>
|
||||
This structure is defined as part of the Comedi kernel interface.
|
||||
|
||||
<p>
|
||||
<sect2>comedi_sv_t
|
||||
<label id="comedi_sv_t">
|
||||
<p>
|
||||
|
||||
<tscreen><verb>
|
||||
struct comedi_sv_struct{
|
||||
comedi_t *dev;
|
||||
unsigned int subdevice;
|
||||
unsigned int chan;
|
||||
|
||||
/* range policy */
|
||||
int range;
|
||||
int aref;
|
||||
|
||||
/* number of measurements to average (for ai) */
|
||||
int n;
|
||||
|
||||
lsampl_t maxdata;
|
||||
}
|
||||
</verb></tscreen>
|
||||
|
||||
The <tt/comedi_sv_t/ structure is used by the <tt/comedi_sv_*()/
|
||||
functions to provide a simple method of accurately measuring
|
||||
slowly varying inputs. See the relevant section for more
|
||||
details.
|
||||
|
||||
|
||||
<p>
|
||||
<sect2>comedi_cmd
|
||||
<label id="comedi_cmd">
|
||||
<p>
|
||||
|
||||
undocumented
|
||||
|
||||
<p>
|
||||
Related functions are described in section XXX.
|
||||
|
||||
<p>
|
||||
This structure is defined as part of the Comedi kernel interface.
|
||||
|
||||
<p>
|
||||
<sect2>comedi_insn
|
||||
<label id="comedi_insn">
|
||||
<p>
|
||||
|
||||
undocumented
|
||||
|
||||
<p>
|
||||
Related functions are described in section XXX.
|
||||
|
||||
<p>
|
||||
This structure is defined as part of the Comedi kernel interface.
|
||||
|
||||
|
||||
<p>
|
||||
<sect2>comedi_range
|
||||
<label id="comedi_range">
|
||||
<p>
|
||||
|
||||
undocumented
|
||||
|
||||
|
||||
|
||||
<sect1>Functions
|
||||
<p>
|
||||
|
||||
<sect2>comedi_close()
|
||||
<label id="comedi_close">
|
||||
<p>
|
||||
|
||||
<tt>void comedi_close(comedi_t *it);</tt>
|
||||
|
||||
<p>
|
||||
Closes a device previously opened by comedi_open().
|
||||
|
||||
<p>
|
||||
The return type of this function will change to <tt/int/, in
|
||||
order to match <tt/fclose/.
|
||||
|
||||
<p>
|
||||
Source: <tt>/lib/comedi.c</tt>
|
||||
|
||||
|
||||
<sect2>comedi_data_read()
|
||||
<label id="comedi_data_read">
|
||||
<p>
|
||||
|
||||
<tt>int comedi_data_read(comedi_t *it,unsigned int subd,unsigned int chan,
|
||||
unsigned int range,unsigned int aref,lsampl_t *data);</tt>
|
||||
|
||||
<p>
|
||||
Reads a single sample on the channel that
|
||||
is specified by the comedi device <tt>it</tt>, the
|
||||
subdevice <tt>subd</tt>, and the channel <tt>chan</tt>.
|
||||
For the A/D conversion (if appropriate),
|
||||
the device is configured to use range specification
|
||||
<tt>range</tt> and (if appropriate) analog reference type
|
||||
<tt>aref</tt>. Analog reference types that are not supported
|
||||
by the device are silently ignored.
|
||||
|
||||
<p>
|
||||
<tt>comedi_data_read()</tt> reads one data value from
|
||||
the specified channel and places the
|
||||
data value that is read in the location pointed to by
|
||||
<tt>data</tt>.
|
||||
|
||||
<p>
|
||||
On sucess, <tt>comedi_data_read()</tt> returns 0. If there is an
|
||||
error, -1 is returned.
|
||||
|
||||
<p>
|
||||
Valid analog reference numbers are:
|
||||
|
||||
<itemize>
|
||||
<item>AREF_GROUND Reference to analog ground
|
||||
<item>AREF_COMMON Reference to analog common
|
||||
<item>AREF_DIFF Differential reference
|
||||
<item>AREF_OTHER Board-specific meaning
|
||||
</itemize>
|
||||
|
||||
Valid data values returned by these function is an unsigned integer
|
||||
less than or equal to <tt>maxdata</tt>, which is channel-dependent.
|
||||
Conversion of these data value to physical units can be performed
|
||||
by <tt><ref id="comedi_to_phys" name =
|
||||
"comedi_to_phys()"></tt>.
|
||||
|
||||
Source: <tt>/lib/data.c</tt>
|
||||
|
||||
|
||||
<sect2>comedi_data_write()
|
||||
<p>
|
||||
|
||||
<tt>int comedi_data_write(comedi_t *it,unsigned int subd,unsigned int chan,
|
||||
unsigned int range,unsigned int aref,lsampl_t data);</tt>
|
||||
|
||||
<p>
|
||||
Writes a single sample on the channel that
|
||||
is specified by the comedi device <tt/it/, the
|
||||
subdevice <tt/subd/, and the channel <tt/chan/.
|
||||
For the D/A conversion (if appropriate), the device is
|
||||
configured to use range specification
|
||||
<tt/range/ and (if appropriate) analog reference type
|
||||
<tt/aref/. Analog reference types that are not supported
|
||||
by the device are silently ignored.
|
||||
|
||||
<tt/comedi_data_write()/ writes the data value
|
||||
specified by the argument <tt/data/ to
|
||||
the specified channel.
|
||||
|
||||
On sucess, <tt>comedi_data_write()</tt> returns 0. If there is an error, -1 is
|
||||
returned.
|
||||
|
||||
Valid analog reference numbers are:
|
||||
|
||||
<itemize>
|
||||
<item>AREF_GROUND Reference to analog ground
|
||||
<item>AREF_COMMON Reference to analog common
|
||||
<item>AREF_DIFF Differential reference
|
||||
<item>AREF_OTHER Board-specific meaning
|
||||
</itemize>
|
||||
|
||||
Valid data values used by these functions is an unsigned integer
|
||||
less than or equal to <tt>maxdata</tt>, which is channel-dependent.
|
||||
Conversion of physical units to these data value can be performed
|
||||
by <tt><ref id="comedi_from_phys" name =
|
||||
"comedi_from_phys()"></tt>.
|
||||
|
||||
Source: <tt>/lib/data.c</tt>
|
||||
|
||||
|
||||
<p>
|
||||
<sect2>comedi_dio_bitfield();
|
||||
|
||||
<p>
|
||||
<tt/int comedi_dio_bitfield(comedi_t *it,unsigned int subd,unsigned
|
||||
int write_mask,unsigned int *bits);/
|
||||
|
||||
<p>
|
||||
The function <tt/comedi_dio_bitfield()/ allows multiple channels to
|
||||
be read simultaneously from a digital input or digital I/O device.
|
||||
The parameter <tt/write_mask/ and the value pointed to by <tt/bits/
|
||||
are interpreted as bit fields, with the least significant bit
|
||||
representing channel 0. For each bit in <tt/write_mask/ that is
|
||||
set, the cooresponding bit in <tt/*bits/ is written to the digital
|
||||
output channel. Each digital input channel is read, and the result
|
||||
placed in the approprate bits in <tt/*bits/.
|
||||
|
||||
<p>
|
||||
The current implementation reads and writes bits using separate
|
||||
system calls, which is not ideal. When the kernel driver supports
|
||||
simultaneous reading/writing, this will be fixed in the library.
|
||||
|
||||
<p>
|
||||
It should be noted that it is not possible to access channels
|
||||
greater than 31 using this function.
|
||||
|
||||
<p>
|
||||
Source: <tt>/lib/dio.c</tt>
|
||||
|
||||
|
||||
<p>
|
||||
<sect2>comedi_dio_config()
|
||||
<p>
|
||||
<tt/int comedi_dio_config(comedi_t *it,unsigned int subd,unsigned
|
||||
int chan,unsigned int dir);/
|
||||
|
||||
<p>
|
||||
The function <tt/comedi_dio_config/ configures individual channels
|
||||
in a digital I/O subdevice to be either input or output, depending
|
||||
on the value of parameter <tt/dir/. Depending on the capabilities
|
||||
of the hardware device, multiple channels may be affected by
|
||||
a single call to <tt/comedi_dio_config/.
|
||||
|
||||
|
||||
Valid directions are:
|
||||
<itemize>
|
||||
<item> COMEDI_INPUT
|
||||
<item> COMEDI_OUTPUT
|
||||
</itemize>
|
||||
|
||||
Source: <tt>/lib/dio.c</tt>
|
||||
|
||||
|
||||
<p>
|
||||
<sect2>comedi_dio_read()
|
||||
<p>
|
||||
<tt/int comedi_dio_read(comedi_t *it,unsigned int subd,unsigned int
|
||||
chan,unsigned int *bit);/
|
||||
|
||||
<p>
|
||||
The function reads the status of channel <tt/chan/ belonging to the digital
|
||||
input subdevice <tt/subd/ of device <tt/it/. The result, 0 or 1, is stored
|
||||
in bit. Returns -1 on failure.
|
||||
|
||||
<p>
|
||||
This function is equivalent to <tt/comedi_data_read(it,subd,chan,0,0,bit)/.
|
||||
|
||||
|
||||
Source: <tt>/lib/dio.c</tt>
|
||||
|
||||
<p>
|
||||
<sect2>comedi_dio_write()
|
||||
<p>
|
||||
<tt/int comedi_dio_write(comedi_t *it,unsigned int subd,unsigned
|
||||
int chan,unsigned int bit);/
|
||||
|
||||
<p>
|
||||
The function writes the value of <tt/bit/, 0 or 1, to channel <tt/chan/,
|
||||
belonging to the digital output device <tt/subd/ of device <tt/it/. Returns
|
||||
-1 on failure.
|
||||
|
||||
<p>
|
||||
Source: <tt>/lib/dio.c</tt>
|
||||
|
||||
<p>
|
||||
<sect2>comedi_fileno()
|
||||
<p>
|
||||
|
||||
<tt/int comedi_fileno(comedi_t *it);/
|
||||
<p>
|
||||
|
||||
The function <tt/comedi_fileno/
|
||||
returns the integer descriptor for the handle <tt/it/. It
|
||||
is equivalent to the standard function <tt/fileno/. If
|
||||
<tt>it</tt> is an invalid <tt>comedi_t</tt> pointer, the function
|
||||
returns -1 and sets the appropriate libcomedi error value.
|
||||
|
||||
Source: <tt>/lib/comedi.c</tt>
|
||||
|
||||
|
||||
<p>
|
||||
<sect2>comedi_find_range()
|
||||
<p>
|
||||
|
||||
<tt/int comedi_find_range(comedi_t *it, unsigned int subdevice, unsigned
|
||||
int chan, unsigned int unit, double min, double max);/
|
||||
|
||||
<p>
|
||||
The function <tt/comedi_find_range/ tries to
|
||||
locate the optimal (smallest) range for the channel <tt>chan</tt>
|
||||
belonging to a <tt>subdevice</tt> of the comedi device <tt>it</tt>,
|
||||
that includes both <tt>min</tt> and <tt>max</tt> in <tt>units</tt>.
|
||||
If it finds a matching range, it returns its index. If no
|
||||
matching range is available, it returns -1.
|
||||
|
||||
<p>
|
||||
Valid units are:
|
||||
|
||||
<itemize>
|
||||
<item>UNIT_volt
|
||||
<item>UNIT_mA
|
||||
<item>UNIT_none
|
||||
</itemize>
|
||||
|
||||
Source: <tt>/lib/range.c</tt>
|
||||
|
||||
|
||||
<p>
|
||||
<sect2>comedi_errno()
|
||||
<label id="comedi_errno">
|
||||
<p>
|
||||
<tt/int comedi_errno(void);/
|
||||
|
||||
<p>
|
||||
The function <tt>comedi_errno()</tt>
|
||||
returns an integer describing the most recent comedilib error. This
|
||||
integer may be used as the <tt>errnum</tt> parameter for
|
||||
<tt><ref id="comedi_strerror" name ="comedi_strerror()"></tt>.
|
||||
|
||||
When a libcomedi function fails, it usually returns -1 or
|
||||
NULL, depending on the return type. An internal library
|
||||
variable stores an error number, which can be retrieved with
|
||||
<tt>comedi_errno()</tt>. This error number can be
|
||||
converted to a human-readable form by the functions
|
||||
<tt><ref id="comedi_perror" name ="comedi_perror()"></tt>
|
||||
and <tt><ref id="comedi_strerror" name ="comedi_strerror()"></tt>.
|
||||
|
||||
These functions are intended to mimic the behavior of the
|
||||
standard C library functions <tt>perror()</tt>,
|
||||
<tt>strerror</tt>, and <tt>errno()</tt>. In particular,
|
||||
libcomedi functions sometimes return an error that is generated
|
||||
by the C library; the Comedi error message in this case
|
||||
is the same as the C library.
|
||||
|
||||
Source: <tt>/lib/error.c</tt>
|
||||
|
||||
|
||||
<p>
|
||||
<sect2>comedi_find_subdevice_by_type()
|
||||
<p>
|
||||
|
||||
<tt>int comedi_find_subdevice_by_type(comedi_t *it,int type,unsigned int
|
||||
start_subdevice);</tt>
|
||||
|
||||
<p>
|
||||
The function <tt>comedi_find_subdevice_by_type</tt> tries to
|
||||
locate a subdevice belonging to comedi device <tt>it</tt>,
|
||||
having type <tt>type</tt>, starting with the subdevice
|
||||
<tt>start_subdevice</tt>. If it finds the requested subdevice,
|
||||
it returns its index. If it does not locate the requested
|
||||
subdevice, it returns -1 and sets the comedi error number to
|
||||
"subdevice not found". If there is an error, the function
|
||||
returns -1 and sets the appropriate error.
|
||||
|
||||
<p>
|
||||
For subdevice types, see the manual page for the function
|
||||
<tt><ref id="comedi_get_subdevice_type" name =
|
||||
"comedi_get_subdevice_type()"></tt>.
|
||||
|
||||
Source: <tt>/lib/get.c</tt>
|
||||
|
||||
|
||||
<p>
|
||||
<sect2>comedi_from_phys()<label id="comedi_from_phys">
|
||||
<p>
|
||||
|
||||
<tt/lsampl_t comedi_from_phys(double data, comedi_range *rng,
|
||||
lsampl_t maxdata);/
|
||||
|
||||
Converts data given in physical units (<tt/data/) into sample values
|
||||
(lsampl_t, between 0 and maxdata). The parameter <tt>rng</tt>
|
||||
represents the conversion information to use, and the parameter
|
||||
<tt>maxdata</tt> represents the maximum possible data value for the
|
||||
channel that the data will be written to.
|
||||
|
||||
|
||||
Source: <tt>/lib/range.c</tt>
|
||||
|
||||
|
||||
<p>
|
||||
<sect2>comedi_get_board_name()
|
||||
<p>
|
||||
|
||||
<tt/char *comedi_get_board_name(comedi_t *it);/
|
||||
|
||||
The function <tt/comedi_get_board_name/ returns a pointer
|
||||
to a string containing the name of the device. This pointer is
|
||||
valid until the comedi descriptor <tt/it/ is closed. This
|
||||
function returns <tt/NULL/ if there is an error.
|
||||
|
||||
Source: <tt>/lib/get.c</tt>
|
||||
|
||||
|
||||
<p>
|
||||
<sect2>comedi_get_driver_name()
|
||||
<p>
|
||||
|
||||
<tt/char *comedi_get_driver_name(comedi_t *it);/
|
||||
|
||||
The function <tt/comedi_get_driver_name/ returns a pointer
|
||||
to a string containing the name of the driver being used by comedi
|
||||
for the comedi device represented by <tt/it/. This pointer is
|
||||
valid until the comedi descriptor <tt/it/ is closed. This
|
||||
function returns <tt/NULL/ if there is an error.
|
||||
|
||||
Source: <tt>/lib/get.c</tt>
|
||||
|
||||
|
||||
<p>
|
||||
<sect2>comedi_get_maxdata()
|
||||
<p>
|
||||
|
||||
<tt/lsampl_t comedi_get_maxdata(comedi_t *it,unsigned int
|
||||
subdevice,unsigned int chan);/
|
||||
|
||||
<p>
|
||||
The function <tt/comedi_get_maxdata()/ returns the maximum
|
||||
valid data value for channel <tt/chan/ of subdevice
|
||||
<tt/subdevice/ belonging to the comedi device <tt/it/
|
||||
This function returns 0 on error.
|
||||
|
||||
Source: <tt>/lib/get.c</tt>
|
||||
|
||||
|
||||
<p>
|
||||
<sect2>comedi_get_n_channels()
|
||||
<p>
|
||||
|
||||
<tt/int comedi_get_n_channels(comedi_t *it,unsigned int subdevice);/
|
||||
|
||||
The function <tt>comedi_get_n_channels()</tt> returns the number
|
||||
of channels of the subdevice belonging to the comedi device <tt>it</tt>
|
||||
and having index <tt>subdevice</tt>. This function returns -1 on error.
|
||||
|
||||
Source: <tt>/lib/get.c</tt>
|
||||
|
||||
|
||||
<p>
|
||||
<sect2>comedi_get_n_ranges()
|
||||
<p>
|
||||
|
||||
<tt>int comedi_get_n_ranges(comedi_t *it,unsigned int subdevice, unsigned int
|
||||
chan);</tt>
|
||||
|
||||
The function <tt>comedi_get_n_ranges()</tt> returns the number
|
||||
of ranges of the channel <tt>chan</tt> belonging to the <tt>subdevice</tt>
|
||||
of the comedi device <tt>it</tt>. This function returns -1 on error.
|
||||
|
||||
Source: <tt>/lib/range.c</tt>
|
||||
|
||||
|
||||
<p>
|
||||
<sect2>comedi_get_n_subdevices()
|
||||
<p>
|
||||
|
||||
<tt>int comedi_get_n_subdevices(comedi_t *it);</tt>
|
||||
|
||||
The function <tt>comedi_get_n_subdevices</tt> returns the
|
||||
number of subdevices associated with the comedi descriptor
|
||||
<tt>it</tt>, or -1 if there is an error.
|
||||
|
||||
Source: <tt>/lib/get.c</tt>
|
||||
|
||||
|
||||
<p>
|
||||
<sect2>comedi_get_range()
|
||||
<p>
|
||||
|
||||
<tt>comedi_range * comedi_get_range(comedi_t *it,unsigned int subdevice,unsigned int chan,unsigned int
|
||||
range);</tt>
|
||||
|
||||
The function <tt>comedi_get_range</tt> returns a pointer to a
|
||||
comedi_range structure that contains information that can be used to
|
||||
convert sample values to or from physical units. The pointer is valid
|
||||
until the comedi device <tt>it</tt> is closed. If there is an
|
||||
error, NULL is returned.
|
||||
|
||||
Source: <tt>/lib/get.c</tt>
|
||||
|
||||
<p>
|
||||
<sect2>comedi_get_rangetype() <it/deprecated/
|
||||
<p>
|
||||
|
||||
<tt>int comedi_get_rangetype(comedi_t *it,unsigned int subdevice,unsigned int
|
||||
chan);</tt>
|
||||
|
||||
The function <tt>comedi_get_rangetype()</tt> returns an integer
|
||||
that represents the number of range specifications available for a
|
||||
particular channel <tt/chan/ of the subdevice <tt/subdevice/, as well as a conversion table to convert sample
|
||||
values to/from physical units.
|
||||
|
||||
The macro
|
||||
<tt>RANGE_LENGTH(rangetype)</tt>
|
||||
can be used to determine the number of range specifications for a given
|
||||
range type.
|
||||
|
||||
<p>
|
||||
This function is deprecated and should not be used in new code.
|
||||
|
||||
Source: <tt>/lib/get.c</tt>
|
||||
|
||||
<p>
|
||||
<sect2>comedi_get_subdevice_type()<label id="comedi_get_subdevice_type">
|
||||
<p>
|
||||
|
||||
<tt>int comedi_get_subdevice_type(comedi_t *it,unsigned int subdevice);</tt>
|
||||
|
||||
The function <tt>comedi_get_subdevice_type()</tt> returns an
|
||||
integer describing the type of subdevice that belongs to the comedi
|
||||
device <tt>it</tt> and has the index <tt>subdevice</tt>. The
|
||||
function returns -1 is there is an error.
|
||||
|
||||
Valid subdevice types are:
|
||||
|
||||
<itemize>
|
||||
<item><tt>COMEDI_SUBD_UNUSED</tt>
|
||||
Subdevice has no functionality, i.e., a place-holder.
|
||||
<item><tt>COMEDI_SUBD_AI</tt> Analog input
|
||||
<item><tt>COMEDI_SUBD_AO</tt> Analog output
|
||||
<item><tt>COMEDI_SUBD_DI</tt> Digital input
|
||||
<item><tt>COMEDI_SUBD_DO</tt> Digital output
|
||||
<item><tt>COMEDI_SUBD_DIO</tt>
|
||||
Digital input/output. Channels are configurable as to whether they
|
||||
are inputs or outputs.
|
||||
<item><tt>COMEDI_SUBD_COUNTER</tt> Counter
|
||||
<item><tt>COMEDI_SUBD_TIMER</tt> Timer
|
||||
<item><tt>COMEDI_SUBD_MEMORY</tt>
|
||||
Memory, e.g., EEPROM or dual-ported RAM
|
||||
<item><tt>COMEDI_SUBD_CALIB</tt>
|
||||
Calibration DACs
|
||||
<item><tt>COMEDI_SUBD_PROC</tt>
|
||||
Processor or DSP
|
||||
</itemize>
|
||||
|
||||
Source: <tt>/lib/get.c</tt>
|
||||
|
||||
<p>
|
||||
<sect2>comedi_get_timer() <it/(deprecated)/
|
||||
<p>
|
||||
|
||||
<tt/int comedi_get_timer(comedi_t *it,unsigned int subdev, double
|
||||
freq,unsigned int *trigvar, double *actual_freq);/
|
||||
|
||||
<p>
|
||||
The function <tt>comedi_get_timer</tt> converts the frequency <tt/freq/
|
||||
to a number suitable to send to the driver in a <tt/comedi_trig/
|
||||
structure. This function remains for compatibility with very
|
||||
old versions of Comedi, that converted sampling rates to timer
|
||||
values in the libary. This conversion is now done in the kernel,
|
||||
and every device has the timer type <tt/nanosec_timer/, indicating
|
||||
that timer values are simply a time specified in nanoseconds.
|
||||
|
||||
<p>
|
||||
This function is deprecated and should not be used in new applications.
|
||||
|
||||
<p>
|
||||
Source: <tt>/lib/timer.c</tt>
|
||||
|
||||
<p>
|
||||
<sect2>comedi_get_version_code()
|
||||
<p>
|
||||
|
||||
<tt/int comedi_get_version_code(comedi_t *it);/
|
||||
|
||||
<p>
|
||||
The function <tt/comedi_get_version_code()/ returns the
|
||||
version code of the currently running comedi module. The version
|
||||
code is of the form 0x01072b, which is the version code for
|
||||
version 1.7.43.
|
||||
|
||||
<p>
|
||||
This function is of limited usefulness. A typical mis-application
|
||||
of this function is to use it to determine if a certain feature is
|
||||
supported. If the application needs
|
||||
to know of the existence of a particular feature, an existence
|
||||
test function should be written and put in the libcomedi source.
|
||||
|
||||
Source: <tt>/lib/get.c</tt>
|
||||
|
||||
<p>
|
||||
<sect2>comedi_loglevel()
|
||||
<P>
|
||||
|
||||
<tt>int comedi_loglevel(int loglevel);</tt>
|
||||
|
||||
<p>
|
||||
This function affects the output of debugging and error messages
|
||||
from libcomedi. By increasing the loglevel, additional debugging
|
||||
information will be printed. This function returns the previous
|
||||
loglevel. Error messages and debugging are printed to the
|
||||
stream <tt/stderr/. The loglevel can also be affected by the
|
||||
environment variable COMEDI_LOGLEVEL.
|
||||
|
||||
<p>
|
||||
In order to conserve resources, some debugging information is
|
||||
disabled when libcomedi is compiled.
|
||||
|
||||
<p>The meaning of the loglevels is as follows:
|
||||
|
||||
<itemize>
|
||||
<item><tt/COMEDILIB_LOGLEVEL=0/
|
||||
|
||||
Comedilib prints nothing.
|
||||
|
||||
<item><tt/COMEDILIB_LOGLEVEL=1/ (default)
|
||||
|
||||
Comedilib only prints error messages when there is a
|
||||
self-consistency error (i.e., internal bug).
|
||||
|
||||
<item><tt/COMEDILIB_LOGLEVEL=2/
|
||||
|
||||
Comedilib prints an error message when an invalid
|
||||
parameter is passed to comedilib.
|
||||
|
||||
<item><tt/COMEDILIB_LOGLEVEL=3/
|
||||
|
||||
Comedilib prints an error message whenever an error is generated
|
||||
in the comedilib library or is generated in the C library when
|
||||
called by comedilib.
|
||||
|
||||
<item><tt/COMEDILIB_LOGLEVEL=4/
|
||||
|
||||
Comedilib prints a lot of debugging messages.
|
||||
|
||||
</itemize>
|
||||
|
||||
Bugs: Libcomedi doesn't currently have much debugging information.
|
||||
|
||||
Source: <tt>/lib/error.c</tt>
|
||||
|
||||
<p>
|
||||
<sect2>comedi_open()
|
||||
<p>
|
||||
|
||||
<tt/comedi_t *comedi_open(char *filename);/
|
||||
|
||||
Opens a comedi device specified by the filename <tt/filename/.
|
||||
Returns NULL on error. On sucess, it returns a handle that is
|
||||
given as a parameter to other libcomedi functions.
|
||||
|
||||
<p>
|
||||
You are not supposed to have access to the internals of the
|
||||
<tt/comedi_t/ structure.
|
||||
|
||||
Bugs: Not strictly identical to <tt/fopen/
|
||||
|
||||
Source: <tt>/lib/comedi.c</tt>
|
||||
|
||||
|
||||
<p>
|
||||
<sect2>comedi_perror()<label id="comedi_perror">
|
||||
<p>
|
||||
|
||||
<tt>void comedi_perror(const char *s);</tt>
|
||||
|
||||
When a comedilib function fails, it usually returns -1 or
|
||||
NULL, depending on the return type. An internal library
|
||||
variable stores an error number, which can be retrieved with
|
||||
<tt><ref id="comedi_errno" name ="comedi_errno()"></tt>.
|
||||
This error number can be
|
||||
converted to a human-readable form by the functions
|
||||
<tt>comedi_perror()</tt>
|
||||
and <tt><ref id="comedi_strerror" name ="comedi_strerror()"></tt>.
|
||||
|
||||
These functions are intended to mimic the behavior of the
|
||||
standard C library functions <tt>perror()</tt>,
|
||||
<tt>strerror</tt>, and <tt>errno()</tt>. In particular,
|
||||
comedilib functions sometimes return an error that is generated
|
||||
inside the C library; the comedi error message in this case
|
||||
is the same as the C library.
|
||||
|
||||
The function <tt>comedi_perror()</tt> prints an error
|
||||
message to stderr. The error message consists of the
|
||||
argument string, a colon, a space, a description of the error
|
||||
condition, and a new line.
|
||||
|
||||
Bugs: Does not support internationalization.
|
||||
|
||||
Source: <tt>/lib/error.c</tt>
|
||||
|
||||
|
||||
<p>
|
||||
<sect2>comedi_strerror()<label id="comedi_strerror">
|
||||
<p>
|
||||
|
||||
<tt>*comedi_strerror(int errnum);</tt>
|
||||
|
||||
When a comedilib function fails, it usually returns -1 or
|
||||
NULL, depending on the return type. An internal library
|
||||
variable stores an error number, which can be retrieved with
|
||||
<tt><ref id="comedi_errno" name ="comedi_errno()"></tt>. This error number can be
|
||||
converted to a human-readable form by the functions
|
||||
<tt><ref id="comedi_perror" name ="comedi_perror()"></tt>
|
||||
and <tt>comedi_strerror()</tt>.
|
||||
|
||||
These functions are intended to mimic the behavior of the
|
||||
standard C library functions <tt>perror()</tt>,
|
||||
<tt>strerror</tt>, and <tt>errno()</tt>. In particular,
|
||||
comedilib functions sometimes return an error that is generated
|
||||
inside the C library; the comedi error message in this case
|
||||
is the same as the C library.
|
||||
|
||||
The function <tt>comedi_strerror()</tt> returns a pointer to a
|
||||
character string
|
||||
describing the comedilib error <tt>errnum</tt>. The persistence
|
||||
of the returned pointer is undefined, and should not be trusted
|
||||
after the next libcomedi call. An unrecognized error number will
|
||||
return a pointer to the string "undefined error", or similar.
|
||||
|
||||
Bugs: Does not support internationalization.
|
||||
|
||||
Source: <tt>/lib/error.c</tt>
|
||||
|
||||
|
||||
<p>
|
||||
<sect2>comedi_sv_init()
|
||||
<p>
|
||||
|
||||
<tt/int comedi_sv_init(comedi_sv_t *sv,comedi_t *dev,unsigned int subd,
|
||||
unsigned int chan);/
|
||||
|
||||
|
||||
<tt/comedi_sv_init/ initializes the slow varying comedi structure
|
||||
<tt/sv/ of the device <tt/dev/, the subdevice <tt/subd/ (analog input) and
|
||||
the channel <tt/chan/.
|
||||
The slow varying comedi structure <tt/sv/ of type <tt><ref id="comedi_sv_t"
|
||||
name="comedi_sv_t"</tt>
|
||||
specifies the signal measurement. The default number of averaged
|
||||
samples is 100. Returns zero on success, -1 on error.
|
||||
|
||||
Bugs: comedi_sv_* was very poorly designed.
|
||||
|
||||
Source: <tt>/lib/sv.c</tt>
|
||||
|
||||
|
||||
<p>
|
||||
<sect2>comedi_sv_update()
|
||||
<p>
|
||||
|
||||
<tt/int comedi_sv_update(comedi_sv_t *sv);/
|
||||
|
||||
The function <tt/comedi_sv_update/ updates the slow varying comedi structure
|
||||
<tt/sv/.
|
||||
Returns zero on success, -1 on error.
|
||||
|
||||
Source: <tt>/lib/sv.c</tt>
|
||||
|
||||
|
||||
<p>
|
||||
<sect2>int comedi_sv_measure()
|
||||
<p>
|
||||
|
||||
<tt>int comedi_sv_measure(comedi_sv_t *it,double *data);</tt>
|
||||
|
||||
<tt/comedi_sv_measure/ measures the slow variing signal. The measurement
|
||||
is specified by the slow varying comedi structure <tt/sv/, the result is
|
||||
stored in <tt/data/.
|
||||
On success returns the number of samples, -1 on error.
|
||||
|
||||
Source: <tt>/lib/sv.c</tt>
|
||||
|
||||
|
||||
<p>
|
||||
<sect2>comedi_to_phys()<label id="comedi_to_phys">
|
||||
<p>
|
||||
|
||||
<tt/double comedi_to_phys(lsampl_t data, comedi_range *rng,
|
||||
lsampl_t maxdata);/
|
||||
|
||||
Converts data given in sample values (lsampl_t, between 0 and
|
||||
maxdata) into physical units (double). The parameter <tt/rng/
|
||||
represents the conversion information to use, and the parameter
|
||||
<tt/maxdata/ represents the maximum possible data value for the
|
||||
channel that the data was read.
|
||||
|
||||
Source: <tt>/lib/range.c</tt>
|
||||
|
||||
|
||||
<p>
|
||||
<sect2>comedi_trigger() <it/(deprecated)/
|
||||
<p>
|
||||
|
||||
<tt/int comedi_trigger(comedi_t *it,comedi_trig *trig);/
|
||||
|
||||
The function <tt/comedi_trigger/ instructs comedi to
|
||||
perform the command specified by the <ref id="comedi_trig_struct" name
|
||||
="trigger structure"> <tt/trig/. Results depend on
|
||||
the particular command being issued. If there is an
|
||||
error, -1 is returned.
|
||||
|
||||
Lifetime: removal at 1.0.
|
||||
|
||||
Source: <tt>/lib/comedi.c</tt>
|
||||
|
||||
|
||||
<p>
|
||||
<sect2>comedi_get_subdevice_flags()
|
||||
<label id="comedi_get_subdevice_flags">
|
||||
<p>
|
||||
|
||||
<tt/int comedi_get_subdevice_flags(comedi_t *dev, unsigned int subdevice);/
|
||||
|
||||
<p>
|
||||
This function returns a bitfield describing the capabilities of the
|
||||
specified subdevice. If there is an error, -1 is returned.
|
||||
|
||||
<p>The bits are:
|
||||
|
||||
<itemize>
|
||||
<item>SDF_BUSY subdevice is running a command
|
||||
<item>SDF_BUSY_OWNER subdevice is running a command started by
|
||||
the file descriptor used by <tt/dev/.
|
||||
<item>SDF_LOCKED subdevice is locked
|
||||
<item>SDF_LOCKED_OWNER subdevice is locked by the file descriptor used
|
||||
by <tt/dev/.
|
||||
<item>SDF_MAXDATA maximum data values are channel dependent
|
||||
<item>SDF_FLAGS channel flags are channel dependent
|
||||
<item>SDF_RANGETYPE range types are channel dependent
|
||||
<item>SDF_MODE0 deprecated
|
||||
<item>SDF_MODE1 deprecated
|
||||
<item>SDF_MODE2 deprecated
|
||||
<item>SDF_MODE3 deprecated
|
||||
<item>SDF_MODE4 deprecated
|
||||
<item>SDF_CMD subdevice supports commands
|
||||
<item>SDF_READABLE subdevice can be read from
|
||||
<item>SDF_WRITEABLE subdevice can be written to
|
||||
<item>SDF_RT deprecated
|
||||
<item>SDF_GROUND subdevice is capable of ground analog reference
|
||||
<item>SDF_COMMON subdevice is capable of common analog reference
|
||||
<item>SDF_DIFF subdevice is capable of differential analog reference
|
||||
<item>SDF_OTHER subdevice is capable of other analog reference
|
||||
<item>SDF_DITHER subdevice recognizes dither flag
|
||||
<item>SDF_DEGLITCH subdevice recognizes deglitch flag
|
||||
<item>SDF_MMAP deprecated
|
||||
<item>SDF_RUNNING subdevice is acquiring data (i.e., command has not
|
||||
completed)
|
||||
<item>SDF_LSAMPL subdevice uses samples of type lsampl_t (otherwise
|
||||
sampl_t)
|
||||
<item>SDF_PACKED subdevice uses bitfield samples (otherwise it uses
|
||||
one sample per channel)
|
||||
</itemize>
|
||||
|
||||
|
||||
|
||||
<p>
|
||||
The bit definitions are part of the Comedi kernel interface.
|
||||
|
||||
|
||||
<p>
|
||||
<sect2>comedi_range_is_chan_specific()
|
||||
<label id="comedi_range_is_chan_specific">
|
||||
<p>
|
||||
|
||||
<tt/int comedi_range_is_chan_specific(comedi_t *dev,unsigned int subdevice);/
|
||||
|
||||
<p>
|
||||
If each channel of the specified subdevice has a different range
|
||||
specification, this function returns 1. Otherwise, this function
|
||||
returns 0. On error, this function returns -1.
|
||||
|
||||
|
||||
<p>
|
||||
<sect2>Undocumented functions
|
||||
<label id="undocumented">
|
||||
<p>
|
||||
|
||||
|
||||
<itemize>
|
||||
<item>comedi_maxdata_is_chan_specific()
|
||||
<item>comedi_get_buffer_size()
|
||||
<item>comedi_get_max_buffer_size()
|
||||
<item>comedi_set_buffer_size()
|
||||
<item>comedi_set_max_buffer_size()
|
||||
<item>comedi_do_insnlist()
|
||||
<item>comedi_do_insn()
|
||||
<item>comedi_lock()
|
||||
<item>comedi_unlock()
|
||||
<item>comedi_get_cmd_src_mask()
|
||||
<item>comedi_get_cmd_generic_timed()
|
||||
<item>comedi_cancel()
|
||||
<item>comedi_command()
|
||||
<item>comedi_command_test()
|
||||
<item>comedi_poll()
|
||||
<item>comedi_get_buffer_contents()
|
||||
<item>comedi_mark_buffer_read()
|
||||
<item>comedi_get_buffer_offset()
|
||||
<item>comedi_set_global_oor_behavior()
|
||||
</itemize>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</article>
|
||||
|
Loading…
Add table
Reference in a new issue