24 #include "libsigrok-internal.h"
124 static int sanity_check_all_drivers(
void)
126 int i, errors, ret =
SR_OK;
130 sr_spew(
"Sanity-checking all drivers.");
133 for (i = 0; drivers[i]; i++) {
136 d = (drivers[i]->
name) ? drivers[i]->
name :
"NULL";
138 if (!drivers[i]->
name) {
139 sr_err(
"No name in driver %d ('%s').", i, d);
143 sr_err(
"No longname in driver %d ('%s').", i, d);
147 sr_err(
"API version in driver %d ('%s') < 1.", i, d);
150 if (!drivers[i]->
init) {
151 sr_err(
"No init in driver %d ('%s').", i, d);
155 sr_err(
"No cleanup in driver %d ('%s').", i, d);
158 if (!drivers[i]->
scan) {
159 sr_err(
"No scan in driver %d ('%s').", i, d);
163 sr_err(
"No dev_list in driver %d ('%s').", i, d);
167 sr_err(
"No dev_clear in driver %d ('%s').", i, d);
172 sr_err(
"No config_set in driver %d ('%s').", i, d);
176 sr_err(
"No config_list in driver %d ('%s').", i, d);
180 sr_err(
"No dev_open in driver %d ('%s').", i, d);
184 sr_err(
"No dev_close in driver %d ('%s').", i, d);
188 sr_err(
"No dev_acquisition_start in driver %d ('%s').",
193 sr_err(
"No dev_acquisition_stop in driver %d ('%s').",
214 static int sanity_check_all_input_modules(
void)
216 int i, errors, ret =
SR_OK;
220 sr_spew(
"Sanity-checking all input modules.");
223 for (i = 0; inputs[i]; i++) {
226 d = (inputs[i]->
id) ? inputs[i]->
id :
"NULL";
228 if (!inputs[i]->
id) {
229 sr_err(
"No ID in module %d ('%s').", i, d);
233 sr_err(
"No description in module %d ('%s').", i, d);
237 sr_err(
"No format_match in module %d ('%s').", i, d);
240 if (!inputs[i]->
init) {
241 sr_err(
"No init in module %d ('%s').", i, d);
245 sr_err(
"No loadfile in module %d ('%s').", i, d);
263 static int sanity_check_all_output_modules(
void)
265 int i, errors, ret =
SR_OK;
269 sr_spew(
"Sanity-checking all output modules.");
272 for (i = 0; outputs[i]; i++) {
275 d = (outputs[i]->
id) ? outputs[i]->
id :
"NULL";
277 if (!outputs[i]->
id) {
278 sr_err(
"No ID in module %d ('%s').", i, d);
282 sr_err(
"No description in module %d ('%s').", i, d);
286 sr_err(
"Invalid df_type %d in module %d ('%s').",
293 sr_err(
"No data/receive in module %d ('%s').", i, d);
330 struct sr_context *context;
333 sr_err(
"%s(): libsigrok context was NULL.", __func__);
337 if (sanity_check_all_drivers() < 0) {
338 sr_err(
"Internal driver error(s), aborting.");
342 if (sanity_check_all_input_modules() < 0) {
343 sr_err(
"Internal input module error(s), aborting.");
347 if (sanity_check_all_output_modules() < 0) {
348 sr_err(
"Internal output module error(s), aborting.");
353 context = g_try_malloc0(
sizeof(
struct sr_context) + 1);
360 #ifdef HAVE_LIBUSB_1_0
361 ret = libusb_init(&context->libusb_ctx);
362 if (LIBUSB_SUCCESS != ret) {
363 sr_err(
"libusb_init() returned %s.\n", libusb_error_name(ret));
392 sr_err(
"%s(): libsigrok context was NULL.", __func__);
398 #ifdef HAVE_LIBUSB_1_0
399 libusb_exit(ctx->libusb_ctx);