Skip to content

Offload BLE HCI transport to spi for Nina based devices#410

Merged
pennam merged 13 commits intoarduino-libraries:masterfrom
pennam:spi-offload-rebased
Feb 24, 2026
Merged

Offload BLE HCI transport to spi for Nina based devices#410
pennam merged 13 commits intoarduino-libraries:masterfrom
pennam:spi-offload-rebased

Conversation

@pennam
Copy link
Copy Markdown
Contributor

@pennam pennam commented Aug 28, 2025

No description provided.

@codecov
Copy link
Copy Markdown

codecov Bot commented Aug 28, 2025

Codecov Report

❌ Patch coverage is 50.00000% with 1 line in your changes missing coverage. Please review.
✅ Project coverage is 15.26%. Comparing base (2beed7b) to head (46ed027).
⚠️ Report is 14 commits behind head on master.

Files with missing lines Patch % Lines
src/local/BLELocalDevice.cpp 50.00% 1 Missing ⚠️
Additional details and impacted files
@@           Coverage Diff           @@
##           master     #410   +/-   ##
=======================================
  Coverage   15.26%   15.26%           
=======================================
  Files          29       29           
  Lines        3681     3681           
=======================================
  Hits          562      562           
  Misses       3119     3119           

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@per1234 per1234 added type: enhancement Proposed improvement topic: code Related to content of the project itself labels Aug 29, 2025
nina based devices will be supported through nina spi transport
changing the macro from exclusion to explicit inclusion
Since automatically excluded from previous exclusion preprocessor if
Since in the next version for BLE we are delivering HCI commands through
spi we don't need to restart the nina device for ble to run, thus
removing those commands from this library
@fabik111 fabik111 force-pushed the spi-offload-rebased branch from 5915fa2 to c5f8ae4 Compare January 7, 2026 15:14
@gibix gibix mentioned this pull request Feb 5, 2026
@pennam pennam force-pushed the spi-offload-rebased branch from c5f8ae4 to b7dfa8d Compare February 23, 2026 13:23
@pennam pennam marked this pull request as ready for review February 23, 2026 13:25
@pennam pennam force-pushed the spi-offload-rebased branch from fc8d3ac to 82604ad Compare February 23, 2026 13:26
@github-actions

This comment was marked as outdated.

@github-actions

This comment was marked as outdated.

@pennam pennam force-pushed the spi-offload-rebased branch from e785860 to 443582c Compare February 23, 2026 15:55
@github-actions

This comment was marked as outdated.

@github-actions

This comment was marked as outdated.

@andreagilardoni
Copy link
Copy Markdown
Contributor

andreagilardoni commented Feb 24, 2026

Tested with giga with mbed core on 46ed027 ✔️
Tested with MKRWiFi1010 on 46ed027 ✔️
Tested with portentac33 with zephyr core on 46ed027 ✔️
Tested with portentac33 with renesas core on 46ed027 ✔️
Tested with UNO Q with zephyr core on 46ed027 ✔️
Tested with UNO R4 WiFi with renesas core on 46ed027 ✔️
Tested with giga with zephyr core on 46ed027 ✔️

@github-actions
Copy link
Copy Markdown

Memory usage change @ 46ed027

