]> sigrok.org Git - libsigrok.git/blobdiff - bindings/python/sigrok/core/classes.py
python: Add Analog class.
[libsigrok.git] / bindings / python / sigrok / core / classes.py
index 4bbda25d6f5369214eca0fd3cfa6f8ece59551b2..52a11c4086bbfdf048663f7c5d79333efa343a06 100644 (file)
@@ -225,6 +225,9 @@ class Packet(object):
             if self.struct.type == SR_DF_LOGIC:
                 self._payload = Logic(self,
                     void_ptr_to_sr_datafeed_logic_ptr(pointer))
+            elif self.struct.type == SR_DF_ANALOG:
+                self._payload = Analog(self,
+                    void_ptr_to_sr_datafeed_analog_ptr(pointer))
             else:
                 raise NotImplementedError(
                     "No Python mapping for packet type %ѕ" % self.struct.type)
@@ -243,6 +246,23 @@ class Logic(object):
             self._data = cdata(self.struct.data, self.struct.length)
         return self._data
 
+class Analog(object):
+
+    def __init__(self, packet, struct):
+        self.packet = packet
+        self.struct = struct
+        self._data = None
+
+    @property
+    def num_samples(self):
+        return self.struct.num_samples
+
+    @property
+    def data(self):
+        if self._data is None:
+            self._data = float_array.frompointer(self.struct.data)
+        return self._data
+
 for symbol_name in dir(lowlevel):
     prefix = 'SR_DF_'
     if symbol_name.startswith(prefix):