X-Git-Url: http://sigrok.org/gitweb/?a=blobdiff_plain;f=src%2Fhardware%2Fatten-pps3xxx%2Fapi.c;h=c88914f9139aca7bd077abcf4eee83b062219170;hb=e66d1892d0dd16ed166fc8f13493f95de0607362;hp=01c0d369a490adb6a8983d3f3f5f5a69913a050e;hpb=bee2b0168c087676c1b365861d8c2d4714afa9b9;p=libsigrok.git diff --git a/src/hardware/atten-pps3xxx/api.c b/src/hardware/atten-pps3xxx/api.c index 01c0d369..c88914f9 100644 --- a/src/hardware/atten-pps3xxx/api.c +++ b/src/hardware/atten-pps3xxx/api.c @@ -187,14 +187,13 @@ static int config_get(uint32_t key, GVariant **data, const struct sr_dev_inst *s { struct dev_context *devc; struct sr_channel *ch; - int channel, ret; + int channel; if (!sdi) return SR_ERR_ARG; devc = sdi->priv; - ret = SR_OK; if (!cg) { /* No channel group: global options. */ switch (key) { @@ -233,7 +232,7 @@ static int config_get(uint32_t key, GVariant **data, const struct sr_dev_inst *s } } - return ret; + return SR_OK; } static int find_str(const char *str, const char **strings, int array_size) @@ -261,9 +260,6 @@ static int config_set(uint32_t key, GVariant *data, const struct sr_dev_inst *sd const char *sval; gboolean bval; - if (sdi->status != SR_ST_ACTIVE) - return SR_ERR_DEV_CLOSED; - ret = SR_OK; devc = sdi->priv; if (!cg) { @@ -341,33 +337,16 @@ static int config_list(uint32_t key, GVariant **data, const struct sr_dev_inst * struct sr_channel *ch; GVariant *gvar; GVariantBuilder gvb; - int channel, ret, i; - - /* Always available. */ - if (key == SR_CONF_SCAN_OPTIONS) { - *data = g_variant_new_fixed_array(G_VARIANT_TYPE_UINT32, - scanopts, ARRAY_SIZE(scanopts), sizeof(uint32_t)); - return SR_OK; - } - - if (key == SR_CONF_DEVICE_OPTIONS && !sdi) { - *data = g_variant_new_fixed_array(G_VARIANT_TYPE_UINT32, - drvopts, ARRAY_SIZE(drvopts), sizeof(uint32_t)); - return SR_OK; - } + int channel, i; - if (!sdi) - return SR_ERR_ARG; + devc = (sdi) ? sdi->priv : NULL; - devc = sdi->priv; - ret = SR_OK; if (!cg) { /* No channel group: global options. */ switch (key) { + case SR_CONF_SCAN_OPTIONS: 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, scanopts, drvopts, devopts); case SR_CONF_CHANNEL_CONFIG: if (devc->model->channel_modes == CHANMODE_INDEPENDENT) { /* The 1-channel models. */ @@ -382,8 +361,7 @@ static int config_list(uint32_t key, GVariant **data, const struct sr_dev_inst * } } else { /* Channel group specified: per-channel options. */ - if (!sdi) - return SR_ERR_ARG; + /* We only ever have one channel per channel group in this driver. */ ch = cg->channels->data; channel = ch->index; @@ -416,7 +394,7 @@ static int config_list(uint32_t key, GVariant **data, const struct sr_dev_inst * } } - return ret; + return SR_OK; } static int dev_close(struct sr_dev_inst *sdi) @@ -424,6 +402,7 @@ static int dev_close(struct sr_dev_inst *sdi) struct dev_context *devc; devc = sdi->priv; + if (devc->config_dirty) /* Some configuration changes were queued up but didn't * get sent to the device, likely because we were never @@ -439,9 +418,6 @@ static int dev_acquisition_start(const struct sr_dev_inst *sdi) struct sr_serial_dev_inst *serial; uint8_t packet[PACKET_SIZE]; - if (sdi->status != SR_ST_ACTIVE) - return SR_ERR_DEV_CLOSED; - devc = sdi->priv; memset(devc->packet, 0x44, PACKET_SIZE); devc->packet_size = 0; @@ -466,9 +442,6 @@ static int dev_acquisition_stop(struct sr_dev_inst *sdi) { struct dev_context *devc; - if (sdi->status != SR_ST_ACTIVE) - return SR_ERR_DEV_CLOSED; - devc = sdi->priv; devc->acquisition_running = FALSE; @@ -483,7 +456,7 @@ static struct sr_dev_driver atten_pps3203_driver_info = { .cleanup = std_cleanup, .scan = scan_3203, .dev_list = std_dev_list, - .dev_clear = NULL, + .dev_clear = std_dev_clear, .config_get = config_get, .config_set = config_set, .config_list = config_list,