Create explicit boards for Ganglion v2 and v3 firmwares #791
+512
−475
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.
This PR creates explicit boards for the Ganglion v2 and v3 firmwares.
Supporting two separate firmwares is necessary because some users have older Ganglion boards which require specialized hardware to upgrade the firmware. Most users with these older boards will not be able to upgrade. Newer Ganglion boards support OTA updates and can benefit from bug fixes in current firmware releases.
The current implementation attempts to use the device name advertised by the Ganglion board to determine if the v2 or v3 firmware is in use. This works fine on most platforms, but fails with CoreBluetooth on newer versions of macOS when using native BLE. These problems will likely become more prevalent as support for the Simblee module used in Ganglion has ended.
The proposed change classifies v2 Ganglion boards as legacy devices and creates separate IDs for these boards. The current Ganglion board IDs will default to the v3 firmware. Users who cannot upgrade can explicitly select the legacy firmware when starting a BrainFlow session. This allows users on newer versions of macOS to use the current firmware while maintaining support for legacy devices.