def METHOD_NAME(lat, lon, alt, contin_sim, rinex_file, timeout):
  while True:
    try:
      # TODO: add starttime setting and altitude
      # -t 2023/01/15,00:00:00 -T 2023/01/15,00:00:00
      # this needs to match the date of the navigation file
      print(f"starting LimeGPS, Location: {lat} {lon} {alt}")
      cmd = ["LimeGPS/LimeGPS", "-e", rinex_file, "-l", f"{lat},{lon},{alt}"]
      print(f"CMD: {cmd}")
      sp.check_output(cmd, stderr=sp.PIPE, timeout=timeout)
    except KeyboardInterrupt:
      print("stopping LimeGPS")
      return
    except sp.TimeoutExpired:
      print("LimeGPS timeout reached!")
    except Exception as e:
      out_stderr = e.stderr.decode('utf-8')# pylint:disable=no-member
      if "Device is busy." in out_stderr:
        print("GPS simulation is already running, Device is busy!")
        return
      print(f"LimeGPS crashed: {str(e)}")
      print(f"stderr:\n{e.stderr.decode('utf-8')}")# pylint:disable=no-member
      return
    if contin_sim:
      lat, lon = get_continuous_coords(lat, lon)
    else:
      lat, lon = get_random_coords(lat, lon)