Ich komm gerade nicht weiter bei der Migration von Bluedroid auf NimBLE.
Das Arduino Framework v3.x (based on ESP-IDF 5.x) für den esp32 classic
ESP32-WROOM-32E (ESP32-D0WD-V3) läuft noch auf Bluedroid, während alle
anderen (esp32c3, ...) bereits auf NimBLE migriert sind.
https://github.com/espressif/arduino-esp32/discussions/10991
Im alten Bluedroid habe ich einen BLE-Server und einen BLE-Beacon
Scanner gleichzeitig laufen. Nun hab ich den Code auf
h2zero/NimBLE-Arduino v2.5.0 aktualisiert, nun bekommt der BLE Scanner
keinen Zugriff mehr, der BLE Server dominiert.
Bisheriger Workaround (für NimBLE-Arduino) ist, das Advertising zu
stoppen, zu warten bis der Controller frei wird, dann zu scannen, und
vice versa.
1 | pAdvertising->stop();
|
2 | delay(500);
|
3 | pBLEScan->start(0.5, false);
|
4 | delay(500);
|
5 | pAdvertising->start();
|
Das funktioniert miserabel bis gar nicht, Timeslots sind viel zu kurz um
den BLE Beacon zu finden, und der BLE-Server ist auch nicht mehr
responsive.
Sollte ich auf das Arduino Framework v4.0 warten (Stage 2) und wird
dieses dann besser funktionieren als der h2zero Port? Oder komme ich
nicht umhin auf der ESP-IDF Ebene zu programmieren, an allen Wrappern
vorbei?