24 #include "libsigrok-internal.h"
122 static int sanity_check_all_drivers(
void)
124 int i, errors, ret =
SR_OK;
128 sr_spew(
"Sanity-checking all drivers.");
131 for (i = 0; drivers[i]; i++) {
134 d = (drivers[i]->
name) ? drivers[i]->
name :
"NULL";
136 if (!drivers[i]->
name) {
137 sr_err(
"No name in driver %d ('%s').", i, d);
141 sr_err(
"No longname in driver %d ('%s').", i, d);
145 sr_err(
"API version in driver %d ('%s') < 1.", i, d);
148 if (!drivers[i]->
init) {
149 sr_err(
"No init in driver %d ('%s').", i, d);
153 sr_err(
"No cleanup in driver %d ('%s').", i, d);
156 if (!drivers[i]->
scan) {
157 sr_err(
"No scan in driver %d ('%s').", i, d);
161 sr_err(
"No dev_list in driver %d ('%s').", i, d);
165 sr_err(
"No dev_clear in driver %d ('%s').", i, d);
170 sr_err(
"No config_set in driver %d ('%s').", i, d);
174 sr_err(
"No config_list in driver %d ('%s').", i, d);
178 sr_err(
"No dev_open in driver %d ('%s').", i, d);
182 sr_err(
"No dev_close in driver %d ('%s').", i, d);
186 sr_err(
"No dev_acquisition_start in driver %d ('%s').",
191 sr_err(
"No dev_acquisition_stop in driver %d ('%s').",
212 static int sanity_check_all_input_modules(
void)
214 int i, errors, ret =
SR_OK;
218 sr_spew(
"Sanity-checking all input modules.");
221 for (i = 0; inputs[i]; i++) {
224 d = (inputs[i]->
id) ? inputs[i]->
id :
"NULL";
226 if (!inputs[i]->
id) {
227 sr_err(
"No ID in module %d ('%s').", i, d);
231 sr_err(
"No description in module %d ('%s').", i, d);
235 sr_err(
"No format_match in module %d ('%s').", i, d);
238 if (!inputs[i]->
init) {
239 sr_err(
"No init in module %d ('%s').", i, d);
243 sr_err(
"No loadfile in module %d ('%s').", i, d);
261 static int sanity_check_all_output_modules(
void)
263 int i, errors, ret =
SR_OK;
267 sr_spew(
"Sanity-checking all output modules.");
270 for (i = 0; outputs[i]; i++) {
273 d = (outputs[i]->
id) ? outputs[i]->
id :
"NULL";
275 if (!outputs[i]->
id) {
276 sr_err(
"No ID in module %d ('%s').", i, d);
280 sr_err(
"No description in module %d ('%s').", i, d);
284 sr_err(
"Invalid df_type %d in module %d ('%s').",
291 sr_err(
"No data/receive in module %d ('%s').", i, d);
328 struct sr_context *context;
331 sr_err(
"%s(): libsigrok context was NULL.", __func__);
335 if (sanity_check_all_drivers() < 0) {
336 sr_err(
"Internal driver error(s), aborting.");
340 if (sanity_check_all_input_modules() < 0) {
341 sr_err(
"Internal input module error(s), aborting.");
345 if (sanity_check_all_output_modules() < 0) {
346 sr_err(
"Internal output module error(s), aborting.");
351 context = g_try_malloc0(
sizeof(
struct sr_context) + 1);
358 #ifdef HAVE_LIBUSB_1_0
359 ret = libusb_init(&context->libusb_ctx);
360 if (LIBUSB_SUCCESS != ret) {
361 sr_err(
"libusb_init() returned %s.\n", libusb_error_name(ret));
389 sr_err(
"%s(): libsigrok context was NULL.", __func__);
395 #ifdef HAVE_LIBUSB_1_0
396 libusb_exit(ctx->libusb_ctx);