Return-Path: From: Yunhan Wang To: linux-bluetooth@vger.kernel.org Cc: Yunhan Wang Subject: [PATCH v4 2/3] gatt: Add indication confirm callback using Gatt Confirm method Date: Tue, 29 Aug 2017 00:35:19 -0700 Message-Id: <20170829073520.12059-2-yunhanw@google.com> In-Reply-To: <20170829073520.12059-1-yunhanw@google.com> References: <20170829073520.12059-1-yunhanw@google.com> Sender: linux-bluetooth-owner@vger.kernel.org List-ID: --- src/gatt-database.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/gatt-database.c b/src/gatt-database.c index 3b4bc7c8d..4af9b81a8 100644 --- a/src/gatt-database.c +++ b/src/gatt-database.c @@ -867,11 +867,18 @@ struct notify { const uint8_t *value; uint16_t len; bool indicate; + GDBusProxy *proxy; }; static void conf_cb(void *user_data) { + GDBusProxy *proxy = user_data; DBG("GATT server received confirmation"); + + if (proxy != NULL) + { + g_dbus_proxy_method_call(proxy, "Confirm", NULL, NULL, NULL, NULL); + } } static void send_notification_to_device(void *data, void *user_data) @@ -917,7 +924,7 @@ static void send_notification_to_device(void *data, void *user_data) DBG("GATT server sending indication"); bt_gatt_server_send_indication(server, notify->handle, notify->value, notify->len, conf_cb, - NULL, NULL); + notify->proxy, NULL); return; @@ -930,7 +937,7 @@ remove: static void send_notification_to_devices(struct btd_gatt_database *database, uint16_t handle, const uint8_t *value, uint16_t len, uint16_t ccc_handle, - bool indicate) + bool indicate, GDBusProxy *proxy) { struct notify notify; @@ -942,6 +949,7 @@ static void send_notification_to_devices(struct btd_gatt_database *database, notify.value = value; notify.len = len; notify.indicate = indicate; + notify.proxy = proxy; queue_foreach(database->device_states, send_notification_to_device, ¬ify); @@ -972,7 +980,7 @@ static void send_service_changed(struct btd_gatt_database *database, put_le16(end, value + 2); send_notification_to_devices(database, handle, value, sizeof(value), - ccc_handle, true); + ccc_handle, true, NULL); } static void gatt_db_service_added(struct gatt_db_attribute *attrib, @@ -1861,7 +1869,7 @@ static void property_changed_cb(GDBusProxy *proxy, const char *name, gatt_db_attribute_get_handle(chrc->attrib), value, len, gatt_db_attribute_get_handle(chrc->ccc), - chrc->props & BT_GATT_CHRC_PROP_INDICATE); + chrc->props & BT_GATT_CHRC_PROP_INDICATE, proxy); } static bool database_add_ccc(struct external_service *service, -- 2.14.1.342.g6490525c54-goog