NimBLE Server-Client Multi-Role Coexistence auf dem ESP32

OP #8047973
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
OP #8048494
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

Antwort schreiben

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.