calibration: support to-physical-only softcal boards.
[pycomedi.git] / pycomedi / device.pyx
index b5ef68391cdcacb48793b3d25f5da29069046f16..4f23d79185b34251dd13f05034eb3e0490f75966 100644 (file)
@@ -1,4 +1,6 @@
-# Copyright (C) 2011-2012 W. Trevor King <wking@drexel.edu>
+# -*- coding: utf-8 -*-
+# Copyright (C) 2011-2012 W. Trevor King <wking@tremily.us>
+#                         Éric Piel <piel@delmic.com>
 #
 # This file is part of pycomedi.
 #
@@ -24,6 +26,7 @@ from pycomedi import PyComediError as _PyComediError
 cimport _comedi_h
 cimport _comedilib_h
 import _error
+from calibration import Calibration as _Calibration
 from instruction cimport Insn as _Insn
 from instruction import Insn as _Insn
 from subdevice import Subdevice as _Subdevice
@@ -243,7 +246,7 @@ cdef class Device (object):
             ret = _comedilib_h.comedi_do_insnlist(self.device, &il)
         finally:
             _stdlib.free(il.insns)
-        if ret < 0:
+        if ret < len(insnlist):
             _error.raise_error(function_name='comedi_do_insnlist', ret=ret)
         return ret
 
@@ -273,6 +276,17 @@ cdef class Device (object):
                 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()
+        c = _Calibration(device=self)
+        c.from_file(path)
+        return c
+
     # extensions to make a more idomatic Python interface
 
     def insn(self):