From 06f0bc91ee0a01f1eca84bcf78102032a38926d5 Mon Sep 17 00:00:00 2001 From: snzgoo Date: Sun, 25 Apr 2010 22:39:47 +0000 Subject: [PATCH] Just a small WIIUSE[WIN32] update to avoid dependencies @wiimote_plugin in my next commit. You can check whether WM_DEVICECHANGE got triggered by a Wiimote.(Pair-up arrival/removal) git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@5410 8ced0084-cf51-0410-be5f-012b33b47a6e --- Externals/WiiUse/Win32/wiiuse.dll | Bin 27136 -> 27648 bytes Externals/WiiUse/Win32/wiiuse.lib | Bin 8610 -> 9204 bytes Externals/WiiUse/X64/wiiuse.dll | Bin 31744 -> 32768 bytes Externals/WiiUse/X64/wiiuse.lib | Bin 8462 -> 9046 bytes Externals/WiiUseSrc/Src/io_win.c | 65 ++++++++++++++++++++++++++++++ Externals/WiiUseSrc/Src/wiiuse.h | 4 +- 6 files changed, 68 insertions(+), 1 deletion(-) diff --git a/Externals/WiiUse/Win32/wiiuse.dll b/Externals/WiiUse/Win32/wiiuse.dll index 6a7d581c08cc1c8bcdb4516fdf7d9bc51056cb83..9b86e1aa188b8e1efcb46cd9ed22722b33950e8c 100644 GIT binary patch delta 7905 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 E01$tL5&!@I delta 7183 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 diff --git a/Externals/WiiUse/Win32/wiiuse.lib b/Externals/WiiUse/Win32/wiiuse.lib index 08b322dc03b3a95f73c8cea38c57a979f8e26b47..d4d8af08d569e73f27277bd46017a35adda265a8 100644 GIT binary patch delta 2248 zcmZ4F{Kb8O6o-j{xrK#=fx+YgA@OC0|-mxFff4e4F(2@8w?C0zaUtuhk*fvCATp!fUrCp z0|N-l$uKa0uuMcf1A|Ni1B2WI2$tQ%zyQL^QVa|rELy?90KyV13=AMFwvT}UgvF;Z zFo3YE3j+fPD@HLefUwLN1_lsTc*MW}!qN{I7{Hi^fkB#wfkE*c1WT7OFo3Xdi zWTs^%CzfR9=P|^WXJ(cbr^e$^5uce`5D!yVl$xGdT#{OZ*D!QNJjhmV{>wCx1uaI6 z;4!Moz`)=qz`#%<#K5phn1LZlfq~(XJOhKCI0M5IQ3i$pF$RVl2?mB65)2H#L>L%) zq!<{sNis07$uls>$T2WP$S^QWkYixjB+I}crOd!kAUpFY7|tm&FqBC%Fsx8wU?`JkV6anSU}#fjU~rLSV33mn zr!xjd1||k>1`!5!1`Y->1~vw922lo11}+8_23`hL1|9}k26+Y<1_1^s1_=fs27U%X z20jKw237_Z25AOK1~~>L1_cIT24!?JOvo{0@_7z7QLNEA*@i`Wvn(eMqZIC_n*5hl ze6v269+L!CBQo>zCI|Ce!(+f^Io@}Sh*&%zEIwJApP$9y{TI*4cKqv^)ryz#=yJp@=L(5h$R0MImNLFfcH%PF^Xhiz;0!0g;wvU|?XIEGUL# z1-fqb$@O9=x)I*unEYG}+3n&GDH#R^2F}UB;>c1`;*%GPL+n&yU|`^yykFcL)k(-M z=ALXQfnullWMmifOr9x$qA23ZA& z6Qvj!82Bc$OX}m6=AT@MEDeg7{gRM~QD-@ zhbl8LFo-g6OkT$;Ik^ZqEI^9#WrTS^A*#l}z#zuJ!7%v%v-ISZGH9+{D-Q`Vc?Jds z@yU#`ric(zKuQi0lM7{$k^?Bl4#@ke+;3&K4o9Af*L%I4G25Kn_31Es2^zK;By`5Ahzz;j$oA54c4p zKafWYXXJpCn{26o6p#f9kjPYIU|^7E;F#RcCO&zO0*Zb}b^sLs3X??@k^B#G0CFx@ JoZP6W2mm)mEK&df delta 1790 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 Wdn^xF9ko2X|ArrY!k!15w`)nNWK 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 y #include +#include #include #include "definitions.h" @@ -283,4 +284,68 @@ int wiiuse_io_write(struct wiimote_t* wm, byte* buf, int len) { return 0; } +//Checks if the corresponding device to a system notification is a wiimote +//I placed the code here to avoid ddk/wdk dependencies @wiimote plugin +int wiiuse_check_system_notification(unsigned int nMsg, WPARAM wParam, LPARAM lParam) { + PDEV_BROADCAST_HDR pDevice = (PDEV_BROADCAST_HDR)lParam; + + switch( pDevice->dbch_devicetype ) { + + case DBT_DEVTYP_DEVICEINTERFACE: + { + PDEV_BROADCAST_DEVICEINTERFACE pDeviceInfo = (PDEV_BROADCAST_DEVICEINTERFACE)pDevice; + HIDD_ATTRIBUTES attr; + char stringbuf[255]; + + HANDLE dev = CreateFile(pDeviceInfo->dbcc_name, + 0,(FILE_SHARE_READ | FILE_SHARE_WRITE), + NULL, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, NULL); + + if (dev != INVALID_HANDLE_VALUE) + { + attr.Size = sizeof(attr); + HidD_GetAttributes(dev, &attr); + + //Checking PID&VID + if ((attr.VendorID == WM_VENDOR_ID) && (attr.ProductID == WM_PRODUCT_ID)) { + CloseHandle(dev); + return 1; + } + + CloseHandle(dev); + } + else { //different method to acquire the "wiimote vid/pid" for a comparison when the device is already unavailable @CreateFile() + + wcstombs(stringbuf, pDeviceInfo->dbcc_name, 255); + + //ms bt stack + bluesoleil vid/pid dbccname format + if ( (strstr(stringbuf, "VID&0002057e_PID&0306") != NULL) || (strstr(stringbuf, "VID_057e&PID_0306") != NULL) ) + { + return 1; + } + } + + return 0; + } + + default: + return 0; + + } + return 0; +} + +//register a handle for device notifications +int wiiuse_register_system_notification(HWND hwnd) { + DEV_BROADCAST_DEVICEINTERFACE Filter; + ZeroMemory( &Filter, sizeof(Filter) ); + + //GUID wiimoteguid; + //CLSIDFromString(_T("745a17a0-74d3-11d0-b6fe-00a0c90f57da"),&wiimoteguid); + Filter.dbcc_size = sizeof(DEV_BROADCAST_DEVICEINTERFACE); + Filter.dbcc_devicetype = DBT_DEVTYP_DEVICEINTERFACE; + //Filter.dbcc_classguid = wiimoteguid; + + return RegisterDeviceNotification(hwnd,&Filter, DEVICE_NOTIFY_ALL_INTERFACE_CLASSES); +} #endif /* ifdef WIN32 */ diff --git a/Externals/WiiUseSrc/Src/wiiuse.h b/Externals/WiiUseSrc/Src/wiiuse.h index 5633fbed90..1df11b06b0 100644 --- a/Externals/WiiUseSrc/Src/wiiuse.h +++ b/Externals/WiiUseSrc/Src/wiiuse.h @@ -673,10 +673,12 @@ WIIUSE_EXPORT extern void wiiuse_resync(struct wiimote_t* wm); WIIUSE_EXPORT extern void wiiuse_set_timeout(struct wiimote_t** wm, int wiimotes, byte normal_timeout, byte exp_timeout); WIIUSE_EXPORT extern void wiiuse_set_accel_threshold(struct wiimote_t* wm, int threshold); -/* connect.c */ +/* connect.c / io_win.c */ WIIUSE_EXPORT extern int wiiuse_find(struct wiimote_t** wm, int max_wiimotes, int timeout); WIIUSE_EXPORT extern int wiiuse_connect(struct wiimote_t** wm, int wiimotes); WIIUSE_EXPORT extern void wiiuse_disconnect(struct wiimote_t* wm); +WIIUSE_EXPORT extern int wiiuse_check_system_notification(unsigned int nMsg, WPARAM wParam, LPARAM lParam); +WIIUSE_EXPORT extern int wiiuse_register_system_notification(HWND hwnd); /* events.c */ WIIUSE_EXPORT extern int wiiuse_poll(struct wiimote_t** wm, int wiimotes);