test: Add a Bluetooth handover wrapper script
authorSamuel Ortiz <sameo@linux.intel.com>
Wed, 19 Sep 2012 00:15:52 +0000 (02:15 +0200)
committerSamuel Ortiz <sameo@linux.intel.com>
Wed, 19 Sep 2012 00:15:52 +0000 (02:15 +0200)
Makefile.am
test/bt-handover [new file with mode: 0755]

index d39d4e4..e8d0691 100644 (file)
@@ -72,7 +72,7 @@ EXTRA_DIST = src/genbuiltin $(doc_files)
 test_scripts = test/disable-adapter test/enable-adapter test/list-adapters \
                test/dump-device test/dump-tag test/dump-record \
                test/monitor-near test/start-poll test/stop-poll test/write-tag \
-               test/push-device
+               test/push-device test/bt-handover
 
 if TEST
 testdir = $(pkglibdir)/test
diff --git a/test/bt-handover b/test/bt-handover
new file mode 100755 (executable)
index 0000000..95b6dbf
--- /dev/null
@@ -0,0 +1,69 @@
+#!/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()