]> sigrok.org Git - libsigrok.git/blobdiff - hardware/rigol-ds/api.c
build: Portability fixes.
[libsigrok.git] / hardware / rigol-ds / api.c
index b8dbe89fdb28e8ff0f8729d2a0bdb64638723dcb..872531f694159b3c0d57d9ad7f2b5df584efd7de 100644 (file)
@@ -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;
 }