From 05e877aaca14a2ce3a150bfaf05c3f23a497ccf2 Mon Sep 17 00:00:00 2001 From: Arman Uguray Date: Fri, 30 Jan 2015 16:29:07 -0800 Subject: [PATCH] core/gatt: Implement GattCharacteristic1.StopNotify This patch implements the StopNotify method of org.bluez.GattCharacteristic1. --- src/gatt-client.c | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/src/gatt-client.c b/src/gatt-client.c index cb987936d..98804a348 100644 --- a/src/gatt-client.c +++ b/src/gatt-client.c @@ -1161,8 +1161,25 @@ static DBusMessage *characteristic_start_notify(DBusConnection *conn, static DBusMessage *characteristic_stop_notify(DBusConnection *conn, DBusMessage *msg, void *user_data) { - /* TODO: Implement */ - return btd_error_failed(msg, "Not implemented"); + struct characteristic *chrc = user_data; + struct bt_gatt_client *gatt = chrc->service->client->gatt; + const char *sender = dbus_message_get_sender(msg); + struct notify_client *client; + + if (!chrc->notifying) + return btd_error_failed(msg, "Not notifying"); + + client = queue_remove_if(chrc->notify_clients, match_notify_sender, + (void *) sender); + if (!client) + return btd_error_failed(msg, "No notify session started"); + + bt_gatt_client_unregister_notify(gatt, client->notify_id); + update_notifying(chrc); + + notify_client_unref(client); + + return dbus_message_new_method_return(msg); } static void append_desc_path(void *data, void *user_data) -- 2.47.3