Diff between bf8faa2b4050551e076d085476fb2b99e305317a and 06b2a8134fbdd30c827a770cc97588b772c87e0a

Changed Files

File Additions Deletions Status
android/gatt.c +10 -3 modified

Full Patch

diff --git a/android/gatt.c b/android/gatt.c
index 5f3050f..f754f30 100644
--- a/android/gatt.c
+++ b/android/gatt.c
@@ -1490,7 +1490,7 @@ static void connect_cb(GIOChannel *io, GError *gerr, gpointer user_data)
 	uint32_t status;
 	GError *err = NULL;
 	GAttrib *attrib;
-	uint16_t mtu;
+	uint16_t mtu, cid;
 
 	if (dev->state != DEVICE_CONNECT_READY) {
 		error("gatt: Device not in a connecting state!?");
@@ -1510,14 +1510,21 @@ static void connect_cb(GIOChannel *io, GError *gerr, gpointer user_data)
 		goto reply;
 	}
 
-	if (!bt_io_get(io, &err, BT_IO_OPT_IMTU, &mtu, BT_IO_OPT_INVALID)) {
-		error("gatt: Could not get imtu: %s", err->message);
+	if (!bt_io_get(io, &err, BT_IO_OPT_IMTU, &mtu, BT_IO_OPT_CID, &cid,
+							BT_IO_OPT_INVALID)) {
+		error("gatt: Could not get imtu or cid: %s", err->message);
 		device_set_state(dev, DEVICE_DISCONNECTED);
 		status = GATT_FAILURE;
 		g_error_free(err);
 		goto reply;
 	}
 
+	DBG("mtu %u cid %u", mtu, cid);
+
+	/* on LE we always start with default MTU */
+	if (cid == ATT_CID)
+		mtu = ATT_DEFAULT_LE_MTU;
+
 	attrib = g_attrib_new(io, mtu);
 	if (!attrib) {
 		error("gatt: unable to create new GAttrib instance");