~jpsamaroo/DBus.jl

7ae2a583d2532163b5290ac9859f4545da9ebab6 — Julian P Samaroo 1 year, 22 days ago 74515d4
examples: Add GeoClue2 example
1 files changed, 62 insertions(+), 0 deletions(-)

A examples/geoclue.jl
A examples/geoclue.jl => examples/geoclue.jl +62 -0
@@ 0,0 1,62 @@
using DBus

conn = DBus.connect(:system)

DBus.start_service!(conn, "org.freedesktop.GeoClue2")
@assert DBus.name_has_owner(conn, "org.freedesktop.GeoClue2")

owner = DBus.send_recv!(conn,
                        "org.freedesktop.DBus",
                        "/org/freedesktop/DBus",
                        "org.freedesktop.DBus",
                        "GetNameOwner",
                        ["org.freedesktop.GeoClue2"])
@show owner

client = DBus.send_recv!(conn,
                         owner,
                         "/org/freedesktop/GeoClue2/Manager",
                         "org.freedesktop.GeoClue2.Manager",
                         "GetClient",
                         [])
@show client

for prop in ["DesktopId", "Location", "Active"]
    res = DBus.send_recv!(conn,
                          owner,
                          client,
                          "org.freedesktop.DBus.Properties",
                          "Get",
                          ["org.freedesktop.GeoClue2.Client",
                           prop])
    println("$prop = $res")
end
DBus.send_recv!(conn,
                owner,
                client,
                "org.freedesktop.DBus.Properties",
                "Set",
                ["org.freedesktop.GeoClue2.Client",
                 "DesktopId",
                 Ref("geoclue-demo-agent")])

DBus.send_recv!(conn,
                owner,
                client,
                "org.freedesktop.GeoClue2.Client",
                "Start",
                [])

@async DBus.listen_signal(conn, "org.freedesktop.GeoClue2.Client", "LocationUpdated") do msg
    ret = DBus.message_read(msg)::Vector{ObjectPath}
    loc_path = ret[2].path

    lat = DBus.send_recv!(conn,
                          owner,
                          loc_path,
                          "org.freedesktop.DBus",
                          "Get",
                          ["Latitude"])
end

readline()