Added comedi_get_buffer_read_offset(), comedi_get_buffer_write_offset(),
comedi_get_buffer_read_count(), and comedi_get_buffer_write_count().
comedi_get_buffer_read_offset() is the same as
comedi_get_buffer_offset(), which has now been documented as deprecated,
but is currently still declared in "comedilib.h" by default. It gets
the read position within the buffer as an offset from the start of the
buffer (modulo the buffer size).
comedi_get_buffer_write_offset() gets the write position within the
buffer as an offset from the start of the buffer (modulo the buffer
size).
comedi_get_buffer_read_count() gets the number of bytes read from the
buffer, modulo UINT_MAX+1.
comedi_get_buffer_write_count() gets the number of bytes written to the
buffer, modulo UINT_MAX+1.
The 'data' parameter (of type lsampl_t*) for
comedi_data_read_n(it,subd,chan,range,aref,data,n) is currently marked
as an OUTPUT parameter for SWIG, but we can only do that for single
objects, and this one points to an array of objects.
These functions allow the current read or write subdevice to be changed
to another subdevice that supports streaming input (for read), or
streaming output (for write) asynchronous commands.
They return 0 on success, in which case the comedi_get_read_subdevice()
or comedi_get_write_subdevice() functions will get the updated read or
write subdevice.
Changes are local to the "open file description" that was created by
comedi_open() (actually, by open()), and have no effect on other open
file descriptions created by other calls to comedi_open() (or open())
for the same underlying Comedi device node.
Changes to the read or write subdevice is not currently supported by the
comedi.org version of the Comedi drivers, but is supported by the Linux
"in-tree" Comedi drivers since kernel version 3.19.
Add wrapper functions for the INSN_CONFIG_DIGITAL_TRIG configuration
instruction. These are comedi_digital_trigger_disable(),
comedi_digital_trigger_enable_edges(), and
comedi_digital_trigger_enable_levels().
The comedi_arm(), comedi_disarm(), and comedi_reset() functions always
set the channel number in the corresponding configuration instructions
to 0, as they assume the channel number will be ignored by the driver.
Some drivers do in fact use the channel number in these configuration
instructions. Add additional wrapper functions comedi_arm_channel(),
comedi_disarm_channel(), and comedi_reset_channel() to allow the channel
number to be specified.
Add the comedi_disarm() function to send the INSN_CONFIG_DISARM
configuration instruction to a subdevice.
In configure.ac, bump the comedilib libtool version code to 11:0:11, so
the comedilib version becomes 0.11.0. Also bump the comedilib manual
version to 0.11.0 in doc/comedilib.ent.
The COMEDI_DEVCONF_AUX_DATA3_LENGTH, COMEDI_DEVCONF_AUX_DATA2_LENGTH,
COMEDI_DEVCONF_AUX_DATA1_LENGTH, COMEDI_DEVCONF_AUX_DATA0_LENGTH,
COMEDI_DEVCONF_AUX_DATA_HI, COMEDI_DEVCONF_AUX_DATA_LO, and
COMEDI_DEVCONF_AUX_DATA_LENGTH config option indices are still used by
the standalone COMEDI kernel modules built from comedi.org sources for
loading firmware in some driver modules, although they are no longer
used by the COMEDI kernel modules in the Linux kernel sources. Adjust
the comment to reflect this.
The BIT(x) macro is used by some internal kernel headers and is not
used in user API kernel headers. It was used incorrectly in the
"staging" kernel version of "comedi.h" in the "linux-next" tree for a
brief period.
Replace the use of BIT(x) with explicit masks. Handle CR_INVERT
specially in SWIG to avoid it appearing as a negative integer.
_CR_FLAGS_MASK was defined twice, identically, in SWIG, so remove one of
the definitions.
This patch removes COMEDI_CB_* macros that are of no use to userspace at
any rate. COMEDI_CB_* are no longer in comedi.h in the staging tree, but
rather in comedidev.h.
This patch also removes an old commented-out INSN_CONFIG_GET_OTHER_SRC, the
value of which was already taken long ago by
INSN_CONFIG_GET_HARDWARE_BUFFER_SIZE.
This partial sync of staging tree to the comedilib version of comedi.h
brings documentation and some mild formatting. The documentation should be
beneficial to userspace and the sync helps to visually maintain future
syncing between kernel and userspace code.
This revisits the change made in da0fe745fc:
1) Changes c-macro constants back to their original definition (without
explicit typing them as unsigned) so-as to more exactly compare
the comedilib version of comedi.h with that of the kernel module.
2) Removes the duplicate definition of NI_GPCT_INVERT_CLOCK_SRC_BIT in
comedi.i.
3) Instead of redefining the macros to fix the mishandling of signedness
by SWIG for python, teach SWIG to treat these as unsigned ints.
This is a partial sync of the staging tree to comedilib with these
benefits:
1. This is first in a series of patches to sync comedilib to the kernel
modules in the staging development tree. The point of this series of
patches is to make the syncing of the userspace and kernel comedi.h
files be visually more easily done.
2. This patch also teaches SWIG out to properly wrap these macros and
provide them to the user.
3. The redef of static inline NI_* functions as macro functions eases
alternative use of comedi.h as an import source for a new ctypes-based
python interface for comedilib.
In C, mixing up between int and unsigned int doesn't matter too much for constants
because in memory they end up the same.
However, in Python, they appear differently.
Swig assumes (wrongly?) by default that the constants are signed, intead of being unsigned.
For every value equal or greater that 2**31, it matters.
For instance CR_INVERT should be 2147483648, but it is -2147483648 in python.
By marking the values explicitly unsigned, swig generates the right values.
That's excepted for enum, which swig just consider int. So for the only constant in that
case, we manually override it in swig.
included by comedilib.h, containing COMEDILIB_VERSION_MAJOR,
COMEDILIB_VERSION_MINOR, COMEDILIB_VERSION_MICRO, and
COMEDILIB_CHECK_VERSION(major,minor,micro). This can be used to perform
C pre-processor checks for API changes in comedilib.