diff --git a/tools/plotjuggler/juggle.py b/tools/plotjuggler/juggle.py index e863712415..f078b12bc7 100755 --- a/tools/plotjuggler/juggle.py +++ b/tools/plotjuggler/juggle.py @@ -37,7 +37,20 @@ def juggle_file(fn, dbc=None, layout=None): extra_args += f'-l {layout}' subprocess.call(f'{pj} --plugin_folders {os.path.join(juggle_dir, "bin")} -d {fn} {extra_args}', shell=True, env=env, cwd=juggle_dir) -def juggle_route(route_name, segment_number, qlog, can, layout): +def juggle_route(route_name, segment_number, qlog, can, stream, layout): + has_route = route_name is not None + if route_name is None and stream: + print("Select \"Cereal Subscriber\" in plugin list and click Start!") + env = os.environ.copy() + env["BASEDIR"] = BASEDIR # TODO: use --can to enable can streaming and parsing + + pj = os.getenv("PLOTJUGGLER_PATH", "plotjuggler") + extra_args = "" + if layout is not None: + extra_args += f'-l {layout}' + subprocess.call(f'{pj} --plugin_folders {os.path.join(juggle_dir, "bin")} {extra_args}', shell=True, + env=env, cwd=juggle_dir) + return if route_name.startswith("http://") or route_name.startswith("https://") or os.path.isfile(route_name): logs = [route_name] @@ -88,6 +101,7 @@ def get_arg_parser(): parser.add_argument("--qlog", action="store_true", help="Use qlogs") parser.add_argument("--can", action="store_true", help="Parse CAN data") + parser.add_argument("--stream", action="store_true", help="Start PlotJuggler without a route to stream data using Cereal") parser.add_argument("--layout", nargs='?', help="Run PlotJuggler with a pre-defined layout") parser.add_argument("route_name", nargs='?', help="The name of the route that will be plotted.") parser.add_argument("segment_number", type=int, nargs='?', help="The index of the segment that will be plotted") @@ -99,4 +113,4 @@ if __name__ == "__main__": arg_parser.print_help() sys.exit() args = arg_parser.parse_args(sys.argv[1:]) - juggle_route(args.route_name, args.segment_number, args.qlog, args.can, args.layout) + juggle_route(args.route_name, args.segment_number, args.qlog, args.can, args.stream, args.layout)