203 Commits

Author SHA1 Message Date
gblues
c3736adb77 Start implementing HID polling thread
== DETAILS

Looking at the other HID USB drivers, it looks like the typical
implementation is to start up a background thread to do the
polling, rather than wait for RA to invoke the poll() method.

This commit sets up the skeleton of the background thread:

- The thread gets created in init()
- The thread gets stopped in free()

Right now the body of the thread is a 10ms sleep.

== TESTING

It compiles cleanly, and links. Don't know if it actually works.
2017-12-30 04:39:56 +01:00
gblues
203876a206 More progress on the HID driver
== DETAILS
I think I've about got the thread startup/teardown code worked
out. Logically, anyway, if not accurately.

The challenge has been figuring out how best to integrate the
features of HID2VPAD.

I found `input/connect/joypad_connection.c` and this seems like
the logical place for:

- Special-case driver for the Switch Pro controller
- Any other special cases HIDTOVPAD supports that core RetroArch
  doesn't
- Parsing of HIDTOVPAD config file to add custom button mapping

== TESTING
Compiles. Haven't tested with a real Wii U. Probably doesn't work
though. I very likely have the threading bit wrong.
2017-12-30 04:39:44 +01:00
gblues
1657079c45 Start implementing HID polling thread
== DETAILS

Looking at the other HID USB drivers, it looks like the typical
implementation is to start up a background thread to do the
polling, rather than wait for RA to invoke the poll() method.

This commit sets up the skeleton of the background thread:

- The thread gets created in init()
- The thread gets stopped in free()

Right now the body of the thread is a 10ms sleep.

== TESTING

It compiles cleanly, and links. Don't know if it actually works.
2017-12-30 04:39:39 +01:00
gblues
7e56881b88 Some cleanups 2017-12-30 04:39:34 +01:00
gblues
3b92cce6bf Start wiring up the HID driver
- add alloc/free for necessary objects
- register callback with Wii U OS

Don't think I've put the unregister bit in, so this is very likely
broken.
2017-12-30 04:39:25 +01:00
Nathan Strong
e80d99dbae Delete controller_patcher; start on proper HID driver
== DETAILS

We discovered that the controller_patcher code was causing
the WiiU to intermittently crash when switching ROMs.

Changes:

- Completely extricates the controller_patcher code
- Create a skeleton wiiu_hid driver
- Wire up the build system to build/link it successfully

== TESTING

Has not been tested. Probably doesn't crash, since the
skeleton driver is just a copy of the null driver.
2017-12-30 04:38:57 +01:00
Twinaphex
c7c71cb01f Fix Apple build 2017-12-27 22:36:10 +01:00
Twinaphex
b1c0fe7d0d Fix CXX_BUILD for Apple 2017-12-27 22:33:32 +01:00
gblues
6904101c44 Clean up trailing whitespace
== DETAILS

