8
import dbus.mainloop.glib
10
class Rejected(dbus.DBusException):
11
_dbus_error_name = "org.bluez.Error.Rejected"
13
class Agent(dbus.service.Object):
14
exit_on_release = True
16
def set_exit_on_release(self, exit_on_release):
17
self.exit_on_release = exit_on_release
19
@dbus.service.method("org.bluez.Agent",
20
in_signature="", out_signature="")
23
if self.exit_on_release:
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)
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: ")
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)
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)
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"):
56
raise Rejected("Passkey doesn't match")
58
@dbus.service.method("org.bluez.Agent",
59
in_signature="s", out_signature="")
60
def ConfirmModeChange(self, mode):
61
print "ConfirmModeChange (%s)" % (mode)
63
@dbus.service.method("org.bluez.Agent",
64
in_signature="", out_signature="")
68
def create_device_reply(device):
69
print "New device (%s)" % (device)
72
def create_device_error(error):
73
print "Creating device failed: %s" % (error)
76
if __name__ == '__main__':
77
dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
79
bus = dbus.SystemBus()
80
manager = dbus.Interface(bus.get_object("org.bluez", "/"),
84
path = manager.FindAdapter(sys.argv[1])
86
path = manager.DefaultAdapter()
88
adapter = dbus.Interface(bus.get_object("org.bluez", path),
92
agent = Agent(bus, path)
94
mainloop = gobject.MainLoop()
98
device = adapter.FindDevice(sys.argv[2])
99
adapter.RemoveDevice(device)
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)
106
adapter.RegisterAgent(path, "DisplayYesNo")
107
print "Agent registered"
111
#adapter.UnregisterAgent(path)
112
#print "Agent unregistered"