jack1 codebase
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

117 lines
2.0KB

  1. #!/usr/bin/env python
  2. import sys
  3. from mygetopt import my_getopt
  4. import jackctl
  5. import readline
  6. argv = sys.argv[1:]
  7. def server_parse_ags( srv, argv ):
  8. shortopts = ""
  9. longopts = []
  10. shortmap = {}
  11. driver = None
  12. for param in srv.params:
  13. p = srv.params[param]
  14. shortopts += p.id
  15. if p.param_type != 5:
  16. shortopts += ":"
  17. longopts.append (p.name + "=")
  18. else:
  19. longopts.append (p.name)
  20. shortmap[p.id] = p
  21. while not driver:
  22. opts, argv = my_getopt( argv, shortopts+"d:" )
  23. if not opts:
  24. break
  25. for opt,optarg in opts:
  26. if opt == "-d":
  27. driver = srv.drivers[optarg]
  28. elif opt.startswith("--"):
  29. pass
  30. elif opt.startswith("-"):
  31. p = shortmap[opt[1]]
  32. if p.param_type == 5:
  33. p.value = True
  34. else:
  35. p.value = optarg
  36. return driver, argv
  37. def driver_parse_args( drv, argv ):
  38. shortopts = ""
  39. longopts = []
  40. shortmap = {}
  41. for param in drv.params:
  42. p = drv.params[param]
  43. shortopts += p.id
  44. if p.param_type != 5:
  45. shortopts += ":"
  46. longopts.append (p.name + "=")
  47. else:
  48. longopts.append (p.name)
  49. shortmap[p.id] = p
  50. while True:
  51. opts, argv = my_getopt( argv, shortopts+"d:" )
  52. if not opts:
  53. break
  54. for opt,optarg in opts:
  55. if opt.startswith("--"):
  56. pass
  57. elif opt.startswith("-"):
  58. p = shortmap[opt[1]]
  59. if p.param_type == 5:
  60. p.value = True
  61. else:
  62. p.value = optarg
  63. srv = jackctl.Server()
  64. drv, argv = server_parse_ags( srv, argv )
  65. driver_parse_args( drv, argv )
  66. #for p in srv.params.values():
  67. # print p.name, "-> ", p.value
  68. #
  69. #print "----------------"
  70. #print "driver ", drv.name
  71. #
  72. #for p in drv.params.values():
  73. # print p.name, "-> ", p.value
  74. srv.start( drv )
  75. quit = False
  76. while not quit:
  77. try:
  78. cmd = raw_input("jack> ")
  79. except EOFError:
  80. break
  81. cmdv = cmd.split()
  82. if len(cmdv) == 0:
  83. continue
  84. if cmdv[0] == "quit":
  85. quit = True
  86. elif cmdv[0] == "switch":
  87. if len(cmdv) > 1:
  88. drv = srv.drivers[cmdv[1]]
  89. driver_parse_args( drv, cmdv[2:] )
  90. srv.switch_master( drv )
  91. print "\nshutting down"
  92. srv.stop()