comedi_get_softcal_converter — get converter for software-calibrated subdevice
#include <comedilib.h>
int comedi_get_softcal_converter( | unsigned subdevice, |
unsigned channel, | |
unsigned range, | |
enum comedi_conversion_direction direction, | |
const comedi_calibration_t * parsed_calibration, | |
comedi_polynomial_t * converter) ; |
The function comedi_get_softcal_converter
initializes
the comedi_polynomial_t pointed to by
converter
so it can be
passed to either
comedi_to_physical
or comedi_from_physical
.
The comedi_polynomial_t pointed to by
converter
can then be used to
convert data for the specified subdevice
,
channel
, and
range
.
The direction
parameter specifies whether converter
will be passed to comedi_to_physical
or comedi_from_physical
.
The parsed_calibration
parameter
points to the
software calibration values for your device, and may be obtained by calling
comedi_parse_calibration_file
on a calibration file generated by the
comedi_soft_calibrate program.
This function is only useful for boards that perform their calibrations in software on the host
computer. A subdevice will advertise the fact that it depends on a software calibration
with the SDF_SOFT_CALIBRATED
subdevice flag.
Whether or not the result of this function actually depends on the
channel
parameter is
hardware dependent. For example, the calibration of a multiplexed analog input will typically
not depend on the channel, only the range. Analog outputs will typically use different calibrations
for each output channel.
Software calibrations are implemented as polynomials (up to third order). Since the inverse
of a polynomial of order higher than one can't be represented exactly as another polynomial, you
may not be able to get converters for the “reverse” direction. For example, you may be
able to get a converter for an analog input in the
COMEDI_TO_PHYSICAL
direction, but not
in the COMEDI_FROM_PHYSICAL
direction.