BluetoothGatt: Neue MTU wird verhandelt, aber neue Größe kann nicht verwendet werden (3 Byte Unterschied)

8

Ich arbeite an einer App, die Daten zwischen Geräten mit BLE austauschen.

Um eine bessere Leistung zu erzielen, verhandle ich nach dem Verbinden zweier Geräte, die MTU zu erhöhen, um größere Datenpakete über BLE auszutauschen.

Sobald das BluetoothDevice verbunden ist und alle Dienste und Merkmale gelesen wurden, fordere ich die MTU mit:

zu erhöhen %Vor%

Danach bekomme ich bei der BluetoothGattCallback -Implementierung die MTU-Anfrage erfolgreich und die neue MTU stimmt mit der von mir angeforderten überein:

%Vor%

Das Problem ist, wenn ich versuche, ein Datenpaket von 512 Bytes zu senden, auf der anderen Seite ( onCharacteristicWriteRequest: ) bekomme ich 509 Bytes.

Irgendwelche Ideen?

    
Omer 05.04.2016, 19:39
quelle

1 Antwort

21

Die MTU-Größe stellt die maximale Anzahl von Bytes dar, die in einer ATT-Nutzlast verwendet werden können. Eine ATT-Schreibanforderungsnutzlast (die für ein charakteristisches Schreiben gesendet wird) sieht wie folgt aus:

1 Byte Attribut Opcode 2 Byte Attributhandle N Byte-Attributwert

Da die MTU-Größe 512 Byte beträgt, kann die maximale Größe N 512 - 3 = 509 Byte sein.

    
cman12345 09.04.2016, 01:00
quelle