From: Szymon Janc <szymon.janc@codecoup.pl>
To: Luiz Augusto von Dentz <luiz.dentz@gmail.com>
Cc: linux-bluetooth@vger.kernel.org
Subject: Re: [PATCH BlueZ 1/2] gatt: Add confirmation callback
Date: Thu, 22 Mar 2018 15:55:50 +0100 [thread overview]
Message-ID: <1572389.x88qM0ZYMA@ix> (raw)
In-Reply-To: <20180319124427.26418-1-luiz.dentz@gmail.com>
Hi Luiz,
On Monday, 19 March 2018 13:44:26 CET Luiz Augusto von Dentz wrote:
> From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
>
> This replaces indicate flag with confirmation callback to enable
> setting custom callback if necessary.
> ---
> src/gatt-database.c | 33 ++++++++++++++++++++-------------
> 1 file changed, 20 insertions(+), 13 deletions(-)
>
> diff --git a/src/gatt-database.c b/src/gatt-database.c
> index 9a33ae7f9..82f376568 100644
> --- a/src/gatt-database.c
> +++ b/src/gatt-database.c
> @@ -956,8 +956,8 @@ struct notify {
> uint16_t handle, ccc_handle;
> const uint8_t *value;
> uint16_t len;
> - bool indicate;
> - GDBusProxy *proxy;
> + bt_gatt_server_conf_func_t conf;
> + void *user_data;
> };
>
> static void conf_cb(void *user_data)
> @@ -983,7 +983,7 @@ static void send_notification_to_device(void *data, void
> *user_data) if (!ccc)
> return;
>
> - if (!ccc->value[0] || (notify->indicate && !(ccc->value[0] & 0x02)))
> + if (!ccc->value[0] || (notify->conf && !(ccc->value[0] & 0x02)))
> return;
>
> device = btd_adapter_get_device(notify->database->adapter,
> @@ -1003,7 +1003,7 @@ static void send_notification_to_device(void *data,
> void *user_data) * TODO: If the device is not connected but bonded, send
> the
> * notification/indication when it becomes connected.
> */
> - if (!notify->indicate) {
> + if (!notify->conf) {
> DBG("GATT server sending notification");
> bt_gatt_server_send_notification(server,
> notify->handle, notify->value,
> @@ -1013,8 +1013,8 @@ 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,
> - notify->proxy, NULL);
> + notify->len, notify->conf,
> + notify->user_data, NULL);
>
> return;
>
> @@ -1027,10 +1027,16 @@ remove:
> }
> }
>
> +static void service_changed_conf(void *user_data)
> +{
> + DBG("");
> +}
> +
> 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, GDBusProxy *proxy)
> + bt_gatt_server_conf_func_t conf,
> + void *user_data)
> {
> struct notify notify;
>
> @@ -1041,8 +1047,8 @@ static void send_notification_to_devices(struct
> btd_gatt_database *database, notify.ccc_handle = ccc_handle;
> notify.value = value;
> notify.len = len;
> - notify.indicate = indicate;
> - notify.proxy = proxy;
> + notify.conf = conf;
> + notify.user_data = user_data;
>
> queue_foreach(database->device_states, send_notification_to_device,
> ¬ify);
> @@ -1073,7 +1079,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, NULL);
> + ccc_handle, service_changed_conf, NULL);
> }
>
> static void gatt_db_service_added(struct gatt_db_attribute *attrib,
> @@ -1948,8 +1954,8 @@ static bool pipe_io_read(struct io *io, void
> *user_data) gatt_db_attribute_get_handle(chrc->attrib),
> buf, bytes_read,
> gatt_db_attribute_get_handle(chrc->ccc),
> - chrc->props & BT_GATT_CHRC_PROP_INDICATE,
> - chrc->proxy);
> + chrc->props & BT_GATT_CHRC_PROP_INDICATE ?
> + conf_cb : NULL, chrc->proxy);
>
> return true;
> }
> @@ -2225,7 +2231,8 @@ 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, proxy);
> + chrc->props & BT_GATT_CHRC_PROP_INDICATE ?
> + conf_cb : NULL, proxy);
> }
>
> static bool database_add_ccc(struct external_service *service,
Both patches applied, thanks.
--
pozdrawiam
Szymon Janc
prev parent reply other threads:[~2018-03-22 14:55 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-03-19 12:44 [PATCH BlueZ 1/2] gatt: Add confirmation callback Luiz Augusto von Dentz
2018-03-19 12:44 ` [PATCH BlueZ 2/2] gatt: Properly handle service changes when offline Luiz Augusto von Dentz
2018-03-22 14:55 ` Szymon Janc [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1572389.x88qM0ZYMA@ix \
--to=szymon.janc@codecoup.pl \
--cc=linux-bluetooth@vger.kernel.org \
--cc=luiz.dentz@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox