* [PATCH] tools/mcaptest: Don't block main loop when disconnection is expected
@ 2014-11-06 9:33 Jakub Tyszkowski
2014-11-06 11:23 ` Szymon Janc
0 siblings, 1 reply; 2+ messages in thread
From: Jakub Tyszkowski @ 2014-11-06 9:33 UTC (permalink / raw)
To: linux-bluetooth; +Cc: Jakub Tyszkowski
This triggers action after timeout without using sleep which was
blocking main loop and mcaplib.
---
tools/mcaptest.c | 37 +++++++++++++++++++++++++------------
1 file changed, 25 insertions(+), 12 deletions(-)
diff --git a/tools/mcaptest.c b/tools/mcaptest.c
index 42734eb..bebc890 100644
--- a/tools/mcaptest.c
+++ b/tools/mcaptest.c
@@ -71,31 +71,44 @@ static gboolean no_close = FALSE;
#define REQ_CLOCK_ACC 0x1400
-static void mdl_connected_cb(struct mcap_mdl *mdl, void *data)
+static gboolean close_mdl_timeout(gpointer user_data)
{
+ struct mcap_mdl *mdl = user_data;
int fd = -1;
+ fd = mcap_mdl_get_fd(mdl);
+
+ if (fd > 0)
+ close(fd);
+
+ return FALSE;
+}
+
+static void mdl_connected_cb(struct mcap_mdl *mdl, void *data)
+{
printf("%s\n", __func__);
- if (mdl_disconnect && mdl_disconnect_timeout >= 0) {
- sleep(mdl_disconnect_timeout);
+ if (mdl_disconnect && mdl_disconnect_timeout >= 0)
+ g_timeout_add(mdl_disconnect_timeout * 1000, close_mdl_timeout,
+ mdl);
+}
- fd = mcap_mdl_get_fd(mdl);
+static gboolean close_mcl_timeout(gpointer user_data)
+{
+ struct mcap_mcl *mcl = user_data;
- if (fd > 0)
- close(fd);
- }
+ mcap_close_mcl(mcl, TRUE);
+
+ return FALSE;
}
static void mdl_closed_cb(struct mcap_mdl *mdl, void *data)
{
printf("%s\n", __func__);
- if (mcl_disconnect && mcl_disconnect_timeout >= 0) {
- sleep(mcl_disconnect_timeout);
-
- mcap_close_mcl(mcl, TRUE);
- }
+ if (mcl_disconnect && mcl_disconnect_timeout >= 0)
+ g_timeout_add(mcl_disconnect_timeout * 1000, close_mcl_timeout,
+ mcl);
}
static void mdl_deleted_cb(struct mcap_mdl *mdl, void *data)
--
1.9.1
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH] tools/mcaptest: Don't block main loop when disconnection is expected
2014-11-06 9:33 [PATCH] tools/mcaptest: Don't block main loop when disconnection is expected Jakub Tyszkowski
@ 2014-11-06 11:23 ` Szymon Janc
0 siblings, 0 replies; 2+ messages in thread
From: Szymon Janc @ 2014-11-06 11:23 UTC (permalink / raw)
To: Jakub Tyszkowski; +Cc: linux-bluetooth
Hi Jakub,
On Thursday 06 of November 2014 10:33:05 Jakub Tyszkowski wrote:
> This triggers action after timeout without using sleep which was
> blocking main loop and mcaplib.
> ---
> tools/mcaptest.c | 37 +++++++++++++++++++++++++------------
> 1 file changed, 25 insertions(+), 12 deletions(-)
>
> diff --git a/tools/mcaptest.c b/tools/mcaptest.c
> index 42734eb..bebc890 100644
> --- a/tools/mcaptest.c
> +++ b/tools/mcaptest.c
> @@ -71,31 +71,44 @@ static gboolean no_close = FALSE;
>
> #define REQ_CLOCK_ACC 0x1400
>
> -static void mdl_connected_cb(struct mcap_mdl *mdl, void *data)
> +static gboolean close_mdl_timeout(gpointer user_data)
> {
> + struct mcap_mdl *mdl = user_data;
> int fd = -1;
This initialization is not needed now.
>
> + fd = mcap_mdl_get_fd(mdl);
> +
> + if (fd > 0)
> + close(fd);
0 is also valid fd. Probably won't happen with command line tool but lets
be consistent on this.
> +
> + return FALSE;
> +}
> +
> +static void mdl_connected_cb(struct mcap_mdl *mdl, void *data)
> +{
> printf("%s\n", __func__);
>
> - if (mdl_disconnect && mdl_disconnect_timeout >= 0) {
> - sleep(mdl_disconnect_timeout);
> + if (mdl_disconnect && mdl_disconnect_timeout >= 0)
> + g_timeout_add(mdl_disconnect_timeout * 1000, close_mdl_timeout,
> + mdl);
> +}
>
> - fd = mcap_mdl_get_fd(mdl);
> +static gboolean close_mcl_timeout(gpointer user_data)
> +{
> + struct mcap_mcl *mcl = user_data;
>
> - if (fd > 0)
> - close(fd);
> - }
> + mcap_close_mcl(mcl, TRUE);
> +
> + return FALSE;
> }
>
> static void mdl_closed_cb(struct mcap_mdl *mdl, void *data)
> {
> printf("%s\n", __func__);
>
> - if (mcl_disconnect && mcl_disconnect_timeout >= 0) {
> - sleep(mcl_disconnect_timeout);
> -
> - mcap_close_mcl(mcl, TRUE);
> - }
> + if (mcl_disconnect && mcl_disconnect_timeout >= 0)
> + g_timeout_add(mcl_disconnect_timeout * 1000, close_mcl_timeout,
> + mcl);
> }
>
> static void mdl_deleted_cb(struct mcap_mdl *mdl, void *data)
>
--
Best regards,
Szymon Janc
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2014-11-06 11:23 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-11-06 9:33 [PATCH] tools/mcaptest: Don't block main loop when disconnection is expected Jakub Tyszkowski
2014-11-06 11:23 ` Szymon Janc
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).