]> sigrok.org Git - libsigrok.git/blobdiff - src/scpi/scpi.c
hantek-4032l: Fix mismatch in magic number.
[libsigrok.git] / src / scpi / scpi.c
index 48e6a48495c9bfaba591147a12f715b67fe0b493..5b36daab0dc2bcd1cb943eef3db22864899f655a 100644 (file)
@@ -627,7 +627,7 @@ SR_PRIV int sr_scpi_get_double(struct sr_scpi_dev_inst *scpi,
        if (ret != SR_OK && !response)
                return ret;
 
-       if (sr_atod(response, scpi_response) == SR_OK)
+       if (sr_atod_ascii(response, scpi_response) == SR_OK)
                ret = SR_OK;
        else
                ret = SR_ERR_DATA;
@@ -651,6 +651,7 @@ SR_PRIV int sr_scpi_get_opc(struct sr_scpi_dev_inst *scpi)
        gboolean opc;
 
        for (i = 0; i < SCPI_READ_RETRIES; i++) {
+               opc = FALSE;
                sr_scpi_get_bool(scpi, SCPI_CMD_OPC, &opc);
                if (opc)
                        return SR_OK;
@@ -908,6 +909,7 @@ SR_PRIV int sr_scpi_get_hw_id(struct sr_scpi_dev_inst *scpi,
        char *response;
        gchar **tokens;
        struct sr_scpi_hw_info *hw_info;
+       gchar *idn_substr;
 
        response = NULL;
        tokens = NULL;
@@ -936,7 +938,13 @@ SR_PRIV int sr_scpi_get_hw_id(struct sr_scpi_dev_inst *scpi,
        g_free(response);
 
        hw_info = g_malloc0(sizeof(struct sr_scpi_hw_info));
-       hw_info->manufacturer = g_strstrip(g_strdup(tokens[0]));
+
+       idn_substr = g_strstr_len(tokens[0], -1, "IDN ");
+       if (idn_substr == NULL)
+               hw_info->manufacturer = g_strstrip(g_strdup(tokens[0]));
+       else
+               hw_info->manufacturer = g_strstrip(g_strdup(idn_substr + 4));
+
        hw_info->model = g_strstrip(g_strdup(tokens[1]));
        hw_info->serial_number = g_strstrip(g_strdup(tokens[2]));
        hw_info->firmware_version = g_strstrip(g_strdup(tokens[3]));