gw.py 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. #!/usr/bin/env python3
  2. # gw.py
  3. #
  4. # Greaseweazle control script.
  5. #
  6. # Written & released by Keir Fraser <keir.xen@gmail.com>
  7. #
  8. # This is free and unencumbered software released into the public domain.
  9. # See the file COPYING for more details, or visit <http://unlicense.org>.
  10. import sys
  11. import importlib
  12. from greaseweazle import error
  13. missing_modules = []
  14. try:
  15. import bitarray
  16. except ImportError:
  17. missing_modules.append("bitarray")
  18. try:
  19. import crcmod
  20. except ImportError:
  21. missing_modules.append("crcmod")
  22. try:
  23. import serial.tools.list_ports
  24. except ImportError:
  25. missing_modules.append("pyserial")
  26. if missing_modules:
  27. print("""\
  28. ** Missing Python modules: %s
  29. For installation instructions please read the wiki:
  30. <https://github.com/keirf/Greaseweazle/wiki/Software-Installation>"""
  31. % ', '.join(missing_modules))
  32. sys.exit(1)
  33. actions = [ 'read', 'write', 'delays', 'update', 'pin', 'reset' ]
  34. argv = sys.argv
  35. if len(argv) < 2 or argv[1] not in actions:
  36. print("Usage: %s [action] ..." % (argv[0]))
  37. print("Actions: ", end="")
  38. print(", ".join(str(x) for x in actions))
  39. sys.exit(1)
  40. mod = importlib.import_module('greaseweazle.tools.' + argv[1])
  41. main = mod.__dict__['main']
  42. try:
  43. res = main(argv)
  44. if res is None:
  45. res = 0
  46. except error.Fatal as err:
  47. print("** FATAL ERROR:")
  48. print(err)
  49. res = 1
  50. sys.exit(res)
  51. # Local variables:
  52. # python-indent: 4
  53. # End: