Repository navigation
Upgrade ESP32 Arduino to 3.3.12 and NimBLE-Arduino to 2.5.1 - #1
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
The firmware still pins ESP32 Arduino 3.3.10 and NimBLE-Arduino 2.5.0. Update CI and README to the stable 3.3.12 / 2.5.1 patches, add a host regression harness to CI, and document software coverage and the remaining physical checks in tests/VALIDATION.md.
Reviewed ESP32 3.3.11, 3.3.12, and the NimBLE 2.5.1 release and source comparison. The scan/client/server callbacks, subscription/write APIs, broadcast notifications and per-handle indications used here remain compatible; no production firmware changes are needed.
NimBLE's scan-response timer fix covers host reinitialization. TrainerBridge initializes NimBLE once and reconnects by restarting scans and reusing its client; this PR does not assume the upstream crash affects this project.
Validation
arduino-cli compile --warnings all --fqbn esp32:esp32:esp32 TrainerBridge, using the real pinned dependencies and Arduino CLI 1.5.2-rc.1.bash tests/run.sh: PASS. Executes the actual sketch and helpers with boundary doubles: module self-checks, scan retry timing, 20 simulated disconnect/reconnect cycles, failed connection/subscription, two-client telemetry routing and advertising, FTMS success/failure/timeout/late-response handling and originating-client indication routing.git diff --check: PASS.Limits and follow-up
Hardware tests have not run. The harness does not execute NimBLE/FreeRTOS internals or validate radio delivery, scan-response timer lifetime, concurrency or physical leaks. The validation notes include an ESP32/D100/Garmin/app checklist for repeated reconnects, simultaneous subscriptions, and real ERG/simulation/control recovery.
Existing FTMS behavior is unchanged and explicitly documented: cross-client opcode coalescing retains the latest handle; trainer disconnect clears pending transactions without immediately failing them; initial Request Control is attempted before the connection flag permits the write; trainer response opcodes are not matched against the pending opcode. These protocol concerns require separate work rather than being hidden in a compatibility update.
Dedicated patch upgrade PR; no merge performed.