#include "libsigrok.h"
#include "libsigrok-internal.h"
+/** @cond PRIVATE */
+#define LOG_PREFIX "backend"
+/** @endcond */
+
extern struct sr_session *session;
/**
*
* Initializing and shutting down libsigrok.
*
- * Before using any of the libsigrok functionality, sr_init() must
+ * Before using any of the libsigrok functionality (except
+ * sr_log_loglevel_set() and sr_log_opts_set()), sr_init() must
* be called to initialize the library, which will return a struct sr_context
* when the initialization was successful.
*
* struct sr_context *sr_ctx;
*
* if ((ret = sr_init(&sr_ctx)) != SR_OK) {
- * printf("Error initializing libsigrok (%s): %s.",
+ * printf("Error initializing libsigrok (%s): %s.\n",
* sr_strerror_name(ret), sr_strerror(ret));
* return 1;
* }
* // Use libsigrok functions here...
*
* if ((ret = sr_exit(sr_ctx)) != SR_OK) {
- * printf("Error shutting down libsigrok (%s): %s.",
+ * printf("Error shutting down libsigrok (%s): %s.\n",
* sr_strerror_name(ret), sr_strerror(ret));
* return 1;
* }
sr_err("No dev_list in driver %d ('%s').", i, d);
errors++;
}
- if (!drivers[i]->dev_clear) {
- sr_err("No dev_clear in driver %d ('%s').", i, d);
- errors++;
- }
/* Note: config_get() is optional. */
if (!drivers[i]->config_set) {
sr_err("No config_set in driver %d ('%s').", i, d);
errors++;
}
if (!outputs[i]->description) {
- sr_err("No description in module %d ('%s').", i, d);
+ sr_err("No description in module '%s'.", d);
errors++;
}
- if (outputs[i]->df_type < 10000 || outputs[i]->df_type > 10007) {
- sr_err("Invalid df_type %d in module %d ('%s').",
- outputs[i]->df_type, i, d);
+ if (!outputs[i]->receive) {
+ sr_err("No receive in module '%s'.", d);
errors++;
}
- /* All modules must provide a data or recv API callback. */
- if (!outputs[i]->data && !outputs[i]->receive) {
- sr_err("No data/receive in module %d ('%s').", i, d);
- errors++;
- }
-
- /*
- * Currently most API calls are optional (their function
- * pointers can thus be NULL) in theory: init, event, cleanup.
- */
-
if (errors == 0)
continue;
#ifdef HAVE_LIBUSB_1_0
ret = libusb_init(&context->libusb_ctx);
if (LIBUSB_SUCCESS != ret) {
- sr_err("libusb_init() returned %s.\n", libusb_error_name(ret));
+ sr_err("libusb_init() returned %s.", libusb_error_name(ret));
ret = SR_ERR;
goto done;
}