Really simple code cleanup, because my editor flags trailing whitespaces
and it's pretty annoying.
2017-12-12 00:24:18 -08:00
twinaphex
f0c143766e Change to 256bit macros 2017-12-05 12:07:35 +01:00
twinaphex
e94300a581 Get rid of a lot of RARCH_INPUT_STATE_BIT_ macros - replace them
with BIT128_ equivalents instead
2017-12-05 09:22:56 +01:00
David Walters
a9451822b5 Improved handling of libusb hotplug capability (#5830)
* Improved handling of libusb hotplug capability

* Only deregister hotplug callback if registration happened.
2017-11-30 10:30:46 -05:00
David Walters
05578f0634 Show VID/PID values for unsupported devices. (#5825) 2017-11-29 15:56:18 -05:00
Brad Parker
5453853001 remove extra paren 2017-11-29 11:32:32 -05:00
Brad Parker
f41187df22 remove extra brace 2017-11-29 11:17:13 -05:00
Brad Parker
44b70efb68 style nits 2017-11-29 10:42:39 -05:00
Brad Parker
42e81dcef4 add back missing code from c5bdc02 2017-11-29 10:35:52 -05:00
Brad Parker
aa1f95b3d5 undo changes in c5bdc02 that reverted my previous commits: 34491a6 28c6237 1f58d9c 61bd9d7 2017-11-29 10:22:30 -05:00
David Walters
f09477d46a additional compile fixes 2017-11-28 10:36:16 +00:00
David Walters
c5bdc02d6f replace uint64_t with retro_bits_t* for pad buttons state 2017-11-28 10:04:34 +00:00
Brad Parker
61bd9d7d70 libusb: early return if we fail to get a config descriptor, otherwise the memory returned is invalid (and should not be freed either) 2017-11-27 11:30:29 -05:00
Brad Parker
1f58d9cd1f comment 2017-11-27 11:30:29 -05:00
Brad Parker
28c6237b47 FreeBSD: support libusb hid input driver 2017-11-27 11:30:29 -05:00
Brad Parker
34491a6025 libusb: prevent crash on driver deinit when there are no pad connections 2017-11-27 11:30:29 -05:00
Rob Loach
fa75f47995
Fix includes of input_config 2017-08-30 23:14:27 -04:00
Rob Loach
40f4d805a8 Fix non-existent include of input_config.h 2017-08-30 23:01:12 -04:00
twinaphex
612cb54cfe Merge input_hid_driver 2017-06-11 08:56:36 +02:00
twinaphex
c711749973 (iohidmanager_hid.c) Cleanups 2017-06-07 21:14:34 +02:00
twinaphex
126a5bf121 Use string_is_equal_fast/string_is_not_equal_fast 2017-05-16 04:00:37 +02:00
Twinaphex
aa2e7dc794 Silence warning 2017-02-26 03:53:05 +01:00
neville
fc2654cd0f (iohidmanager_hid.c) Silence a whole bunch of warnings 2017-01-29 20:20:43 +01:00
twinaphex
1b3225089e iohidmanager.c - Attempt to silence some warnings 2017-01-29 20:11:32 +01:00
twinaphex
96c8ca5a09 Header update #1 2017-01-22 13:40:32 +01:00
twinaphex
0354ced675 Style nits 2017-01-17 19:02:49 +01:00
twinaphex
e3e8796b2b (iohidmanager_hid.c) Stylistic cleanups 2017-01-15 21:13:01 +01:00
Twinaphex
1544a3d6e1 (OSX) Fix warnings 2017-01-15 21:07:15 +01:00
John Regan
4f352227ea OSX Joypad Improvements
This commit has two main changes to the OSX HID driver:

1.

Some joysticks have invalid/incorrect 'use' assigned to buttons and
axes. For example, my RetroUSB.com Genesis Retroport reports 8 buttons,
but they're reported as 1, 2, 3, 4, 1, 2, 3, 4, and my RetroLink
Gamecube-clone controller reports 2 axes with id 50.

OSX assigns each of these elements a unique cookie value, so it's still
possible to uniquely identify a button. Whenever a controller is
connected, the driver scans for all buttons and axes. When it identifies
a duplicate 'use' id, it reassigns it a new ID.

Whenever the input callback is called, it grabs the cookie value,
finds the input element with a matching cookie, and uses that element's
id instead of the one reported by the device.

The old joystick configs should not be broken by this - I'm using the
existing 'use' value wherever possible, and only changing it when it's
broken.

The 'faked' ids are done in a deterministic way, a joystick will never
have a button's 'faked' id change between launches of RetroArch.

2.

This enables HAT switch input.
2017-01-15 12:17:47 -06:00
twinaphex
ea3dd6a95b Set device name when autoconfig connect task fails for all
other input drivers too
2017-01-13 05:00:13 +01:00
twinaphex
103042de96 Rewrite task_autodetect.c 2016-12-31 07:43:34 +01:00
twinaphex
66f189dff6 (wiiusb_hid.c) Prevent crashes 2016-12-26 00:38:54 +01:00
twinaphex
aafae944cb Don't memset autoconfig_params_t 2016-12-17 14:26:13 +01:00
Twinaphex
db1f3c058a (iohidmanager_hid.c) No longer need to include configuration.h now 2016-12-16 12:36:01 +01:00
twinaphex
d9def056e7 The 'connect' task now sets the device name upon completion 2016-12-16 12:33:56 +01:00
twinaphex
62f5b2d3c3 The disconnect task now clears the device name 2016-12-16 12:20:31 +01:00
Dave Leaver
cd5a5c5fd7 iohidmanager_hid: Remove name from adapters when they are disconnected 2016-12-16 20:17:24 +13:00
twinaphex
e9f853ba93 Move (joykey == NO_BTN ) to input_joypad_driver 2016-12-11 08:44:55 +01:00
twinaphex
021559a877 Get rid of runloop.h dependencies inside input/ dir 2016-12-02 06:07:45 +01:00
twinaphex
70557fdee6 (Wii) Buildfix 2016-12-02 00:24:54 +01:00
Twinaphex
0d79bc754c (OSX) Buildfix 2016-12-01 22:51:46 +01:00
Brad Parker
23dd41a3cc missing ../ 2016-12-01 15:40:31 -05:00