X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=src%2Fhardware%2Fhp-3457a%2Fapi.c;h=f58cfef90cc9774ea71e75bb37d6ad740c7224c0;hb=f1ba6b4b2c9a8ecf90bb31efb218752aa7e49d1a;hp=05a45e6295905f7ef31086b14b6e5fb114a620c0;hpb=695dc859c15ba4190f5c1aa2e1a6e2dc6a6e5845;p=libsigrok.git diff --git a/src/hardware/hp-3457a/api.c b/src/hardware/hp-3457a/api.c index 05a45e62..f58cfef9 100644 --- a/src/hardware/hp-3457a/api.c +++ b/src/hardware/hp-3457a/api.c @@ -31,13 +31,13 @@ static const uint32_t drvopts[] = { }; static const uint32_t devopts[] = { - SR_CONF_CONTINUOUS | SR_CONF_SET, + SR_CONF_CONTINUOUS, SR_CONF_LIMIT_SAMPLES | SR_CONF_SET, SR_CONF_MEASURED_QUANTITY | SR_CONF_SET, SR_CONF_ADC_POWERLINE_CYCLES | SR_CONF_SET | SR_CONF_GET, }; -SR_PRIV struct sr_dev_driver hp_3457a_driver_info; +static struct sr_dev_driver hp_3457a_driver_info; static int create_front_channel(struct sr_dev_inst *sdi, int chan_idx) { @@ -166,26 +166,11 @@ static struct sr_dev_inst *probe_device(struct sr_scpi_dev_inst *scpi) return sdi; } -static int init(struct sr_dev_driver *di, struct sr_context *sr_ctx) -{ - return std_init(sr_ctx, di, LOG_PREFIX); -} - static GSList *scan(struct sr_dev_driver *di, GSList *options) { return sr_scpi_scan(di->context, options, probe_device); } -static GSList *dev_list(const struct sr_dev_driver *di) -{ - return ((struct drv_context *)(di->context))->instances; -} - -static int dev_clear(const struct sr_dev_driver *di) -{ - return std_dev_clear(di, NULL); -} - /* * We need to set the HP 3457A to a known state, and there are quite a number * of knobs to tweak. Here's a brief explanation of what's going on. For more @@ -213,15 +198,13 @@ static int dev_open(struct sr_dev_inst *sdi) if (sr_scpi_open(scpi) != SR_OK) return SR_ERR; - devc=sdi->priv; + devc = sdi->priv; sr_scpi_send(scpi, "PRESET"); sr_scpi_send(scpi, "INBUF ON"); sr_scpi_send(scpi, "TRIG HOLD"); sr_scpi_get_float(scpi, "NPLC?", &devc->nplc); - sdi->status = SR_ST_ACTIVE; - return SR_OK; } @@ -229,9 +212,6 @@ static int dev_close(struct sr_dev_inst *sdi) { struct sr_scpi_dev_inst *scpi = sdi->conn; - if (sdi->status != SR_ST_ACTIVE) - return SR_ERR_DEV_CLOSED; - /* Disable scan-advance (preserve relay life). */ sr_scpi_send(scpi, "SADV HOLD"); /* Switch back to auto-triggering. */ @@ -239,16 +219,9 @@ static int dev_close(struct sr_dev_inst *sdi) sr_scpi_close(scpi); - sdi->status = SR_ST_INACTIVE; - return SR_OK; } -static int cleanup(const struct sr_dev_driver *di) -{ - return dev_clear(di); -} - static int config_get(uint32_t key, GVariant **data, const struct sr_dev_inst *sdi, const struct sr_channel_group *cg) { @@ -283,9 +256,6 @@ static int config_set(uint32_t key, GVariant *data, (void)cg; - if (sdi->status != SR_ST_ACTIVE) - return SR_ERR_DEV_CLOSED; - devc = sdi->priv; ret = SR_OK; @@ -387,9 +357,6 @@ static int dev_acquisition_start(const struct sr_dev_inst *sdi) GArray *ch_list; GSList *channels; - if (sdi->status != SR_ST_ACTIVE) - return SR_ERR_DEV_CLOSED; - scpi = sdi->conn; devc = sdi->priv; @@ -398,7 +365,7 @@ static int dev_acquisition_start(const struct sr_dev_inst *sdi) if (ret != SR_OK) return ret; - std_session_send_df_header(sdi, LOG_PREFIX); + std_session_send_df_header(sdi); front_selected = rear_selected = FALSE; devc->active_channels = NULL; @@ -457,15 +424,14 @@ static int dev_acquisition_stop(struct sr_dev_inst *sdi) return SR_OK; } -SR_PRIV struct sr_dev_driver hp_3457a_driver_info = { +static struct sr_dev_driver hp_3457a_driver_info = { .name = "hp-3457a", .longname = "HP 3457A", .api_version = 1, - .init = init, - .cleanup = cleanup, + .init = std_init, + .cleanup = std_cleanup, .scan = scan, - .dev_list = dev_list, - .dev_clear = dev_clear, + .dev_list = std_dev_list, .config_get = config_get, .config_set = config_set, .config_list = config_list, @@ -475,3 +441,4 @@ SR_PRIV struct sr_dev_driver hp_3457a_driver_info = { .dev_acquisition_stop = dev_acquisition_stop, .context = NULL, }; +SR_REGISTER_DEV_DRIVER(hp_3457a_driver_info);