Commit Graph

19 Commits

Author SHA1 Message Date
kunzjacq 44949b0bed new function hooks in KeyboardController class
in KeyboardController class:

- added a new hook, reportReaderFunction, to enable the client code to read raw incoming keybooard state reports (called from method new_data)
- added a new hook, modifiersChangedFunction, to enable the client code to be notified when modifiers state is changed but no key is pressed or released
- initialized all function pointers to zero in both KeyboardController constructors
- changed led state change behavior: leds are updated when keys are pressed, not when they are released, as with most keyboards (methods key_release and key_press)
- added hooks to be notified of key presses and key releases with oem codes instead of unicode codepoints (keyPressedRawFunction and keyReleasedRawFunction).
2018-09-02 09:44:32 -10:00
Kurt Eckhardt 51eea763d7 Fix/workaround for Gigabyte keyboard
The gigabyte keyboard has an N key rollover input, that is different than all of our current keyboards.

So this code tells (currently All) keyboards to choose their boot protocol, which gets us back to the standard boot definition.  Which alllows these keyboards to function like others.
2018-08-19 09:17:14 -07:00
Kurt Eckhardt c5edb1c25f Add Xbox One controller support
While the other Joystick objects currently supported by the USB Host
code are driven by HID data, the Xbox does not contain HID data and
instead works at the top level.

To handle this I made the Joystick object use multiple InHeritence like:
class JoystickController : public USBDriver, public USBHIDInput

This allowed me to have the object work either way.  This did add some
complexity in that some of the methods like  is the object connected
(The bool operator) had to be overwritten as both of the bases classes
had it.  In addition needed to update the other query functions to be
able to grab the data from mydevice or device depending on which type of
controller was connected.

Since this looked like a valid way, I then merged the Keyboard Extras
code that Keyboard and made it also do a similar multiple inheritance.
In this case however I restricted the HID top level report handle code
to only accept it if on the same object that claimed the keyboard.

The mouse test app was updated as well
2017-11-20 09:19:25 -08:00
Kurt Eckhardt d3e21b04c0 FIX - Keyboard LEDS
The main issue was I used a setup structure on the stack which turned into garbage.  Earlier I thought the data was copied, but it was not...

Found that fixing this resolved the earlier issue where I needed to defer the update.  So removed the defered code, plus use member variable for the one byte output instead of static variable.
2017-11-07 07:08:36 -08:00
Kurt Eckhardt a234bae99e Keyboard - Allow > 8 keyboard max report size
There has been at least one keyboard that does not report the report size !=8 that works...

So try to allow for any that report >=8  <=64 to work.
2017-10-31 15:40:18 -07:00
Kurt Eckhardt 704d511c81 PL2303 support
This commit should start to allow some Prolific PL2303 devices to work.
Tis device has a rather more complex initialization process than some
of the other devices.

I have tested this some with one device that I used to use to program
some older RS232 based boards plus talk to an SSC-32 device.
Test case is I am able to talk to SSC-32 and if I type in ver<cr>
It does properly return the version number.

The data I am seeing is pretty close to what
was documented in: https://gist.github.com/tommie/89011c5ac06553d5cdb8
as well as what the Linux driver outputs.

I also incorperated Frank's configuration options.
2017-10-31 11:06:12 -07:00
Kurt Eckhardt 4e2ea2d96e String buffers - Devices contribute buffers
instead of having each HUB have 7 buffers, which can eat up space.  We have each main object contribute currently one string buffer, which than when we initialize a Device_t we try to allocate one for it, likewise we release it when the Device is released.

Hopefully less memory needed.

Also updated such that the HIDInput classes can not retrieve these strings.

Changed test program to now also have list of HIDInput objects and when I detect a new one, I again print out info on it...
2017-10-19 14:57:52 -07:00
PaulStoffregen f1bb020282 Fix print() & println() conflict with Arduino Print class 2017-10-15 13:11:46 -07:00
Kurt Eckhardt dbe5292471 Keyboard HID extras plus map extra keys
This delta, adds an extra keyboard object to handle those keys that are not part of the main keyboard class.  In particular there are separate HID reports for some of the keys, such as Power keys, and multimedia keys.

These reports might be on separate Interface or in cases where the mouse and keyboard are on the same device, the extra reports may be on the Mouse Interface.

So far I have not tried to combine with Keyboard object as might require multiple inheritance which I would like to avoid.

Also I extended the special key mapping table to map several other keys like F1-12, Arrow, Home/end... To special values where the 0x80 bit is set.  I used the same values as used for the Arduino Keyboard library.  I did not use their defines as they used defines like KEY_F1, which already exists in core, but in core it is the scan code from the keyboard and not the end user value.
2017-10-12 10:27:41 -07:00
PaulStoffregen d3b6abe878 Keyboard LEDs and data parsing (Kurt & Frank) 2017-10-08 12:56:39 -07:00
PaulStoffregen f3d503259c Add public API for Keyboard driver 2017-03-07 07:22:57 -08:00
PaulStoffregen 5935deb8ce Device driver constructors compatible with UHS library 2017-03-06 04:36:48 -08:00
PaulStoffregen ea75a1c673 Rename header file to USBHost_t36.h 2017-03-05 21:33:29 -08:00
PaulStoffregen 0443ab8db6 Device drivers contribute the memory they will require 2017-03-05 15:48:50 -08:00
PaulStoffregen 3d918a3977 Turn off USB keyboard idle reports 2017-03-03 06:13:37 -08:00
PaulStoffregen 80225dfe22 Add to periodic sched using interval+offset & binary tree 2017-02-26 09:40:49 -08:00
PaulStoffregen 656765bac6 All debug printing through USBHost class 2017-02-18 12:03:10 -08:00
PaulStoffregen 57f958c368 Drivers claim interface & add Keyboard driver claim 2017-02-18 11:21:28 -08:00
PaulStoffregen 7756f2f4b7 Begin work on keyboard device driver 2017-02-18 06:09:28 -08:00