windows/bluetooth: Add support for nimble BLE to windows port.#7781
Open
andrewleech wants to merge 1 commit into
Open
windows/bluetooth: Add support for nimble BLE to windows port.#7781andrewleech wants to merge 1 commit into
andrewleech wants to merge 1 commit into
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #7781 +/- ##
=======================================
Coverage 98.46% 98.46%
=======================================
Files 176 176
Lines 22784 22784
=======================================
Hits 22435 22435
Misses 349 349 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
c7a260c to
91b8429
Compare
91b8429 to
35f5926
Compare
Contributor
|
This is an automated heads-up that we've just merged a Pull Request See #13763 A search suggests this PR might apply the STATIC macro to some C code. If it Although this is an automated message, feel free to @-reply to me directly if |
|
Code size report: |
6cfd095 to
25c277d
Compare
91c0b99 to
7f1c0f8
Compare
7f1c0f8 to
cda9067
Compare
1906cbe to
98a0b35
Compare
98a0b35 to
8d55fa2
Compare
Adds BLE support to the windows port via NimBLE (or optionally BTstack). Includes a windows-specific HCI UART transport using Win32 serial APIs, a BLE build variant, and the necessary build system integration. The HCI controller is configured via the MICROPYBTUART environment variable (defaults to COM3). Signed-off-by: Andrew Leech <andrew.leech@planetinnovation.com.au>
8d55fa2 to
d86d2db
Compare
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.
This was developed in conjunction with #7780 to provide support for nimble BLE on windows to the unix port.
This allows a usb/serial HCI controller to be used on windows to test and run bluetooth micropython code.
This has only been added to minwg / make based builds at this stage. The MSVC project has not been updated to match.
I suspect nimble builds may not be possible with MSVC due to a struct size issue that took quite a long time to debug.
Nimble uses struct size to test whether the correct HCI packet has been received, eg.
On linux/unix/arm builds
sizeof(struct ble_hci_ev_command_complete) == 4as theuint8_t return_params[0];is essentially ignored.On MSVC apparently this null array is apparently included as size 1, eg.
sizeof(struct ble_hci_ev_command_complete) == 5- and by default mingw matches MSVC behavior on this. This was causing the code above toreturn BLE_HS_ECONTROLLERerror instead of correctly processing the hci packet.I had to add the compiler flag
-mno-ms-bitfieldsto make mingw match "regular" gcc behavior - I don't know if a similar compile flag exists to make MSVC match gcc packed struct size - let alone whether the rest of the nimble codebase is at all compilable under msvc.