Commit Graph

37 Commits

Author SHA1 Message Date
Raphael Assenat c2fd3a10ba Need one current_pad_type var. per channel 2016-11-27 11:15:13 -05:00
Raphael Assenat bbefc8203c Prevent freeze if host only polls one endpoint
Each joystick has its own interrupt endpoint, and the main loop
used to wait until each became ready (i.e. Serviced) in turn.

On some systems, when only one joystick is in use, only one endpoint
is polled. The inactive endpoint therefore never became ready and
the mainloop would freeze.

Rewrote part of the loop to prevent this. New flow:

1) Wait until it is time to poll the controllers
(based on current poll frequency setting)

2) Wait until either endpoints is ready.

3) Write data to first endpoint if ready, otherwise skip.

4) Write data to second endpoint if ready, otherwise skip.
2016-11-02 21:46:52 -04:00
Raphael Assenat d7bdf59860 Need to initialize stuff *after* knowing the number of players. 2016-10-23 16:15:01 -04:00
Raphael Assenat bb9e6dce17 Initialize context for hid set/get report 2016-10-17 22:21:58 -04:00
Raphael Assenat 81662cef2a Update copyright year 2016-10-10 15:01:22 -04:00
Raphael Assenat 96bd132b66 Give equal priority to both controllers! 2016-10-10 14:53:40 -04:00
Raphael Assenat f6e4281321 Dual controller now available as a configured flavor 2016-10-10 14:48:42 -04:00
Raphael Assenat 4ecc3f571e Multi-player support complete
Works, but very light testing so far
2016-10-10 14:20:14 -04:00
Raphael Assenat fb43524d34 Update gcn64txrx code for multiple channels 2016-10-09 16:17:56 -04:00
Raphael Assenat 1fcfe8b594 Implement personalities
./wait_then_flash.sh atmega32u2 $HEXFILE
2016-08-22 23:18:47 -04:00
Raphael Assenat 158fc4fdca Device descriptor in RAM 2016-08-22 22:00:54 -04:00
Raphael Assenat 553598ab64 usb usbpad_init 2016-08-22 21:57:21 -04:00
Raphael Assenat b9a6f23607 reduce HID max packet size to 32 2016-05-28 00:17:43 -04:00
Raphael Assenat 3ec1c0b711 Version 3.2 strings and PID 2016-05-22 17:33:26 -04:00
Raphael Assenat ea5d5cf35d Updated MCU port default values (clock) 2016-01-22 00:05:36 -05:00
Raphael Assenat 019301b7b2 Fix null pointer dereference 2015-12-08 21:54:08 -05:00
Raphael Assenat 23f10866e9 GPLv3, Copyright updates, whitespace clean up 2015-12-06 21:55:06 -05:00
Raphael Assenat 4a6ccfb448 Gamecube hotplugging infrastructure 2015-12-06 16:36:33 -05:00
Raphael Assenat e033576104 error count should be init. to zero 2015-11-02 21:52:32 -05:00
Raphael Assenat a56c4eef4e Add error counting (for controller swapping) 2015-10-31 15:58:53 -04:00
Raphael Assenat 5ff36596bb Implement get_controller_type 2015-10-31 01:39:24 -04:00
Raphael Assenat b7b07a37ee Do away with the gcn64 work buffer (saves more memory!) 2015-10-28 23:30:26 -04:00
Raphael Assenat cb9be3f604 Honor the poll rate setting even without a controller present 2015-10-27 22:10:30 -04:00
Raphael Assenat 6fafb86d46 Use a timer for controller polling interval 2015-10-17 18:34:11 -04:00
Raphael Assenat 5502bfd418 Implement main in state machine form
- Check if interrupt send would block
2015-10-17 17:44:14 -04:00
Raphael Assenat 54196a0d76 Move more logic from main to usbpad, implement serial from eeprom 2015-10-17 17:21:22 -04:00
Raphael Assenat 0627841025 Channels for raw SI commands
Configurable poll interval
2015-09-09 21:41:41 -04:00
Raphael Assenat 3b935d12fc Implement hid data interface for config and special functions 2015-08-23 02:51:10 -04:00
Raphael Assenat 73ff27da26 misc 2015-08-22 00:46:19 -04:00
Raphael Assenat 290588dbd5 Use gcn64_detectController to detect N64 vs Gamecube controllers 2015-08-21 23:31:50 -04:00
Raphael Assenat 829ba2b560 remove unused code 2015-08-21 23:23:51 -04:00
Raphael Assenat f29ced5298 N64/Gamecube controller detection 2015-08-21 00:17:07 -04:00
Raphael Assenat a07c8cbd70 Use new gampad data and usbpad 2015-08-20 23:39:54 -04:00
Raphael Assenat bc55a51cf7 Cleanup report descriptor a bit.
- No longer an extra button 0 in linux
2015-08-18 23:24:23 -04:00
Raphael Assenat a84b70c369 Start bootloader by USB message 2015-08-16 01:59:38 -04:00
Raphael Assenat 27840d9bcf printf_P to save memory 2015-06-14 00:48:22 -04:00
Raphael Assenat c59242383f WIP 2015-06-13 23:44:21 -04:00