-
-
Notifications
You must be signed in to change notification settings - Fork 8.6k
windows/bluetooth: Add support for nimble BLE to windows port. #7781
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #7781 +/- ##
=======================================
Coverage 98.38% 98.38%
=======================================
Files 171 171
Lines 22297 22297
=======================================
Hits 21936 21936
Misses 361 361 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
c7a260c to
91b8429
Compare
91b8429 to
35f5926
Compare
|
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
cda9067 to
1906cbe
Compare
1906cbe to
98a0b35
Compare
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.