1
0
mirror of https://github.com/GOSTSec/sgminer synced 2025-01-11 07:17:58 +00:00

--usb-dump display brief dump if value = 0

This commit is contained in:
Kano 2013-03-11 11:27:35 +11:00
parent 3f50e878a2
commit 6acda9373b
2 changed files with 31 additions and 12 deletions

4
README
View File

@ -250,8 +250,8 @@ This is useful if you unplug a device then plug it back in the same port,
it usually reappears with the same bus_number but a different device_address it usually reappears with the same bus_number but a different device_address
You can see the list of USB devices on linux with 'sudo lsusb' You can see the list of USB devices on linux with 'sudo lsusb'
Cgminer will list the USB devices with the '--usb-dump 1' option Cgminer will list the USB devices with the '--usb-dump 0' option
The '--usb-dump N' option with a value of N greater than 1 will dump a lot The '--usb-dump N' option with a value of N greater than 0 will dump a lot
of details about each USB device of details about each USB device
The second version The second version

View File

@ -414,6 +414,8 @@ static bool setgetdes(ssize_t count, libusb_device *dev, struct libusb_device_ha
static void usb_full(ssize_t count, libusb_device *dev, char **buf, size_t *off, size_t *len) static void usb_full(ssize_t count, libusb_device *dev, char **buf, size_t *off, size_t *len)
{ {
struct libusb_device_descriptor desc; struct libusb_device_descriptor desc;
uint8_t bus_number;
uint8_t device_address;
struct libusb_device_handle *handle; struct libusb_device_handle *handle;
struct libusb_config_descriptor *config; struct libusb_config_descriptor *config;
const struct libusb_interface_descriptor *idesc; const struct libusb_interface_descriptor *idesc;
@ -432,16 +434,26 @@ static void usb_full(ssize_t count, libusb_device *dev, char **buf, size_t *off,
return; return;
} }
sprintf(tmp, EOL ".USB dev %d: Device Descriptor:" EOL "\tLength: %d" EOL bus_number = libusb_get_bus_number(dev);
device_address = libusb_get_device_address(dev);
if (opt_usbdump == 0) {
sprintf(tmp, EOL ".USB dev %d: Bus %d Device %d ID: %04x:%04x",
(int)count, (int)bus_number, (int)device_address,
desc.idVendor, desc.idProduct);
} else {
sprintf(tmp, EOL ".USB dev %d: Bus %d Device %d Device Descriptor:" EOL "\tLength: %d" EOL
"\tDescriptor Type: %s" EOL "\tUSB: %04x" EOL "\tDeviceClass: %d" EOL "\tDescriptor Type: %s" EOL "\tUSB: %04x" EOL "\tDeviceClass: %d" EOL
"\tDeviceSubClass: %d" EOL "\tDeviceProtocol: %d" EOL "\tMaxPacketSize0: %d" EOL "\tDeviceSubClass: %d" EOL "\tDeviceProtocol: %d" EOL "\tMaxPacketSize0: %d" EOL
"\tidVendor: %04x" EOL "\tidProduct: %04x" EOL "\tDeviceRelease: %x" EOL "\tidVendor: %04x" EOL "\tidProduct: %04x" EOL "\tDeviceRelease: %x" EOL
"\tNumConfigurations: %d", "\tNumConfigurations: %d",
(int)count, (int)(desc.bLength), destype(desc.bDescriptorType), (int)count, (int)bus_number, (int)device_address,
(int)(desc.bLength), destype(desc.bDescriptorType),
desc.bcdUSB, (int)(desc.bDeviceClass), (int)(desc.bDeviceSubClass), desc.bcdUSB, (int)(desc.bDeviceClass), (int)(desc.bDeviceSubClass),
(int)(desc.bDeviceProtocol), (int)(desc.bMaxPacketSize0), (int)(desc.bDeviceProtocol), (int)(desc.bMaxPacketSize0),
desc.idVendor, desc.idProduct, desc.bcdDevice, desc.idVendor, desc.idProduct, desc.bcdDevice,
(int)(desc.bNumConfigurations)); (int)(desc.bNumConfigurations));
}
append(buf, tmp, off, len); append(buf, tmp, off, len);
err = libusb_open(dev, &handle); err = libusb_open(dev, &handle);
@ -451,6 +463,21 @@ static void usb_full(ssize_t count, libusb_device *dev, char **buf, size_t *off,
return; return;
} }
err = libusb_get_string_descriptor_ascii(handle, desc.iManufacturer, man, STRBUFLEN);
if (err < 0)
sprintf((char *)man, "** err(%d)", err);
err = libusb_get_string_descriptor_ascii(handle, desc.iProduct, prod, STRBUFLEN);
if (err < 0)
sprintf((char *)prod, "** err(%d)", err);
if (opt_usbdump == 0) {
libusb_close(handle);
sprintf(tmp, EOL " Manufacturer: '%s'" EOL " Product: '%s'", man, prod);
append(buf, tmp, off, len);
return;
}
if (libusb_kernel_driver_active(handle, 0) == 1) { if (libusb_kernel_driver_active(handle, 0) == 1) {
sprintf(tmp, EOL " * dev %d: kernel attached", (int)count); sprintf(tmp, EOL " * dev %d: kernel attached", (int)count);
append(buf, tmp, off, len); append(buf, tmp, off, len);
@ -516,14 +543,6 @@ static void usb_full(ssize_t count, libusb_device *dev, char **buf, size_t *off,
libusb_free_config_descriptor(config); libusb_free_config_descriptor(config);
config = NULL; config = NULL;
err = libusb_get_string_descriptor_ascii(handle, desc.iManufacturer, man, STRBUFLEN);
if (err < 0)
sprintf((char *)man, "** err(%d)", err);
err = libusb_get_string_descriptor_ascii(handle, desc.iProduct, prod, STRBUFLEN);
if (err < 0)
sprintf((char *)prod, "** err(%d)", err);
err = libusb_get_string_descriptor_ascii(handle, desc.iSerialNumber, ser, STRBUFLEN); err = libusb_get_string_descriptor_ascii(handle, desc.iSerialNumber, ser, STRBUFLEN);
if (err < 0) if (err < 0)
sprintf((char *)ser, "** err(%d)", err); sprintf((char *)ser, "** err(%d)", err);