X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=src%2Fhardware%2Frigol-ds%2Fapi.c;h=221b1234ac6177c30bccfc92b56cba6c00f60ca8;hb=8bf18daabbf3cb0fec6c178b4bc7f6283a314e45;hp=40d87bda0f63c26892de3f1a77d9997eea9392bc;hpb=c3cd66a00cdb4afbd43108563d979eebfbafaf69;p=libsigrok.git diff --git a/src/hardware/rigol-ds/api.c b/src/hardware/rigol-ds/api.c index 40d87bda..221b1234 100644 --- a/src/hardware/rigol-ds/api.c +++ b/src/hardware/rigol-ds/api.c @@ -288,12 +288,11 @@ static void clear_helper(void *priv) g_free(devc->trigger_source); g_free(devc->trigger_slope); g_free(devc->analog_groups); - g_free(devc); } static int dev_clear(const struct sr_dev_driver *di) { - return std_dev_clear(di, clear_helper); + return std_dev_clear_with_callback(di, clear_helper); } static struct sr_dev_inst *probe_device(struct sr_scpi_dev_inst *scpi) @@ -445,8 +444,6 @@ static int dev_open(struct sr_dev_inst *sdi) return SR_ERR; } - sdi->status = SR_ST_ACTIVE; - return SR_OK; } @@ -455,22 +452,16 @@ static int dev_close(struct sr_dev_inst *sdi) struct sr_scpi_dev_inst *scpi; struct dev_context *devc; - if (sdi->status != SR_ST_ACTIVE) - return SR_ERR_DEV_CLOSED; - scpi = sdi->conn; devc = sdi->priv; + if (!scpi) + return SR_ERR_BUG; + if (devc->model->series->protocol == PROTOCOL_V2) rigol_ds_config_set(sdi, ":KEY:LOCK DISABLE"); - if (scpi) { - if (sr_scpi_close(scpi) < 0) - return SR_ERR; - sdi->status = SR_ST_INACTIVE; - } - - return SR_OK; + return sr_scpi_close(scpi); } static int analog_frame_size(const struct sr_dev_inst *sdi)