fel_lib: Arrange for auto-initialization on first open_fel_device()
Signed-off-by: Bernhard Nortmann <bernhard.nortmann@web.de>
This commit is contained in:
parent
aaa677d552
commit
36978e3e44
1
fel.c
1
fel.c
@ -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);
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user