Integrate neard post 0.6 changes - handover code
[profile/ivi/neard.git] / test / bt-handover
1 #!/usr/bin/python
2
3 import os
4 import sys
5 import gobject
6
7 import dbus
8 import dbus.mainloop.glib
9
10 from dbus.lowlevel import MethodCallMessage, HANDLER_RESULT_NOT_YET_HANDLED
11
12 mainloop = gobject.MainLoop()
13
14 def property_changed_adapter(name, value, path):
15     if name in ["Devices"]:
16         if (len(value) == 0):
17             print "Lost device, exiting"
18             mainloop.quit()
19         else:
20             device_path = value[0]
21
22             print "Pairing with %s" % (device_path)
23
24             device = dbus.Interface(bus.get_object("org.neard", device_path), "org.neard.Device")
25             device.Push(({ "Type" : "Handover", "Carrier" : "bluetooth"}))
26
27 if __name__ == '__main__':
28         dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
29
30         bus = dbus.SystemBus()
31
32         bluez_manager = dbus.Interface(bus.get_object("org.bluez", "/"), "org.bluez.Manager")
33         
34         bluez_adapter_path = bluez_manager.DefaultAdapter()
35
36         bluez_adapter = dbus.Interface(bus.get_object("org.bluez", bluez_adapter_path),
37                                                         "org.bluez.Adapter")
38
39         for bluez_path in bluez_adapter.ListDevices():
40                 print("Removing %s" % (bluez_path))
41                 bluez_adapter.RemoveDevice(bluez_path)
42
43
44         manager = dbus.Interface(bus.get_object("org.neard", "/"),
45                                         "org.neard.Manager")
46
47         properties = manager.GetProperties()
48         device_path = properties["Adapters"][0]
49         adapter = dbus.Interface(bus.get_object("org.neard", device_path),
50                                         "org.neard.Adapter")
51
52         adapter_properties = adapter.GetProperties()
53
54         for key in adapter_properties.keys():
55             if key in ["Polling"]:
56                 if adapter_properties[key] == dbus.Boolean(1):
57                     print "Stoping poll on %s" % (device_path)
58                     adapter.StopPollLoop()
59
60         print "Starting poll on %s" % (device_path)
61         adapter.StartPollLoop("Initiator")
62
63         bus.add_signal_receiver(property_changed_adapter,
64                                 bus_name="org.neard",
65                                 dbus_interface="org.neard.Adapter",
66                                 signal_name = "PropertyChanged",
67                                 path_keyword="path")
68
69         mainloop.run()