X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=hardware%2Frigol-ds%2Fapi.c;h=872531f694159b3c0d57d9ad7f2b5df584efd7de;hb=43cd4637285833706f8a404ca027bcf0ee75b9ae;hp=b8dbe89fdb28e8ff0f8729d2a0bdb64638723dcb;hpb=5d336f1130ddc2faaeabd7ed6ec602904054bfb8;p=libsigrok.git diff --git a/hardware/rigol-ds/api.c b/hardware/rigol-ds/api.c index b8dbe89f..872531f6 100644 --- a/hardware/rigol-ds/api.c +++ b/hardware/rigol-ds/api.c @@ -272,10 +272,13 @@ static struct sr_dev_inst *probe_device(struct sr_scpi_dev_inst *scpi) gchar *channel_name, **version; if (sr_scpi_get_hw_id(scpi, &hw_info) != SR_OK) { - sr_info("Couldn't get IDN response."); + sr_info("Couldn't get IDN response, retrying."); sr_scpi_close(scpi); - sr_scpi_free(scpi); - return NULL; + sr_scpi_open(scpi); + if (sr_scpi_get_hw_id(scpi, &hw_info) != SR_OK) { + sr_info("Couldn't get IDN response."); + return NULL; + } } for (i = 0; i < ARRAY_SIZE(supported_models); i++) { @@ -292,13 +295,9 @@ static struct sr_dev_inst *probe_device(struct sr_scpi_dev_inst *scpi) model->name, hw_info->firmware_version))) { sr_scpi_hw_info_free(hw_info); - sr_scpi_close(scpi); - sr_scpi_free(scpi); return NULL; } - sr_scpi_close(scpi); - sdi->conn = scpi; sdi->driver = di; @@ -948,7 +947,7 @@ static int dev_acquisition_start(const struct sr_dev_inst *sdi, void *cb_data) switch (devc->model->series->protocol) { case PROTOCOL_V2: - if (rigol_ds_config_set(sdi, ":ACQ:MDEP LONG") != SR_OK) + if (rigol_ds_config_set(sdi, ":ACQ:MEMD LONG") != SR_OK) return SR_ERR; break; case PROTOCOL_V3: @@ -971,7 +970,8 @@ static int dev_acquisition_start(const struct sr_dev_inst *sdi, void *cb_data) if (rigol_ds_config_set(sdi, ":RUN") != SR_OK) return SR_ERR; - sr_scpi_source_add(scpi, G_IO_IN, 50, rigol_ds_receive, (void *)sdi); + sr_scpi_source_add(sdi->session, scpi, G_IO_IN, 50, + rigol_ds_receive, (void *)sdi); /* Send header packet to the session bus. */ std_session_send_df_header(cb_data, LOG_PREFIX); @@ -1015,7 +1015,7 @@ static int dev_acquisition_stop(struct sr_dev_inst *sdi, void *cb_data) devc->enabled_analog_channels = NULL; devc->enabled_digital_channels = NULL; scpi = sdi->conn; - sr_scpi_source_remove(scpi); + sr_scpi_source_remove(sdi->session, scpi); return SR_OK; }