X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=src%2Fhardware%2Frigol-ds%2Fapi.c;h=d8ad1a06887c778c0822053f912881fa844aa25b;hb=700d6b64d578ce10e57f6a2289e37a5564eccf1c;hp=ba4b0206ca861113796a5c43d107d77fae99df78;hpb=6ec6c43b4738dbc7091f4a49a4ec80ea6102cb52;p=libsigrok.git diff --git a/src/hardware/rigol-ds/api.c b/src/hardware/rigol-ds/api.c index ba4b0206..d8ad1a06 100644 --- a/src/hardware/rigol-ds/api.c +++ b/src/hardware/rigol-ds/api.c @@ -313,7 +313,6 @@ static struct sr_dev_inst *probe_device(struct sr_scpi_dev_inst *scpi) } sdi = g_malloc0(sizeof(struct sr_dev_inst)); - sdi->status = SR_ST_ACTIVE; sdi->vendor = g_strdup(model->series->vendor->name); sdi->model = g_strdup(model->name); sdi->version = g_strdup(hw_info->firmware_version); @@ -340,12 +339,12 @@ static struct sr_dev_inst *probe_device(struct sr_scpi_dev_inst *scpi) } if (i != 3) break; - if (n[0] != 0 || n[1] > 2) - break; - if (n[1] == 2 && n[2] > 3) - break; - sr_dbg("Found DS1000 firmware < 0.2.4, using raw data format."); - devc->format = FORMAT_RAW; + scpi->firmware_version = n[0] * 100 + n[1] * 10 + n[2]; + if (scpi->firmware_version < 24) { + sr_dbg("Found DS1000 firmware < 0.2.4, using raw data format."); + devc->format = FORMAT_RAW; + } + break; } while (0); g_strfreev(version); } @@ -460,11 +459,6 @@ static int dev_close(struct sr_dev_inst *sdi) return SR_OK; } -static int cleanup(const struct sr_dev_driver *di) -{ - return dev_clear(di); -} - static int analog_frame_size(const struct sr_dev_inst *sdi) { struct dev_context *devc = sdi->priv; @@ -809,9 +803,6 @@ static int config_list(uint32_t key, GVariant **data, const struct sr_dev_inst * unsigned int i; struct dev_context *devc = NULL; - if (sdi) - devc = sdi->priv; - if (key == SR_CONF_SCAN_OPTIONS) { *data = g_variant_new_fixed_array(G_VARIANT_TYPE_UINT32, scanopts, ARRAY_SIZE(scanopts), sizeof(uint32_t)); @@ -925,7 +916,7 @@ static int config_list(uint32_t key, GVariant **data, const struct sr_dev_inst * return SR_OK; } -static int dev_acquisition_start(const struct sr_dev_inst *sdi, void *cb_data) +static int dev_acquisition_start(const struct sr_dev_inst *sdi) { struct sr_scpi_dev_inst *scpi; struct dev_context *devc; @@ -1035,8 +1026,7 @@ static int dev_acquisition_start(const struct sr_dev_inst *sdi, void *cb_data) 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); + std_session_send_df_header(sdi, LOG_PREFIX); devc->channel_entry = devc->enabled_channels; @@ -1045,18 +1035,15 @@ static int dev_acquisition_start(const struct sr_dev_inst *sdi, void *cb_data) /* Start of first frame. */ packet.type = SR_DF_FRAME_BEGIN; - sr_session_send(cb_data, &packet); + sr_session_send(sdi, &packet); return SR_OK; } -static int dev_acquisition_stop(struct sr_dev_inst *sdi, void *cb_data) +static int dev_acquisition_stop(struct sr_dev_inst *sdi) { struct dev_context *devc; struct sr_scpi_dev_inst *scpi; - struct sr_datafeed_packet packet; - - (void)cb_data; devc = sdi->priv; @@ -1065,9 +1052,7 @@ static int dev_acquisition_stop(struct sr_dev_inst *sdi, void *cb_data) return SR_ERR; } - /* End of last frame. */ - packet.type = SR_DF_END; - sr_session_send(sdi, &packet); + std_session_send_df_end(sdi, LOG_PREFIX); g_slist_free(devc->enabled_channels); devc->enabled_channels = NULL; @@ -1082,7 +1067,7 @@ SR_PRIV struct sr_dev_driver rigol_ds_driver_info = { .longname = "Rigol DS", .api_version = 1, .init = init, - .cleanup = cleanup, + .cleanup = std_cleanup, .scan = scan, .dev_list = dev_list, .dev_clear = dev_clear,