Я работаю над приложением, которое обменивается данными между устройствами с помощью BLE.
Чтобы повысить производительность, после подключения двух устройств я веду переговоры об увеличении MTU, чтобы обмениваться большими пакетами данных через BLE.
Как только BluetoothDevice подключен и все службы и характеристики прочитаны, я прошу увеличить MTU, используя:
private void requestMtu() {
//gatt is a BluetoothGatt instance and MAX_MTU is 512
this.gatt.requestMtu(MAX_MTU);
}
После этого в реализации BluetoothGattCallback
я получаю, что запрос MTU выполнен успешно, и новый MTU соответствует запрошенному:
@Override
public void onMtuChanged(BluetoothGatt gatt, int mtu, int status) {
super.onMtuChanged(gatt, mtu, status);
if (status == BluetoothGatt.GATT_SUCCESS) {
this.supportedMTU = mtu;
}
}
Проблема в том, что когда я пытаюсь отправить пакет данных размером 512 байт, на другой стороне (onCharacteristicWriteRequest:
) я получаю 509 байт.
Любые идеи?