Commit Graph

120 Commits

Author SHA1 Message Date
ceb33 82e2cc7c73 set hid device registration deterministic (sorting by ascending location_id), this solve the issue where game with same vid and pid where sometime swapped by the OS 2018-03-30 10:43:54 +02:00
Olivier PARRA 8bff69eae8 1.[IOS9]Remove HID entry from menu as IOKIT is not available 2.[OSX]Add robustness and determinism to HID buttons detection code (add controller buttons in a sorted list) 2018-01-25 02:20:52 +01:00
twinaphex 3fc2ddb8d2 (IOHIDManager) Add improvements - https://github.com/libretro/RetroArch/issues/4816#issuecomment-359145035 2018-01-22 06:48:56 +01:00
gblues 0ae7ffe0d3 Clean up dumb compile warnings, fix crash bug
== DETAILS

- the free() method of the hid_driver_t interface needs its
  parameter defined as const in order for the compiler to stop
  complaining about losing const-ness.
- if a joypad list is created with <MAX_USERS slots in it, the
  destroy() function will crash because it assumes there are MAX_USERS
  entries.

  To do this, the allocate function creates n+1 slots, and gives the
  last slot a canary value that the destroy() method can then watch for
  when iterating through the list.
2017-12-30 04:43:27 +01:00
gblues 982d6893b0 Set the send_control pointer on the drivers
== DETAIL

One minor detail missed in the last commit: actually putting the
send_control function into the driver declaration. Woops.

Not doing the Wii U because it will be using the other methods.
2017-12-30 04:41:07 +01:00
gblues 5b37ced196 Update HID pad driver architecture
== DETAILS

The current HID implementation assumes a very low-level USB library
is being used. This causes a problem on Wii U, because the Cafe OS
only exposes a high-level interface.

To get these functions exposed to the HID pad drivers, I had to make
three changes:

1. I added the legacy "send_control" function to the HID driver
   interface
2. I modified the signature of pad_connection_pad_init() to send the
   driver pointer instead of the function pointer
3. I updated the HID pad drivers to keep the pointer to the driver
   instead of the function pointer, and updated the calls into the
   send_control function as appropriate
4. I updated the HID drivers to use the new pad init signature

== TESTING
Untested, in theory it should work without a hitch because at this
point all I've done is abstract things a little. I still need to
update the HID pad drivers to use the Wii U-specific calls as
appropriate.
2017-12-30 04:41:01 +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
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
Brad Parker 44b70efb68 style nits 2017-11-29 10:42:39 -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
Rob Loach fa75f47995
Fix includes of input_config 2017-08-30 23:14:27 -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
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 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 0d79bc754c (OSX) Buildfix 2016-12-01 22:51:46 +01:00
twinaphex d3c22cb0e4 Move input/input_autodetect.c to tasks/task_autodetect.c 2016-12-01 20:38:20 +01:00
twinaphex 76d0380e45 Rename input_autoconfigure_joypad to input_autoconfigure_connect 2016-12-01 18:57:44 +01:00
twinaphex e689d55414 Rename autoconfig functions 2016-12-01 18:52:34 +01:00
twinaphex dad26e0956 Header cleanup 2016-11-05 14:10:30 +01:00
twinaphex 9ee5931c5e Nits 2016-09-14 23:37:20 +02:00
twinaphex 4571dc33fc header include cleanups 2016-09-05 17:29:19 +02:00
twinaphex 40023833e0 (IOHIDManager) Plug another potential leak 2016-05-25 02:35:13 +02:00
Twinaphex c1e82d3f1a (IOHidManager) Fix adapter leak 2016-05-24 14:01:46 +02:00
twinaphex 4e74a990d4 (IOHIDManager) Free some resource leaks 2016-05-24 13:48:02 +02:00
twinaphex d3aaa7ac88 Style nits 2016-02-05 14:42:20 +01:00
twinaphex 347a18cb30 Update input headers 2016-01-10 04:33:01 +01:00
twinaphex 697351ee67 (input) Use string_is_empty 2015-12-26 07:54:17 +01:00
twinaphex d15ad86705 Create hid_driver_get_data 2015-11-29 21:11:57 +01:00
twinaphex 074f14b132 Add verbosity.c/verbosity.h 2015-11-23 12:03:38 +01:00
Twinaphex e88fff9985 (iohidmanager_hid.c) Fix header dependencies 2015-11-16 06:49:40 +01:00
Twinaphex 5dee9838c4 (iohidmanager_hid.c) remove Cocoa dependencies 2015-11-16 06:48:02 +01:00
twinaphex 08bb85e509 (OSX) apple->buttons refactored away 2015-11-16 06:46:29 +01:00
twinaphex 018db7c081 (IOHIDManager) buildfix 2015-11-16 06:40:07 +01:00
twinaphex 2fa91ba26c (IOHIDManager) Make axes code independent from CocoaTouch 2015-11-16 06:32:25 +01:00
Twinaphex db35a28e50 Revert "Refactor slots to be a part of input_hid_driver.c now"
This reverts commit 646ded9d1c.
2015-11-16 03:48:51 +01:00
twinaphex 646ded9d1c Refactor slots to be a part of input_hid_driver.c now 2015-11-16 03:39:40 +01:00
Arche-san b9a0793444 os x hid : reorder axis (keep compatibility with others platforms) 2015-11-15 13:11:40 +01:00
Arche-san c47254e64b os x : add right stick support for xbox 360 gamepad (and others hid gamepad with 6 axes instead of 4) 2015-11-14 18:04:07 +01:00
Twinaphex 9bd302b4ec (iohidmanager) Buildfix 2015-10-02 18:24:33 +02:00
twinaphex 87d44af218 Static code analysis cleanups 2015-09-29 18:08:33 +02:00
twinaphex e986b9e42a Static code analysis cleanups 2015-09-29 17:35:28 +02:00
twinaphex a79b571d7b Static code analysis fixes 2015-09-28 16:20:26 +02:00
twinaphex e654c5cb65 Header cleanups 2015-09-05 20:53:56 +02:00
twinaphex 1489839384 (OSX) Add HAVE_COCOA and HAVE_COCOATOUCH ifdefs to iohidmanager_hid.c 2015-08-01 05:19:44 +02:00
slotek 7431529e89 Restore generic Mac OS X joypad functionality 2015-07-29 10:12:31 -06:00
twinaphex b679f75f91 (iohidmanager_hid.c) Cleanups 2015-06-25 18:27:28 +02:00
Twinaphex 227c986143 More CXX_BUILD fixes 2015-06-25 17:40:09 +02:00
twinaphex 123b85dbb0 Change returntype of pad_connection_init 2015-06-13 01:40:55 +02:00
twinaphex 1a5e16ff99 Create input_config_autoconfigure_disconnect 2015-06-03 18:55:04 +02:00
twinaphex f02ef849ae (HID) Fixup 2015-05-06 04:10:49 +02:00
twinaphex f57132ff6f Protect against failed pad init 2015-05-06 04:03:00 +02:00
Twinaphex 1fb00bdac3 Add HAVE_IOHIDMANAGER to qb/config.libs.sh 2015-04-20 12:04:31 +02:00
Twinaphex f506e722b1 (Apple) Rename apple_hid to iohidmanager_hid 2015-04-20 11:52:10 +02:00