Add new sr_driver_scan_options() helper function.
This function replaces the pattern of calling config_list() with SR_CONF_SCAN_OPTIONS to obtain a list of scan options.
This commit is contained in:
parent
e7136c626f
commit
8f3168b89b
|
@ -83,6 +83,7 @@ SR_API int sr_dev_inst_channel_add(struct sr_dev_inst *sdi, int index, int type,
|
|||
SR_API struct sr_dev_driver **sr_driver_list(const struct sr_context *ctx);
|
||||
SR_API int sr_driver_init(struct sr_context *ctx,
|
||||
struct sr_dev_driver *driver);
|
||||
SR_API GArray *sr_driver_scan_options(const struct sr_dev_driver *driver);
|
||||
SR_API GSList *sr_driver_scan(struct sr_dev_driver *driver, GSList *options);
|
||||
SR_API int sr_config_get(const struct sr_dev_driver *driver,
|
||||
const struct sr_dev_inst *sdi,
|
||||
|
|
|
@ -392,6 +392,43 @@ SR_API int sr_driver_init(struct sr_context *ctx, struct sr_dev_driver *driver)
|
|||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* Enumerate scan options supported by this driver.
|
||||
*
|
||||
* Before calling sr_driver_scan_options(), the user must have previously
|
||||
* initialized the driver by calling sr_driver_init().
|
||||
*
|
||||
* @param driver The driver to enumerate options for. This must be a pointer
|
||||
* to one of the entries returned by sr_driver_list(). Must not
|
||||
* be NULL.
|
||||
*
|
||||
* @return A GArray * of uint32_t entries, or NULL on invalid arguments. Each
|
||||
* entry is a configuration key that is supported as a scan option.
|
||||
* The array must be freed by the caller using g_array_free().
|
||||
*
|
||||
* @since 0.4.0
|
||||
*/
|
||||
SR_API GArray *sr_driver_scan_options(const struct sr_dev_driver *driver)
|
||||
{
|
||||
GVariant *gvar;
|
||||
const uint32_t *opts;
|
||||
gsize num_opts;
|
||||
GArray *result;
|
||||
|
||||
if (sr_config_list(driver, NULL, NULL, SR_CONF_SCAN_OPTIONS, &gvar) != SR_OK)
|
||||
return NULL;
|
||||
|
||||
opts = g_variant_get_fixed_array(gvar, &num_opts, sizeof(uint32_t));
|
||||
|
||||
result = g_array_sized_new(FALSE, FALSE, sizeof(uint32_t), num_opts);
|
||||
|
||||
g_array_insert_vals(result, 0, opts, num_opts);
|
||||
|
||||
g_variant_unref(gvar);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
static int check_options(struct sr_dev_driver *driver, GSList *options,
|
||||
uint32_t optlist_key, struct sr_dev_inst *sdi,
|
||||
struct sr_channel_group *cg)
|
||||
|
|
Loading…
Reference in New Issue