/* Initialize a libsigrok driver. */ void srtest_driver_init(struct sr_context *sr_ctx, struct sr_dev_driver *driver) { int ret; ret = sr_driver_init(sr_ctx, driver); fail_unless(ret == SR_OK, "Failed to init '%s' driver: %d.", driver->name, ret); }
void DeviceManager::init_drivers() { // Initialise all libsigrok drivers sr_dev_driver **const drivers = sr_driver_list(); for (sr_dev_driver **driver = drivers; *driver; driver++) { if (sr_driver_init(_sr_ctx, *driver) != SR_OK) { throw runtime_error( string("Failed to initialize driver ") + string((*driver)->name)); } } }
/* Initialize all libsigrok drivers. */ void srtest_driver_init_all(struct sr_context *sr_ctx) { struct sr_dev_driver **drivers, *driver; int i, ret; drivers = sr_driver_list(); fail_unless(drivers != NULL, "No drivers found."); for (i = 0; drivers[i]; i++) { driver = drivers[i]; ret = sr_driver_init(sr_ctx, driver); fail_unless(ret == SR_OK, "Failed to init '%s' driver: %d.", driver->name, ret); } }
GSList *device_scan(void) { struct sr_dev_driver **drivers, *driver; GHashTable *drvargs; GSList *drvopts, *devices, *tmpdevs, *l; int i; char *drvname; if (opt_drv) { drvargs = parse_generic_arg(opt_drv, TRUE); drvname = g_strdup(g_hash_table_lookup(drvargs, "sigrok_key")); g_hash_table_remove(drvargs, "sigrok_key"); driver = NULL; drivers = sr_driver_list(); for (i = 0; drivers[i]; i++) { if (strcmp(drivers[i]->name, drvname)) continue; driver = drivers[i]; } if (!driver) { g_critical("Driver %s not found.", drvname); g_hash_table_destroy(drvargs); g_free(drvname); return NULL; } g_free(drvname); if (sr_driver_init(sr_ctx, driver) != SR_OK) { g_critical("Failed to initialize driver."); g_hash_table_destroy(drvargs); return NULL; } drvopts = NULL; if (g_hash_table_size(drvargs) > 0) { if (!(drvopts = hash_to_hwopt(drvargs))) { /* Unknown options, already logged. */ g_hash_table_destroy(drvargs); return NULL; } } g_hash_table_destroy(drvargs); devices = sr_driver_scan(driver, drvopts); g_slist_free_full(drvopts, (GDestroyNotify)free_drvopts); } else { /* No driver specified, let them all scan on their own. */ devices = NULL; drivers = sr_driver_list(); for (i = 0; drivers[i]; i++) { driver = drivers[i]; if (sr_driver_init(sr_ctx, driver) != SR_OK) { g_critical("Failed to initialize driver."); return NULL; } tmpdevs = sr_driver_scan(driver, NULL); for (l = tmpdevs; l; l = l->next) devices = g_slist_append(devices, l->data); g_slist_free(tmpdevs); } } return devices; }