0

Ich versuche, eine geschätzte Reichweite zu einem BLE-Gerät zu bekommen, angesichts der Geräte RSSI und kalibrierte Sendeleistung.Android BLE iBeacon Werbung Paket größer als erwartet

Das kalibrierte txPower wird angeblich als das letzte Byte in dem iBeacon-Werbepaket der Peripheriegeräte ausgegeben. Diese Pakete sollten gemäß der Dokumentation, die ich gefunden habe, 30 Bytes lang sein.

Die zurückgegebene byte[] für das Paket ist jedoch 62 Byte lang. Aus diesem Grund ist das Format der Werbedaten unbekannt.

Warum könnte dies passieren, und gibt es eine Möglichkeit, das Format des 62-Byte-Pakets zu entschlüsseln?

Antwort

0

Beim Scannen nach BLE-Geräten geben Android-APIs nicht nur die Bytes für die RAW-Anzeigen-PDUs zurück, sondern auch die Scan-Antwort-PDUs. Letztere werden im Byte-Array, das von den Scan-APIs zurückgegeben wird, an das Ende des ersten angehängt.

Aus diesem Grund können Sie nicht zuverlässig einen negativen Offset vom Ende verwenden, wenn das Byte-Array auf Beacon-Felder zugreifen. Die Verwendung eines positiven Offsets von Anfang an ist zuverlässiger, aber auch dies kann fehlschlagen, wenn ungewöhnliche PDUs vor der PDU der Herstellerwerbung eingefügt werden, die Ihnen wichtig ist.

Für 100% Zuverlässigkeit müssen Sie alle PDUs analysieren, finden Sie die Herstelleranzeige, und sehen Sie sich die Bytes in diesem an. Das habe ich beim Schreiben der Android Beacon Library auf die harte Tour gelernt. Es ist eine Open-Source-Software, und selbst wenn Sie selbst scannen möchten, ist es eine gute Idee, zu sehen, wie es funktioniert.

+0

Das ist seltsam. Gibt es einen einfacheren Weg, die kalibrierte txPower des Peripheriegeräts zu erhalten? Die kalibrierte Konstante ist wirklich alles, was ich von der Werbung brauche. – Orbit

+0

Sie müssen die Konstante aus den Bytes der Werbung erhalten. Eine einfachere Lösung als das Parsing der PDUs besteht darin, nach dem Byte-Muster des statischen iBeacon-Präfixes zu suchen und dann die Kalibrierungskonstante basierend auf einem Offset von dort zu finden. Der Nachteil dieses Ansatzes besteht darin, dass die Bytefolge (zufällig) auch an anderer Stelle in der Werbung erscheinen kann, wodurch die Technik fehlschlägt. – davidgyoung

Verwandte Themen