diff --git a/tools/idf_monitor.py b/tools/idf_monitor.py index aaf6cf578..a275a40d0 100755 --- a/tools/idf_monitor.py +++ b/tools/idf_monitor.py @@ -796,7 +796,7 @@ def main(): '--baud', '-b', help='Serial port baud rate', type=int, - default=os.environ.get('MONITOR_BAUD', 115200)) + default=os.getenv('IDF_MONITOR_BAUD', os.getenv('MONITORBAUD', 115200))) parser.add_argument( '--make', '-m', diff --git a/tools/idf_py_actions/serial_ext.py b/tools/idf_py_actions/serial_ext.py index 0be80d281..ef8bd68f6 100644 --- a/tools/idf_py_actions/serial_ext.py +++ b/tools/idf_py_actions/serial_ext.py @@ -2,6 +2,8 @@ import json import os import sys +import click + from idf_py_actions.errors import FatalError from idf_py_actions.global_options import global_options from idf_py_actions.tools import ensure_build_directory, run_tool @@ -21,8 +23,9 @@ def action_extensions(base_actions, project_path): ports = list(reversed(sorted(p.device for p in serial.tools.list_ports.comports()))) try: - print("Choosing default port %s (use '-p PORT' option to set a specific serial port)" % - ports[0].encode("ascii", "ignore")) + print( + "Choosing default port %s (use '-p PORT' option to set a specific serial port)" % + ports[0].encode("ascii", "ignore")) return ports[0] except IndexError: raise RuntimeError( @@ -60,7 +63,7 @@ def action_extensions(base_actions, project_path): return result - def monitor(action, ctx, args, print_filter, encrypted): + def monitor(action, ctx, args, print_filter, encrypted, monitor_baud): """ Run idf_monitor.py to watch build output """ @@ -74,14 +77,24 @@ def action_extensions(base_actions, project_path): elf_file = os.path.join(args.build_dir, project_desc["app_elf"]) if not os.path.exists(elf_file): - raise FatalError("ELF file '%s' not found. You need to build & flash the project before running 'monitor', " - "and the binary on the device must match the one in the build directory exactly. " - "Try '%s flash monitor'." % (elf_file, ctx.info_name)) + raise FatalError( + "ELF file '%s' not found. You need to build & flash the project before running 'monitor', " + "and the binary on the device must match the one in the build directory exactly. " + "Try '%s flash monitor'." % (elf_file, ctx.info_name)) idf_monitor = os.path.join(os.environ["IDF_PATH"], "tools/idf_monitor.py") monitor_args = [PYTHON, idf_monitor] if args.port is not None: monitor_args += ["-p", args.port] - monitor_args += ["-b", project_desc["monitor_baud"]] + + if not monitor_baud: + if os.getenv("IDF_MONITOR_BAUD"): + monitor_baud = os.getenv("IDF_MONITOR_BAUD", None) + elif os.getenv("MONITORBAUD"): + monitor_baud = os.getenv("MONITORBAUD", None) + else: + monitor_baud = project_desc["monitor_baud"] + + monitor_args += ["-b", monitor_baud] monitor_args += ["--toolchain-prefix", project_desc["monitor_toolprefix"]] if print_filter is not None: @@ -130,7 +143,7 @@ def action_extensions(base_actions, project_path): baud_rate = { "names": ["-b", "--baud"], - "help": "Baud rate.", + "help": "Baud rate for flashing.", "scope": "global", "envvar": "ESPBAUD", "default": 460800, @@ -163,8 +176,7 @@ def action_extensions(base_actions, project_path): "callback": monitor, "help": "Display serial output.", "options": [ - port, - { + port, { "names": ["--print-filter", "--print_filter"], "help": ( "Filter monitor output.\n" @@ -180,10 +192,20 @@ def action_extensions(base_actions, project_path): }, { "names": ["--encrypted", "-E"], "is_flag": True, - "help": ("Enable encrypted flash targets.\n" - "IDF Monitor will invoke encrypted-flash and encrypted-app-flash targets " - "if this option is set. This option is set by default if IDF Monitor was invoked " - "together with encrypted-flash or encrypted-app-flash target."), + "help": ( + "Enable encrypted flash targets.\n" + "IDF Monitor will invoke encrypted-flash and encrypted-app-flash targets " + "if this option is set. This option is set by default if IDF Monitor was invoked " + "together with encrypted-flash or encrypted-app-flash target."), + }, { + "names": ["--monitor-baud", "-B"], + "type": click.INT, + "help": ( + "Baud rate for monitor.\n" + "If this option is not provided IDF_MONITOR_BAUD and MONITORBAUD " + "environment variables and project_description.json in build directory " + "(generated by CMake from project's sdkconfig) " + "will be checked for default value."), } ], "order_dependencies": [