3 from __future__ import absolute_import, print_function, unicode_literals
4 # -*- coding: utf-8 -*-
9 from dbus.mainloop.glib import DBusGMainLoop
11 from gi.repository import GObject
13 import gobject as GObject
15 BUS_NAME = 'org.bluez'
17 ADAPTER_INTERFACE = 'org.bluez.Adapter1'
18 HEALTH_MANAGER_INTERFACE = 'org.bluez.HealthManager1'
19 HEALTH_DEVICE_INTERFACE = 'org.bluez.HealthDevice1'
21 DBusGMainLoop(set_as_default=True)
22 loop = GObject.MainLoop()
24 bus = dbus.SystemBus()
28 type = int(sys.argv[1])
30 hdp_manager = dbus.Interface(bus.get_object(BUS_NAME, PATH),
31 HEALTH_MANAGER_INTERFACE)
32 app_path = hdp_manager.CreateApplication({"DataType": dbus.types.UInt16(type),
37 manager = dbus.Interface(bus.get_object(BUS_NAME, "/"),
38 "org.freedesktop.DBus.ObjectManager")
40 objects = manager.GetManagedObjects()
43 for path, ifaces in objects.iteritems():
44 if ifaces.has_key(ADAPTER_INTERFACE):
49 print("%d. %s" % (i, ad))
52 print("Select an adapter: ",)
56 pos = int(sys.stdin.readline()) - 1
59 select = adapters[pos]
60 except (TypeError, IndexError, ValueError):
61 print("Wrong selection, try again: ",)
62 except KeyboardInterrupt:
65 adapter = dbus.Interface(bus.get_object(BUS_NAME, select),
69 for path, interfaces in objects.iteritems():
70 if "org.bluez.Device1" not in interfaces:
72 properties = interfaces["org.bluez.Device1"]
73 if properties["Adapter"] != select:
76 if HEALTH_DEVICE_INTERFACE not in interfaces:
81 print("No devices available")
86 print("%d. %s" % (i, dev))
89 print("Select a device: ",)
93 pos = int(sys.stdin.readline()) - 1
97 except (TypeError, IndexError, ValueError):
98 print("Wrong selection, try again: ",)
99 except KeyboardInterrupt:
102 print("Connecting to %s" % (select))
103 device = dbus.Interface(bus.get_object(BUS_NAME, select),
104 HEALTH_DEVICE_INTERFACE)
106 chan = device.CreateChannel(app_path, "Any")
110 print("Push Enter for finishing")
113 hdp_manager.DestroyApplication(app_path)