summaryrefslogtreecommitdiff
path: root/framework/java/android
diff options
context:
space:
mode:
authorAndre Eisenbach <eisenbach@google.com>2014-11-18 11:34:26 -0800
committerAndre Eisenbach <eisenbach@google.com>2014-11-26 12:58:44 -0800
commit5682be9ee6f7008af7d4ac0deca2e092d6d76265 (patch)
treeded2fcb1430f27123f435a95251a17cd35bcf7ff /framework/java/android
parent0f5abcc53cc66624550ba29c2bb5f9d1751a1bcc (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')
-rw-r--r--framework/java/android/bluetooth/BluetoothGattServer.java18
-rw-r--r--framework/java/android/bluetooth/BluetoothGattServerCallback.java12
-rw-r--r--framework/java/android/bluetooth/IBluetoothGattServerCallback.aidl1
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);
}