~ubuntu-branches/ubuntu/wily/bluez/wily

« back to all changes in this revision

Viewing changes to test/simple-agent

  • Committer: Bazaar Package Importer
  • Author(s): Mario Limonciello
  • Date: 2008-10-07 12:10:29 UTC
  • Revision ID: james.westby@ubuntu.com-20081007121029-4gup4fmmh2vfo5nh
Tags: upstream-4.12
ImportĀ upstreamĀ versionĀ 4.12

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#!/usr/bin/python
 
2
 
 
3
import gobject
 
4
 
 
5
import sys
 
6
import dbus
 
7
import dbus.service
 
8
import dbus.mainloop.glib
 
9
 
 
10
class Rejected(dbus.DBusException):
 
11
        _dbus_error_name = "org.bluez.Error.Rejected"
 
12
 
 
13
class Agent(dbus.service.Object):
 
14
        exit_on_release = True
 
15
 
 
16
        def set_exit_on_release(self, exit_on_release):
 
17
                self.exit_on_release = exit_on_release
 
18
 
 
19
        @dbus.service.method("org.bluez.Agent",
 
20
                                        in_signature="", out_signature="")
 
21
        def Release(self):
 
22
                print "Release"
 
23
                if self.exit_on_release:
 
24
                        mainloop.quit()
 
25
 
 
26
        @dbus.service.method("org.bluez.Agent",
 
27
                                        in_signature="os", out_signature="")
 
28
        def Authorize(self, device, uuid):
 
29
                print "Authorize (%s, %s)" % (device, uuid)
 
30
 
 
31
        @dbus.service.method("org.bluez.Agent",
 
32
                                        in_signature="o", out_signature="s")
 
33
        def RequestPinCode(self, device):
 
34
                print "RequestPinCode (%s)" % (device)
 
35
                return raw_input("Enter PIN Code: ")
 
36
 
 
37
        @dbus.service.method("org.bluez.Agent",
 
38
                                        in_signature="o", out_signature="u")
 
39
        def RequestPasskey(self, device):
 
40
                print "RequestPasskey (%s)" % (device)
 
41
                passkey = raw_input("Enter passkey: ")
 
42
                return dbus.UInt32(passkey)
 
43
 
 
44
        @dbus.service.method("org.bluez.Agent",
 
45
                                        in_signature="ou", out_signature="")
 
46
        def DisplayPasskey(self, device, passkey):
 
47
                print "DisplayPasskey (%s, %d)" % (device, passkey)
 
48
 
 
49
        @dbus.service.method("org.bluez.Agent",
 
50
                                        in_signature="ou", out_signature="")
 
51
        def RequestConfirmation(self, device, passkey):
 
52
                print "RequestConfirmation (%s, %d)" % (device, passkey)
 
53
                confirm = raw_input("Confirm passkey (yes/no): ")
 
54
                if (confirm == "yes"):
 
55
                        return
 
56
                raise Rejected("Passkey doesn't match")
 
57
 
 
58
        @dbus.service.method("org.bluez.Agent",
 
59
                                        in_signature="s", out_signature="")
 
60
        def ConfirmModeChange(self, mode):
 
61
                print "ConfirmModeChange (%s)" % (mode)
 
62
 
 
63
        @dbus.service.method("org.bluez.Agent",
 
64
                                        in_signature="", out_signature="")
 
65
        def Cancel(self):
 
66
                print "Cancel"
 
67
 
 
68
def create_device_reply(device):
 
69
        print "New device (%s)" % (device)
 
70
        mainloop.quit()
 
71
 
 
72
def create_device_error(error):
 
73
        print "Creating device failed: %s" % (error)
 
74
        mainloop.quit()
 
75
 
 
76
if __name__ == '__main__':
 
77
        dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
 
78
 
 
79
        bus = dbus.SystemBus()
 
80
        manager = dbus.Interface(bus.get_object("org.bluez", "/"),
 
81
                                                        "org.bluez.Manager")
 
82
 
 
83
        if len(sys.argv) > 1:
 
84
                path = manager.FindAdapter(sys.argv[1])
 
85
        else:
 
86
                path = manager.DefaultAdapter()
 
87
 
 
88
        adapter = dbus.Interface(bus.get_object("org.bluez", path),
 
89
                                                        "org.bluez.Adapter")
 
90
 
 
91
        path = "/test/agent"
 
92
        agent = Agent(bus, path)
 
93
 
 
94
        mainloop = gobject.MainLoop()
 
95
 
 
96
        if len(sys.argv) > 2:
 
97
                if len(sys.argv) > 3:
 
98
                        device = adapter.FindDevice(sys.argv[2])
 
99
                        adapter.RemoveDevice(device)
 
100
 
 
101
                agent.set_exit_on_release(False)
 
102
                adapter.CreatePairedDevice(sys.argv[2], path, "DisplayYesNo",
 
103
                                        reply_handler=create_device_reply,
 
104
                                        error_handler=create_device_error)
 
105
        else:
 
106
                adapter.RegisterAgent(path, "DisplayYesNo")
 
107
                print "Agent registered"
 
108
 
 
109
        mainloop.run()
 
110
 
 
111
        #adapter.UnregisterAgent(path)
 
112
        #print "Agent unregistered"