Fix #1576 by handling DSO1000B's CHAN#:PROB? responses

This commit is contained in:
Valentin Ochs 2020-07-12 23:15:29 +02:00 committed by Soeren Apel
parent e434f624ba
commit 34ce4d8258
1 changed files with 15 additions and 1 deletions

View File

@ -905,7 +905,21 @@ SR_PRIV int rigol_ds_get_dev_cfg(const struct sr_dev_inst *sdi)
/* Probe attenuation. */
for (i = 0; i < devc->model->analog_channels; i++) {
cmd = g_strdup_printf(":CHAN%d:PROB?", i + 1);
res = sr_scpi_get_float(sdi->conn, cmd, &devc->attenuation[i]);
/* DSO1000B series prints an X after the probe factor, so
* we get a string and check for that instead of only handling
* floats. */
char *response;
res = sr_scpi_get_string(sdi->conn, cmd, &response);
if (res != SR_OK)
return SR_ERR;
int len = strlen(response);
if (response[len-1] == 'X')
response[len-1] = 0;
res = sr_atof_ascii(response, &devc->attenuation[i]);
g_free(response);
g_free(cmd);
if (res != SR_OK)
return SR_ERR;