| 
							- #!/usr/bin/env python
 - 
 - import sys
 - from pyjackd.mygetopt import my_getopt
 - from pyjackd import jackctl
 - import readline
 - import time
 - 
 - import reserve_audio
 - 
 - argv = sys.argv[1:]
 - 
 - 
 - 
 - def server_parse_ags( srv, argv ):
 -     shortopts = ""
 -     longopts  = []
 -     shortmap  = {}
 -     driver = None
 - 
 -     for param in srv.params:
 - 	p = srv.params[param]
 - 	shortopts += p.id
 - 	if p.param_type != 5:
 - 	    shortopts += ":"
 - 	    longopts.append (p.name + "=")
 - 	else:
 - 	    longopts.append (p.name)
 - 
 - 	shortmap[p.id] = p
 - 
 -     while not driver:
 - 	opts, argv = my_getopt( argv, shortopts+"d:" )
 - 	if not opts:
 - 	    break
 - 	for opt,optarg in opts:
 - 	    if opt == "-d":
 - 		driver = srv.drivers[optarg]
 - 	    elif opt.startswith("--"):
 - 		pass
 - 	    elif opt.startswith("-"):
 - 		p = shortmap[opt[1]]
 - 		if p.param_type == 5:
 - 		    p.value = True
 - 		else:
 - 		    p.value = optarg
 - 
 -     return driver, argv
 - 
 - def driver_parse_args( drv, argv ):
 -     shortopts = ""
 -     longopts  = []
 -     shortmap  = {}
 - 
 -     for param in drv.params:
 - 	p = drv.params[param]
 - 	shortopts += p.id
 - 	if p.param_type != 5:
 - 	    shortopts += ":"
 - 	    longopts.append (p.name + "=")
 - 	else:
 - 	    longopts.append (p.name)
 - 
 - 	shortmap[p.id] = p
 - 
 -     while True:
 - 	opts, argv = my_getopt( argv, shortopts+"d:" )
 - 	if not opts:
 - 	    break
 - 	for opt,optarg in opts:
 - 	    if opt.startswith("--"):
 - 		pass
 - 	    elif opt.startswith("-"):
 - 		p = shortmap[opt[1]]
 - 		if p.param_type == 5:
 - 		    p.value = True
 - 		else:
 - 		    p.value = optarg
 - 
 - def acquire_dev(cardname):
 -     reserve_audio.reserve_dev(cardname,20,None)
 -     time.sleep(0.1)
 -     return True
 - 
 - def release_dev(cardname):
 -     reserve_audio.rr.unreserve()
 -     reserve_audio.rr = None
 - 
 - srv = jackctl.Server()
 - srv.acquire_card_cb = acquire_dev
 - srv.release_card_cb = release_dev
 - 
 - drv, argv = server_parse_ags( srv, argv )
 - driver_parse_args( drv, argv )
 - 
 - #for p in srv.params.values():
 - #    print p.name, "-> ", p.value
 - #
 - #print "----------------"
 - #print "driver ", drv.name
 - #
 - #for p in drv.params.values():
 - #    print p.name, "-> ", p.value
 - 
 - started = srv.start( drv )
 - 
 - if not started:
 -     print "failed to start with driver " + drv.name
 -     print "trying to start with dummy driver, switch to the right master yourself"
 - 
 -     started = srv.start( srv.drivers["dummy"] )
 - 
 -     if not started:
 - 	sys.exit(20)
 - 
 - quit = False
 - while not quit:
 -     try:
 - 	cmd  = raw_input("jack> ")
 -     except EOFError:
 - 	break
 - 
 -     cmdv = cmd.split()
 - 
 -     if len(cmdv) == 0:
 - 	continue
 - 
 -     if cmdv[0] == "quit":
 - 	quit = True
 -     elif cmdv[0] == "switch":
 - 	if len(cmdv) > 1:
 - 	    drv = srv.drivers[cmdv[1]]
 - 	    driver_parse_args( drv, cmdv[2:] )
 - 	    srv.switch_master( drv )
 - 
 - print "\nshutting down"
 - srv.stop()
 
 
  |