Good morning @defragster -
Actually most all of the changes for XBox and PS3 were reasonably long ago... Currently the only changes pending are
associated with Bluetooth, where before I had a single set of variables associated with the connection information between an active paired device and the Bluetooth object,
I instead made those into an array of values as to allow multiple devices to use the Bluetooth object at the same time.
Example: I have had a Bluetooth keyboard and a Bluetooth Mouse working at the same time, just like I have currently working on my PC....
But I totally understand not pulling that in until after this next release... So there are a few changes on that branch on trying to get the Nintendo Switch controller to work.
Yes - There are complications with trying to support all of these devices at the same time.
You already have the choice in your sketch to have your own device objects, that like some of our higher level objects like Joystick, Mouse, Keyboard, are derived from the building blocks, like the low level device, or HID device, or BlueTooth HID device...
And yes you can maybe make that code easier, if you restrict it to a specific piece of hardware.
This is sort of what the USB Host Shield code does, where for example your sketch has to decide which actual device you are using and how it is connected. Example instead of saying I want a joystick. You instead say I want a USB PS3 or a Bluetooth PS3 or USB PS4... Which can work well, but I personally prefer saying I want a joystick... And then adapt to which one that is plugged in.
Also you run into the issues, like with Bluetooth, where PS3 did not follow the BT standards and did not properly work on most systems. Which is why there are several drivers for systems out there to support it. Then later hacks were added into many/most Bluetooth drivers to handle them.
And yes we can probably greatly enhance this system, by having a better understanding of the many different Bluetooth subsystems and standards and using them to properly talk to and pair with devices. A lot of the current code was done by reverse engineering several of the devices until they worked... But there are still several that don't, Example with XBox One is using a different section for pairing than we have implemented yet. Likewise for my Microsoft Sculpt Mouse, which also communicates at the 480mhz I think so I can not capture their communications.
But I would suggest that we do some major rework of the Bluetooth as I don't like how I setup the constructor for pairing or not pairing, like the host shield code did, but would rather have the ability for UI to decide to go into pairing mode or not. Plus a better understanding of the different pairing steps that we should take.
But in the mean time one can reduce it down to building blocks you wish to use. By simply implementing your own top blocks
Sorry I know the above is clear as mud!
Kurt