diff --git a/hwdriver.c b/hwdriver.c index 9bb097e8..439d4c78 100644 --- a/hwdriver.c +++ b/hwdriver.c @@ -329,6 +329,22 @@ SR_API int sr_info_get(struct sr_dev_driver *driver, int id, return ret; } +SR_API int sr_config_list(struct sr_dev_driver *driver, int id, + const void **data, const struct sr_dev_inst *sdi) +{ + int ret; + + if (driver == NULL || data == NULL) + return SR_ERR; + + if (!driver->config_list) + return SR_ERR; + + ret = driver->config_list(id, data, sdi); + + return ret; +} + /** * Find out if a hardware driver has a specific capability. * diff --git a/libsigrok.h b/libsigrok.h index 90e5e537..b4d929ef 100644 --- a/libsigrok.h +++ b/libsigrok.h @@ -599,6 +599,8 @@ struct sr_dev_driver { const struct sr_dev_inst *sdi); int (*config_set) (int id, const void *value, const struct sr_dev_inst *sdi); + int (*config_list) (int info_id, const void **data, + const struct sr_dev_inst *sdi); /* Device-specific */ int (*dev_open) (struct sr_dev_inst *sdi); diff --git a/proto.h b/proto.h index ea74e8fe..667b6ecc 100644 --- a/proto.h +++ b/proto.h @@ -72,6 +72,8 @@ SR_API int sr_driver_init(struct sr_context *ctx, SR_API GSList *sr_driver_scan(struct sr_dev_driver *driver, GSList *options); SR_API int sr_info_get(struct sr_dev_driver *driver, int id, const void **data, const struct sr_dev_inst *sdi); +SR_API int sr_config_list(struct sr_dev_driver *driver, int id, + const void **data, const struct sr_dev_inst *sdi); SR_API gboolean sr_driver_hwcap_exists(struct sr_dev_driver *driver, int hwcap); SR_API const struct sr_config_info *sr_config_info_get(int key); SR_API const struct sr_config_info *sr_config_info_name_get(const char *optname);