Forum: Mikrocontroller und Digitale Elektronik NimBLE Server-Client Multi-Role Coexistence auf dem ESP32


von Alexander (alecxs)


Lesenswert?

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?
: Bearbeitet durch User
von Alexander (alecxs)


Lesenswert?

Ich habe es nun andersrum gelöst: Der BLE-Scanner wird vom BLE-Server 
über einen Callback gestoppt. Sobald sich ein Smartphone mit dem 
BLE-Server verbindet wird ein BLE Beacon für mich sowieso uninteressant, 
brauche den BLE-Scanner in der Zeit nicht.
1
void onConnect(NimBLEServer* pServer) {
2
  pBLEScan->stop();
3
}
Eine echte Koexistenz scheint es mit diesem virtuellen HCI Controller 
nicht zu geben. Im Datenblatt ist auch nur von *"Simultaneous 
advertising and scanning"* die Rede, nicht von bonding.
: Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.