3
from optparse import OptionParser, make_option
9
import dbus.mainloop.glib
11
from gi.repository import GObject
13
import gobject as GObject
15
class Profile(dbus.service.Object):
18
@dbus.service.method("org.bluez.Profile1",
19
in_signature="", out_signature="")
24
@dbus.service.method("org.bluez.Profile1",
25
in_signature="", out_signature="")
29
@dbus.service.method("org.bluez.Profile1",
30
in_signature="oha{sv}", out_signature="")
31
def NewConnection(self, path, fd, properties):
33
print("NewConnection(%s, %d)" % (path, self.fd))
34
for key in properties.keys():
35
if key == "Version" or key == "Features":
36
print(" %s = 0x%04x" % (key, properties[key]))
38
print(" %s = %s" % (key, properties[key]))
40
@dbus.service.method("org.bluez.Profile1",
41
in_signature="o", out_signature="")
42
def RequestDisconnection(self, path):
43
print("RequestDisconnection(%s)" % (path))
49
if __name__ == '__main__':
50
dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
52
bus = dbus.SystemBus()
54
manager = dbus.Interface(bus.get_object("org.bluez",
55
"/org/bluez"), "org.bluez.ProfileManager1")
58
make_option("-u", "--uuid", action="store",
59
type="string", dest="uuid",
61
make_option("-p", "--path", action="store",
62
type="string", dest="path",
63
default="/foo/bar/profile"),
64
make_option("-n", "--name", action="store",
65
type="string", dest="name",
67
make_option("-s", "--server",
69
const="server", dest="role"),
70
make_option("-c", "--client",
72
const="client", dest="role"),
73
make_option("-a", "--auto-connect",
75
dest="auto_connect", default=False),
76
make_option("-P", "--PSM", action="store",
77
type="int", dest="psm",
79
make_option("-C", "--channel", action="store",
80
type="int", dest="channel",
82
make_option("-r", "--record", action="store",
83
type="string", dest="record",
85
make_option("-S", "--service", action="store",
86
type="string", dest="service",
90
parser = OptionParser(option_list=option_list)
92
(options, args) = parser.parse_args()
94
profile = Profile(bus, options.path)
96
mainloop = GObject.MainLoop()
99
"AutoConnect" : options.auto_connect,
103
opts["Name"] = options.name
106
opts["Role"] = options.role
108
if (options.psm is not None):
109
opts["PSM"] = dbus.UInt16(options.psm)
111
if (options.channel is not None):
112
opts["Channel"] = dbus.UInt16(options.channel)
115
opts["ServiceRecord"] = options.record
117
if (options.service):
118
opts["Service"] = options.service
121
options.uuid = str(uuid.uuid4())
123
manager.RegisterProfile(options.path, options.uuid, opts)