Skip to content

Commit

Permalink
consolidated libusb_init and libusb_deinit into CAutoDeInit
Browse files Browse the repository at this point in the history
Signed-off-by: Frank Li <frank.li@nxp.com>
  • Loading branch information
nxpfrankli committed Jan 19, 2022
1 parent 411f78f commit e56424c
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 33 deletions.
15 changes: 11 additions & 4 deletions libuuu/error.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@

#include "liberror.h"
#include "libuuu.h"
#include "libusb.h"

using namespace std;

Expand All @@ -39,14 +40,20 @@ static int g_last_err_id;

static uint32_t g_debug_level;

void uuu_set_debug_level(uint32_t mask)
int get_libusb_debug_level() noexcept
{
g_debug_level = mask;
return g_debug_level & 0xFFFF;
}

int get_libusb_debug_level() noexcept
void uuu_set_debug_level(uint32_t mask)
{
return g_debug_level & 0xFFFF;
g_debug_level = mask;

#if LIBUSB_API_VERSION > 0x01000106
libusb_set_option(nullptr, LIBUSB_OPTION_LOG_LEVEL, get_libusb_debug_level());
#else
libusb_set_debug(nullptr, get_libusb_debug_level());
#endif
}

const char * uuu_get_last_err_string()
Expand Down
34 changes: 5 additions & 29 deletions libuuu/usbhotplug.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,11 @@ static atomic<KnownDeviceState> g_known_device_state{NoKnownDevice};
class CAutoDeInit
{
public:
CAutoDeInit()
{
if (libusb_init(nullptr) < 0)
throw runtime_error{ "Call libusb_init failure" };
}
~CAutoDeInit()
{
libusb_exit(nullptr);
Expand Down Expand Up @@ -399,31 +404,8 @@ static int check_usb_timeout(Timer& usb_timer)
return 0;
}

static int ensure_libusb_initialized()
{
static once_flag is_libusb_init;
try {
call_once(is_libusb_init, []{
if (libusb_init(nullptr) < 0)
throw runtime_error{"Call libusb_init failure"};
#if LIBUSB_API_VERSION > 0x01000106
libusb_set_option(nullptr, LIBUSB_OPTION_LOG_LEVEL, get_libusb_debug_level());
#else
libusb_set_debug(nullptr, get_libusb_debug_level());
#endif
});
} catch(const exception& ex) {
set_last_err_string(ex.what());
return -1;
}
return 0;
}

int polling_usb(std::atomic<int>& bexit)
{
if (ensure_libusb_initialized())
return -1;

if (run_cmds("CFG:", nullptr))
return -1;

Expand Down Expand Up @@ -463,9 +445,6 @@ CmdUsbCtx::~CmdUsbCtx()

int CmdUsbCtx::look_for_match_device(const char *pro)
{
if (ensure_libusb_initialized())
return -1;

if (run_cmds("CFG:", nullptr))
return -1;

Expand Down Expand Up @@ -535,9 +514,6 @@ int uuu_add_usbpath_filter(const char *path)

int uuu_for_each_devices(uuu_ls_usb_devices fn, void *p)
{
if (ensure_libusb_initialized())
return -1;

CAutoList l;
size_t i = 0;
libusb_device *dev;
Expand Down

0 comments on commit e56424c

Please sign in to comment.