iOS - MTU-Größe für die BLE-Daten-übertragung zwischen iOS-Gerät und dem Externen Zubehör(BluetoothWatch)
Ich bin auf iOS-Applikation(Objective-C) für Bluetooth-Uhr, die mit BLE(CoreBluetooth), und meine Uhr ist mit GATT-Bluetooth-Profil, iOS-Anwendung minimale Unterstützung von iOS7.
Ich will wissen, Wie können wir tun, Daten-transfer zwischen iOS-Gerät und dem externen Gerät mit Core-Bluetooth-framework.
Eigentlich arbeite ich an der Firmware-upgrade-Abschnitt von meine Bluetooth-Uhr,
Meine iOS-Anwendung erhalten Firmware-code (Binär-Daten) von web-service-Wann immer ein update erhalten und dann es wird das senden von Daten an Bluetooth-Uhr.
Ich habe gesucht und habe eine Apple-Beispielcode:
BTLE_Transfer: https://developer.apple.com/Library/ios/samplecode/BTLE_Transfer/Introduction/Intro.html
Ich denke Beispielcode war nicht hilfreich in meinem Fall als seine zentrale und Periphere code und die übertragung von Daten zwischen zwei iOS-Gerät.
gibt es eine andere Möglichkeit abgesehen von diesem Beispiel-code für die BLE-Daten übertragen? oder es ist möglich, mit diesem Beispiel-code nur?(wenn ja, wie?)
AKTUALISIERT:
Mein Gerät haben 1 service, 2 Merkmal eine für Lesen und eine für schreiben.
Laut meinen workflow mit schreiben charateristic:
- Mit WRITECHARACTERISTIC ich bin senden von Daten von firmware-code in Blöcken
[MYDEVICEINSTANCE writeValue:NSDATACHUNK
forCharacteristic:WRITECHARACTERISTIC
Typ:CBCharacteristicWriteWithResponse];
- und in der delegate-Methode "didWriteValueForCharacteristic" - Methode bin ich die Benachrichtigung gelesen Merkmal, wie unten
[MYDEVICEINSTANCE setNotifyValue:TRUE
forCharacteristic:READCHARACTERISTIC];
- die fordert, "didUpdateNotificationStateForCharacteristic" Delegat-Methode im inneren, dass ich Kontrolle wenn READCHARACTERISTIC isNotifying oder nicht, dann rufe ich
[MYDEVICEINSTANCE readValueForCharacteristic:READCHARACTERISTIC];
- die call delegate-Methode "didUpdateValueForCharacteristic" und ich lese response mit READCHARACTERISTIC.Wert
Meine Abfrage:
Ich will, um zu bestätigen, MTU-maximum-Grenze zulässig, die von Apple für Externes Gerät die Kommunikation von iOS-Anwendung, die ich bin ab Schritt 1 durch senden NSDATACHUNK zu BLE-Uhr von iOS-app mit writeValue
Habe ich getestet, dass kann ich senden NSDATACHUNK von MTU=255 Größe und BLE-Uhr ist Empfang gleich erfolgreich.
Habe ich gefunden in "Apple Beispielcode: BTLE_Transfer" Sie sind mit MTU=20 aber ich denke, dass Beispiel-code für iOS-Gerät zu iOS-Gerät-Kommunikation (Bitte, korrigieren Sie mich, wenn ich falsch Liege)
So, Wenn ich MTU=250 in meiner iOS-Anwendung für BLE-Kommunikation gibt es eine chance, dass apple lehnt meine Bewerbung?
Oder ist es eine, die sagen kann, was ist das maximale limit erlaubt von Apple für MTU?
Jede Anregung sind willkommen,
Vielen Dank im Voraus
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie verwenden, was die MTU-Größe, die Sie möchten (bis zu 512).
Den Wert, den die Verbindung verwenden, ist immer das minimum zwischen Ihnen und den ihrigen.
So, wenn Sie zum Beispiel möchten, verwenden Sie die MTU gleich, sagen wir mal 50, dann, wenn Sie Ihre MTU niedriger ist als 50, dann wird es verwendet werden, sonst, je nachdem, welcher Wert, den Sie wählen Sie über 50 ist sinnlos, als 50 gepflückt wird.
Nach schließen Sie Ihr Gerät yo Ihre app, die Sie haben sollten, schreiben Sie ein "Merkmal" mit:
Verbrachten wir viel Zeit mit meinem custom-BLE-Gerät und mein Fazit war:
Auf einem iOS-Gerät, das verfügbar ist die mtu 20. Es bedeutet, dass Sie können senden von 20 Byte Daten jedes mal, wenn Sie es als BLE-Peripheriegerät. Wenn Sie wollen, zu kommunizieren, für mehr als 20 bytes, die Sie haben zu handhaben, dass selbst, verweisen auf die APPLE-zentrale Periphere Beispiel-code
In deinem Fall, das problem ist nicht die mtu von iOS-Gerät, aber Ihre externen BLE Gerät, weil Ihre BLE-Gerät wird der periphere Gerät. Da Ihr BLE Gerät ist geeignet zur übertragung einer großen Menge von Daten - 255 bytes ist, wird es in Ordnung, dass die mtu.