uuu
uuu (Universal Update Utility), mfgtools 3.0
Loading...
Searching...
No Matches
usbhotplug.cpp File Reference
#include <thread>
#include <atomic>
#include <mutex>
#include <utility>
#include <algorithm>
#include <stdexcept>
#include "libusb.h"
#include "liberror.h"
#include "config.h"
#include "cmd.h"
#include "libcomm.h"
#include "libuuu.h"
#include "rominfo.h"
#include "vector"
#include <time.h>
#include <iostream>
#include <chrono>

Classes

class  CAutoDeInit
class  CAutoList
struct  filter
struct  Timer

Macros

#define TRY_SUDO   ",Try sudo uuu"
#define SERIAL_NO_MAX   512

Enumerations

enum  KnownDeviceState { NoKnownDevice , KnownDeviceToDo , KnownDeviceDone , WaitNextKnownDevice }

Functions

 if (list.empty()) return true
 if (serial_no.empty()) return false
 for (auto it:list)
static string get_device_path (libusb_device *dev)
static string get_device_serial_no (libusb_device *dev, struct libusb_device_descriptor *desc, ConfigItem *item)
static string get_device_serial_no (libusb_device *dev)
static int open_libusb (libusb_device *dev, void **usb_device_handle)
static int run_usb_cmds (ConfigItem *item, libusb_device *dev, short bcddevice)
static int usb_add (libusb_device *dev)
static int usb_remove (libusb_device *)
void compare_list (libusb_device **old, libusb_device **nw)
static int check_usb_timeout (Timer &usb_timer)
int polling_usb (std::atomic< int > &bexit)
int uuu_add_usbpath_filter (const char *path)
int uuu_add_usbserial_no_filter (const char *serial_no)
int uuu_for_each_devices (uuu_ls_usb_devices fn, void *p)
int uuu_set_wait_timeout (int timeout_in_seconds)
void uuu_set_poll_period (int period_in_milliseconds)
int uuu_set_wait_next_timeout (int timeout_in_seconds)

Variables

static atomic< seconds > g_wait_usb_timeout {-1s}
static atomic< milliseconds > g_usb_poll_period {200ms}
static atomic< seconds > g_wait_next_usb_timeout {-1s}
static atomic< KnownDeviceStateg_known_device_state {NoKnownDevice}
class CAutoDeInit g_autoDeInit
static struct
auto end = list.end()
auto pos = find(list.begin(), end, path)
 g_filter_usbpath
return false
 g_filter_usbserial_no

Macro Definition Documentation

◆ SERIAL_NO_MAX

#define SERIAL_NO_MAX   512

◆ TRY_SUDO

#define TRY_SUDO   ",Try sudo uuu"

Enumeration Type Documentation

◆ KnownDeviceState

Enumerator
NoKnownDevice 
KnownDeviceToDo 
KnownDeviceDone 
WaitNextKnownDevice 

Function Documentation

◆ check_usb_timeout()

int check_usb_timeout ( Timer & usb_timer)
static

◆ compare_list()

void compare_list ( libusb_device ** old,
libusb_device ** nw )

◆ for()

for ( auto it:list )

◆ get_device_path()

string get_device_path ( libusb_device * dev)
static

◆ get_device_serial_no() [1/2]

string get_device_serial_no ( libusb_device * dev)
static

◆ get_device_serial_no() [2/2]

string get_device_serial_no ( libusb_device * dev,
struct libusb_device_descriptor * desc,
ConfigItem * item )
static

◆ if() [1/2]

if ( list. empty())

◆ if() [2/2]

if ( serial_no. empty())

◆ open_libusb()

int open_libusb ( libusb_device * dev,
void ** usb_device_handle )
static

◆ polling_usb()

int polling_usb ( std::atomic< int > & bexit)

◆ run_usb_cmds()

int run_usb_cmds ( ConfigItem * item,
libusb_device * dev,
short bcddevice )
static

Thread function. Didn't call this function directly. Unbalance libusb_unref_device. Before start thread, need call libusb_ref_device to dev is free

libusb_get_list() libusb_ref_device // avoid free at libusb_free_list if run_usb_cmd have not open device in time. thread start run_usb_cmds; libusb_free_list()

◆ usb_add()

int usb_add ( libusb_device * dev)
static

◆ usb_remove()

int usb_remove ( libusb_device * )
static

◆ uuu_add_usbpath_filter()

int uuu_add_usbpath_filter ( const char * path)

◆ uuu_add_usbserial_no_filter()

int uuu_add_usbserial_no_filter ( const char * serial_no)

◆ uuu_for_each_devices()

int uuu_for_each_devices ( uuu_ls_usb_devices fn,
void * p )

◆ uuu_set_poll_period()

void uuu_set_poll_period ( int period_in_milliseconds)

◆ uuu_set_wait_next_timeout()

int uuu_set_wait_next_timeout ( int timeout_in_seconds)

◆ uuu_set_wait_timeout()

int uuu_set_wait_timeout ( int timeout_in_seconds)

Variable Documentation

◆ end

auto end = list.end()

◆ false

return false

◆ g_autoDeInit

class CAutoDeInit g_autoDeInit

◆ g_filter_usbpath

g_filter_usbpath

◆ g_filter_usbserial_no

g_filter_usbserial_no

◆ g_known_device_state

atomic<KnownDeviceState> g_known_device_state {NoKnownDevice}
static

◆ g_usb_poll_period

atomic<milliseconds> g_usb_poll_period {200ms}
static

◆ g_wait_next_usb_timeout

atomic<seconds> g_wait_next_usb_timeout {-1s}
static

◆ g_wait_usb_timeout

atomic<seconds> g_wait_usb_timeout {-1s}
static

◆ pos

return pos = find(list.begin(), end, path)

◆ struct

struct
static