Commit 36978e3e authored by Bernhard Nortmann's avatar Bernhard Nortmann
Browse files

fel_lib: Arrange for auto-initialization on first open_fel_device()


Signed-off-by: default avatarBernhard Nortmann <bernhard.nortmann@web.de>
parent aaa677d5
......@@ -1194,7 +1194,6 @@ int main(int argc, char **argv)
argv += 1;
}
feldev_init();
handle = feldev_open(busnum, devnum, AW_USB_VENDOR_ID, AW_USB_PRODUCT_ID);
while (argc > 1 ) {
......
......@@ -33,6 +33,7 @@
#define USB_TIMEOUT 10000 /* 10 seconds */
static bool fel_lib_initialized = false;
/* This is out 'private' data type that will be part of a "FEL device" handle */
struct _felusb_handle {
......@@ -315,6 +316,8 @@ void feldev_release(feldev_handle *dev)
feldev_handle *feldev_open(int busnum, int devnum,
uint16_t vendor_id, uint16_t product_id)
{
if (!fel_lib_initialized) /* if not already done: auto-initialize */
feldev_init();
feldev_handle *result = calloc(1, sizeof(feldev_handle));
if (!result) {
fprintf(stderr, "FAILED to allocate feldev_handle memory.\n");
......@@ -404,11 +407,12 @@ void feldev_init(void)
int rc = libusb_init(NULL);
if (rc != 0)
usb_error(rc, "libusb_init()", 1);
fel_lib_initialized = true;
}
void feldev_done(feldev_handle *dev)
{
feldev_close(dev);
free(dev);
libusb_exit(NULL);
if (fel_lib_initialized) libusb_exit(NULL);
}
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment