await_flipper.py 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. #!/usr/bin/env python3
  2. import logging
  3. import os
  4. import sys
  5. import time
  6. def flp_serial_by_name(flp_name):
  7. if sys.platform == "darwin": # MacOS
  8. flp_serial = "/dev/cu.usbmodemflip_" + flp_name + "1"
  9. elif sys.platform == "linux": # Linux
  10. flp_serial = (
  11. "/dev/serial/by-id/usb-Flipper_Devices_Inc._Flipper_"
  12. + flp_name
  13. + "_flip_"
  14. + flp_name
  15. + "-if00"
  16. )
  17. if os.path.exists(flp_serial):
  18. return flp_serial
  19. else:
  20. if os.path.exists(flp_name):
  21. return flp_name
  22. else:
  23. return ""
  24. UPDATE_TIMEOUT = 60 * 4 # 4 minutes
  25. def main():
  26. flipper_name = sys.argv[1]
  27. elapsed = 0
  28. flipper = flp_serial_by_name(flipper_name)
  29. logging.basicConfig(
  30. format="%(asctime)s %(levelname)-8s %(message)s",
  31. level=logging.INFO,
  32. datefmt="%Y-%m-%d %H:%M:%S",
  33. )
  34. logging.info("Waiting for Flipper to be ready...")
  35. while flipper == "" and elapsed < UPDATE_TIMEOUT:
  36. elapsed += 1
  37. time.sleep(1)
  38. flipper = flp_serial_by_name(flipper_name)
  39. if flipper == "":
  40. logging.error("Flipper not found!")
  41. sys.exit(1)
  42. logging.info(f"Found Flipper at {flipper}")
  43. sys.exit(0)
  44. if __name__ == "__main__":
  45. main()