| #!/usr/bin/python |
| |
| from __future__ import absolute_import, print_function, unicode_literals |
| |
| import gobject |
| |
| import dbus.mainloop.glib |
| |
| def create_device_reply(device): |
| print("Pairing succeed!") |
| mainloop.quit() |
| |
| def create_device_error(error): |
| print("Pairing failed.") |
| mainloop.quit() |
| |
| if __name__ == '__main__': |
| dbus.mainloop.glib.DBusGMainLoop(set_as_default=True) |
| |
| mainloop = gobject.MainLoop() |
| |
| bus = dbus.SystemBus() |
| manager = dbus.Interface(bus.get_object("org.bluez", "/"), |
| "org.bluez.Manager") |
| |
| adapter0_path = manager.FindAdapter("hci0") |
| adapter1_path = manager.FindAdapter("hci1") |
| |
| adapter0 = dbus.Interface(bus.get_object("org.bluez", adapter0_path), |
| "org.bluez.Adapter") |
| adapter1 = dbus.Interface(bus.get_object("org.bluez", adapter1_path), |
| "org.bluez.Adapter") |
| |
| adapter0_address = adapter0.GetProperties()["Address"] |
| adapter1_address = adapter1.GetProperties()["Address"] |
| print("Adapters:") |
| print(" hci0: " + adapter0_address) |
| print(" hci1: " + adapter1_address) |
| print() |
| |
| print("Removing any existing bond...") |
| |
| try: |
| device = adapter0.FindDevice(adapter1_address) |
| adapter0.RemoveDevice(device) |
| except: |
| pass |
| |
| try: |
| device = adapter1.FindDevice(adapter0_address) |
| adapter1.RemoveDevice(device) |
| except: |
| pass |
| |
| print("Done.") |
| print() |
| print("Reading local Out of Band data...") |
| |
| oob_adapter0 = dbus.Interface(bus.get_object("org.bluez", |
| adapter0_path), "org.bluez.OutOfBand") |
| oob_adapter1 = dbus.Interface(bus.get_object("org.bluez", |
| adapter1_path), "org.bluez.OutOfBand") |
| |
| oob0 = oob_adapter0.ReadLocalData() |
| oob1 = oob_adapter1.ReadLocalData() |
| |
| print("Done.") |
| print() |
| print("Exchanging Out of Band data...") |
| |
| oob_adapter0.AddRemoteData(adapter1_address, oob1) |
| oob_adapter1.AddRemoteData(adapter0_address, oob0) |
| |
| print("Done.") |
| print() |
| print("Starting to pair.") |
| adapter1.CreatePairedDevice(adapter0_address, "/test/agent_oob", |
| "DisplayYesNo", |
| reply_handler=create_device_reply, |
| error_handler=create_device_error) |
| |
| mainloop.run() |