`direction` should be a value from `constant.CONVERSION_DIRECTION`.
"""
cdef _comedilib_h.comedi_polynomial_t poly
- #rc = _comedilib_h.comedi_get_softcal_converter(
- # self.subdevice.device.device,
- # self.subdevice.index, self.index,
- # _constant.bitwise_value(self.range),
- # _constant.bitwise_value(direction),
- # calibration, &poly)
- #if rc < 0:
- # _error.raise_error(function_name='comedi_get_softcal_converter',
- # ret=rc)
+ rc = _comedilib_h.comedi_get_softcal_converter(
+ self.subdevice.index, self.index,
+ _constant.bitwise_value(self.range),
+ _constant.bitwise_value(direction),
+ <_comedilib_h.comedi_calibration_t*> calibration, &poly)
+ if rc < 0:
+ _error.raise_error(function_name='comedi_get_softcal_converter',
+ ret=rc)
return poly
cdef _comedilib_h.comedi_polynomial_t get_hardcal_converter(
cdef _CalibratedConverter ret
flags = self.subdevice.get_flags()
if flags.soft_calibrated:
- #if calibration is None:
- # calibration = self.subdevice.device.parse_calibration()
- raise NotImplementedError()
+ if calibration is None:
+ calibration = self.subdevice.device.parse_calibration()
+ to_physical = self.get_softcal_converter(
+ _constant.CONVERSION_DIRECTION.to_physical,
+ calibration)
+ from_physical = self.get_softcal_converter(
+ _constant.CONVERSION_DIRECTION.from_physical,
+ calibration)
else:
to_physical = self.get_hardcal_converter(
_constant.CONVERSION_DIRECTION.to_physical)
_error.raise_error(
function_name='comedi_get_default_calibration_path')
return ret
+
+ def parse_calibration(self, path=None):
+ """The soft calibration from a file for this device.
+
+ If path is None, the default calibration file is used.
+ """
+ if path is None:
+ path = self.get_default_calibration_path()
+
+ ret = _comedilib_h.comedi_parse_calibration_file(path)
+ if ret == NULL:
+ _error.raise_error(
+ function_name='comedi_parse_calibration_file')
+ return ret
# extensions to make a more idomatic Python interface