Bluetooth Low Energy-Verbindung-Parameter für Android, iOS und Win8
Ich habe auf der Suche alle über den Ort für die gewünschte bluetooth-Verbindung Parameter, die für alle drei dieser Betriebssysteme. Ich bin mit dem HOGP (über Bluetooth HID-GATT), das Profil für dieses Projekt.
Mein Projekt ist ein embedded-system, geschrieben, indem ich mich mit einem BLE-Modul, das ich die Kontrolle über die folgenden Parameter für die Verbindung.
- Verbindung Intervall Min
- Verbindung Intervall Max
- Slave-Latenz
- Supervision Timeout
- Werbung Intervall Min
- Werbung Intervall Max
Mein Ziel Geräte zu verbinden, wird zu befriedigen verbindungen mit Android - >= 4.3, iOS7, und >= Win 8.1.
Apple war so freundlich genug, um ein Dokument mit den entsprechenden Parametern auf Seite 22 im link unten. Ich habe nicht in der Lage finden Sie alle Informationen über die Android und Win 8.
https://developer.apple.com/hardwaredrivers/bluetoothdesignguidelines.pdf
Meine aktuellen Einstellungen für iOS7 getestet, voll mit bidirection Kommunikation mit freeware hellblau ist wie folgt. Meine embedded-code und host-software für iOS7 funktioniert.
- Verbindung Intervall Min 30ms
- Verbindung Intervall Max der 56,25 ms
- Slave Latency 3
- Supervision Timeout 5000ms
Habe ich gefunden von einem anderen stack-overflow-Seite, dass android angeblich funktioniert auf 7.5 ms-Verbindung Intervall aus den folgenden links.
- Android BLE-Verbindung Zeitintervall
- http://processors.wiki.ti.com/index.php/Bluetooth_SensorTag?DCMP=lprf-stdroid&HQS=lprf-stdroid-pr-wiki1#Supported_Android_devices
Leider ist die zweite Forderung von apple-iOS-spec ist, dass die "Intervall Min ≥ 20 ms".
Bin ich nicht zu verstehen, diese Bereiche-oder, wie Sie interpretiert werden? Wenn ich den Intervall min bis 7,5 ms für Android wäre das nicht void äpfel Anforderungen? Wie kann ich die erfüllen beide Systeme und auch Win8, wenn möglich?
Mein Verständnis ist, dass das slave-Gerät bietet eine vorgeschlagene Einstellung zwischen min und max und der master (smartphone) alarmiert den Benutzer von der aktuell gewählten Wert in diesem Bereich.
Ich schätzen jede Hilfe bei diesem Problem und hoffe, dieser Beitrag könnte anderen von nutzen sind, in Anbetracht der relativ neue und unvollständiger Wissensbasis für die BLE.
Vielen Dank im Voraus!
InformationsquelleAutor der Frage bassplayer142 | 2014-03-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ersten, die Verbindung Intervall definiert ein Zeitfenster, während dessen beide Geräte verwenden die gleiche Frequenz, um Daten zu übertragen. Es gibt 37 Daten-Kanäle insgesamt und die damit verbundenen Geräte-hop über Sie jede Verbindung Intervall.
So, beide Geräte zu vereinbaren, die genauen Werte für diese Parameter von Anfang an, um in sync, d.h., verbunden.
Zweite, wenn die Verbindung hergestellt ist die master - (oder zentrale) sendet Verbindungsparameter, die es unterstützt. Das andere Gerät (oder peripheren) einfach blind übernimmt. iOS standardmäßig setzt Verbindung Intervall von 30 ms. Nachdem die Verbindung hergestellt ist, die peripheren anfordern können Verbindungsparameter aktualisieren, durch die Definition der min-und max-Werte, entsprechend den Richtlinien, die apple zur Verfügung. Der empfangende Teil, Lesen iOS in diesem Fall, wählen, was Sie finden die besten, die es zwischen [min;max], und senden Sie zurück auf die Antwort mit dem genauen Werte, die Sie gepflückt hat. Es kann auch den Antrag ablehnen, wenn die Werte nicht mit den Richtlinien vereinbar sind.
Schließlich 7.5 ms ist die minimale Länge der Anschluss-Intervall definiert die Bluetooth-Spezifikation. Der Maximalwert ist 4. Je niedriger er ist, desto höher ist die Bandbreite, aber höheren Stromverbrauch. Und das Gegenteil in der höheren Werte. Der beste Wert hängt von der spezifischen Anwendung. Wenn man bedenkt, dass Sie die Arbeit mit HID-Profil-ich nehme an, die Latenz wichtig ist.
iOS sagt, dass es unterstützt die Verbindung Abständen runter auf 20ms (obwohl ich fand es schwierig zu erreichen, und das einige Male), aber in deinem Fall (HID-Profil), die Sie auch zulassen 11.25 ms.
Hoffe, das hilft.
InformationsquelleAutor der Antwort ildarM
Parameter zu ändern in Android (die Beantragung von zentralen zu Peripheren) können Sie etwas wie das hier tun:
Ich muss aber sagen, dass es für mich nicht funktioniert mit Android-5-Geräte, die sowohl als periphere und zentrale, da die Generischen Acces Service (0x1800) ist nicht mit in mein Gerät Charakteristisch 0x2a04 für Bevorzugte Verbindung Parameter. Es ist nur das Angebot 0x2a00 (device name) und 0x2a01 (Aussehen).
Referenzen:
http://www.cumulations.com/blogs/7/Doing-firmware-upgrade-over-BLE-in-Android
https://developer.bluetooth.org/gatt/characteristics/Pages/CharacteristicViewer.aspx?u=org.bluetooth.characteristic.gap.peripheral_preferred_connection_parameters.xml
https://developer.bluetooth.org/gatt/services/Pages/ServiceViewer.aspx?u=org.bluetooth.service.generic_access.xml
https://farwestab.wordpress.com/2011/02/05/some-tips-on-android-and-bluetooth/
InformationsquelleAutor der Antwort bingen
Ich glaube, dass dieses Merkmal ist nur dazu da, um Informationen an das zentrale Gerät. Deshalb ist es im Allgemeinen schreibgeschützt (für mich, und cxphong). Bingen die Antwort nicht universell Arbeit, und ich bin nicht sicher, es ist gemeint, das es so funktioniert. Hat eigentlich irgendwer zum laufen bekommen auf einem bestimmten Gerät?
Scheint es, dass Android und iOS nicht konsultieren die Informationen in diesem nur-lese-Eigenschaft, und so bin ich nicht sicher, dass es sehr nützlich.
Was für mich funktioniert ist weiter unten beschrieben, für Cypress peripheren und Android central. Ein ähnlicher Ansatz sollte funktionieren mit anderen Geräten.
Auf der zentralen Seite, es gibt nichts zu tun. Nachdem er die Anforderung empfängt, starten Sie die parameter-update ein bisschen später.
Cheers,
David
InformationsquelleAutor der Antwort davhoo