#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< KnownDeviceState > | g_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 | |
#define SERIAL_NO_MAX 512 |
#define TRY_SUDO ",Try sudo uuu" |
enum KnownDeviceState |
|
static |
void compare_list | ( | libusb_device ** | old, |
libusb_device ** | nw ) |
for | ( | auto it:list | ) |
|
static |
|
static |
|
static |
if | ( | list. | empty() | ) |
if | ( | serial_no. | empty() | ) |
|
static |
int polling_usb | ( | std::atomic< int > & | bexit | ) |
|
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()
|
static |
|
static |
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 ) |
void uuu_set_poll_period | ( | int | period_in_milliseconds | ) |
int uuu_set_wait_next_timeout | ( | int | timeout_in_seconds | ) |
int uuu_set_wait_timeout | ( | int | timeout_in_seconds | ) |
auto end = list.end() |
return false |
class CAutoDeInit g_autoDeInit |
g_filter_usbpath |
g_filter_usbserial_no |
|
static |
|
static |
|
static |
|
static |
return pos = find(list.begin(), end, path) |
|
static |