X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=hardware%2Fasix-sigma%2Fasix-sigma.c;h=52224271d32a689d6c1934d0eaa3cf827d711a9e;hb=refs%2Ftags%2Flibsigrok-0.2.1;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..52224271 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,12 +741,7 @@ 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) @@ -1417,7 +1398,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,