Release version 7 "Paisius of Hilendar"
[a2jmidid.git] / a2j_control
blob2db14f5b433f88d9f3ca29423c3c2560140d4d4d
1 #!/usr/bin/env python
3 name_base = 'org.gna.home.a2jmidid'
4 control_interface_name = name_base + '.control'
5 service_name = name_base
7 import sys
8 import os
9 from traceback import print_exc
11 import dbus
13 def main():
14 if len(sys.argv) == 1:
15 print "Usage: %s [command] [command] ..." % os.path.basename(sys.argv[0])
16 print "Commands:"
17 print " exit - exit a2j bridge dbus service"
18 print " start - start bridging"
19 print " stop - stop brdiging"
20 print " status - get bridging status"
21 print " gjcn - get JACK client name"
22 print " ma2jp <client_id> <port_id> - map ALSA to JACK playback port"
23 print " ma2jc <client_id> <port_id> - map ALSA to JACK capture port"
24 print " mj2a <jack_port_name> - map JACK port to ALSA port"
25 print " ehw - enable export of hardware ports"
26 print " dhw - disable export of hardware ports"
27 sys.exit(0)
29 bus = dbus.SessionBus()
31 controller = bus.get_object(service_name, "/")
32 control_iface = dbus.Interface(controller, control_interface_name)
34 # check arguments
35 index = 1
36 while index < len(sys.argv):
37 arg = sys.argv[index]
38 index += 1
39 try:
40 if arg == "exit":
41 print "--- exit"
42 control_iface.exit()
43 elif arg == "start":
44 print "--- start"
45 control_iface.start()
46 elif arg == "stop":
47 print "--- stop"
48 control_iface.stop()
49 elif arg == "status":
50 print "--- status"
51 if control_iface.is_started():
52 print "Bridging enabled"
53 else:
54 print "Bridging disabled"
55 elif arg == "gjcn":
56 print "--- get jack client name"
57 print control_iface.get_jack_client_name()
58 elif arg == 'ma2jp':
59 print "--- map ALSA to JACK playback port"
60 if index + 1 >= len(sys.argv):
61 print "map ALSA to JACK playback port command requires ALSA client ID and ALSA port ID arguments"
62 sys.exit()
63 client_id = sys.argv[index]
64 index += 1
65 port_id = sys.argv[index]
66 index += 1
68 print "'%s'" % control_iface.map_alsa_to_jack_port(client_id, port_id, True)
69 elif arg == 'ma2jc':
70 print "--- map ALSA to JACK capture port"
71 if index + 1 >= len(sys.argv):
72 print "map ALSA to JACK capture port command requires ALSA client ID and ALSA port ID arguments"
73 sys.exit()
74 client_id = sys.argv[index]
75 index += 1
76 port_id = sys.argv[index]
77 index += 1
79 print "'%s'" % control_iface.map_alsa_to_jack_port(client_id, port_id, False)
80 elif arg == 'mj2a':
81 print "--- map JACK to ALSA port"
82 if index >= len(sys.argv):
83 print "map JACK to ALSA port command requires JACK port name argument"
84 sys.exit()
85 jack_port = sys.argv[index]
86 index += 1
88 out = control_iface.map_jack_port_to_alsa(jack_port)
89 print "%u:%u ('%s':'%s')" % (int(out[0]), int(out[1]), str(out[2]), str(out[3]))
90 elif arg == 'ehw':
91 print "--- enable export of hardware ports"
92 control_iface.set_hw_export(True)
93 elif arg == 'dhw':
94 print "--- disable export of hardware ports"
95 control_iface.set_hw_export(False)
96 else:
97 print "Unknown command '%s'" % arg
98 except dbus.DBusException, e:
99 print "DBus exception: %s" % str(e)
101 if __name__ == '__main__':
102 main()