X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=hardware%2Fasix-sigma%2Fasix-sigma.c;h=70a9d7731d35e50e249c213680b29e8f822fa7ab;hb=8f996b89481670219c7576e2c68b128a0a2ce026;hp=154d154b7891977958c260349c5294feb80d69eb;hpb=6078d2c99619233173d4536b74258c15e6be73ba;p=libsigrok.git diff --git a/hardware/asix-sigma/asix-sigma.c b/hardware/asix-sigma/asix-sigma.c index 154d154b..70a9d773 100644 --- a/hardware/asix-sigma/asix-sigma.c +++ b/hardware/asix-sigma/asix-sigma.c @@ -380,37 +380,23 @@ static int bin2bitbang(const char *filename, return SR_OK; } -static int clear_instances(void) +static void clear_helper(void *priv) { - GSList *l; - struct sr_dev_inst *sdi; - struct drv_context *drvc; struct dev_context *devc; - drvc = di->priv; + devc = priv; - /* Properly close all devices. */ - for (l = drvc->instances; l; l = l->next) { - if (!(sdi = l->data)) { - /* Log error, but continue cleaning up the rest. */ - sr_err("%s: sdi was NULL, continuing", __func__); - continue; - } - if (sdi->priv) { - devc = sdi->priv; - ftdi_deinit(&devc->ftdic); - } - sr_dev_inst_free(sdi); - } - g_slist_free(drvc->instances); - drvc->instances = NULL; + ftdi_deinit(&devc->ftdic); +} - return SR_OK; +static int dev_clear(void) +{ + return std_dev_clear(di, clear_helper); } static int init(struct sr_context *sr_ctx) { - return std_hw_init(sr_ctx, di, LOG_PREFIX); + return std_init(sr_ctx, di, LOG_PREFIX); } static GSList *scan(GSList *options) @@ -755,18 +741,16 @@ static int dev_close(struct sr_dev_inst *sdi) static int cleanup(void) { - if (!di->priv) - return SR_OK; - - clear_instances(); - - return SR_OK; + return dev_clear(); } -static int config_get(int id, GVariant **data, const struct sr_dev_inst *sdi) +static int config_get(int id, GVariant **data, const struct sr_dev_inst *sdi, + const struct sr_probe_group *probe_group) { struct dev_context *devc; + (void)probe_group; + switch (id) { case SR_CONF_SAMPLERATE: if (sdi) { @@ -782,11 +766,14 @@ static int config_get(int id, GVariant **data, const struct sr_dev_inst *sdi) return SR_OK; } -static int config_set(int id, GVariant *data, const struct sr_dev_inst *sdi) +static int config_set(int id, GVariant *data, const struct sr_dev_inst *sdi, + const struct sr_probe_group *probe_group) { struct dev_context *devc; int ret; + (void)probe_group; + if (sdi->status != SR_ST_ACTIVE) return SR_ERR_DEV_CLOSED; @@ -813,12 +800,14 @@ static int config_set(int id, GVariant *data, const struct sr_dev_inst *sdi) return ret; } -static int config_list(int key, GVariant **data, const struct sr_dev_inst *sdi) +static int config_list(int key, GVariant **data, const struct sr_dev_inst *sdi, + const struct sr_probe_group *probe_group) { GVariant *gvar; GVariantBuilder gvb; (void)sdi; + (void)probe_group; switch (key) { case SR_CONF_DEVICE_OPTIONS: @@ -1417,7 +1406,7 @@ SR_PRIV struct sr_dev_driver asix_sigma_driver_info = { .cleanup = cleanup, .scan = scan, .dev_list = dev_list, - .dev_clear = clear_instances, + .dev_clear = dev_clear, .config_get = config_get, .config_set = config_set, .config_list = config_list,