#!/usr/bin/env python3
import argparse
import os
import sys
from openpilot.common.basedir import BASEDIR
from openpilot.tools.lib.logreader import LogReader

os.environ['BASEDIR'] = BASEDIR


def get_arg_parser():
  parser = argparse.ArgumentParser(
      description="Unlogging and save to file",
      formatter_class=argparse.ArgumentDefaultsHelpFormatter)

  parser.add_argument("route", type=(lambda x: x.replace("#", "|")), nargs="?",
                      help="The route whose messages will be published.")
  parser.add_argument("--out_path", nargs='?', default='/data/ubloxRaw.stream',
                      help="Output pickle file path")
  return parser


def main():
  args = get_arg_parser().parse_args(sys.argv[1:])

  lr = LogReader(args.route)

  with open(args.out_path, 'wb') as f:
    try:
      done = False
      i = 0
      while not done:
        msg = next(lr)
        if not msg:
          break
        smsg = msg.as_builder()
        typ = smsg.which()
        if typ == 'ubloxRaw':
          f.write(smsg.to_bytes())
          i += 1
    except StopIteration:
      print('All done')
  print(f'Writed {i} msgs')


if __name__ == "__main__":
  main()