#!/usr/bin/python import os import sys import gobject import dbus import dbus.mainloop.glib from dbus.lowlevel import MethodCallMessage, HANDLER_RESULT_NOT_YET_HANDLED mainloop = gobject.MainLoop() def property_changed_adapter(name, value, path): if name in ["Devices"]: if (len(value) == 0): print "Lost device, exiting" mainloop.quit() else: device_path = value[0] print "Pairing with %s" % (device_path) device = dbus.Interface(bus.get_object("org.neard", device_path), "org.neard.Device") device.Push(({ "Type" : "Handover", "Carrier" : "bluetooth"})) if __name__ == '__main__': dbus.mainloop.glib.DBusGMainLoop(set_as_default=True) bus = dbus.SystemBus() bluez_manager = dbus.Interface(bus.get_object("org.bluez", "/"), "org.bluez.Manager") bluez_adapter_path = bluez_manager.DefaultAdapter() bluez_adapter = dbus.Interface(bus.get_object("org.bluez", bluez_adapter_path), "org.bluez.Adapter") for bluez_path in bluez_adapter.ListDevices(): print("Removing %s" % (bluez_path)) bluez_adapter.RemoveDevice(bluez_path) manager = dbus.Interface(bus.get_object("org.neard", "/"), "org.neard.Manager") properties = manager.GetProperties() device_path = properties["Adapters"][0] adapter = dbus.Interface(bus.get_object("org.neard", device_path), "org.neard.Adapter") adapter_properties = adapter.GetProperties() for key in adapter_properties.keys(): if key in ["Polling"]: if adapter_properties[key] == dbus.Boolean(1): print "Stoping poll on %s" % (device_path) adapter.StopPollLoop() print "Starting poll on %s" % (device_path) adapter.StartPollLoop("Initiator") bus.add_signal_receiver(property_changed_adapter, bus_name="org.neard", dbus_interface="org.neard.Adapter", signal_name = "PropertyChanged", path_keyword="path") mainloop.run()