Releases: afpineda/OpenSourceSimWheelESP32
New performance improvement
- The code for active wait has been revised for even better accuracy.
- Documentation updates.
Full Changelog: 7.1.0...7.1.1
Improved performance for LED strips
- The code for LED strips no longer require context switching to display all pixels.
Active wait is used instead with nanosecond precision.
This should improve performance. - Active wait is also more accurate,
improving performance a bit for button matrices,
analog multiplexers and shift registers. - Documentation updates.
Full Changelog: 7.0.2...7.1.0
Bug fixes (again)
- Important bug fixes affecting some "ready-to-deploy" designs based on ESP32S3 boards.
- Some "ready-to-deploy" hardware designs have changed:
"Setup5" and "Setup7".
Full Changelog: 7.0.1...7.0.2
Bug fixes
Major release for testability, extensibility, maintainability and new features
-
TL;DR
- The code will check that you are not doing stupid things in your custom firmware.
- You will have to rewrite your custom code, but the setup is more intuitive.
- New features:
- Virtual neutral gear.
- Configurable default input map.
- Huge improvement in testability, extensibility and maintainability.
-
This is a huge rewrite that affects the system architecture and most of the code base.
-
The code will perform new checks to prevent a non-functional custom firmware, regarding:
- Unusable, reserved, incapable, reused or non-existent GPIO pins.
- Invalid input numbers.
- Mapping non-existent hardware inputs to firmware features.
- Incompatible firmware features.
-
Error reporting no longer requires configuration in the Arduino IDE.
-
Testability and extensibility improved with new architectural patterns:
- Publish-Subscribe.
- Dependency injection.
-
Half of the code has been more or less rewritten to remove dependencies
with embedded libraries. This has deep consequences:- This code can compile and run in a PC workstation,
container or virtual machine. - Some test units are now automated, and do not require ESP32 hardware.
- New hardware independent test units are available.
- A custom CD/CI chain has been developed to take advantage of this.
No external build tools are required other than the GNU C++ compiler.
- This code can compile and run in a PC workstation,
-
The old C-style code was rewritten in modern C++ style.
User-defined code is more intuitive and expressive.
Global variable declarations are no longer required
(one less point of failure). -
A "virtual" button is available (optional).
You can map a combination of hardware inputs to this "virtual" button.
This is intended for shift paddles and neutral gear.
You can map the engagement of both paddles to a neutral gear button. -
Now you can customize a default input map.
This way, you are not forced to use the full range of 128 gamepad buttons
if you only have a few physical buttons.
This feature does not interfere with the ability to set a different input map
using the companion app. -
Each UI instance runs on its own thread with its own stack size.
-
The telemetry display using RGB LED strips has been removed,
as pixel control is a better option. -
Analog multiplexers, button matrices and shift registers
now actively wait for signal propagation with nanosecond precision
and no context switching.
This should improve the responsiveness of the switches. -
A migration guide is available.
Thanks to @ArtTales for a lot of suggestions.
Full Changelog: 6.11.4...7.0.0
Fixed wrong queue size for rotary encoders
The queue size for rotary encoder events should be 64, but it was 8.
Full Changelog: 6.11.3...6.11.4
Pixel control performance boost
- The HID specification for pixel control has been changed to
remove the use of feature reports forpixels::show()
.
For unknown reasons, feature reports perform worse than output reports in Windows 11.
For this to work, you will need to update the SimHub plugin as well. - BatchCompile.ps1 has been updated for a better look.
Full Changelog: 6.11.2...6.11.3
Minor bug fix
- Fix minor compiler error on ESP32-C3 boards.
- Battery capacity is explicitly advised.
- Other minor documentation updates.
Full Changelog: 6.11.1...6.11.2
Bug fix
Improved rotary encoder behaviour
- For better host-side detection of rotation events,
the behaviour of rotary encoders has been improved. - The default pulse width of the rotary encoders
has been increased to 100 ms pressed and 100 ms released. - The pulse width of all encoders can now be set as a time multiplier
using HID reports (x1, x2, etc.). - The new feature has been synchronously updated in the companion app.
- All relevant unit and integration tests have been updated.
- Minor documentation updates.
Full Changelog: 6.10.0...6.11.0