Re: Determine ATT MTU size over DBUS

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



And here's a patch that lets the user know the MTU size over DBus:

diff --git a/doc/gatt-api.txt b/doc/gatt-api.txt
index 2a8da75b0..a0db65383 100644
--- a/doc/gatt-api.txt
+++ b/doc/gatt-api.txt
@@ -68,6 +68,7 @@ Methods		array{byte} ReadValue(dict options)
 			operation was successful.
 
 			Possible options: "offset": uint16 offset
+					  "MTU": Exchanged MTU (Server only)
 					  "device": Object Device (Server only)
 
 			Possible Errors: org.bluez.Error.Failed
@@ -83,6 +84,7 @@ Methods		array{byte} ReadValue(dict options)
 			characteristic.
 
 			Possible options: "offset": Start offset
+					  "MTU": Exchanged MTU (Server only)
 					  "device": Device path (Server only)
 					  "link": Link type (Server only)
 					  "prepare-authorize": boolean Is prepare
diff --git a/src/gatt-database.c b/src/gatt-database.c
index 99c8ea231..c34da2d71 100644
--- a/src/gatt-database.c
+++ b/src/gatt-database.c
@@ -1932,7 +1932,9 @@ static void append_options(DBusMessageIter *iter, void *user_data)
 {
 	struct pending_op *op = user_data;
 	const char *path = device_get_path(op->device);
+	struct bt_gatt_server *server;
 	const char *link;
+	uint16_t mtu;
 
 	switch (op->link_type) {
 	case BT_ATT_LINK_BREDR:
@@ -1955,6 +1957,11 @@ static void append_options(DBusMessageIter *iter, void *user_data)
 	if (op->prep_authorize)
 		dict_append_entry(iter, "prepare-authorize", DBUS_TYPE_BOOLEAN,
 							&op->prep_authorize);
+
+	server = btd_device_get_gatt_server(op->device);
+	mtu = bt_gatt_server_get_mtu(server);
+
+	dict_append_entry(iter, "MTU", DBUS_TYPE_UINT16, &mtu);
 }
 
 static void read_setup_cb(DBusMessageIter *iter, void *user_data)
@@ -2234,8 +2241,6 @@ static void acquire_write_setup(DBusMessageIter *iter, void *user_data)
 {
 	struct pending_op *op = user_data;
 	DBusMessageIter dict;
-	struct bt_gatt_server *server;
-	uint16_t mtu;
 
 	dbus_message_iter_open_container(iter, DBUS_TYPE_ARRAY,
 					DBUS_DICT_ENTRY_BEGIN_CHAR_AS_STRING
@@ -2246,12 +2251,6 @@ static void acquire_write_setup(DBusMessageIter *iter, void *user_data)
 
 	append_options(&dict, op);
 
-	server = btd_device_get_gatt_server(op->device);
-
-	mtu = bt_gatt_server_get_mtu(server);
-
-	dict_append_entry(&dict, "MTU", DBUS_TYPE_UINT16, &mtu);
-
 	dbus_message_iter_close_container(iter, &dict);
 }
 
@@ -2320,8 +2319,6 @@ static void acquire_notify_setup(DBusMessageIter *iter, void *user_data)
 {
 	DBusMessageIter dict;
 	struct pending_op *op = user_data;
-	struct bt_gatt_server *server;
-	uint16_t mtu;
 
 	dbus_message_iter_open_container(iter, DBUS_TYPE_ARRAY,
 					DBUS_DICT_ENTRY_BEGIN_CHAR_AS_STRING
@@ -2332,12 +2329,6 @@ static void acquire_notify_setup(DBusMessageIter *iter, void *user_data)
 
 	append_options(&dict, op);
 
-	server = btd_device_get_gatt_server(op->device);
-
-	mtu = bt_gatt_server_get_mtu(server);
-
-	dict_append_entry(&dict, "MTU", DBUS_TYPE_UINT16, &mtu);
-
 	dbus_message_iter_close_container(iter, &dict);
 }



--
To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Bluez Devel]     [Linux Wireless Networking]     [Linux Wireless Personal Area Networking]     [Linux ATH6KL]     [Linux USB Devel]     [Linux Media Drivers]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Big List of Linux Books]

  Powered by Linux