* Foundation, Inc., 51 Franklin Street, Boston, MA 02110-1301 USA
*/
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char *prog_name;
-
static void
set_progname (char *path)
{
const char *cmd = argv[optind++];
nopts--;
- libusb_context *ctx = usrp_one_time_init (true);
+ usrp_one_time_init ();
- struct libusb_device *udev = usrp_find_device (which_board, fx2_ok_p, ctx);
+ struct libusb_device *udev = usrp_find_device (which_board, fx2_ok_p);
if (udev == 0){
fprintf (stderr, "%s: failed to find usrp[%d]\n", prog_name, which_board);
exit (1);
* initiated and return NULL. It is NOT safe to call more than once with
* new_context set to true since a new context is initiated each time.
*/
-libusb_context* usrp_one_time_init (bool new_context);
-void usrp_one_time_init ();
+//libusb_context* usrp_one_time_init (bool new_context);
+void usrp_one_time_init (libusb_context **ctx = NULL);
/*
* force a rescan of the buses and devices
*/
memset (d_fpga_shadows, 0, sizeof (d_fpga_shadows));
- d_ctx = usrp_one_time_init(true);
+// d_ctx = usrp_one_time_init(true);
+ usrp_one_time_init (&d_ctx);
if (!usrp_load_standard_bits (which_board, false, fpga_filename, firmware_filename, d_ctx))
throw std::runtime_error ("usrp_basic/usrp_load_standard_bits");
libusb_close (d_udh);
// Each object should be running in it's own context. If running in default
- // (NULL) context then something went wrong.
+ // context then leave the instance open as it may be shared. This might
+ // occur in mixed libusb-0.12 and libusb-1.0 environments.
- assert (d_ctx != NULL);
- libusb_exit (d_ctx);
+ if (d_ctx != NULL)
+ libusb_exit (d_ctx);
}
#include "std_paths.h"
#include <stdio.h>
+/*
void
usrp_one_time_init ()
{
static bool first = true;
- if (first){
+ if (first) {
+ first = false;
+ usb_init (); // usb library init
+ usb_find_busses ();
+ usb_find_devices ();
+ }
+}
+
+libusb_context *
+usrp_one_time_init (bool new_context)
+{
+ usrp_one_time_init ();
+ return NULL;
+}
+*/
+
+void
+usrp_one_time_init (libusb_context **ctx)
+{
+ static bool first = true;
+
+ if (first) {
first = false;
usb_init (); // usb library init
usb_find_busses ();
#include "std_paths.h"
#include <stdio.h>
+/*
+void
+usrp_one_time_init ()
+{
+ usrp_one_time_init (false);
+}
+*/
+
+void
+usrp_one_time_init (libusb_context **ctx)
+{
+ int ret;
+
+ if ((ret = libusb_init (ctx)) < 0)
+ fprintf (stderr, "usrp: libusb_init failed %i\n", ret);
+}
+
+/*
libusb_context *
usrp_one_time_init (bool new_context)
{
// On first call create default context in addition to any new requested
// context. The default context is probably useless in this form, but keep
- // it for now due to compatibility reasons.
+ // it for now due to possible compatibility reasons.
if (first) {
first = false;
return ctx;
}
+*/
void
usrp_rescan ()