]> sigrok.org Git - libsigrok.git/blobdiff - hardware/rigol-ds/api.c
rigol-ds: Correct digital waveform block sizes.
[libsigrok.git] / hardware / rigol-ds / api.c
index 99d718313fc50dd24dbed2f876872847fe469778..44847c715be75612d1bc97453ec02f48fd2ea459 100644 (file)
@@ -489,6 +489,20 @@ static int analog_frame_size(const struct sr_dev_inst *sdi)
        }
 }
 
+static int digital_frame_size(const struct sr_dev_inst *sdi)
+{
+       struct dev_context *devc = sdi->priv;
+
+       switch (devc->model->series) {
+       case RIGOL_VS5000:
+               return VS5000_DIGITAL_WAVEFORM_SIZE;
+       case RIGOL_DS1000:
+               return DS1000_DIGITAL_WAVEFORM_SIZE;
+       default:
+               return 0;
+       }
+}
+
 static int config_get(int id, GVariant **data, const struct sr_dev_inst *sdi,
                const struct sr_probe_group *probe_group)
 {
@@ -820,6 +834,7 @@ static int dev_acquisition_start(const struct sr_dev_inst *sdi, void *cb_data)
                                if (set_cfg(sdi, ":CHAN%d:DISP %s", probe->index + 1,
                                                probe->enabled ? "ON" : "OFF") != SR_OK)
                                        return SR_ERR;
+                               devc->analog_channels[probe->index] = probe->enabled;
                        }
                } else if (probe->type == SR_PROBE_LOGIC) {
                        if (probe->enabled) {
@@ -837,6 +852,7 @@ static int dev_acquisition_start(const struct sr_dev_inst *sdi, void *cb_data)
                                if (set_cfg(sdi, ":DIG%d:TURN %s", probe->index,
                                                probe->enabled ? "ON" : "OFF") != SR_OK)
                                        return SR_ERR;
+                               devc->digital_channels[probe->index] = probe->enabled;
                        }
                }
        }
@@ -873,6 +889,7 @@ static int dev_acquisition_start(const struct sr_dev_inst *sdi, void *cb_data)
                devc->channel_entry = devc->enabled_digital_probes;
 
        devc->analog_frame_size = analog_frame_size(sdi);
+       devc->digital_frame_size = digital_frame_size(sdi);
 
        if (devc->model->protocol == PROTOCOL_LEGACY) {
                /* Fetch the first frame. */