Board flash % RAM for global variables %
arduino:esp32:nano_nora 🔺 0 - +68 0.0 - 0.0 0 - 0 0.0 - 0.0
arduino:mbed_giga:giga 🔺 0 - +112 0.0 - +0.01 0 - 0 0.0 - 0.0
arduino:mbed_nano:nano33ble 🔺 0 - +48 0.0 - 0.0 0 - 0 0.0 - 0.0
arduino:mbed_nano:nanorp2040connect 🔺 +4235 - +4348 +0.03 - +0.03 🔺 +164 - +180 +0.06 - +0.07
arduino:mbed_nicla:nicla_vision 🔺 0 - +40 0.0 - 0.0 0 - 0 0.0 - 0.0
arduino:mbed_opta:opta 🔺 0 - +48 0.0 - 0.0 0 - 0 0.0 - 0.0
arduino:mbed_portenta:envie_m7 N/A N/A N/A N/A
arduino:renesas_portenta:portenta_c33 🔺 0 - +56 0.0 - 0.0 0 - 0 0.0 - 0.0
arduino:renesas_uno:unor4wifi 🔺 0 - +64 0.0 - +0.02 0 - 0 0.0 - 0.0
arduino:samd:mkrwifi1010 🔺 +2600 - +2672 +0.99 - +1.02 🔺 +64 - +80 +0.2 - +0.24
arduino:samd:nano_33_iot 🔺 +2592 - +2664 +0.99 - +1.02 🔺 +68 - +72 +0.21 - +0.22
arduino:zephyr:unoq 🔺 0 - +56 0.0 - 0.0 0 - 0 0.0 - 0.0
arduino:zephyr_main:giga 🔺 0 - +64 0.0 - +0.01 0 - 0 0.0 - 0.0
arduino:zephyr_main:nano33ble 🔺 0 - +64 0.0 - +0.01 0 - 0 0.0 - 0.0
arduino:zephyr_main:niclasense 🔺 0 - +60 0.0 - +0.01 0 - 0 0.0 - 0.0
arduino:zephyr_main:opta 🔺 0 - +64 0.0 - +0.01 0 - 0 0.0 - 0.0
arduino:zephyr_main:portentac33 🔺 0 - +64 0.0 - 0.0 0 - 0 0.0 - 0.0
arduino:zephyr_main:portentah7 🔺 0 - +64 0.0 - +0.01 0 - 0 0.0 - 0.0
Click for full report table
Board examples/Central/LedControl
flash
% examples/Central/LedControl
RAM for global variables
% examples/Central/PeripheralExplorer
flash
% examples/Central/PeripheralExplorer
RAM for global variables
% examples/Central/Scan
flash
% examples/Central/Scan
RAM for global variables
% examples/Central/ScanCallback
flash
% examples/Central/ScanCallback
RAM for global variables
% examples/Central/SensorTagButton
flash
% examples/Central/SensorTagButton
RAM for global variables
% examples/Peripheral/Advertising/EnhancedAdvertising
flash
% examples/Peripheral/Advertising/EnhancedAdvertising
RAM for global variables
% examples/Peripheral/Advertising/RawDataAdvertising
flash
% examples/Peripheral/Advertising/RawDataAdvertising
RAM for global variables
% examples/Peripheral/BatteryMonitor
flash
% examples/Peripheral/BatteryMonitor
RAM for global variables
% examples/Peripheral/ButtonLED
flash
% examples/Peripheral/ButtonLED
RAM for global variables
% examples/Peripheral/CallbackLED
flash
% examples/Peripheral/CallbackLED
RAM for global variables
% examples/Peripheral/EncryptedBatteryMonitor
flash
% examples/Peripheral/EncryptedBatteryMonitor
RAM for global variables
% examples/Peripheral/LED
flash
% examples/Peripheral/LED
RAM for global variables
%
arduino:esp32:nano_nora 68 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 16 0.0 0 0.0 32 0.0 0 0.0 16 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 28 0.0 0 0.0 0 0.0 0 0.0
arduino:mbed_giga:giga 112 0.01 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 24 0.0 0 0.0 16 0.0 0 0.0 24 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 32 0.0 0 0.0 0 0.0 0 0.0
arduino:mbed_nano:nano33ble 48 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 24 0.0 0 0.0 16 0.0 0 0.0 24 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 32 0.0 0 0.0 0 0.0 0 0.0
arduino:mbed_nano:nanorp2040connect 4318 0.03 180 0.07 4327 0.03 180 0.07 4327 0.03 180 0.07 4327 0.03 180 0.07 4327 0.03 180 0.07 4348 0.03 180 0.07 4348 0.03 180 0.07 4315 0.03 164 0.06 4251 0.03 180 0.07 4327 0.03 180 0.07 4235 0.03 172 0.06 4327 0.03 180 0.07
arduino:mbed_nicla:nicla_vision 40 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 16 0.0 0 0.0 24 0.0 0 0.0 24 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 32 0.0 0 0.0 0 0.0 0 0.0
arduino:mbed_opta:opta 48 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 24 0.0 0 0.0 16 0.0 0 0.0 24 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 32 0.0 0 0.0 0 0.0 0 0.0
arduino:mbed_portenta:envie_m7 N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A
arduino:renesas_portenta:portenta_c33 56 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 16 0.0 0 0.0 24 0.0 0 0.0 32 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 16 0.0 0 0.0 0 0.0 0 0.0
arduino:renesas_uno:unor4wifi 64 0.02 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 24 0.01 0 0.0 16 0.01 0 0.0 32 0.01 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 24 0.01 0 0.0 0 0.0 0 0.0
arduino:samd:mkrwifi1010 2664 1.02 80 0.24 2648 1.01 80 0.24 2648 1.01 80 0.24 2648 1.01 80 0.24 2648 1.01 80 0.24 2672 1.02 80 0.24 2664 1.02 80 0.24 2672 1.02 80 0.24 2600 0.99 80 0.24 2648 1.01 80 0.24 2608 0.99 64 0.2 2648 1.01 80 0.24
arduino:samd:nano_33_iot 2656 1.01 72 0.22 2640 1.01 72 0.22 2640 1.01 72 0.22 2640 1.01 72 0.22 2640 1.01 72 0.22 2664 1.02 72 0.22 2656 1.01 72 0.22 2664 1.02 72 0.22 2592 0.99 72 0.22 2640 1.01 72 0.22 2612 1.0 68 0.21 2640 1.01 72 0.22
arduino:zephyr:unoq 56 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 24 0.0 0 0.0 24 0.0 0 0.0 24 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 24 0.0 0 0.0 0 0.0 0 0.0
arduino:zephyr_main:giga 64 0.01 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 24 0.0 0 0.0 24 0.0 0 0.0 24 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 20 0.0 0 0.0 0 0.0 0 0.0
arduino:zephyr_main:nano33ble 64 0.01 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 24 0.0 0 0.0 24 0.0 0 0.0 24 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 20 0.0 0 0.0 0 0.0 0 0.0
arduino:zephyr_main:niclasense 60 0.01 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 24 0.0 0 0.0 24 0.0 0 0.0 24 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 20 0.0 0 0.0 0 0.0 0 0.0
arduino:zephyr_main:opta 64 0.01 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 24 0.0 0 0.0 24 0.0 0 0.0 24 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 20 0.0 0 0.0 0 0.0 0 0.0
arduino:zephyr_main:portentac33 64 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 20 0.0 0 0.0 20 0.0 0 0.0 28 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 20 0.0 0 0.0 0 0.0 0 0.0
arduino:zephyr_main:portentah7 64 0.01 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 24 0.0 0 0.0 24 0.0 0 0.0 24 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 20 0.0 0 0.0 0 0.0 0 0.0
Click for full report CSV
Board,examples/Central/LedControl<br>flash,%,examples/Central/LedControl<br>RAM for global variables,%,examples/Central/PeripheralExplorer<br>flash,%,examples/Central/PeripheralExplorer<br>RAM for global variables,%,examples/Central/Scan<br>flash,%,examples/Central/Scan<br>RAM for global variables,%,examples/Central/ScanCallback<br>flash,%,examples/Central/ScanCallback<br>RAM for global variables,%,examples/Central/SensorTagButton<br>flash,%,examples/Central/SensorTagButton<br>RAM for global variables,%,examples/Peripheral/Advertising/EnhancedAdvertising<br>flash,%,examples/Peripheral/Advertising/EnhancedAdvertising<br>RAM for global variables,%,examples/Peripheral/Advertising/RawDataAdvertising<br>flash,%,examples/Peripheral/Advertising/RawDataAdvertising<br>RAM for global variables,%,examples/Peripheral/BatteryMonitor<br>flash,%,examples/Peripheral/BatteryMonitor<br>RAM for global variables,%,examples/Peripheral/ButtonLED<br>flash,%,examples/Peripheral/ButtonLED<br>RAM for global variables,%,examples/Peripheral/CallbackLED<br>flash,%,examples/Peripheral/CallbackLED<br>RAM for global variables,%,examples/Peripheral/EncryptedBatteryMonitor<br>flash,%,examples/Peripheral/EncryptedBatteryMonitor<br>RAM for global variables,%,examples/Peripheral/LED<br>flash,%,examples/Peripheral/LED<br>RAM for global variables,%
arduino:esp32:nano_nora,68,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,16,0.0,0,0.0,32,0.0,0,0.0,16,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,28,0.0,0,0.0,0,0.0,0,0.0
arduino:mbed_giga:giga,112,0.01,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,24,0.0,0,0.0,16,0.0,0,0.0,24,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,32,0.0,0,0.0,0,0.0,0,0.0
arduino:mbed_nano:nano33ble,48,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,24,0.0,0,0.0,16,0.0,0,0.0,24,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,32,0.0,0,0.0,0,0.0,0,0.0
arduino:mbed_nano:nanorp2040connect,4318,0.03,180,0.07,4327,0.03,180,0.07,4327,0.03,180,0.07,4327,0.03,180,0.07,4327,0.03,180,0.07,4348,0.03,180,0.07,4348,0.03,180,0.07,4315,0.03,164,0.06,4251,0.03,180,0.07,4327,0.03,180,0.07,4235,0.03,172,0.06,4327,0.03,180,0.07
arduino:mbed_nicla:nicla_vision,40,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,16,0.0,0,0.0,24,0.0,0,0.0,24,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,32,0.0,0,0.0,0,0.0,0,0.0
arduino:mbed_opta:opta,48,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,24,0.0,0,0.0,16,0.0,0,0.0,24,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,32,0.0,0,0.0,0,0.0,0,0.0
arduino:mbed_portenta:envie_m7,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A
arduino:renesas_portenta:portenta_c33,56,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,16,0.0,0,0.0,24,0.0,0,0.0,32,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,16,0.0,0,0.0,0,0.0,0,0.0
arduino:renesas_uno:unor4wifi,64,0.02,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,24,0.01,0,0.0,16,0.01,0,0.0,32,0.01,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,24,0.01,0,0.0,0,0.0,0,0.0
arduino:samd:mkrwifi1010,2664,1.02,80,0.24,2648,1.01,80,0.24,2648,1.01,80,0.24,2648,1.01,80,0.24,2648,1.01,80,0.24,2672,1.02,80,0.24,2664,1.02,80,0.24,2672,1.02,80,0.24,2600,0.99,80,0.24,2648,1.01,80,0.24,2608,0.99,64,0.2,2648,1.01,80,0.24
arduino:samd:nano_33_iot,2656,1.01,72,0.22,2640,1.01,72,0.22,2640,1.01,72,0.22,2640,1.01,72,0.22,2640,1.01,72,0.22,2664,1.02,72,0.22,2656,1.01,72,0.22,2664,1.02,72,0.22,2592,0.99,72,0.22,2640,1.01,72,0.22,2612,1.0,68,0.21,2640,1.01,72,0.22
arduino:zephyr:unoq,56,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,24,0.0,0,0.0,24,0.0,0,0.0,24,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,24,0.0,0,0.0,0,0.0,0,0.0
arduino:zephyr_main:giga,64,0.01,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,24,0.0,0,0.0,24,0.0,0,0.0,24,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,20,0.0,0,0.0,0,0.0,0,0.0
arduino:zephyr_main:nano33ble,64,0.01,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,24,0.0,0,0.0,24,0.0,0,0.0,24,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,20,0.0,0,0.0,0,0.0,0,0.0
arduino:zephyr_main:niclasense,60,0.01,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,24,0.0,0,0.0,24,0.0,0,0.0,24,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,20,0.0,0,0.0,0,0.0,0,0.0
arduino:zephyr_main:opta,64,0.01,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,24,0.0,0,0.0,24,0.0,0,0.0,24,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,20,0.0,0,0.0,0,0.0,0,0.0
arduino:zephyr_main:portentac33,64,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,20,0.0,0,0.0,20,0.0,0,0.0,28,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,20,0.0,0,0.0,0,0.0,0,0.0
arduino:zephyr_main:portentah7,64,0.01,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,24,0.0,0,0.0,24,0.0,0,0.0,24,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,20,0.0,0,0.0,0,0.0,0,0.0

@pennam pennam merged commit e5520d4 into arduino-libraries:master Feb 24, 2026
26 of 29 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

topic: code Related to content of the project itself type: enhancement Proposed improvement

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants