2021-02-21 17:13:42

by Mihai Emilian

[permalink] [raw]
Subject: How to receive notifications after calling StartNotify

Dear linux-bluetooth community,

I am writing a bluetooth client in C which receives notifications from
a bluetooth device (server). I am able to call StartNotify() from the
bluez api and the Notifying property changes to true. However, I am
not sure how I should listen for the notifications, or where.

There are several questions:
a) How do I provide a callback function to this?
b) async or sync method call? Does it matter?
c) Do I need the main loop to do this and why?

Here's my source code https://pastebin.com/KEGTatsL

Is there an example? I tried looking at the different files such as
client in bluez kernel source and gatttool source, but I couldn't
figure this out.

Many thanks,
Regards,
Mihai


2021-02-22 00:51:18

by Luiz Augusto von Dentz

[permalink] [raw]
Subject: Re: How to receive notifications after calling StartNotify

Hi Mihai,

On Sun, Feb 21, 2021 at 9:13 AM Mihai Emilian <[email protected]> wrote:
>
> Dear linux-bluetooth community,
>
> I am writing a bluetooth client in C which receives notifications from
> a bluetooth device (server). I am able to call StartNotify() from the
> bluez api and the Notifying property changes to true. However, I am
> not sure how I should listen for the notifications, or where.
>
> There are several questions:
> a) How do I provide a callback function to this?
> b) async or sync method call? Does it matter?
> c) Do I need the main loop to do this and why?

You will need to subscribe for signals, e.g. using g_signal_connect:

https://www.freedesktop.org/software/gstreamer-sdk/data/docs/latest/gio/GDBusProxy.html

Signals are async so typically that would be handled by a mainloop.

> Here's my source code https://pastebin.com/KEGTatsL
>
> Is there an example? I tried looking at the different files such as
> client in bluez kernel source and gatttool source, but I couldn't
> figure this out.
>
> Many thanks,
> Regards,
> Mihai



--
Luiz Augusto von Dentz