From: Andrej Valek Date: Thu, 23 Aug 2018 18:48:43 +0000 (+0200) Subject: hantek-4032l: Fix default threshold value selection (FP workaround). X-Git-Url: https://sigrok.org/gitaction?a=commitdiff_plain;h=ee1a7d2f9d9dcf4800867e61abed6237547909c5;p=libsigrok.git hantek-4032l: Fix default threshold value selection (FP workaround). Take value from generated array of range instead of using a hard-coded value. Signed-off-by: Andrej Valek --- diff --git a/src/hardware/hantek-4032l/api.c b/src/hardware/hantek-4032l/api.c index 729a85da..6ee46dee 100644 --- a/src/hardware/hantek-4032l/api.c +++ b/src/hardware/hantek-4032l/api.c @@ -261,8 +261,13 @@ static GSList *scan(struct sr_dev_driver *di, GSList *options) devc->external_clock = FALSE; devc->clock_edge = H4032L_CLOCK_EDGE_TYPE_RISE; - devc->cur_threshold[0] = 2.5; - devc->cur_threshold[1] = 2.5; + /* Create array of thresholds from min to max. */ + GVariant *thresholds = std_gvar_min_max_step_thresholds( + H4032L_THR_VOLTAGE_MIN, H4032L_THR_VOLTAGE_MAX, + H4032L_THR_VOLTAGE_STEP); + /* Take default threshold value from array (FP workaround). */ + g_variant_get_child(thresholds, H4032L_THR_VOLTAGE_DEFAULT, + "(dd)", &devc->cur_threshold[0], &devc->cur_threshold[1]); sdi->priv = devc; devices = g_slist_append(devices, sdi); @@ -468,7 +473,8 @@ static int config_list(uint32_t key, GVariant **data, *data = std_gvar_array_i32(ARRAY_AND_SIZE(trigger_matches)); break; case SR_CONF_VOLTAGE_THRESHOLD: - *data = std_gvar_min_max_step_thresholds(-6.0, 6.0, 0.1); + *data = std_gvar_min_max_step_thresholds(H4032L_THR_VOLTAGE_MIN, + H4032L_THR_VOLTAGE_MAX, H4032L_THR_VOLTAGE_STEP); break; case SR_CONF_LIMIT_SAMPLES: *data = std_gvar_tuple_u64(H4043L_NUM_SAMPLES_MIN, H4032L_NUM_SAMPLES_MAX); diff --git a/src/hardware/hantek-4032l/protocol.h b/src/hardware/hantek-4032l/protocol.h index 15a0951c..f0e46d37 100644 --- a/src/hardware/hantek-4032l/protocol.h +++ b/src/hardware/hantek-4032l/protocol.h @@ -39,6 +39,15 @@ #define H4043L_NUM_SAMPLES_MIN (2 * 1024) #define H4032L_NUM_SAMPLES_MAX (64 * 1024 * 1024) +#define H4032L_THR_VOLTAGE_MIN -6.0 +#define H4032L_THR_VOLTAGE_MAX 6.0 +#define H4032L_THR_VOLTAGE_STEP 0.1 +/* + * Array index of the default voltage threshold value (2.5V): + * (|min| / step) + (default / step) = (|-6.0| / 0.1) + (2.5 / 0.1) = 85 + */ +#define H4032L_THR_VOLTAGE_DEFAULT 85 + #define H4032L_CMD_PKT_MAGIC 0x017f #define H4032L_STATUS_PACKET_MAGIC 0x2B1A037F #define H4032L_START_PACKET_MAGIC 0x2B1A027F