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