save_ubloxraw_stream.py 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. #!/usr/bin/env python3
  2. import argparse
  3. import os
  4. import sys
  5. from openpilot.common.basedir import BASEDIR
  6. from openpilot.tools.lib.logreader import LogReader
  7. os.environ['BASEDIR'] = BASEDIR
  8. def get_arg_parser():
  9. parser = argparse.ArgumentParser(
  10. description="Unlogging and save to file",
  11. formatter_class=argparse.ArgumentDefaultsHelpFormatter)
  12. parser.add_argument("route", type=(lambda x: x.replace("#", "|")), nargs="?",
  13. help="The route whose messages will be published.")
  14. parser.add_argument("--out_path", nargs='?', default='/data/ubloxRaw.stream',
  15. help="Output pickle file path")
  16. return parser
  17. def main():
  18. args = get_arg_parser().parse_args(sys.argv[1:])
  19. lr = LogReader(args.route)
  20. with open(args.out_path, 'wb') as f:
  21. try:
  22. done = False
  23. i = 0
  24. while not done:
  25. msg = next(lr)
  26. if not msg:
  27. break
  28. smsg = msg.as_builder()
  29. typ = smsg.which()
  30. if typ == 'ubloxRaw':
  31. f.write(smsg.to_bytes())
  32. i += 1
  33. except StopIteration:
  34. print('All done')
  35. print(f'Writed {i} msgs')
  36. if __name__ == "__main__":
  37. main()