Releases: ricardoquesada/bluepad32
Releases · ricardoquesada/bluepad32
Bluepad32 v3.0.0-rc1
[3.0.0-rc1] - 2022-02-06
Changed
- Bluetooth: To err on the safe side, new connection have a bigger window time to connect,
and re-connects (incoming connections) a slightly smaller window. I'll revisit this in the future. - Wii: Accelerometer mode works as if the Wii Remote is being inside a Wii Wheel.
This is because the "old" mode was not rather difficult to use, and using it for the
Wii Whell is very usable in C64 racing games.
Fixed
- Bluetooth: use page scan / clock offset if available when requesting name.
This used to be the case in v2.5, but disabled during the big refactoring. - Unijoysticle: correclty set Player LED when second player connects
- Unijoysticle: reject new connections if two gamepads are already connected.
- Unijoysticle: On DualSense gamepads, update Player LEDs when gamepad connects.
- Nintendo Switch: Pressing "system" button has a delay of 200ms before being able
to press it again. This helps switching the Joystick port in Unijoysticle. - Nintendo Switch: While setting up the controller, each step has its own timeout.
This helps setup clones that might need certain steps in order to enable report 0x30. - 8BitDo: Added SNES30 to the DB. It correctly identifies it as 8BitDo gamepad.
- MightyMiggy: All internal functions declared static to avoid collision with other projects.
Bluepad32 v3.0.0-rc0
[3.0.0-rc0] - 2022-01-31
New
- Devices: Support for feature reports.
- DualSense / DualShock 4: add support for get firmware version and calibration values.
Although calibration is ignored ATM. - Switch JoyCon clones: Added support for clones (at least some of them).
- DualShock3: Add partial support for DualShock 3 clones, like PANHAI.
- 8BitDo Arcade Stick: Add support for it.
It keeps responding to inquiries even after the device is connected. - API to change mappings. Although this feature is not complete yet.
Missing save/restore, BLE service. Consider it WIP.
Changed
- DualSense: Player LEDs are reported in the same way as PlayStation 5.
- Switch: Don't turn ON Home Light, 8BitDo devices don't support it,
and might break the gamepad setup sequence.
Change order of setup commands.
Change mappings in JoyCons so that it is possible to press "System" button. - Xbox: Highly improved reliability (based on the new auto delete code)
Compared to before, it is like 10x more reliable, but the Xbox Wireless Controller
is still somewhat unreliable. - API: renamed some functions / typedefs
- uni_hid_parser() -> uni_hid_parse_input_report()
- report_parse_raw_fn_t -> report_parse_input_report_fn_t
- These functions are "safe". Can be called from another task and/or CPU.
The suffix "_safe" were added to their names:- uni_bluetooth_del_keys()
- uni_bluetooth_enable_new_connections()
- Arduino: Seat assignment simplified.
- Bluetooth: request device name for incoming connections.
- Bluetooth: Replaced the old "auto_delete" code, which used "counts", with
one based on a timer. New code includes incoming connections. - Bluetooth: SDP query + state machine refactor.
SDP query timeout using btstack timers instead of ad-hoc one.
SDP query moved to its ow file.
Perform VID/PID query before HID-descriptor.
If HID-descriptor is not needed, don't do the query. Reduces connection latency.
DualShock 3 and Nintendo Pro Controllers are guessed by their names
The state machine was rewritten. Although it is still complex, it is much
easier to understand. In the process, many bugs were fixed.
Gamepad name is requested to all gamepads. If it fails, a fake one is assigned.
This is because the "name" is now used to identify certain devices.
Switch Pro Controller clone improved.
Re-connection works in many devices, including Switch clones!
(but not all devices support reconnection yet).
Overall, cleaner code. - Bluetooth: Add set_event_filter.
When doing the inquiry, only devices with a Class Of Device HID are shown.
This reduces the noise in the console - Tested with latest ESP-IDF v4.4 (eb3797dc3ffebd9eaf873a01df63aed89fad58b6)
Fixed
- Bluetooth: add log about Feature Report not being supported ATM.
- Bluetooth: Incoming connections are more reliable. Using HCI periodic inquiry mode.
- Bluetooth: fix when parsing device name. Does not reuse previous discovered device.
- DualSense: doesn't not disconnect randomly
- Switch: Don't enable "home light" at setup time.
8BitDo gamepads don't implement it and might not be able to finish setup.
Fixed mappings of button "+" in report 0x30.
Bluepad32 v2.5.0
[2.5.0] - 2022-01-08
New
- tools/pc_debug: Integrate into Gitlab CI
- tools/fw: add --clean argument to build.py
- uni_bluetooth: add uni_bluetooth_set_enabled().
Allows users to enable/disable accepting new gamepads in runtime.
Changed
- Update BTStack to 1.5.1. Using hash: d778e7488c62d361fc176e8ae40c0d6bc8b00089
- Doc: Updated to use idf.py instead of make
- tools/fw: build.py uses idf.py instead of make
- Kconfig: The max number of connected gamepads can be changed from menuconfig
Default changed from 8 to 4.
Fixed
- NINA/AirLift:
- Disconnect works as expected.
- Replaced custom "queue" code with FreeRTOS xQueue
- tools/fw: Remove sdkconfig before building another platform
Bluepad32 v2.4.0
[2.4.0] - 2021-12-26
New
- Arduino platform:
This time for real. Generic ESP32 modules are supported.
It is possible to have Bluepad32 + Arduino in a generic ESP32 module.
Supported via ESP-IDF toolchain.
A "bluepad32_arduino" ESP-IDF component was added with helper classes. - Bluepad32 is a ESP-IDF "component":
It makes easier to embed Bluepad32 in other projects. - BLE: WIP. For the moment it is disabled.
Changed
- Update BTStack. Using hash: 0f2a810173d1d70943d1c915bffd6f9b1171e8f6
- Update ESP-IDF to latest v4.3 version. Using hash: da6c5be6c15e1c1854d91787fa166f426568d678
- idf.py: uses new ESP-IDF cmake functions, works as intented
- sdkconfig: removed. Using sdkconfig.defauls now. Easier to mantain.
- sdkconfig: coredump is stored in flash, and not dumped in UART console.
- Kconfig: Moved most uni_config.h defines to Kconfig
- uni_conn: Placed connection variables in uni_conn instead of having them in uni_device.
uni_device has a uni_conn_t now. - clang-format: switched to 4-space indent, 120-column-width
Fixed
- crc32_le() fixed. ESP32 does not call our code. Fixes core dumps and other related crc32 features.
- Unijoysticle: Turn off LEDs when gamepad disconnects.
- core: When a gamepad disconnects, it resets it state, allowing re-connecting it again (issue #1)
Bluepad32 v2.3.0
[2.3.0] - 2021-11-13
Changed
- Unijoysticle: Gamepad 2nd & 3rd buttons swap. "X" is 2nd button, and "Y" is 3rd button
- Update gamepad database from SDL. Using hash: 7dfd22ac5ef60c730d7900053b64e8430e08a29d
- Update BTStack. Using hash: 4ac37295456dc9203a99c17ee4649b7e06238983
- Update ESP-IDF to latest v4.2 version. Using hash: 047a5bf2f7e121077740e7ea59e616718d417fed
Bluepad32 v2.2.1
[2.2.1] - 2021-07-24
Added
- NINA/AirLift: Add "Connection Status" method so that WiFiNINA's CheckFirmwareVersion
sketch works unmodified.
Changed
- NINA/AirLift: Return "1" (instead of "0") when transaction is Ok.
- NINA/AirLift: Improved documentation
Bluepad32 v2.2.0
[2.2.0] - 2021-07-17
Added
- New platform: NINA.
- Boards like Arduino Nano RP2040 Connect are supported
- Airlift & NANO share the same code.
- Protocol was update to be more friendly with new NINA commands, that were not present on
Adafruit Airlift firmware
Changed
- Using bstack v1.4.1
Bluepad32 v2.1.0
[2.1.0] - 2021-06-25
Added
- Nintendo JoyCon support: Both Left and Right JoyCons are supported.
Each one is its own controller. Should be used in Horizontal position.
Changed
- Using esp-idf v4.2
- Using bstack v1.4
- Nintendo Switch:
- "+" is used a "Home" button, instead of "Capture"
- Code is cleaner, easier to read.
Fixed
- Improved Android gamepad support, including support for SteelSeries Stratus Duo
Bluepad32 v2.0.0
[2.0.0] - 2021-05-23
Changed
- No changes. Just renamed v2.0.0-rc0 to v2.0.0
Bluepad32 v2.0.0-rc0
[2.0.0-rc0] - 2021-04-09
Added
- New platform: MightyMiggy, a new platform that targets Commodore Amiga
- uni_hid_device: controller_subtype: populated by each "driver".
Sets in which "mode" or which attachment the driver has.
For the moment only used for Wii attachments. - device_vendors: VID/PID for 8bitdo Zero 2 and TUTUO (a PS4 clone)
- ds4: explicitly require Stream mode at setup time.