X-Git-Url: https://sigrok.org/gitweb/?p=libsigrok.git;a=blobdiff_plain;f=src%2Fhardware%2Fbaylibre-acme%2Fapi.c;h=ebaf3e5a674a07db20b3b0dac2ece3ee5bf15237;hp=c467991de3d993294c419f9151fa7dc72bd25cd7;hb=HEAD;hpb=a9010323ddf4e479663e871386c05db05ea3522e diff --git a/src/hardware/baylibre-acme/api.c b/src/hardware/baylibre-acme/api.c index c467991d..ebaf3e5a 100644 --- a/src/hardware/baylibre-acme/api.c +++ b/src/hardware/baylibre-acme/api.c @@ -22,6 +22,11 @@ #include #include +static const uint32_t drvopts[] = { + SR_CONF_THERMOMETER, + SR_CONF_POWERMETER, +}; + static const uint32_t devopts[] = { SR_CONF_CONTINUOUS, SR_CONF_LIMIT_SAMPLES | SR_CONF_GET | SR_CONF_SET, @@ -127,8 +132,7 @@ err_out: } static int config_get(uint32_t key, GVariant **data, - const struct sr_dev_inst *sdi, - const struct sr_channel_group *cg) + const struct sr_dev_inst *sdi, const struct sr_channel_group *cg) { struct dev_context *devc; int ret; @@ -138,11 +142,11 @@ static int config_get(uint32_t key, GVariant **data, devc = sdi->priv; ret = SR_OK; + switch (key) { case SR_CONF_LIMIT_SAMPLES: case SR_CONF_LIMIT_MSEC: - ret = sr_sw_limits_config_get(&devc->limits, key, data); - break; + return sr_sw_limits_config_get(&devc->limits, key, data); case SR_CONF_SAMPLERATE: *data = g_variant_new_uint64(devc->samplerate); break; @@ -168,27 +172,22 @@ static int config_get(uint32_t key, GVariant **data, } static int config_set(uint32_t key, GVariant *data, - const struct sr_dev_inst *sdi, - const struct sr_channel_group *cg) + const struct sr_dev_inst *sdi, const struct sr_channel_group *cg) { struct dev_context *devc; uint64_t samplerate; - int ret; devc = sdi->priv; - ret = SR_OK; switch (key) { case SR_CONF_LIMIT_SAMPLES: case SR_CONF_LIMIT_MSEC: - ret = sr_sw_limits_config_set(&devc->limits, key, data); - break; + return sr_sw_limits_config_set(&devc->limits, key, data); case SR_CONF_SAMPLERATE: samplerate = g_variant_get_uint64(data); if (samplerate > MAX_SAMPLE_RATE) { sr_err("Maximum sample rate is %d", MAX_SAMPLE_RATE); - ret = SR_ERR_SAMPLERATE; - break; + return SR_ERR_SAMPLERATE; } devc->samplerate = samplerate; bl_acme_maybe_set_update_interval(sdi, samplerate); @@ -196,45 +195,30 @@ static int config_set(uint32_t key, GVariant *data, case SR_CONF_PROBE_FACTOR: if (!cg) return SR_ERR_CHANNEL_GROUP; - ret = bl_acme_set_shunt(cg, g_variant_get_uint64(data)); - break; + return bl_acme_set_shunt(cg, g_variant_get_uint64(data)); case SR_CONF_POWER_OFF: if (!cg) return SR_ERR_CHANNEL_GROUP; - ret = bl_acme_set_power_off(cg, g_variant_get_boolean(data)); - break; + return bl_acme_set_power_off(cg, g_variant_get_boolean(data)); default: - ret = SR_ERR_NA; + return SR_ERR_NA; } - return ret; + return SR_OK; } static int config_list(uint32_t key, GVariant **data, - const struct sr_dev_inst *sdi, - const struct sr_channel_group *cg) + const struct sr_dev_inst *sdi, const struct sr_channel_group *cg) { uint32_t devopts_cg[MAX_DEVOPTS_CG]; - GVariant *gvar; - GVariantBuilder gvb; int num_devopts_cg = 0; - (void)sdi; - (void)cg; - if (!cg) { switch (key) { case SR_CONF_DEVICE_OPTIONS: - *data = g_variant_new_fixed_array(G_VARIANT_TYPE_UINT32, - devopts, ARRAY_SIZE(devopts), sizeof(uint32_t)); - break; + return STD_CONFIG_LIST(key, data, sdi, cg, NO_OPTS, drvopts, devopts); case SR_CONF_SAMPLERATE: - g_variant_builder_init(&gvb, G_VARIANT_TYPE("a{sv}")); - gvar = g_variant_new_fixed_array(G_VARIANT_TYPE("t"), - samplerates, ARRAY_SIZE(samplerates), sizeof(uint64_t)); - g_variant_builder_add(&gvb, "{sv}", - "samplerate-steps", gvar); - *data = g_variant_builder_end(&gvb); + *data = std_gvar_samplerates_steps(ARRAY_AND_SIZE(samplerates)); break; default: return SR_ERR_NA; @@ -247,8 +231,7 @@ static int config_list(uint32_t key, GVariant **data, if (bl_acme_probe_has_pws(cg)) devopts_cg[num_devopts_cg++] = HAS_POWER_OFF; - *data = g_variant_new_fixed_array(G_VARIANT_TYPE_UINT32, - devopts_cg, num_devopts_cg, sizeof(uint32_t)); + *data = std_gvar_array_u32(devopts_cg, num_devopts_cg); break; default: return SR_ERR_NA;