1028ea961e350c8cdec87204d12cb83e64372380eMarcel Holtmann#!/usr/bin/python
2028ea961e350c8cdec87204d12cb83e64372380eMarcel Holtmann
3028ea961e350c8cdec87204d12cb83e64372380eMarcel Holtmannimport sys
4028ea961e350c8cdec87204d12cb83e64372380eMarcel Holtmannimport time
5028ea961e350c8cdec87204d12cb83e64372380eMarcel Holtmannimport dbus
6a90f0dfe8c079aab982ae2e67a05a7938c780d9dJohan Hedbergfrom optparse import OptionParser, make_option
7028ea961e350c8cdec87204d12cb83e64372380eMarcel Holtmann
8028ea961e350c8cdec87204d12cb83e64372380eMarcel Holtmannbus = dbus.SystemBus()
9028ea961e350c8cdec87204d12cb83e64372380eMarcel Holtmann
10028ea961e350c8cdec87204d12cb83e64372380eMarcel Holtmannmanager = dbus.Interface(bus.get_object("org.bluez", "/"),
11028ea961e350c8cdec87204d12cb83e64372380eMarcel Holtmann						"org.bluez.Manager")
12a90f0dfe8c079aab982ae2e67a05a7938c780d9dJohan Hedbergoption_list = [
13a90f0dfe8c079aab982ae2e67a05a7938c780d9dJohan Hedberg		make_option("-i", "--device", action="store",
14a90f0dfe8c079aab982ae2e67a05a7938c780d9dJohan Hedberg				type="string", dest="dev_id"),
15a90f0dfe8c079aab982ae2e67a05a7938c780d9dJohan Hedberg		]
16a90f0dfe8c079aab982ae2e67a05a7938c780d9dJohan Hedbergparser = OptionParser(option_list=option_list)
17028ea961e350c8cdec87204d12cb83e64372380eMarcel Holtmann
18a90f0dfe8c079aab982ae2e67a05a7938c780d9dJohan Hedberg(options, args) = parser.parse_args()
19a90f0dfe8c079aab982ae2e67a05a7938c780d9dJohan Hedberg
20a90f0dfe8c079aab982ae2e67a05a7938c780d9dJohan Hedbergif options.dev_id:
21a90f0dfe8c079aab982ae2e67a05a7938c780d9dJohan Hedberg	adapter_path = manager.FindAdapter(options.dev_id)
22a90f0dfe8c079aab982ae2e67a05a7938c780d9dJohan Hedbergelse:
23a90f0dfe8c079aab982ae2e67a05a7938c780d9dJohan Hedberg	adapter_path = manager.DefaultAdapter()
24a90f0dfe8c079aab982ae2e67a05a7938c780d9dJohan Hedberg
25a90f0dfe8c079aab982ae2e67a05a7938c780d9dJohan Hedbergadapter = dbus.Interface(bus.get_object("org.bluez", adapter_path),
26028ea961e350c8cdec87204d12cb83e64372380eMarcel Holtmann							"org.bluez.Adapter")
27028ea961e350c8cdec87204d12cb83e64372380eMarcel Holtmann
28a90f0dfe8c079aab982ae2e67a05a7938c780d9dJohan Hedbergif (len(args) < 1):
29028ea961e350c8cdec87204d12cb83e64372380eMarcel Holtmann	print "Usage: %s <address> [service]" % (sys.argv[0])
30028ea961e350c8cdec87204d12cb83e64372380eMarcel Holtmann	sys.exit(1)
31028ea961e350c8cdec87204d12cb83e64372380eMarcel Holtmann
320739b005c4773de13bd8ccb7d2353e7c782e2d30Luiz Augusto von Dentzaddress = args[0]
33028ea961e350c8cdec87204d12cb83e64372380eMarcel Holtmann
34a90f0dfe8c079aab982ae2e67a05a7938c780d9dJohan Hedbergif (len(args) < 2):
35028ea961e350c8cdec87204d12cb83e64372380eMarcel Holtmann	service = "spp"
36028ea961e350c8cdec87204d12cb83e64372380eMarcel Holtmannelse:
37a90f0dfe8c079aab982ae2e67a05a7938c780d9dJohan Hedberg	service = args[1]
38028ea961e350c8cdec87204d12cb83e64372380eMarcel Holtmann
39028ea961e350c8cdec87204d12cb83e64372380eMarcel Holtmannpath = adapter.FindDevice(address)
40028ea961e350c8cdec87204d12cb83e64372380eMarcel Holtmann
41028ea961e350c8cdec87204d12cb83e64372380eMarcel Holtmannserial = dbus.Interface(bus.get_object("org.bluez", path),
42028ea961e350c8cdec87204d12cb83e64372380eMarcel Holtmann						"org.bluez.Serial")
43028ea961e350c8cdec87204d12cb83e64372380eMarcel Holtmann
44028ea961e350c8cdec87204d12cb83e64372380eMarcel Holtmannnode = serial.Connect(service)
45028ea961e350c8cdec87204d12cb83e64372380eMarcel Holtmann
46529726b5660ec5aca98b618303718967b758f15fVille Tervoprint "Connected %s to %s" % (node, address)
47028ea961e350c8cdec87204d12cb83e64372380eMarcel Holtmann
48028ea961e350c8cdec87204d12cb83e64372380eMarcel Holtmannprint "Press CTRL-C to disconnect"
49028ea961e350c8cdec87204d12cb83e64372380eMarcel Holtmann
50028ea961e350c8cdec87204d12cb83e64372380eMarcel Holtmanntry:
51028ea961e350c8cdec87204d12cb83e64372380eMarcel Holtmann	time.sleep(1000)
52028ea961e350c8cdec87204d12cb83e64372380eMarcel Holtmann	print "Terminating connection"
53028ea961e350c8cdec87204d12cb83e64372380eMarcel Holtmannexcept:
54028ea961e350c8cdec87204d12cb83e64372380eMarcel Holtmann	pass
55028ea961e350c8cdec87204d12cb83e64372380eMarcel Holtmann
56028ea961e350c8cdec87204d12cb83e64372380eMarcel Holtmannserial.Disconnect(node)
57