Trying out using the extended Inquiry data search instead of the real simple one. This allows us to hopefully get the name of the device as part of this, which now allows the PS4 to know it is a PS4 on the Pair type constructor.
Still WIP to understand XBox one...
Support to pair PS3 if it knows the BTADDR and user presses select and PS button and plugged in USB.
Remembers remote name, and tries to get it when PAIR version of code is running. (Currently fails).
Does some mapping of PS3 Bluetooth data to match USB HID data.
Warning: as part of debuggigng why joystickType value was changing, I changed the class to make it a function you call instead of just a member variable. Should mark it inline... I think I caught all of the places in example code that was accessing it. If we find we want ability for user probram to update it, should add another member to explicityly set it.
I have some PS3 support working... Hope I did not break PS4.... ;)
Also This assumes that you did a bind of the dongle to PS3 external, no support yet, I did this on RPI3...
Rumble needs work!
Hopefully did not break other things...
Find that the PS4 requires you to ask to connect versus some/most other devices will do the request...
Also found issue without printing, where adding a delay(1) in a couple of places appears to help when Serial1 printing is not on
At least with the Tecknet mouse...
There are issues with binding when already trusted... Need to debug, also likewise if it times out and tries to restore the connection, but at least the beginning is getting some values
I put in hopefully the start of Bluetooth Mouse.
However the one mouse I have is not even trying to talk to the dongle, so not have not seen any data to verify that it is correct and to see the actual data returned...
There are some of the BT dongles that have a device type of 0xff instead of the correct one, so added table of VID:PID to check against, currently only one in list. If it is this pair the Bluetooth system will claim it.
Updated some of the init code for the CP210x.
Before it worked with the one USB to serial adapter I had, but
we foudn it id did not work with Adafruit USB adaptor nor with their metro boards
The first gigabyte fix, was to always force the keyboard into boot protocol mode, which appeared to work well for all of the keyboards I tried.
Unforationally it caused issues with some wireless keyboard/mouse combo packages, including some logitech and some microsoft keyboards.
This version instead, I created a list (currently only one vendor id), of vendor id:product id, that need to be forced into boot mode. Knowing that if there is one keyboard vendor with this N key rollover feature, there are probably others. So while this list can be expanded, this requires users to update library. So added a method forceBootProtocol method to keyboard class that allows the user to try it out without needing to update the library sources.
The mouse test program has example of either setting it before the keyboard is initiated, as well as another way that when a connection is found it asks for the vendor id, and if it is the one of my gigabyte keyboard, it calls the function then.
While doing this I found some of the query functions like idVendor on the keyboard class would not compile as the keyboard object has multiple inheritence and both base classes have this. So like the joystick objects I added these to the top level function and these functions will direct the calls to the approrpriate places.
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.