diff options
author | Andre Eisenbach <eisenbach@google.com> | 2014-11-18 11:34:26 -0800 |
---|---|---|
committer | Andre Eisenbach <eisenbach@google.com> | 2014-11-26 12:58:44 -0800 |
commit | 5682be9ee6f7008af7d4ac0deca2e092d6d76265 (patch) | |
tree | ded2fcb1430f27123f435a95251a17cd35bcf7ff /framework/java/android | |
parent | 0f5abcc53cc66624550ba29c2bb5f9d1751a1bcc (diff) |
Add server-side callback for change in MTU (4/4)
When a client requests to update the LE transport MTU, the server
currently does not get notified and can therefor not properly size
notifications appropriate to the current MTU.
Bug: 18388114
Change-Id: I515bfc2cc9846490d57de71860f41ea9a61fa243
Diffstat (limited to 'framework/java/android')
3 files changed, 31 insertions, 0 deletions
diff --git a/framework/java/android/bluetooth/BluetoothGattServer.java b/framework/java/android/bluetooth/BluetoothGattServer.java index e94a8cea21..f4513405b1 100644 --- a/framework/java/android/bluetooth/BluetoothGattServer.java +++ b/framework/java/android/bluetooth/BluetoothGattServer.java @@ -284,6 +284,24 @@ public final class BluetoothGattServer implements BluetoothProfile { Log.w(TAG, "Unhandled exception: " + ex); } } + + /** + * The MTU for a connection has changed + * @hide + */ + public void onMtuChanged(String address, int mtu) { + if (DBG) Log.d(TAG, "onMtuChanged() - " + + "device=" + address + ", mtu=" + mtu); + + BluetoothDevice device = mAdapter.getRemoteDevice(address); + if (device == null) return; + + try { + mCallback.onMtuChanged(device, mtu); + } catch (Exception ex) { + Log.w(TAG, "Unhandled exception: " + ex); + } + } }; /** diff --git a/framework/java/android/bluetooth/BluetoothGattServerCallback.java b/framework/java/android/bluetooth/BluetoothGattServerCallback.java index 1dd06f2ce1..2afcf9a322 100644 --- a/framework/java/android/bluetooth/BluetoothGattServerCallback.java +++ b/framework/java/android/bluetooth/BluetoothGattServerCallback.java @@ -145,4 +145,16 @@ public abstract class BluetoothGattServerCallback { */ public void onNotificationSent(BluetoothDevice device, int status) { } + + /** + * Callback indicating the MTU for a given device connection has changed. + * + * <p>This callback will be invoked if a remote client has requested to change + * the MTU for a given connection. + * + * @param device The remote device that requested the MTU change + * @param mtu The new MTU size + */ + public void onMtuChanged(BluetoothDevice device, int mtu) { + } } diff --git a/framework/java/android/bluetooth/IBluetoothGattServerCallback.aidl b/framework/java/android/bluetooth/IBluetoothGattServerCallback.aidl index 5d4d6c63ef..8b202b23cc 100644 --- a/framework/java/android/bluetooth/IBluetoothGattServerCallback.aidl +++ b/framework/java/android/bluetooth/IBluetoothGattServerCallback.aidl @@ -59,4 +59,5 @@ oneway interface IBluetoothGattServerCallback { in byte[] value); void onExecuteWrite(in String address, in int transId, in boolean execWrite); void onNotificationSent(in String address, in int status); + void onMtuChanged(in String address, in int mtu); } |