From 918c5241c00ea937ec2ed1681bc190c4a0e53f3c Mon Sep 17 00:00:00 2001 From: Stanley Tng Date: Tue, 16 Jan 2018 10:39:32 -0800 Subject: [PATCH] Add function to change LE Tx Data Length As part of new SL4A tests for LE CoC to measure data throughput, this commit adds a function to set the LE Tx Data Length parameter to its maximum. Test: Ran the new ACTS Tests for LE CoC (BleCocTest and BleCoc2ConnTest) Bug: 70683224 Change-Id: Iea93f6cb9f4f7cc484f121afa158d7dae18d1ef1 --- .../android/bluetooth/BluetoothSocket.java | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/core/java/android/bluetooth/BluetoothSocket.java b/core/java/android/bluetooth/BluetoothSocket.java index 09f96840f9185..09a5b593e521c 100644 --- a/core/java/android/bluetooth/BluetoothSocket.java +++ b/core/java/android/bluetooth/BluetoothSocket.java @@ -676,6 +676,35 @@ public final class BluetoothSocket implements Closeable { mExcludeSdp = excludeSdp; } + /** + * Set the LE Transmit Data Length to be the maximum that the BT Controller is capable of. This + * parameter is used by the BT Controller to set the maximum transmission packet size on this + * connection. This function is currently used for testing only. + * @hide + */ + public void requestMaximumTxDataLength() throws IOException { + if (mDevice == null) { + throw new IOException("requestMaximumTxDataLength is called on null device"); + } + + try { + if (mSocketState == SocketState.CLOSED) { + throw new IOException("socket closed"); + } + IBluetooth bluetoothProxy = + BluetoothAdapter.getDefaultAdapter().getBluetoothService(null); + if (bluetoothProxy == null) { + throw new IOException("Bluetooth is off"); + } + + if (DBG) Log.d(TAG, "requestMaximumTxDataLength"); + bluetoothProxy.getSocketManager().requestMaximumTxDataLength(mDevice); + } catch (RemoteException e) { + Log.e(TAG, Log.getStackTraceString(new Throwable())); + throw new IOException("unable to send RPC: " + e.getMessage()); + } + } + private String convertAddr(final byte[] addr) { return String.format(Locale.US, "%02X:%02X:%02X:%02X:%02X:%02X", addr[0], addr[1], addr[2], addr[3], addr[4], addr[5]);