sr_err("No dev_list in driver %d ('%s').", i, d);
errors++;
}
+ /* Note: dev_clear() is optional. */
/* Note: config_get() is optional. */
if (!drivers[i]->config_set) {
sr_err("No config_set in driver %d ('%s').", i, d);
errors++;
}
+ /* Note: config_channel_set() is optional. */
+ /* Note: config_commit() is optional. */
if (!drivers[i]->config_list) {
sr_err("No config_list in driver %d ('%s').", i, d);
errors++;
return ret;
}
+extern struct sr_dev_driver *sr_driver_list_start;
+
/**
* Initialize libsigrok.
*
{
int ret = SR_ERR;
struct sr_context *context;
- struct sr_dev_driver ***lists, **drivers;
+ struct sr_dev_driver **drivers;
GArray *array;
#ifdef _WIN32
WSADATA wsadata;
/* Generate ctx->driver_list at runtime. */
array = g_array_new(TRUE, FALSE, sizeof(struct sr_dev_driver *));
- for (lists = drivers_lists; *lists; lists++)
- for (drivers = *lists; *drivers; drivers++)
- g_array_append_val(array, *drivers);
+ for (drivers = (&sr_driver_list_start) + 1; *drivers; drivers++)
+ g_array_append_val(array, *drivers);
context->driver_list = (struct sr_dev_driver **)array->data;
g_array_free(array, FALSE);