X-Git-Url: http://sigrok.org/gitweb/?a=blobdiff_plain;f=device.c;h=84d3d663dd6ff459589d844cd70cd40cd6776587;hb=7c41dc477402c09141c5d478dff493f8efb81264;hp=e9f6c7bcdd661a644221acbd07e5b43804b56365;hpb=e8d3d6c84378481b5c0b53236e2fb09288e211b1;p=libsigrok.git diff --git a/device.c b/device.c index e9f6c7bc..84d3d663 100644 --- a/device.c +++ b/device.c @@ -209,11 +209,21 @@ SR_PRIV struct sr_dev_inst *sr_dev_inst_new(int index, int status, SR_PRIV void sr_dev_inst_free(struct sr_dev_inst *sdi) { + struct sr_probe *probe; + GSList *l; + + for (l = sdi->probes; l; l = l->next) { + probe = l->data; + g_free(probe->name); + g_free(probe); + } + g_free(sdi->priv); g_free(sdi->vendor); g_free(sdi->model); g_free(sdi->version); g_free(sdi); + } #ifdef HAVE_LIBUSB_1_0 @@ -266,3 +276,36 @@ SR_PRIV void sr_serial_dev_inst_free(struct sr_serial_dev_inst *serial) g_free(serial->port); } +SR_API int sr_dev_config_set(const struct sr_dev_inst *sdi, int hwcap, + const void *value) +{ + int ret; + + if (!sdi || !sdi->driver || !sdi->driver->dev_config_set) { + sr_err("hwdriver: unable to set config option"); + return SR_ERR; + } + + ret = sdi->driver->dev_config_set(sdi, hwcap, value); + + return ret; +} + +SR_API GSList *sr_dev_inst_list(const struct sr_dev_driver *driver) +{ + + if (driver && driver->dev_list) + return driver->dev_list(); + else + return NULL; +} + +SR_API int sr_dev_inst_clear(const struct sr_dev_driver *driver) +{ + + if (driver && driver->dev_clear) + return driver->dev_clear(); + else + return SR_OK; +} +