Merge pull request #406 from kanoi/bflsc USB device list - convert some common error numbers to messages + nDevs required for -n with usb
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119
diff --git a/cgminer.c b/cgminer.c
index 3ce4e26..6e47b43 100644
--- a/cgminer.c
+++ b/cgminer.c
@@ -92,9 +92,11 @@ int opt_bench_algo = -1;
static const bool opt_time = true;
unsigned long long global_hashrate;
+#if defined(HAVE_OPENCL) || defined(USE_USBUTILS)
+int nDevs;
+#endif
#ifdef HAVE_OPENCL
int opt_dynamic_interval = 7;
-int nDevs;
int opt_g_threads = 2;
int gpu_threads;
#ifdef USE_SCRYPT
diff --git a/usbutils.c b/usbutils.c
index 151d3cd..d7073f1 100644
--- a/usbutils.c
+++ b/usbutils.c
@@ -33,8 +33,12 @@
#define DRV_MODMINER 3
#endif
+#ifdef USE_ZTEX
+#define DRV_ZTEX 4
+#endif
+
#ifdef USE_ICARUS
-#define DRV_ICARUS 4
+#define DRV_ICARUS 5
#endif
#define DRV_LAST -1
@@ -125,6 +129,21 @@ static struct usb_find_devices find_dev[] = {
.epcount = ARRAY_SIZE(mmq_eps),
.eps = mmq_eps },
#endif
+#ifdef USE_ZTEX
+// This is here so cgminer -n shows them
+// the ztex driver (as at 201303) doesn't use usbutils
+ {
+ .drv = DRV_ZTEX,
+ .name = "ZTX",
+ .idVendor = 0x221a,
+ .idProduct = 0x0100,
+ .kernel = 0,
+ .config = 1,
+ .interface = 1,
+ .timeout = 100,
+ .epcount = 0,
+ .eps = NULL },
+#endif
{ DRV_LAST, NULL, 0, 0, 0, 0, 0, 0, 0, NULL }
};
@@ -277,6 +296,29 @@ static const char *BULK = "Bulk";
static const char *INTERRUPT = "Interrupt";
static const char *UNKNOWN = "Unknown";
+static const char *err_io_str = " IO Error";
+static const char *err_access_str = " Access Denied-a";
+static const char *err_timeout_str = " Reply Timeout";
+static const char *err_pipe_str = " Access denied-p";
+static const char *err_other_str = " Access denied-o";
+
+static const char *usberrstr(int err)
+{
+ switch (err) {
+ case LIBUSB_ERROR_IO:
+ return err_io_str;
+ case LIBUSB_ERROR_ACCESS:
+ return err_access_str;
+ case LIBUSB_ERROR_TIMEOUT:
+ return err_timeout_str;
+ case LIBUSB_ERROR_PIPE:
+ return err_pipe_str;
+ case LIBUSB_ERROR_OTHER:
+ return err_other_str;
+ }
+ return BLANK;
+}
+
static const char *destype(uint8_t bDescriptorType)
{
switch (bDescriptorType) {
@@ -481,11 +523,11 @@ static void usb_full(ssize_t *count, libusb_device *dev, char **buf, size_t *off
err = libusb_get_string_descriptor_ascii(handle, desc.iManufacturer, man, STRBUFLEN);
if (err < 0)
- sprintf((char *)man, "** err(%d)", err);
+ sprintf((char *)man, "** err(%d)%s", err, usberrstr(err));
err = libusb_get_string_descriptor_ascii(handle, desc.iProduct, prod, STRBUFLEN);
if (err < 0)
- sprintf((char *)prod, "** err(%d)", err);
+ sprintf((char *)prod, "** err(%d)%s", err, usberrstr(err));
if (level == 0) {
libusb_close(handle);
@@ -561,7 +603,7 @@ static void usb_full(ssize_t *count, libusb_device *dev, char **buf, size_t *off
err = libusb_get_string_descriptor_ascii(handle, desc.iSerialNumber, ser, STRBUFLEN);
if (err < 0)
- sprintf((char *)ser, "** err(%d)", err);
+ sprintf((char *)ser, "** err(%d)%s", err, usberrstr(err));
sprintf(tmp, EOL " dev %d: More Info:" EOL "\tManufacturer: '%s'" EOL
"\tProduct: '%s'" EOL "\tSerial '%s'",
@@ -581,7 +623,7 @@ void usb_all(int level)
count = libusb_get_device_list(NULL, &list);
if (count < 0) {
- applog(LOG_ERR, "USB all: failed, err %d", (int)count);
+ applog(LOG_ERR, "USB all: failed, err %d%s", (int)count, usberrstr((int)count));
return;
}