pin.py 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. # greaseweazle/tools/pin.py
  2. #
  3. # Greaseweazle control script: Set a floppy interface pin to specified level.
  4. #
  5. # Written & released by Keir Fraser <keir.xen@gmail.com>
  6. #
  7. # This is free and unencumbered software released into the public domain.
  8. # See the file COPYING for more details, or visit <http://unlicense.org>.
  9. import sys, argparse
  10. from greaseweazle.tools import util
  11. from greaseweazle import usb as USB
  12. def level(letter):
  13. levels = { 'H': True, 'L': False }
  14. if not letter.upper() in levels:
  15. raise argparse.ArgumentTypeError("invalid pin level: '%s'" % letter)
  16. return levels[letter.upper()]
  17. def main(argv):
  18. parser = argparse.ArgumentParser(
  19. formatter_class=argparse.ArgumentDefaultsHelpFormatter)
  20. parser.add_argument("pin", type=int,
  21. help="pin number")
  22. parser.add_argument("level", type=level,
  23. help="pin level (H,L)")
  24. parser.add_argument("device", nargs="?", default="auto",
  25. help="serial device")
  26. parser.prog += ' ' + argv[1]
  27. args = parser.parse_args(argv[2:])
  28. try:
  29. usb = util.usb_open(args.device)
  30. usb.set_pin(args.pin, args.level)
  31. print("Pin %u is set %s" %
  32. (args.pin, ("Low (0v)", "High (5v)")[args.level]))
  33. except USB.CmdError as error:
  34. print("Command Failed: %s" % error)
  35. if __name__ == "__main__":
  36. main(sys.argv)
  37. # Local variables:
  38. # python-indent: 4
  39. # End: