Re: DBus LEAdvertisement and Python

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

 



Hi Barry,

On Thu, Jul 18, 2019 at 10:03 AM Barry Byford <31baz66@xxxxxxxxx> wrote:
>
> Hello,
>
> The Python examples provided in the test directory of the BlueZ
> repository use the python-dbus library. Looking at the documentation
> of that library it does start by raising concerns and offering
> alternatives. I have been looking at some of the alternatives and am
> having difficultly getting them to work with BlueZ. I have been
> focusing on the org.bluez.LEAdvertisement1 interface.
>
> Looking at the documentation, it says the service, interface and
> object details are:
> Service org.bluez
> Interface org.bluez.LEAdvertisement1
> Object path freely definable
>
> I am not being successful at publishing to the org.bluez service. It
> is also not where the current examples publish to.
> Looking at the GattProfile1 documentation, it has service and object
> as application dependant.
> Service <application dependent>
> Interface org.bluez.GattProfile1
> Object path <application dependent>
> Should the documentation of Service on LEAdvertisement1 be freely
> definable also?

Yep, the bus name is up to the application which usually don't
register a friendly name if you try to register with 'org.bluez' it
would probably conflict with the daemon itself so you wouldn't be able
to register that name anyway.

> I have created the LEAdvertisement1 interface so that it has an
> ObjectManager and is introspectable. When I pass the object to
> RegisterAdvertisement on the org.bluez.LEAdvertisingManager1 interface
> it accepts it (does not give an error) but does not register the data
> and I see no advertisement appear. Is there somewhere I can find a
> more detailed description of what needs to be on the
> org.bluez.LEAdvertisement1 interface that will work with
> RegisterAdvertisement?

Do you have the bluetoothd output when you register, I get the
following when using bluetoothctl:

bluetooth]# power on
Changing power on succeeded
[bluetooth]# advertise on
[CHG] Controller B8:8A:60:D8:17:D7 SupportedInstances: 0x04
[CHG] Controller B8:8A:60:D8:17:D7 ActiveInstances: 0x01
Advertising object registered
Tx Power: off
Name: off
Apperance: off
Discoverable: off
[bluetooth]#

bluetoothd[6103]: src/advertising.c:client_create() Adding proxy for
/org/bluez/advertising
bluetoothd[6103]: src/advertising.c:register_advertisement()
Registered advertisement at path /org/bluez/advertising
bluetoothd[6103]: src/advertising.c:refresh_adv() Refreshing
advertisement: /org/bluez/advertising
bluetoothd[6103]: src/advertising.c:add_adv_callback() Advertisement
registered: /org/bluez/advertising


> For reference, I have put below what I am currently  putting on the
> org.bluez.LEAdvertisement1 interface.
>
> Thanks,
> Barry
>
>
> $ busctl call ukBaz.bluezero /ukBaz/bluezero/advertisement1
> org.freedesktop.DBus.ObjectManager GetManagedObjects
> a{oa{sa{sv}}} 1 "/ukBaz/bluezero/advertisement1" 5
> "org.freedesktop.DBus.Properties" 0
> "org.freedesktop.DBus.Introspectable" 0 "org.freedesktop.DBus.Peer" 0
> "org.freedesktop.DBus.ObjectManager" 0 "org.bluez.LEAdvertisement1" 6
> "Type" s "broadcast" "ServiceUUIDs" as 0 "ManufacturerData" a{sv} 0
> "SolicitUUIDs" as 0 "ServiceData" a{sv} 1 "FEAA" ay 18 16 8 3 117 107
> 66 97 122 46 103 105 116 104 117 98 46 105 111 "IncludeTxPower" b
> false

Not sure if that is the problem but usually ObjectManager is suppose
to be on the '/' (root) path.

