X-Git-Url: https://sigrok.org/gitweb/?p=libsigrok.git;a=blobdiff_plain;f=src%2Fhardware%2Fhantek-6xxx%2Fapi.c;h=8d0d280d6ab2434e0f9ec49deeecc900715aa450;hp=6b3cbcc26ea82058d2c05c7951b1506ff06c146e;hb=697fb6ddfc2522b2e6d35511c7837e2c61d8ae73;hpb=53012da658ae94b245240c8a3e115723eede4c7d diff --git a/src/hardware/hantek-6xxx/api.c b/src/hardware/hantek-6xxx/api.c index 6b3cbcc2..8d0d280d 100644 --- a/src/hardware/hantek-6xxx/api.c +++ b/src/hardware/hantek-6xxx/api.c @@ -322,12 +322,11 @@ static int dev_close(struct sr_dev_inst *sdi) return SR_OK; } -static int config_get(uint32_t key, GVariant **data, const struct sr_dev_inst *sdi, - const struct sr_channel_group *cg) +static int config_get(uint32_t key, GVariant **data, + const struct sr_dev_inst *sdi, const struct sr_channel_group *cg) { struct dev_context *devc; struct sr_usb_dev_inst *usb; - char str[128]; const uint64_t *vdiv; int ch_idx; @@ -360,8 +359,7 @@ static int config_get(uint32_t key, GVariant **data, const struct sr_dev_inst *s /* Device still needs to re-enumerate after firmware * upload, so we don't know its (future) address. */ return SR_ERR; - snprintf(str, 128, "%d.%d", usb->bus, usb->address); - *data = g_variant_new_string(str); + *data = g_variant_new_printf("%d.%d", usb->bus, usb->address); break; default: return SR_ERR_NA; @@ -388,14 +386,11 @@ static int config_get(uint32_t key, GVariant **data, const struct sr_dev_inst *s return SR_OK; } -static int config_set(uint32_t key, GVariant *data, const struct sr_dev_inst *sdi, - const struct sr_channel_group *cg) +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; - uint64_t p, q; - int tmp_int, ch_idx; - unsigned int i; - const char *tmp_str; + int ch_idx, idx; devc = sdi->priv; if (!cg) { @@ -422,30 +417,16 @@ static int config_set(uint32_t key, GVariant *data, const struct sr_dev_inst *sd return SR_ERR_ARG; switch (key) { case SR_CONF_VDIV: - g_variant_get(data, "(tt)", &p, &q); - tmp_int = -1; - for (i = 0; i < ARRAY_SIZE(vdivs); i++) { - if (vdivs[i][0] == p && vdivs[i][1] == q) { - tmp_int = i; - break; - } - } - if (tmp_int >= 0) { - devc->voltage[ch_idx] = tmp_int; - hantek_6xxx_update_vdiv(sdi); - } else + if ((idx = std_u64_tuple_idx(data, ARRAY_AND_SIZE(vdivs))) < 0) return SR_ERR_ARG; + devc->voltage[ch_idx] = idx; + hantek_6xxx_update_vdiv(sdi); break; case SR_CONF_COUPLING: - tmp_str = g_variant_get_string(data, NULL); - for (i = 0; i < devc->coupling_tab_size; i++) { - if (!strcmp(tmp_str, devc->coupling_vals[i])) { - devc->coupling[ch_idx] = i; - break; - } - } - if (i == devc->coupling_tab_size) + if ((idx = std_str_idx(data, devc->coupling_vals, + devc->coupling_tab_size)) < 0) return SR_ERR_ARG; + devc->coupling[ch_idx] = idx; break; default: return SR_ERR_NA; @@ -455,8 +436,8 @@ static int config_set(uint32_t key, GVariant *data, const struct sr_dev_inst *sd return SR_OK; } -static int config_list(uint32_t key, GVariant **data, const struct sr_dev_inst *sdi, - const struct sr_channel_group *cg) +static int config_list(uint32_t key, GVariant **data, + const struct sr_dev_inst *sdi, const struct sr_channel_group *cg) { struct dev_context *devc; @@ -482,7 +463,7 @@ static int config_list(uint32_t key, GVariant **data, const struct sr_dev_inst * *data = g_variant_new_strv(devc->coupling_vals, devc->coupling_tab_size); break; case SR_CONF_VDIV: - *data = std_gvar_tuple_array(&vdivs, ARRAY_SIZE(vdivs)); + *data = std_gvar_tuple_array(ARRAY_AND_SIZE(vdivs)); break; default: return SR_ERR_NA;