From: Uwe Hermann Date: Thu, 20 Jul 2017 20:23:25 +0000 (+0200) Subject: scpi-pps: Change some floats to doubles. X-Git-Url: http://sigrok.org/gitweb/?a=commitdiff_plain;h=bcee129962d0a451f707ad08e40a5311c6a15573;p=libsigrok.git scpi-pps: Change some floats to doubles. This makes the code more consistent with the rest of the code-base and also allows std_gvar_min_max_step_array() to work here. Without this change: src/hardware/scpi-pps/api.c: In function ‘config_list’: src/hardware/scpi-pps/api.c:570:40: warning: passing argument 1 of ‘std_gvar_min_max_step_array’ from incompatible pointer type [-Wincompatible-pointer-types] *data = std_gvar_min_max_step_array(ch_spec->voltage); ^~~~~~~ In file included from src/scpi.h:30:0, from src/hardware/scpi-pps/api.c:23: src/libsigrok-internal.h:964:19: note: expected ‘const double *’ but argument is of type ‘const float *’ SR_PRIV GVariant *std_gvar_min_max_step_array(const double a[3]); ^~~~~~~~~~~~~~~~~~~~~~~~~~~ src/hardware/scpi-pps/api.c:573:40: warning: passing argument 1 of ‘std_gvar_min_max_step_array’ from incompatible pointer type [-Wincompatible-pointer-types] *data = std_gvar_min_max_step_array(ch_spec->frequency); ^~~~~~~ In file included from src/scpi.h:30:0, from src/hardware/scpi-pps/api.c:23: src/libsigrok-internal.h:964:19: note: expected ‘const double *’ but argument is of type ‘const float *’ SR_PRIV GVariant *std_gvar_min_max_step_array(const double a[3]); ^~~~~~~~~~~~~~~~~~~~~~~~~~~ src/hardware/scpi-pps/api.c:576:40: warning: passing argument 1 of ‘std_gvar_min_max_step_array’ from incompatible pointer type [-Wincompatible-pointer-types] *data = std_gvar_min_max_step_array(ch_spec->current); ^~~~~~~ In file included from src/scpi.h:30:0, from src/hardware/scpi-pps/api.c:23: src/libsigrok-internal.h:964:19: note: expected ‘const double *’ but argument is of type ‘const float *’ SR_PRIV GVariant *std_gvar_min_max_step_array(const double a[3]); ^~~~~~~~~~~~~~~~~~~~~~~~~~~ --- diff --git a/src/hardware/scpi-pps/api.c b/src/hardware/scpi-pps/api.c index 70b54351..3ac44a3c 100644 --- a/src/hardware/scpi-pps/api.c +++ b/src/hardware/scpi-pps/api.c @@ -622,7 +622,7 @@ static int dev_acquisition_start(const struct sr_dev_inst *sdi) static int dev_acquisition_stop(struct sr_dev_inst *sdi) { struct sr_scpi_dev_inst *scpi; - float f; + double d; scpi = sdi->conn; @@ -631,7 +631,7 @@ static int dev_acquisition_stop(struct sr_dev_inst *sdi) * to avoid leaving the device in a state where it's not expecting * commands. */ - sr_scpi_get_float(scpi, NULL, &f); + sr_scpi_get_double(scpi, NULL, &d); sr_scpi_source_remove(sdi->session, scpi); std_session_send_df_end(sdi); diff --git a/src/hardware/scpi-pps/profiles.c b/src/hardware/scpi-pps/profiles.c index f3c58dca..cd895ec0 100644 --- a/src/hardware/scpi-pps/profiles.c +++ b/src/hardware/scpi-pps/profiles.c @@ -204,9 +204,9 @@ static int chroma_62000p_probe_channels(struct sr_dev_inst *sdi, channel = g_malloc0(sizeof(struct channel_spec)); channel->name = "1"; channel->voltage[0] = channel->current[0] = channel->power[0] = 0.0; - channel->voltage[1] = (float)volts; - channel->current[1] = (float)amps; - channel->power[1] = (float)watts; + channel->voltage[1] = volts; + channel->current[1] = amps; + channel->power[1] = watts; channel->voltage[2] = channel->current[2] = 0.01; channel->voltage[3] = channel->voltage[4] = 3; channel->current[3] = channel->current[4] = 4; @@ -393,9 +393,9 @@ enum philips_pm2800_modules { static const struct philips_pm2800_module_spec { /* Min, max, programming resolution. */ - float voltage[5]; - float current[5]; - float power[5]; + double voltage[5]; + double current[5]; + double power[5]; } philips_pm2800_module_specs[] = { /* Autoranging modules. */ [PM2800_MOD_30V_10A] = { { 0, 30, 0.0075, 2, 4 }, { 0, 10, 0.0025, 2, 4 }, { 0, 60 } }, @@ -481,7 +481,7 @@ static int philips_pm2800_probe_channels(struct sr_dev_inst *sdi, spec->current[0], spec->current[1], spec->power[0], spec->power[1]); (*channels)[i].name = (char *)philips_pm2800_names[i]; - memcpy(&((*channels)[i].voltage), spec, sizeof(float) * 15); + memcpy(&((*channels)[i].voltage), spec, sizeof(double) * 15); (*channel_groups)[i].name = (char *)philips_pm2800_names[i]; (*channel_groups)[i].channel_index_mask = 1 << i; (*channel_groups)[i].features = PPS_OTP | PPS_OVP | PPS_OCP; diff --git a/src/hardware/scpi-pps/protocol.c b/src/hardware/scpi-pps/protocol.c index 4c7a649c..5afaa5e9 100644 --- a/src/hardware/scpi-pps/protocol.c +++ b/src/hardware/scpi-pps/protocol.c @@ -67,7 +67,7 @@ SR_PRIV int scpi_pps_receive_data(int fd, int revents, void *cb_data) struct sr_scpi_dev_inst *scpi; struct pps_channel *pch; const struct channel_spec *ch_spec; - float f; + double d; int cmd; (void)fd; @@ -82,7 +82,7 @@ SR_PRIV int scpi_pps_receive_data(int fd, int revents, void *cb_data) scpi = sdi->conn; /* Retrieve requested value for this state. */ - if (sr_scpi_get_float(scpi, NULL, &f) == SR_OK) { + if (sr_scpi_get_double(scpi, NULL, &d) == SR_OK) { pch = devc->cur_channel->priv; ch_spec = &devc->device->channels[pch->hw_output_idx]; packet.type = SR_DF_ANALOG; @@ -106,7 +106,7 @@ SR_PRIV int scpi_pps_receive_data(int fd, int revents, void *cb_data) analog.spec->spec_digits = ch_spec->power[3]; } analog.meaning->mqflags = SR_MQFLAG_DC; - analog.data = &f; + analog.data = &d; sr_session_send(sdi, &packet); g_slist_free(analog.meaning->channels); } diff --git a/src/hardware/scpi-pps/protocol.h b/src/hardware/scpi-pps/protocol.h index d4425e72..e9365820 100644 --- a/src/hardware/scpi-pps/protocol.h +++ b/src/hardware/scpi-pps/protocol.h @@ -101,10 +101,10 @@ struct scpi_pps { struct channel_spec { const char *name; /* Min, max, programming resolution, spec digits, encoding digits. */ - float voltage[5]; - float current[5]; - float power[5]; - float frequency[5]; + double voltage[5]; + double current[5]; + double power[5]; + double frequency[5]; }; struct channel_group_spec {