> $ busctl call ukBaz.bluezero /ukBaz/bluezero/advertisement1
> org.freedesktop.DBus.Properties GetAll s org.bluez.LEAdvertisement1
> a{sv} 6 "Type" s "broadcast" "ServiceUUIDs" as 0 "ManufacturerData"
> a{sv} 0 "SolicitUUIDs" as 0 "ServiceData" a{sv} 1 "FEAA" ay 18 16 8 3
> 117 107 66 97 122 46 103 105 116 104 117 98 46 105 111
> "IncludeTxPower" b false
>
> $ busctl call ukBaz.bluezero /ukBaz/bluezero/advertisement1
> org.freedesktop.DBus.Introspectable Introspect
> s "<!DOCTYPE node PUBLIC \"-//freedesktop//DTD D-BUS Object
> Introspection 1.0//EN\"\n
> \"http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd\";>\n<!--
> GDBus 2.60.4 -->\n<node>\n  <interface
> name=\"org.freedesktop.DBus.Properties\">\n    <method name=\"Get\">\n
>      <arg type=\"s\" name=\"interface_name\" direction=\"in\"/>\n
> <arg type=\"s\" name=\"property_name\" direction=\"in\"/>\n      <arg
> type=\"v\" name=\"value\" direction=\"out\"/>\n    </method>\n
> <method name=\"GetAll\">\n      <arg type=\"s\"
> name=\"interface_name\" direction=\"in\"/>\n      <arg type=\"a{sv}\"
> name=\"properties\" direction=\"out\"/>\n    </method>\n    <method
> name=\"Set\">\n      <arg type=\"s\" name=\"interface_name\"
> direction=\"in\"/>\n      <arg type=\"s\" name=\"property_name\"
> direction=\"in\"/>\n      <arg type=\"v\" name=\"value\"
> direction=\"in\"/>\n    </method>\n    <signal
> name=\"PropertiesChanged\">\n      <arg type=\"s\"
> name=\"interface_name\"/>\n      <arg type=\"a{sv}\"
> name=\"changed_properties\"/>\n      <arg type=\"as\"
> name=\"invalidated_properties\"/>\n    </signal>\n  </interface>\n
> <interface name=\"org.freedesktop.DBus.Introspectable\">\n    <method
> name=\"Introspect\">\n      <arg type=\"s\" name=\"xml_data\"
> direction=\"out\"/>\n    </method>\n  </interface>\n  <interface
> name=\"org.freedesktop.DBus.Peer\">\n    <method name=\"Ping\"/>\n
> <method name=\"GetMachineId\">\n      <arg type=\"s\"
> name=\"machine_uuid\" direction=\"out\"/>\n    </method>\n
> </interface>\n  <interface
> name=\"org.freedesktop.DBus.ObjectManager\">\n    <method
> name=\"GetManagedObjects\">\n      <arg type=\"a{oa{sa{sv}}}\"
> name=\"object_paths_interfaces_and_properties\" direction=\"out\">\n
>    </arg>\n    </method>\n    <signal name=\"InterfacesAdded\">\n
> <arg type=\"o\" name=\"object_path\">\n      </arg>\n      <arg
> type=\"a{sa{sv}}\" name=\"interfaces_and_properties\">\n      </arg>\n
>    </signal>\n    <signal name=\"InterfacesRemoved\">\n      <arg
> type=\"o\" name=\"object_path\">\n      </arg>\n      <arg type=\"as\"
> name=\"interfaces\">\n      </arg>\n    </signal>\n  </interface>\n
> <interface name=\"org.bluez.LEAdvertisement1\">\n    <annotation
> name=\"org.freedesktop.DBus.Properties.PropertiesChanged\"
> value=\"const\">\n    </annotation>\n    <method name=\"Release\">\n
>    <annotation name=\"org.freedesktop.DBus.Method.NoReply\"
> value=\"true\">\n      </annotation>\n    </method>\n    <property
> type=\"s\" name=\"Type\" access=\"read\">\n    </property>\n
> <property type=\"as\" name=\"ServiceUUIDs\" access=\"read\">\n
> </property>\n    <property type=\"a{sv}\" name=\"ManufacturerData\"
> access=\"read\">\n    </property>\n    <property type=\"as\"
> name=\"SolicitUUIDs\" access=\"read\">\n    </property>\n    <property
> type=\"a{sv}\" name=\"ServiceData\" access=\"read\">\n
> </property>\n    <property type=\"b\" name=\"IncludeTxPower\"
> access=\"read\">\n    </property>\n  </interface>\n</node>\n"



-- 
Luiz Augusto von Dentz



[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