X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=hardware%2Fopenbench-logic-sniffer%2Fols.c;h=e98a230f59462780955bfbf7687aba5f15ec695b;hb=dcf03d6dbdba67eb92ee887de1bc72816a3cd01b;hp=bcbba5dfa151db6437e67a021ffb9badf8161ff7;hpb=61136ea6035778f2894a1e32b78f94a0640a5a91;p=libsigrok.git diff --git a/hardware/openbench-logic-sniffer/ols.c b/hardware/openbench-logic-sniffer/ols.c index bcbba5df..e98a230f 100644 --- a/hardware/openbench-logic-sniffer/ols.c +++ b/hardware/openbench-logic-sniffer/ols.c @@ -100,8 +100,8 @@ static const struct sr_samplerates samplerates = { NULL, }; -/* List of struct sr_dev_inst. */ -static GSList *dev_insts = NULL; +SR_PRIV struct sr_dev_driver ols_driver_info; +static struct sr_dev_driver *odi = &ols_driver_info; static int send_shortcommand(int fd, uint8_t command) { @@ -459,7 +459,9 @@ static int hw_scan(void) sdi->priv = ctx; } ctx->serial = sr_serial_dev_inst_new(dev_names[i], -1); - dev_insts = g_slist_append(dev_insts, sdi); + odi->instances = g_slist_append(odi->instances, sdi); + devices = g_slist_append(devices, sdi); + final_devcnt++; serial_close(fds[i].fd); fds[i].fd = 0; @@ -491,7 +493,7 @@ static int hw_dev_open(int dev_index) struct sr_dev_inst *sdi; struct context *ctx; - if (!(sdi = sr_dev_inst_get(dev_insts, dev_index))) + if (!(sdi = sr_dev_inst_get(odi->instances, dev_index))) return SR_ERR; ctx = sdi->priv; @@ -510,7 +512,7 @@ static int hw_dev_close(int dev_index) struct sr_dev_inst *sdi; struct context *ctx; - if (!(sdi = sr_dev_inst_get(dev_insts, dev_index))) { + if (!(sdi = sr_dev_inst_get(odi->instances, dev_index))) { sr_err("ols: %s: sdi was NULL", __func__); return SR_ERR_BUG; } @@ -535,7 +537,7 @@ static int hw_cleanup(void) int ret = SR_OK; /* Properly close and free all devices. */ - for (l = dev_insts; l; l = l->next) { + for (l = odi->instances; l; l = l->next) { if (!(sdi = l->data)) { /* Log error, but continue cleaning up the rest. */ sr_err("ols: %s: sdi was NULL, continuing", __func__); @@ -555,8 +557,8 @@ static int hw_cleanup(void) sr_serial_dev_inst_free(ctx->serial); sr_dev_inst_free(sdi); } - g_slist_free(dev_insts); - dev_insts = NULL; + g_slist_free(odi->instances); + odi->instances = NULL; return ret; } @@ -600,7 +602,7 @@ static int hw_dev_status_get(int dev_index) { struct sr_dev_inst *sdi; - if (!(sdi = sr_dev_inst_get(dev_insts, dev_index))) + if (!(sdi = sr_dev_inst_get(odi->instances, dev_index))) return SR_ST_NOT_FOUND; return sdi->status; @@ -650,7 +652,7 @@ static int hw_dev_config_set(int dev_index, int hwcap, const void *value) int ret; const uint64_t *tmp_u64; - if (!(sdi = sr_dev_inst_get(dev_insts, dev_index))) + if (!(sdi = sr_dev_inst_get(odi->instances, dev_index))) return SR_ERR; ctx = sdi->priv; @@ -708,7 +710,7 @@ static int receive_data(int fd, int revents, void *cb_data) /* Find this device's ctx struct by its fd. */ ctx = NULL; - for (l = dev_insts; l; l = l->next) { + for (l = odi->instances; l; l = l->next) { sdi = l->data; ctx = sdi->priv; if (ctx->serial->fd == fd) { @@ -890,7 +892,7 @@ static int hw_dev_acquisition_start(int dev_index, void *cb_data) int num_channels; int i; - if (!(sdi = sr_dev_inst_get(dev_insts, dev_index))) + if (!(sdi = sr_dev_inst_get(odi->instances, dev_index))) return SR_ERR; ctx = sdi->priv; @@ -1064,4 +1066,5 @@ SR_PRIV struct sr_dev_driver ols_driver_info = { .dev_config_set = hw_dev_config_set, .dev_acquisition_start = hw_dev_acquisition_start, .dev_acquisition_stop = hw_dev_acquisition_stop, + .instances = NULL, };