tizen 2.3.1 release
[framework/connectivity/bluez.git] / test / bluezutils.py
1 import dbus
2
3 SERVICE_NAME = "org.bluez"
4 ADAPTER_INTERFACE = SERVICE_NAME + ".Adapter1"
5 DEVICE_INTERFACE = SERVICE_NAME + ".Device1"
6
7 def get_managed_objects():
8         bus = dbus.SystemBus()
9         manager = dbus.Interface(bus.get_object("org.bluez", "/"),
10                                 "org.freedesktop.DBus.ObjectManager")
11         return manager.GetManagedObjects()
12
13 def find_adapter(pattern=None):
14         return find_adapter_in_objects(get_managed_objects(), pattern)
15
16 def find_adapter_in_objects(objects, pattern=None):
17         bus = dbus.SystemBus()
18         for path, ifaces in objects.iteritems():
19                 adapter = ifaces.get(ADAPTER_INTERFACE)
20                 if adapter is None:
21                         continue
22                 if not pattern or pattern == adapter["Address"] or \
23                                                         path.endswith(pattern):
24                         obj = bus.get_object(SERVICE_NAME, path)
25                         return dbus.Interface(obj, ADAPTER_INTERFACE)
26         raise Exception("Bluetooth adapter not found")
27
28 def find_device(device_address, adapter_pattern=None):
29         return find_device_in_objects(get_managed_objects(), device_address,
30                                                                 adapter_pattern)
31
32 def find_device_in_objects(objects, device_address, adapter_pattern=None):
33         bus = dbus.SystemBus()
34         path_prefix = ""
35         if adapter_pattern:
36                 adapter = find_adapter_in_objects(objects, adapter_pattern)
37                 path_prefix = adapter.object_path
38         for path, ifaces in objects.iteritems():
39                 device = ifaces.get(DEVICE_INTERFACE)
40                 if device is None:
41                         continue
42                 if (device["Address"] == device_address and
43                                                 path.startswith(path_prefix)):
44                         obj = bus.get_object(SERVICE_NAME, path)
45                         return dbus.Interface(obj, DEVICE_INTERFACE)
46
47         raise Exception("Bluetooth device not found")