static const struct {
enum voltage_range range;
-} volt_thresholds_ranges[] = {
+} thresholds_ranges[] = {
{ VOLTAGE_RANGE_18_33_V, },
{ VOLTAGE_RANGE_5_V, },
};
-static const double volt_thresholds[][2] = {
+static const double thresholds[][2] = {
{ 0.7, 1.4 },
{ 1.4, 3.6 },
};
libusb_get_device_descriptor(devlist[i], &des);
- usb_get_port_path(devlist[i], connection_id, sizeof(connection_id));
+ if (usb_get_port_path(devlist[i], connection_id, sizeof(connection_id)) < 0)
+ continue;
if (des.idVendor != LOGIC16_VID || des.idProduct != LOGIC16_PID)
continue;
libusb_get_device_address(devlist[i]), NULL);
} else {
if (ezusb_upload_firmware(drvc->sr_ctx, devlist[i],
- USB_CONFIGURATION, FX2_FIRMWARE) == SR_OK)
+ USB_CONFIGURATION, FX2_FIRMWARE) == SR_OK) {
/* Store when this device's FW was updated. */
devc->fw_updated = g_get_monotonic_time();
- else
- sr_err("Firmware upload failed.");
+ } else {
+ sr_err("Firmware upload failed, name %s.", FX2_FIRMWARE);
+ }
sdi->inst_type = SR_INST_USB;
sdi->conn = sr_usb_dev_inst_new(
libusb_get_bus_number(devlist[i]), 0xff, NULL);
/*
* Check device by its physical USB bus/port address.
*/
- usb_get_port_path(devlist[i], connection_id, sizeof(connection_id));
+ if (usb_get_port_path(devlist[i], connection_id, sizeof(connection_id)) < 0)
+ continue;
+
if (strcmp(sdi->connection_id, connection_id))
/* This is not the one. */
continue;
{
struct dev_context *devc;
struct sr_usb_dev_inst *usb;
- int ret;
unsigned int i;
(void)cg;
- ret = SR_OK;
switch (key) {
case SR_CONF_CONN:
if (!sdi || !sdi->conn)
if (!sdi)
return SR_ERR;
devc = sdi->priv;
- ret = SR_ERR;
- for (i = 0; i < ARRAY_SIZE(volt_thresholds); i++) {
- if (devc->selected_voltage_range !=
- volt_thresholds_ranges[i].range)
+ for (i = 0; i < ARRAY_SIZE(thresholds); i++) {
+ if (devc->selected_voltage_range != thresholds_ranges[i].range)
continue;
- *data = std_gvar_tuple_double(volt_thresholds[i][0], volt_thresholds[i][1]);
- ret = SR_OK;
- break;
+ *data = std_gvar_tuple_double(thresholds[i][0], thresholds[i][1]);
+ return SR_OK;
}
- break;
+ return SR_ERR;
default:
return SR_ERR_NA;
}
- return ret;
+ return SR_OK;
}
static int config_set(uint32_t key, GVariant *data,
const struct sr_dev_inst *sdi, const struct sr_channel_group *cg)
{
struct dev_context *devc;
- gdouble low, high;
- int ret;
- unsigned int i;
+ int idx;
(void)cg;
devc = sdi->priv;
- ret = SR_OK;
switch (key) {
case SR_CONF_SAMPLERATE:
devc->cur_samplerate = g_variant_get_uint64(data);
break;
case SR_CONF_CAPTURE_RATIO:
devc->capture_ratio = g_variant_get_uint64(data);
- ret = (devc->capture_ratio > 100) ? SR_ERR : SR_OK;
break;
case SR_CONF_VOLTAGE_THRESHOLD:
- g_variant_get(data, "(dd)", &low, &high);
- ret = SR_ERR_ARG;
- for (i = 0; i < ARRAY_SIZE(volt_thresholds); i++) {
- if (fabs(volt_thresholds[i][0] - low) < 0.1 &&
- fabs(volt_thresholds[i][1] - high) < 0.1) {
- devc->selected_voltage_range =
- volt_thresholds_ranges[i].range;
- ret = SR_OK;
- break;
- }
- }
+ if ((idx = std_double_tuple_idx(data, ARRAY_AND_SIZE(thresholds))) < 0)
+ return SR_ERR_ARG;
+ devc->selected_voltage_range = thresholds_ranges[idx].range;
break;
default:
- ret = SR_ERR_NA;
+ return SR_ERR_NA;
}
- return ret;
+ return SR_OK;
}
static int config_list(uint32_t key, GVariant **data,
*data = std_gvar_samplerates(ARRAY_AND_SIZE(samplerates));
break;
case SR_CONF_VOLTAGE_THRESHOLD:
- *data = std_gvar_thresholds(ARRAY_AND_SIZE(volt_thresholds));
+ *data = std_gvar_thresholds(ARRAY_AND_SIZE(thresholds));
break;
case SR_CONF_TRIGGER_MATCH:
*data = std_gvar_array_i32(ARRAY_AND_SIZE(trigger_matches));
if ((trigger = sr_session_trigger_get(sdi->session))) {
int pre_trigger_samples = 0;
if (devc->limit_samples > 0)
- pre_trigger_samples = devc->capture_ratio * devc->limit_samples/100;
+ pre_trigger_samples = (devc->capture_ratio * devc->limit_samples) / 100;
devc->stl = soft_trigger_logic_new(sdi, trigger, pre_trigger_samples);
if (!devc->stl)
return SR_ERR_MALLOC;