From c626d5aae3f34ee93626c4d26c76bf5fbd7ef76a Mon Sep 17 00:00:00 2001 From: Matthew Parlane Date: Mon, 24 Dec 2012 08:31:50 +1300 Subject: [PATCH] Move to 1.0 libusb. --- Externals/libusb/win32/libusb-1.0.lib | Bin 704170 -> 704170 bytes Externals/libusb/x64/libusb-1.0.lib | Bin 734478 -> 734400 bytes .../Src/IPC_HLE/WII_IPC_HLE_Device_hid.cpp | 223 ++++++++++-------- .../Core/Src/IPC_HLE/WII_IPC_HLE_Device_hid.h | 13 +- Source/VSProps/Dolphin.Win32.props | 2 +- Source/VSProps/Dolphin.x64.props | 2 +- 6 files changed, 139 insertions(+), 101 deletions(-) diff --git a/Externals/libusb/win32/libusb-1.0.lib b/Externals/libusb/win32/libusb-1.0.lib index 007a1e830b07b8321c4534f3fc3bcb19c2b15829..c9018f05dd9d557220d2f3383f5e090e89d69ba6 100644 GIT binary patch delta 658 zcmZ4WS8LT@tqC%0CWc04My8V!f+RLtDFi{en-hYT`9ax}6N1DxD=lncg78hI8@O|b zO+K_(L|LFG{m8j+?EPsA~%Z zyXA@n_TIW3^>C3LkJ>7p=EC#a3(qtDF=JdmJ&%n^oN>eSHZ~?r#*NcAurawwZf0O$ z2o6>&yT`=frdx84iNVKTFxa25Vas%Wb|wRktqcqd{)`RVrn|EdX+ zFc`Hte^&7JXKdIvy@`X#g>nD%;~Y%xj0dI%a58C6cUZ>6Hr;`fiJ$QxNWh)(5Qx&A zp814HnDH=#eW8+>ZTba%CLVEr#)cyd3=AR6R`vIo7&II1F@fB9bhI4G=gIfE&=^v|^gr_g&ViFfT3Gv@41_lPr&U;J@!PEb9F-c4>IK;#@{UsMu z75izBFPiU7pIFNzIlZBViFJAhH=J**hV#>9c$qda zUYLHKm&u*&BFNNb)A{+CbRfR-w_)a;9?i$Jj`7lTE`Fv@BA3A$t(JhiuoU8jE7Ju8 znA{{EL%gsT?1kM3FFcu^FTkY9__Ted08{%+0p{&91z03`n3)(DCM%v-n|}T(t7bck gEK56!ENeT9EL%H^EPFePEJr(wEa!F>S*~RZ0ZvZFng9R* delta 626 zcmZ4WS8LT@tqC%0#)bxlMwXKkf+RLtDFi{en-hYT`9ax}6N1DxD=lncnl8i4Dl_@e zVv*@S%&a2(E%nR{!aVE@8}6?RNT_3;p3ltcxY=rny0*ZQE5VNQ&IpN^Z7cgz=vMr( zx$yk6YAMV({@7 z4EASi*fgD=oymY>GXn#IKV!p|>F(@I%8Xm5XM?D1)BD+(R2jEV-wL93Oux;}q%(aB zJCopa2@WQ4#$D45IGEJgb~7+A?5vo+k%viCz_`u1nS;To&H1x}w?AXUp6N{-OfHOj zryu8Fa%bE(J%E!*d%D9iCbsDgoJ{x}jpw@nG`p0S} z;pvOHn8XE-Lwt9Ffq_A@^BxmJ@bv#&OcK)z4l%J!f62vE#eNdxhvs|JC)P4aPH(7T zVx8W>&1A%QYWi+&rdY<)(EPxbbfv& z9f;rjZJ2qdNAoeQW4th(i=XL}$VIS5t0f>WEQNUC(sTg8Jj&1+}xtvb3|vvbM9xvbD3wvbVFya~(hO8JDke@;+}J!ha52+ni;%naldLT_M@;GELNZBgGt>N1Cb&S|LMcN-Q;^A^O8@_VMuwC& zt-{p-7XLQ$EWNqfcg^f;+mzIT4~0)*W)S9KX8_5$PCmIXn^p561H+E#ismfJtlXLm z3=bzKE>dTD!!x;Sks4#-Quc1_p-UU^R`0Obl+iY7dzheEbE2 z{TUlpPuCS-(&Svjz`zi~q^bFEdgEJ0^XU#!Oze#7rq2^#5@%n}z`&rU|8RQZBPQYL z=LML=IW{mbF!(bzY@Gg1fJvEg({v$0CS}IW)6E2#R2jESj}c^2W#7ucz_3&Q;q(n> znIt(GG#D6+I+|apO*a%|5}m$ZkV%|z`}FIAOzMm~rvDdY(q!7nFx{byNo2a65R(Pt zuIc4MOzw=kr|%bHa%J2Dq70@hOk`%8ZY|6t#<&+E@Gg*YD?~6Hp6(~YWWaF* z;cMH!+`?>f-9oYHHD)X#@|y}U6XKC~4B&*gsbKZ? z^=2$nUJIaGG(FLoJ!tzq%a&TMz&X4~$_%`RYpVea-sXZCH(FpqfatHD!vWDheGbR=>2o;GE8)<8Vn3%lTt7JAbq;f4 b52dYz2p`2C=G-2Cn2R$Phq0#&xLsHP`sJV5 delta 3376 zcmX@`Qm5~g&IIXtBMVCtGgDIq6kq`585x)x8G+deTnr41HyIcfrcf8xQ`ZaK1p@JX#5Xs0;FR6vzYlXkcwIBRdX0vv0yf?dkplz_2gQ@ z?#{wM1zb-JL-3lxF~@`fH?GGgNuC_%p+5{n<9bpQ(?D%K(JrNd<(!B9C=d#&$&I0^ zo6oX8(BX6s^>m5%3-$4tUJ%77HaU2T+U6G~!7^TWYj8tL3j+&i4bINMz>u<#fx*X& zg&{|kmEj&28v~0wJA=s_4u(I6I2mqkZVg<_G&vxIZL?0uO?!lelRsKnZMK`z%f$}0 zYxAXf-Aqu9$@B|u>|&-y#wKQF<{+CuO@;se85vUA_H`@{u=ux`XX(w=zH4S*+oq%z ze5iX0GlMV>I|E3ra`O6x*^F9~r5CBQ*=aH`JbFA?VUhUc_(l9o3cQmG7O62$WoDkN zxJYdB`bGSV8#nJ?w3U%b=;8Ezylfhq=Pjw!5Lj|0*m2$&ArZ4}Wq%6Yia%~vKRc_5 zn^B-)AwvU0Lzgha_S621d1i*29xyU6Ffy?)FfuVgF(U&b6K=fSyp6HHQ*tc>14D4I zn#MyW1~*-`hfEAU{(`~&j1B9i-{)u2WL!U;Q-H~hapUv=0VZ+AP17?3m<%{JGcYjt zGd66QzCeIUdAhM6li>6#0!+e;+orz|U{Yn=KAlgHNtJQObQ3`)9mbv069t*n*>^E8 zFznQSIQ_yiCXwk6nweOpTQ6YZWZXS{qac$e^Bx9<>58+Mgr|QHWU^q~J6%(V$(?cE z^gAJLWF4{kk#V)-f}d{ON0vL!KE&MRUV7cF=r^N^8&Vfw;27PaYmO01gOC+o8uVP(>K zI92{$j3ohF3i?Z(bKeZDD65lWJtu4l#~A`eQZ=xO-KI|f)9-kxa2GUYW+ ztGDYZu`)BG8tbRZirrYTrwC&kRas>o;WQTFqyOw|OHgv5`1FHZY{JUeoP5ff5$5E8 z9afB!H!gH+x8P>mZo$od+MIwrsm|;vD1Ojl-q*2s`d>G8Np_H3hk_yI#ksR@k8|fZ z6+pnet{EKpaPy|k;eZ&YJBI^eT%;<*xV||Y+xzBlb}11su4+H0JKQ*MVKn{TAx`W; bytNP>4DEu4IkyWQ=HkpHV1A7Ow+jmZJeJ7d diff --git a/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_hid.cpp b/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_hid.cpp index fb75386a4a..486ec062e6 100644 --- a/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_hid.cpp +++ b/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_hid.cpp @@ -20,24 +20,28 @@ #include "../HW/WII_IPC.h" #include "WII_IPC_HLE.h" #include "WII_IPC_HLE_Device_hid.h" -#include "lusb0_usb.h" +#include "libusb.h" #include "errno.h" +#include CWII_IPC_HLE_Device_hid::CWII_IPC_HLE_Device_hid(u32 _DeviceID, const std::string& _rDeviceName) : IWII_IPC_HLE_Device(_DeviceID, _rDeviceName) { - usb_init(); /* initialize the library */ - + //usb_init(); /* initialize the library */ + libusb_init(NULL); } CWII_IPC_HLE_Device_hid::~CWII_IPC_HLE_Device_hid() { - for ( std::map::const_iterator iter = open_devices.begin(); iter != open_devices.end(); ++iter ) + /*for ( std::map::const_iterator iter = open_devices.begin(); iter != open_devices.end(); ++iter ) { usb_close(iter->second); } open_devices.clear(); + */ + + libusb_exit(NULL); } bool CWII_IPC_HLE_Device_hid::Open(u32 _CommandAddress, u32 _Mode) @@ -61,7 +65,11 @@ u32 CWII_IPC_HLE_Device_hid::Update() { u32 work_done = 0; int ret = -4; - + //timeval tv; + + + //libusb_handle_events_timeout_completed(NULL, &tv, NULL); + /* std::list<_hidevent>::iterator ev = event_list.begin(); while (ev != event_list.end()) { @@ -89,7 +97,7 @@ u32 CWII_IPC_HLE_Device_hid::Update() event_list.erase(ev++); else ev++; - } + }*/ return work_done; } @@ -170,17 +178,17 @@ bool CWII_IPC_HLE_Device_hid::IOCtl(u32 _CommandAddress) -4 Cant find device specified */ u32 dev_num = Memory::Read_U32(BufferIn+0x10); - u8 requesttype = Memory::Read_U8(BufferIn+0x14); + u8 requestType = Memory::Read_U8(BufferIn+0x14); u8 request = Memory::Read_U8(BufferIn+0x15); u16 value = Memory::Read_U16(BufferIn+0x16); u16 index = Memory::Read_U16(BufferIn+0x18); u16 size = Memory::Read_U16(BufferIn+0x1A); u32 data = Memory::Read_U32(BufferIn+0x1C); - usb_find_busses(); /* find all busses */ - usb_find_devices(); /* find all connected devices */ - - struct usb_dev_handle * dev_handle = GetDeviceByDevNum(dev_num); + DEBUG_LOG(WII_IPC_HID, "HID::IOCtl(Control)(%02X, %02X) = %d (BufferIn: (%08x, %i), BufferOut: (%08x, %i)", + requestType, request, ReturnValue, BufferIn, BufferInSize, BufferOut, BufferOutSize); + + libusb_device_handle * dev_handle = GetDeviceByDevNum(dev_num); if (dev_handle == NULL) { @@ -188,76 +196,63 @@ bool CWII_IPC_HLE_Device_hid::IOCtl(u32 _CommandAddress) break; } - ReturnValue = usb_control_msg(dev_handle, requesttype, request, + /*ReturnValue = usb_control_msg(dev_handle, requesttype, request, value, index, (char*)Memory::GetPointer(data), size, 0); - + */ + ReturnValue = libusb_control_transfer (dev_handle, requestType, request, value, index, (unsigned char*)Memory::GetPointer(data), size, 0); if(ReturnValue>=0) { - ReturnValue += sizeof(usb_ctrl_setup); + ReturnValue += sizeof(libusb_control_setup); } + DEBUG_LOG(WII_IPC_HID, "HID::IOCtl(Control)(%02X, %02X) = %d (BufferIn: (%08x, %i), BufferOut: (%08x, %i)", - requesttype, request, ReturnValue, BufferIn, BufferInSize, BufferOut, BufferOutSize); - + requestType, request, ReturnValue, BufferIn, BufferInSize, BufferOut, BufferOutSize); break; } case IOCTL_HID_INTERRUPT_OUT: case IOCTL_HID_INTERRUPT_IN: { - - u32 dev_num = Memory::Read_U32(BufferIn+0x10); - u32 end_point = Memory::Read_U32(BufferIn+0x14); + u32 endpoint = Memory::Read_U32(BufferIn+0x14); u32 length = Memory::Read_U32(BufferIn+0x18); u32 data = Memory::Read_U32(BufferIn+0x1C); + DEBUG_LOG(WII_IPC_HID, "HID::IOCtl(Interrupt %s)(%d,%d,%p) = %d (BufferIn: (%08x, %i), BufferOut: (%08x, %i)", + Parameter == IOCTL_HID_INTERRUPT_IN ? "In" : "Out", endpoint, length, data, ReturnValue, BufferIn, BufferInSize, BufferOut, BufferOutSize); int ret = 0; void * context = NULL; + ReturnValue = -4; - struct usb_dev_handle * dev_handle = GetDeviceByDevNum(dev_num); + libusb_device_handle * dev_handle = GetDeviceByDevNum(dev_num); if (dev_handle == NULL) { ReturnValue = -4; goto int_in_end_print; } + int transfered = 0; - usb_claim_interface(dev_handle,0); - - ret = usb_interrupt_setup_async(dev_handle, &context, end_point); - if (ret< 0) + if(libusb_interrupt_transfer(dev_handle, endpoint, (unsigned char*)Memory::GetPointer(data), length, &transfered, 0 ) == 0) { - ReturnValue = -4; - goto int_in_end_print; - } - ret = usb_submit_async(context, (char*)Memory::GetPointer(data), length); - if (ret< 0) - { - ReturnValue = -4; - goto int_in_end_print; + ReturnValue = transfered; } - ret = usb_reap_async_nocancel(context, 0); - if (ret >= 0) - { - ReturnValue = ret; - } - else - { + /* _hidevent ev; ev.enq_address = _CommandAddress; ev.type = Parameter; ev.context = context; event_list.push_back(ev); return false; - } + */ + int_in_end_print: DEBUG_LOG(WII_IPC_HID, "HID::IOCtl(Interrupt %s)(%d,%d,%p) = %d (BufferIn: (%08x, %i), BufferOut: (%08x, %i)", - Parameter == IOCTL_HID_INTERRUPT_IN ? "In" : "Out", end_point, length, data, ReturnValue, BufferIn, BufferInSize, BufferOut, BufferOutSize); - + Parameter == IOCTL_HID_INTERRUPT_IN ? "In" : "Out", endpoint, length, data, ReturnValue, BufferIn, BufferInSize, BufferOut, BufferOutSize); break; } @@ -274,6 +269,7 @@ bool CWII_IPC_HLE_Device_hid::IOCtl(u32 _CommandAddress) return true; } + bool CWII_IPC_HLE_Device_hid::IOCtlV(u32 _CommandAddress) { @@ -283,7 +279,8 @@ bool CWII_IPC_HLE_Device_hid::IOCtlV(u32 _CommandAddress) switch (CommandBuffer.Parameter) { - + case 0x1337: + break; default: { DEBUG_LOG(WII_IPC_HID, "%s - IOCtlV:", GetDeviceName().c_str()); @@ -306,7 +303,7 @@ bool CWII_IPC_HLE_Device_hid::IOCtlV(u32 _CommandAddress) -void CWII_IPC_HLE_Device_hid::ConvertDeviceToWii(WiiHIDDeviceDescriptor *dest, struct usb_device_descriptor *src) +void CWII_IPC_HLE_Device_hid::ConvertDeviceToWii(WiiHIDDeviceDescriptor *dest, const struct libusb_device_descriptor *src) { memcpy(dest,src,sizeof(WiiHIDDeviceDescriptor)); dest->bcdUSB = Common::swap16(dest->bcdUSB); @@ -315,18 +312,18 @@ void CWII_IPC_HLE_Device_hid::ConvertDeviceToWii(WiiHIDDeviceDescriptor *dest, s dest->bcdDevice = Common::swap16(dest->bcdDevice); } -void CWII_IPC_HLE_Device_hid::ConvertConfigToWii(WiiHIDConfigDescriptor *dest, struct usb_config_descriptor *src) +void CWII_IPC_HLE_Device_hid::ConvertConfigToWii(WiiHIDConfigDescriptor *dest, const struct libusb_config_descriptor *src) { memcpy(dest,src,sizeof(WiiHIDConfigDescriptor)); dest->wTotalLength = Common::swap16(dest->wTotalLength); } -void CWII_IPC_HLE_Device_hid::ConvertInterfaceToWii(WiiHIDInterfaceDescriptor *dest, struct usb_interface_descriptor *src) +void CWII_IPC_HLE_Device_hid::ConvertInterfaceToWii(WiiHIDInterfaceDescriptor *dest, const struct libusb_interface_descriptor *src) { memcpy(dest,src,sizeof(WiiHIDInterfaceDescriptor)); } -void CWII_IPC_HLE_Device_hid::ConvertEndpointToWii(WiiHIDEndpointDescriptor *dest, struct usb_endpoint_descriptor *src) +void CWII_IPC_HLE_Device_hid::ConvertEndpointToWii(WiiHIDEndpointDescriptor *dest, const struct libusb_endpoint_descriptor *src) { memcpy(dest,src,sizeof(WiiHIDEndpointDescriptor)); dest->wMaxPacketSize = Common::swap16(dest->wMaxPacketSize); @@ -334,35 +331,45 @@ void CWII_IPC_HLE_Device_hid::ConvertEndpointToWii(WiiHIDEndpointDescriptor *des void CWII_IPC_HLE_Device_hid::FillOutDevices(u32 BufferOut, u32 BufferOutSize) { - usb_find_busses(); /* find all busses */ - usb_find_devices(); /* find all connected devices */ - struct usb_bus *bus; - struct usb_device *dev; int OffsetBuffer = BufferOut; int OffsetStart = 0; - int c,ic,i,e; /* config, interface container, interface, endpoint */ - for (bus = usb_get_busses(); bus; bus = bus->next) + int OffsetDevice = 0; + int d, c,ic,i,e; /* config, interface container, interface, endpoint */ + + libusb_device **list; + libusb_device *found = NULL; + ssize_t cnt = libusb_get_device_list(NULL, &list); + + for (d = 0; d < cnt; d++) { - for (dev = bus->devices; dev; dev = dev->next) + libusb_device *device = list[d]; + struct libusb_device_descriptor desc; + int dRet = libusb_get_device_descriptor (device, &desc); + + DEBUG_LOG(WII_IPC_HID, "Vendor: %d Product: %X Devnum: %X",desc.idVendor, desc.idProduct); + if (desc.idVendor != 0x21A4) + continue; + + u32 devNum = 0;//(libusb_get_bus_number (device) << 8) | libusb_get_device_address (device); + DEBUG_LOG(WII_IPC_HID, "Found device with Vendor: %d Product: %d Devnum: %d, Error: %d",desc.idVendor, desc.idProduct, devNum, dRet); + + OffsetStart = OffsetBuffer; + OffsetBuffer += 4; // skip length for now, fill at end + + Memory::Write_U32(devNum, OffsetBuffer); //write device num + OffsetBuffer += 4; + + WiiHIDDeviceDescriptor wii_device; + ConvertDeviceToWii(&wii_device, &desc); + Memory::WriteBigEData((const u8*)&wii_device, OffsetBuffer, Align(wii_device.bLength, 4)); + OffsetBuffer += Align(wii_device.bLength, 4); + bool deviceValid = true; + for (c = 0; deviceValid && c < desc.bNumConfigurations; c++) { - struct usb_device_descriptor *device = &dev->descriptor; - DEBUG_LOG(WII_IPC_HID, "Found device with Vendor: %d Product: %d Devnum: %d",device->idVendor, device->idProduct, dev->devnum); - - OffsetStart = OffsetBuffer; - OffsetBuffer += 4; // skip length for now, fill at end - - Memory::Write_U32(dev->devnum, OffsetBuffer); //write device num - OffsetBuffer += 4; - - WiiHIDDeviceDescriptor wii_device; - ConvertDeviceToWii(&wii_device, device); - Memory::WriteBigEData((const u8*)&wii_device, OffsetBuffer, Align(wii_device.bLength, 4)); - OffsetBuffer += Align(wii_device.bLength, 4); - - for (c = 0; c < device->bNumConfigurations; c++) + struct libusb_config_descriptor *config = NULL; + int cRet = libusb_get_config_descriptor(device, c, &config); + if(cRet == 0) { - struct usb_config_descriptor *config = &dev->config[c]; - WiiHIDConfigDescriptor wii_config; ConvertConfigToWii(&wii_config, config); Memory::WriteBigEData((const u8*)&wii_config, OffsetBuffer, Align(wii_config.bLength, 4)); @@ -370,10 +377,10 @@ void CWII_IPC_HLE_Device_hid::FillOutDevices(u32 BufferOut, u32 BufferOutSize) for (ic = 0; ic < config->bNumInterfaces; ic++) { - struct usb_interface *interfaceContainer = &config->interface[ic]; + const struct libusb_interface *interfaceContainer = &config->interface[ic]; for (i = 0; i < interfaceContainer->num_altsetting; i++) { - struct usb_interface_descriptor *interface = &interfaceContainer->altsetting[i]; + const struct libusb_interface_descriptor *interface = &interfaceContainer->altsetting[i]; WiiHIDInterfaceDescriptor wii_interface; ConvertInterfaceToWii(&wii_interface, interface); @@ -382,7 +389,7 @@ void CWII_IPC_HLE_Device_hid::FillOutDevices(u32 BufferOut, u32 BufferOutSize) for (e = 0; e < interface->bNumEndpoints; e++) { - struct usb_endpoint_descriptor *endpoint = &interface->endpoint[e]; + const struct libusb_endpoint_descriptor *endpoint = &interface->endpoint[e]; WiiHIDEndpointDescriptor wii_endpoint; ConvertEndpointToWii(&wii_endpoint, endpoint); @@ -392,42 +399,72 @@ void CWII_IPC_HLE_Device_hid::FillOutDevices(u32 BufferOut, u32 BufferOutSize) } //endpoints } // interfaces } // interface containters - } // configs + libusb_free_config_descriptor(config); + config = NULL; + } + else + { + DEBUG_LOG(WII_IPC_HID, "Could not open the device %d", cRet); + deviceValid = false; + OffsetBuffer = OffsetStart; + } + } // configs + Memory::Write_U32(OffsetBuffer-OffsetStart, OffsetStart); // fill in length - Memory::Write_U32(OffsetBuffer-OffsetStart, OffsetStart); // fill in length - - } // devices - } // buses + } + libusb_free_device_list(list, TRUE); + Memory::Write_U32(0xFFFFFFFF, OffsetBuffer); // no more devices + char file[0x50]; + snprintf(file, 0x50, "device_list.bin"); + FILE* test = fopen (file, "wb"); + fwrite((char*)Memory::GetPointer(BufferOut), 1, (OffsetBuffer - BufferOut)+4, test); + + fclose(test); } - + int CWII_IPC_HLE_Device_hid::Align(int num, int alignment) { return (num + (alignment-1)) & ~(alignment-1); } -struct usb_dev_handle * CWII_IPC_HLE_Device_hid::GetDeviceByDevNum(u32 devNum) +libusb_device_handle * CWII_IPC_HLE_Device_hid::GetDeviceByDevNum(u32 devNum) { - + int i; + libusb_device **list; + libusb_device_handle *handle = NULL; + ssize_t cnt; + if (open_devices.find(devNum) != open_devices.end()) return open_devices[devNum]; + + cnt = libusb_get_device_list(NULL, &list); + + if (cnt < 0) + return NULL; + + for (i = 0; i < cnt; i++) { + libusb_device *device = list[i]; - usb_dev_handle * device = NULL; - - for (struct usb_bus *bus = usb_get_busses(); bus; bus = bus->next) - { - for (struct usb_device *dev = bus->devices; dev; dev = dev->next) + if (libusb_open(device, &handle)) + break; + //struct libusb_device_descriptor desc; + u32 deviceID = (libusb_get_bus_number (device) << 8) | libusb_get_device_address (device); + if (deviceID == devNum) + open_devices[devNum] = handle; + else { - if(dev->devnum == devNum){ - open_devices[devNum] = device = usb_open(dev); - - return device; - } + libusb_close(handle); + handle = NULL; } } - return device; + + libusb_free_device_list(list, TRUE); + + + return handle; } \ No newline at end of file diff --git a/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_hid.h b/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_hid.h index 099f4deff4..be7e1b5926 100644 --- a/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_hid.h +++ b/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_hid.h @@ -115,15 +115,16 @@ private: void CWII_IPC_HLE_Device_hid::FillOutDevices(u32 BufferOut, u32 BufferOutSize); - void ConvertDeviceToWii(WiiHIDDeviceDescriptor *dest, struct usb_device_descriptor *src); - void ConvertConfigToWii(WiiHIDConfigDescriptor *dest, struct usb_config_descriptor *src); - void ConvertInterfaceToWii(WiiHIDInterfaceDescriptor *dest, struct usb_interface_descriptor *src); - void ConvertEndpointToWii(WiiHIDEndpointDescriptor *dest, struct usb_endpoint_descriptor *src); + void ConvertDeviceToWii(WiiHIDDeviceDescriptor *dest, const struct libusb_device_descriptor *src); + void ConvertConfigToWii(WiiHIDConfigDescriptor *dest, const struct libusb_config_descriptor *src); + void ConvertInterfaceToWii(WiiHIDInterfaceDescriptor *dest, const struct libusb_interface_descriptor *src); + void ConvertEndpointToWii(WiiHIDEndpointDescriptor *dest, const struct libusb_endpoint_descriptor *src); int Align(int num, int alignment); - struct usb_dev_handle * GetDeviceByDevNum(u32 devNum); - std::map open_devices; + struct libusb_device_handle * GetDeviceByDevNum(u32 devNum); + std::map open_devices; + std::map device_identifiers; typedef struct diff --git a/Source/VSProps/Dolphin.Win32.props b/Source/VSProps/Dolphin.Win32.props index a78f75c4ac..383ed36590 100644 --- a/Source/VSProps/Dolphin.Win32.props +++ b/Source/VSProps/Dolphin.Win32.props @@ -8,7 +8,7 @@ ..\..\..\Externals\SDL\$(PlatformName);..\..\..\Externals\GLew;..\..\..\Externals\Cg;..\..\..\Externals\portaudio\$(PlatformName)\$(ConfigurationName);..\..\..\Externals\libusb\$(PlatformName) - portaudio.lib;dsound.lib;dxerr.lib;iphlpapi.lib;winmm.lib;setupapi.lib;xinput.lib;vfw32.lib;cg.lib;cgGL.lib;opengl32.lib;glew32s.lib;glu32.lib;rpcrt4.lib;comctl32.lib;libusb.lib;hidapi.lib;%(AdditionalDependencies) + portaudio.lib;dsound.lib;dxerr.lib;iphlpapi.lib;winmm.lib;setupapi.lib;xinput.lib;vfw32.lib;cg.lib;cgGL.lib;opengl32.lib;glew32s.lib;glu32.lib;rpcrt4.lib;comctl32.lib;libusb.lib;libusb-1.0.lib;%(AdditionalDependencies) diff --git a/Source/VSProps/Dolphin.x64.props b/Source/VSProps/Dolphin.x64.props index fd692daa60..28ae77d1b5 100644 --- a/Source/VSProps/Dolphin.x64.props +++ b/Source/VSProps/Dolphin.x64.props @@ -9,7 +9,7 @@ ..\..\..\Externals\SDL\$(PlatformName);..\..\..\Externals\GLew;..\..\..\Externals\Cg64;..\..\..\Externals\portaudio\$(PlatformName)\$(ConfigurationName);..\..\..\Externals\libusb\$(PlatformName) - portaudio.lib;dsound.lib;dxerr.lib;iphlpapi.lib;winmm.lib;setupapi.lib;xinput.lib;vfw32.lib;cg.lib;cgGL.lib;opengl32.lib;glew64s.lib;glu32.lib;rpcrt4.lib;comctl32.lib;libusb.lib;%(AdditionalDependencies) + portaudio.lib;dsound.lib;dxerr.lib;iphlpapi.lib;winmm.lib;setupapi.lib;xinput.lib;vfw32.lib;cg.lib;cgGL.lib;opengl32.lib;glew64s.lib;glu32.lib;rpcrt4.lib;comctl32.lib;libusb.lib;libusb-1.0.lib;%(AdditionalDependencies)