Re: Registering a GATT service via DBus

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 08/12/2015 01:24 PM, Luiz Augusto von Dentz wrote:
Hi Edmund,

On Wed, Aug 12, 2015 at 12:16 PM, Urbani, Edmund
<edmund.urbani@xxxxxxxxxxxx> wrote:
On 08/12/2015 10:02 AM, Anupam Roy wrote:
Hi Edmund,

Hello,

my attempts to register a GATT service via DBus from Java have so far
been unsuccessful. The GattManager1.RegisterService method does not
return any reply, instead I simply get this timeout exception:
Exception in thread "main" org.freedesktop.DBus$Error$
NoReply: No reply within specified time

As I understand, RegisterService DBUS method in gatt-database replies back
to
client only when client is fully ready. It happens when service is
successfully created
by gatt-database and all managed objects are successfully retrieved from
client
service and parsed by gdbus/client.c.

Also, all I see in the logs is the registration attempt, but no error:
Aug 11 14:42:02 raspberrypi bluetoothd[5466]:
src/gatt-database.c:manager_register_service() Registering service -
path: /com/lilandit/iventcloud/skg/service

This print only only suggests that external service is created by
gatt-database

Introspection of the service (with mdbus2 tool) shows this info (which
matches the specs as far as a DBus noob like I can tell):
[METHOD]   org.bluez.GattService1.GetPrimary() -> (b:arg_0)
[METHOD]   org.bluez.GattService1.GetDevice() -> (o:arg_0)
[METHOD]   org.bluez.GattService1.GetUUID() -> (s:arg_0)
[METHOD]   org.bluez.GattService1.GetCharacteristics() -> (ao:arg_0)
[METHOD]   org.bluez.GattService1.GetIncludes() -> (ao:arg_0)
[METHOD]   org.freedesktop.DBus.Introspectable.Introspect() -> (s:arg_0)
[METHOD]   org.freedesktop.DBus.Peer.Ping() -> ()

The implementation of the service is incomplete (same applies to the
ObjectManager registered at "/"), however I was expecting to at least
get some feedback on registration and possibly see some of the service
methods being called at this point. Instead I get nothing.

Any ideas what may be wrong or where I should be looking for the cause?

According to GATT API doc, client service should export ObjectManager
interface
on its client root path. If this is not done, then I think
GetManagedObjects call from gdbus/client will fail and client ready
will not be invoked and possibly DBUS timeout occurs.

Is your service exporting ObjectManager interface on service root path?

Kind regards,
Edmund

PS: I'm using BlueZ 5.32

I think I need to clarify that I have exported two objects. The
ObjectManager (path "/" with interface org.freedesktop.DBus.ObjectManager),
and the GattService (path "/com/lilandit/iventcloud/skg/service" with
interface org.bluez.GattService1). Is this OK, or should I have one object
that implements both interfaces?
We expect ObjectManager to be in the path where the GattService is in in '/'.

Note that GetManagedObjects is never called (nor are any other methods I
implemented, each of which has a log statement right there in the first
line).
Because ObjectManager interface is in a different path which
bluetoothd has no idea of.



I am now making some progress with one class implementing both interfaces. At last, I am receiving method calls.

Thanks!

Kind regards,
 Edmund
--
To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Bluez Devel]     [Linux Wireless Networking]     [Linux Wireless Personal Area Networking]     [Linux ATH6KL]     [Linux USB Devel]     [Linux Media Drivers]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Big List of Linux Books]

  Powered by Linux