diff options
author | Marcel Holtmann <marcel@holtmann.org> | 2008-09-01 22:34:04 +0200 |
---|---|---|
committer | Marcel Holtmann <marcel@holtmann.org> | 2008-09-01 22:34:04 +0200 |
commit | cf92b6dc9c0fe11ace1a9ca4e7d18cb411ba56ba (patch) | |
tree | 54bfe64770b761a0148972fd9446921d446ef895 /test/simple-agent | |
parent | b2d5d2c1062af55008c5759c0fee2a1aecd83f66 (diff) |
Move test scripts into test directory
Diffstat (limited to 'test/simple-agent')
-rwxr-xr-x | test/simple-agent | 112 |
1 files changed, 112 insertions, 0 deletions
diff --git a/test/simple-agent b/test/simple-agent new file mode 100755 index 00000000..0d3dc1f7 --- /dev/null +++ b/test/simple-agent @@ -0,0 +1,112 @@ +#!/usr/bin/python + +import gobject + +import sys +import dbus +import dbus.service +import dbus.mainloop.glib + +class Rejected(dbus.DBusException): + _dbus_error_name = "org.bluez.Error.Rejected" + +class Agent(dbus.service.Object): + exit_on_release = True + + def set_exit_on_release(self, exit_on_release): + self.exit_on_release = exit_on_release + + @dbus.service.method("org.bluez.Agent", + in_signature="", out_signature="") + def Release(self): + print "Release" + if self.exit_on_release: + mainloop.quit() + + @dbus.service.method("org.bluez.Agent", + in_signature="os", out_signature="") + def Authorize(self, device, uuid): + print "Authorize (%s, %s)" % (device, uuid) + + @dbus.service.method("org.bluez.Agent", + in_signature="o", out_signature="s") + def RequestPinCode(self, device): + print "RequestPinCode (%s)" % (device) + return raw_input("Enter PIN Code: ") + + @dbus.service.method("org.bluez.Agent", + in_signature="o", out_signature="u") + def RequestPasskey(self, device): + print "RequestPasskey (%s)" % (device) + passkey = raw_input("Enter passkey: ") + return dbus.UInt32(passkey) + + @dbus.service.method("org.bluez.Agent", + in_signature="ou", out_signature="") + def DisplayPasskey(self, device, passkey): + print "DisplayPasskey (%s, %d)" % (device, passkey) + + @dbus.service.method("org.bluez.Agent", + in_signature="ou", out_signature="") + def RequestConfirmation(self, device, passkey): + print "RequestConfirmation (%s, %d)" % (device, passkey) + confirm = raw_input("Confirm passkey (yes/no): ") + if (confirm == "yes"): + return + raise Rejected("Passkey doesn't match") + + @dbus.service.method("org.bluez.Agent", + in_signature="s", out_signature="") + def ConfirmModeChange(self, mode): + print "ConfirmModeChange (%s)" % (mode) + + @dbus.service.method("org.bluez.Agent", + in_signature="", out_signature="") + def Cancel(self): + print "Cancel" + +def create_device_reply(device): + print "New device (%s)" % (device) + mainloop.quit() + +def create_device_error(error): + print "Creating device failed: %s" % (error) + mainloop.quit() + +if __name__ == '__main__': + dbus.mainloop.glib.DBusGMainLoop(set_as_default=True) + + bus = dbus.SystemBus() + manager = dbus.Interface(bus.get_object("org.bluez", "/"), + "org.bluez.Manager") + + if len(sys.argv) > 1: + path = manager.FindAdapter(sys.argv[1]) + else: + path = manager.DefaultAdapter() + + adapter = dbus.Interface(bus.get_object("org.bluez", path), + "org.bluez.Adapter") + + path = "/test/agent" + agent = Agent(bus, path) + + mainloop = gobject.MainLoop() + + if len(sys.argv) > 2: + if len(sys.argv) > 3: + device = adapter.FindDevice(sys.argv[2]) + adapter.RemoveDevice(device) + + agent.set_exit_on_release(False) + adapter.CreatePairedDevice(sys.argv[2], path, "DisplayYesNo", + reply_handler=create_device_reply, + error_handler=create_device_error) + else: + adapter.RegisterAgent(path, "DisplayYesNo") + print "Agent registered" + + mainloop.run() + + #adapter.UnregisterAgent(path) + #print "Agent unregistered" |