X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=src%2Fhardware%2Fteleinfo%2Fapi.c;h=f05db75a5cfaba23715d38ac173c33dc502b6f70;hb=dd5c48a6d567a3cac62c4b0058588273bbeea171;hp=302373d6b27d2cbe53d7b06e668ca4fa8dd71d23;hpb=c01bf34ca264b268fee2e71ab918c71d28dc3018;p=libsigrok.git diff --git a/src/hardware/teleinfo/api.c b/src/hardware/teleinfo/api.c index 302373d6..f05db75a 100644 --- a/src/hardware/teleinfo/api.c +++ b/src/hardware/teleinfo/api.c @@ -36,13 +36,6 @@ static const uint32_t devopts[] = { SR_CONF_LIMIT_MSEC | SR_CONF_SET, }; -SR_PRIV struct sr_dev_driver teleinfo_driver_info; - -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) { struct drv_context *drvc; @@ -143,23 +136,9 @@ static int config_set(uint32_t key, GVariant *data, const struct sr_dev_inst *sd if (sdi->status != SR_ST_ACTIVE) return SR_ERR_DEV_CLOSED; - if (!(devc = sdi->priv)) { - sr_err("sdi->priv was NULL."); - return SR_ERR_BUG; - } - - switch (key) { - case SR_CONF_LIMIT_SAMPLES: - devc->limit_samples = g_variant_get_uint64(data); - break; - case SR_CONF_LIMIT_MSEC: - devc->limit_msec = g_variant_get_uint64(data); - break; - default: - return SR_ERR_NA; - } + devc = sdi->priv; - return SR_OK; + return sr_sw_limits_config_set(&devc->sw_limits, key, data); } static int config_list(uint32_t key, GVariant **data, const struct sr_dev_inst *sdi, @@ -194,13 +173,7 @@ static int dev_acquisition_start(const struct sr_dev_inst *sdi) devc = sdi->priv; - /* - * Reset the number of samples to take. If we've already collected our - * quota, but we start a new session, and don't reset this, we'll just - * quit without acquiring any new samples. - */ - devc->num_samples = 0; - devc->start_time = g_get_monotonic_time(); + sr_sw_limits_acquisition_start(&devc->sw_limits); std_session_send_df_header(sdi, LOG_PREFIX); @@ -217,11 +190,11 @@ static int dev_acquisition_stop(struct sr_dev_inst *sdi) std_serial_dev_close, sdi->conn, LOG_PREFIX); } -SR_PRIV struct sr_dev_driver teleinfo_driver_info = { +static struct sr_dev_driver teleinfo_driver_info = { .name = "teleinfo", .longname = "Teleinfo", .api_version = 1, - .init = init, + .init = std_init, .cleanup = std_cleanup, .scan = scan, .dev_list = std_dev_list, @@ -235,3 +208,4 @@ SR_PRIV struct sr_dev_driver teleinfo_driver_info = { .dev_acquisition_stop = dev_acquisition_stop, .context = NULL, }; +SR_REGISTER_DEV_DRIVER(teleinfo_driver_info);