Sto lavorando a un'app che scambia dati tra dispositivi utilizzando BLE.BluetoothGatt: la nuova MTU di negoziazione riesce ma la nuova dimensione non può essere utilizzata (differenza di 3 byte)
Per ottenere prestazioni migliori, dopo aver collegato due dispositivi sto negoziando per aumentare il MTU al fine di scambiare pacchetti di dati più grandi su BLE.
Una volta che il BluetoothDevice è collegato e di tutti i servizi e le caratteristiche vengono letti, chiedo di aumentare la MTU utilizzando:
private void requestMtu() {
//gatt is a BluetoothGatt instance and MAX_MTU is 512
this.gatt.requestMtu(MAX_MTU);
}
Dopo di che, sulla BluetoothGattCallback
realizzazione vengo la richiesta MTU riuscito e il nuovo MTU fiammiferi quello che ho chiesto:
@Override
public void onMtuChanged(BluetoothGatt gatt, int mtu, int status) {
super.onMtuChanged(gatt, mtu, status);
if (status == BluetoothGatt.GATT_SUCCESS) {
this.supportedMTU = mtu;
}
}
il problema è che quando provo a trasmettere un pacchetto di dati di 512 byte, sul lato opposto (onCharacteristicWriteRequest:
) ottengo 509 byte.
Qualche idea?