OSDN Git Service

Use the entire include path for btio.h
[android-x86/external-bluetooth-bluez.git] / test / test-thermometer
1 #!/usr/bin/python
2
3 from __future__ import absolute_import, print_function, unicode_literals
4
5 '''
6 Thermometer test script
7 '''
8
9 import gobject
10
11 import sys
12 import dbus
13 import dbus.service
14 import dbus.mainloop.glib
15 from optparse import OptionParser, make_option
16 import bluezutils
17
18 class Watcher(dbus.service.Object):
19         @dbus.service.method("org.bluez.ThermometerWatcher",
20                                         in_signature="oa{sv}", out_signature="")
21         def MeasurementReceived(self, device, measure):
22                 print("%s measurement received from %s" % (measure["Measurement"], device))
23                 print("Exponent: ", measure["Exponent"])
24                 print("Mantissa: ", measure["Mantissa"])
25                 print("Unit: ", measure["Unit"])
26
27                 if "Time" in measure:
28                         print("Time: ", measure["Time"])
29
30                 if "Type" in measure:
31                         print("Type: ", measure["Type"])
32
33 def properties_changed(interface, changed, invalidated):
34         if interface != "org.bluez.Thermometer":
35                 return
36         for name, value in changed.iteritems():
37                 print("Property %s changed:  %s" % (name, str(value)))
38
39 if __name__ == "__main__":
40         dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
41
42         bus = dbus.SystemBus()
43
44         option_list = [
45                 make_option("-i", "--adapter", action="store",
46                         type="string", dest="adapter"),
47                 make_option("-b", "--device", action="store",
48                         type="string", dest="address"),
49                 ]
50
51         parser = OptionParser(option_list=option_list)
52
53         (options, args) = parser.parse_args()
54
55         if not options.address:
56                 print("Usage: %s [-i <adapter>] -b <bdaddr> [command]" % (sys.argv[0]))
57                 print("Possible commands:")
58                 print("\tEnableIntermediateMeasurement")
59                 sys.exit(1)
60
61         managed_objects = bluezutils.get_managed_objects()
62         adapter = bluezutils.find_adapter_in_objects(managed_objects,
63                                                                 options.adapter)
64         adapter_path = adapter.object_path
65
66         thermometer_manager = dbus.Interface(bus.get_object("org.bluez",
67                                 adapter_path), "org.bluez.ThermometerManager")
68
69         device = bluezutils.find_device_in_objects(managed_objects,
70                                                                 options.address,
71                                                                 options.adapter)
72         device_path = device.object_path
73
74         bus.add_signal_receiver(properties_changed, bus_name="org.bluez",
75                         path=device_path,
76                         dbus_interface="org.freedesktop.DBus.Properties",
77                         signal_name="PropertiesChanged")
78
79         path = "/test/watcher"
80         watcher = Watcher(bus, path)
81
82         thermometer_manager.RegisterWatcher(path)
83
84         if len(args) > 0:
85                 if args[0] == "EnableIntermediateMeasurement":
86                         thermometer_manager.EnableIntermediateMeasurement(path)
87                 else:
88                         print("unknown command")
89                         sys.exit(1)
90
91         mainloop = gobject.MainLoop()
92         mainloop.run()