X-Git-Url: http://sigrok.org/gitweb/?a=blobdiff_plain;f=src%2Fhardware%2Fatten-pps3xxx%2Fapi.c;h=c88914f9139aca7bd077abcf4eee83b062219170;hb=e66d1892d0dd16ed166fc8f13493f95de0607362;hp=34a31cea1f8e1d6f7eb260a116cc90ff1846a3c2;hpb=43376f3324cddd257a0260b06d9db8180c35fdf3;p=libsigrok.git diff --git a/src/hardware/atten-pps3xxx/api.c b/src/hardware/atten-pps3xxx/api.c index 34a31cea..c88914f9 100644 --- a/src/hardware/atten-pps3xxx/api.c +++ b/src/hardware/atten-pps3xxx/api.c @@ -78,7 +78,6 @@ static const struct pps_model models[] = { static GSList *scan(struct sr_dev_driver *di, GSList *options, int modelid) { struct sr_dev_inst *sdi; - struct drv_context *drvc; struct dev_context *devc; struct sr_config *src; struct sr_channel *ch; @@ -92,8 +91,6 @@ static GSList *scan(struct sr_dev_driver *di, GSList *options, int modelid) const char *conn, *serialcomm; char channel[10]; - drvc = di->context; - conn = serialcomm = NULL; for (l = options; l; l = l->next) { src = l->data; @@ -190,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) { @@ -236,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) @@ -264,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) { @@ -344,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; + int channel, 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; - } - - 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. */ @@ -385,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; @@ -419,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) @@ -427,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 @@ -442,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; @@ -454,7 +427,7 @@ static int dev_acquisition_start(const struct sr_dev_inst *sdi) serial = sdi->conn; serial_source_add(sdi->session, serial, G_IO_IN, 50, atten_pps3xxx_receive_data, (void *)sdi); - std_session_send_df_header(sdi, LOG_PREFIX); + std_session_send_df_header(sdi); /* Send a "channel" configuration packet now. */ memset(packet, 0, PACKET_SIZE); @@ -469,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; @@ -486,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,