#!/usr/bin/env python name_base = 'org.gna.home.a2jmidid' control_interface_name = name_base + '.control' service_name = name_base import sys import os from traceback import print_exc import dbus def main(): if len(sys.argv) == 1: print "Usage: %s [command] [command] ..." % os.path.basename(sys.argv[0]) print "Commands:" print " exit - exit a2j bridge dbus service" print " start - start bridging" print " stop - stop brdiging" print " status - get bridging status" print " gjcn - get JACK client name" print " ma2jp - map ALSA to JACK playback port" print " ma2jc - map ALSA to JACK capture port" print " mj2a - map JACK port to ALSA port" print " ehw - enable export of hardware ports" print " dhw - disable export of hardware ports" sys.exit(0) bus = dbus.SessionBus() controller = bus.get_object(service_name, "/") control_iface = dbus.Interface(controller, control_interface_name) # check arguments index = 1 while index < len(sys.argv): arg = sys.argv[index] index += 1 try: if arg == "exit": print "--- exit" control_iface.exit() elif arg == "start": print "--- start" control_iface.start() elif arg == "stop": print "--- stop" control_iface.stop() elif arg == "status": print "--- status" if control_iface.is_started(): print "Bridging enabled" else: print "Bridging disabled" if control_iface.get_hw_export(): print "Hardware exported" else: print "Hardware not exported" elif arg == "gjcn": print "--- get jack client name" print control_iface.get_jack_client_name() elif arg == 'ma2jp': print "--- map ALSA to JACK playback port" if index + 1 >= len(sys.argv): print "map ALSA to JACK playback port command requires ALSA client ID and ALSA port ID arguments" sys.exit() client_id = sys.argv[index] index += 1 port_id = sys.argv[index] index += 1 print "'%s'" % control_iface.map_alsa_to_jack_port(client_id, port_id, True) elif arg == 'ma2jc': print "--- map ALSA to JACK capture port" if index + 1 >= len(sys.argv): print "map ALSA to JACK capture port command requires ALSA client ID and ALSA port ID arguments" sys.exit() client_id = sys.argv[index] index += 1 port_id = sys.argv[index] index += 1 print "'%s'" % control_iface.map_alsa_to_jack_port(client_id, port_id, False) elif arg == 'mj2a': print "--- map JACK to ALSA port" if index >= len(sys.argv): print "map JACK to ALSA port command requires JACK port name argument" sys.exit() jack_port = sys.argv[index] index += 1 out = control_iface.map_jack_port_to_alsa(jack_port) print "%u:%u ('%s':'%s')" % (int(out[0]), int(out[1]), str(out[2]), str(out[3])) elif arg == 'ehw': print "--- enable export of hardware ports" control_iface.set_hw_export(True) elif arg == 'dhw': print "--- disable export of hardware ports" control_iface.set_hw_export(False) else: print "Unknown command '%s'" % arg except dbus.DBusException, e: print "DBus exception: %s" % str(e) if __name__ == '__main__': main()