Add support for Shimano DI2 and SRAM AXS as controllers #120
+83
−0
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Overview
This PR adds support for Shimano DI2 and SRAM AXS cycling shifters as controllers in SwiftControl, addressing the feature request in the issue. Users with these electronic shifting systems can now use their shifter's special function buttons to control training apps like MyWhoosh, Rouvy, and others.
What's Changed
New Device Support
Shimano DI2
SRAM AXS
Implementation Details
Both device classes follow the established pattern used by existing devices (Elite Square, Wahoo Kickr Bike Shift):
BaseDevicewith protocol-specific BLE handlinghandleButtonsClicked()actionStreamInternalfor troubleshootingFiles Added
lib/bluetooth/devices/shimano/shimano_di2.dart- DI2 device implementationlib/bluetooth/devices/sram/sram_axs.dart- AXS device implementationFiles Modified
lib/bluetooth/devices/base_device.dart- Added device detection and BLE service UUIDsREADME.md- Added DI2 and AXS to supported devices listTROUBLESHOOTING.md- Added configuration and troubleshooting guidanceImportant Notes
📝 User Requirements:
Testing
Statistics
Closes #[issue_number]
Original prompt
Fixes #108
✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.