Tôi đang làm việc trên ứng dụng trao đổi dữ liệu giữa các thiết bị sử dụng BLE.BluetoothGatt: đang đàm phán MTU mới thành công nhưng không thể sử dụng kích thước mới (chênh lệch 3 byte)
Để có hiệu suất tốt hơn, sau khi kết nối hai thiết bị, tôi đang đàm phán để tăng MTU nhằm trao đổi các gói dữ liệu lớn hơn trên BLE.
Khi BluetoothDevice được kết nối và tất cả các dịch vụ và đặc điểm được đọc, tôi yêu cầu để tăng MTU sử dụng:
private void requestMtu() {
//gatt is a BluetoothGatt instance and MAX_MTU is 512
this.gatt.requestMtu(MAX_MTU);
}
Sau đó, tình hình thực hiện BluetoothGattCallback
tôi nhận được yêu cầu MTU thành công và MTU mới phù hợp người tôi yêu cầu:
@Override
public void onMtuChanged(BluetoothGatt gatt, int mtu, int status) {
super.onMtuChanged(gatt, mtu, status);
if (status == BluetoothGatt.GATT_SUCCESS) {
this.supportedMTU = mtu;
}
}
vấn đề là, khi tôi cố gắng để gửi một gói dữ liệu 512 byte, ở phía bên kia (onCharacteristicWriteRequest:
) tôi nhận được 509 byte.
Bất kỳ ý tưởng nào?