X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=src%2Fhardware%2Frigol-ds%2Fapi.c;h=58cb7cced59e206d9abe4d31c535caeabd98516b;hb=e57057aee778e723da572a6b5e2bd01526cc7beb;hp=8075a2e8ff8318d3a7b524765d144caae58850f5;hpb=c1aae90038456a61d0f9313d34e6107c3440d3e7;p=libsigrok.git diff --git a/src/hardware/rigol-ds/api.c b/src/hardware/rigol-ds/api.c index 8075a2e8..58cb7cce 100644 --- a/src/hardware/rigol-ds/api.c +++ b/src/hardware/rigol-ds/api.c @@ -19,6 +19,7 @@ * along with this program. If not, see . */ +#include #include #include #include @@ -28,6 +29,7 @@ #include #include #include "libsigrok-internal.h" +#include "scpi.h" #include "protocol.h" static const uint32_t scanopts[] = { @@ -297,7 +299,7 @@ static struct sr_dev_inst *probe_device(struct sr_scpi_dev_inst *scpi) } for (i = 0; i < ARRAY_SIZE(supported_models); i++) { - if (!strcasecmp(hw_info->manufacturer, + if (!g_ascii_strcasecmp(hw_info->manufacturer, supported_models[i].series->vendor->full_name) && !strcmp(hw_info->model, supported_models[i].name)) { model = &supported_models[i]; @@ -338,12 +340,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); } @@ -807,9 +809,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));