From 330db29120d74072e8956b828392da084bfa2e49 Mon Sep 17 00:00:00 2001 From: Marek Fiala Date: Mon, 7 Mar 2022 14:46:13 +0100 Subject: [PATCH] tools: set baudrate and port with otatool. Bugfix: Allow setting options port -p and baudrate -b, with idf.py otatool commands. Closes https://github.com/espressif/esp-idf/issues/8317 --- tools/idf_py_actions/core_ext.py | 10 ---------- tools/idf_py_actions/serial_ext.py | 32 +++++++++++++++++++++++++----- 2 files changed, 27 insertions(+), 15 deletions(-) diff --git a/tools/idf_py_actions/core_ext.py b/tools/idf_py_actions/core_ext.py index 6fc41728a3..4e5b8051ae 100644 --- a/tools/idf_py_actions/core_ext.py +++ b/tools/idf_py_actions/core_ext.py @@ -380,16 +380,6 @@ def action_extensions(base_actions, project_path): 'order_dependencies': ['reconfigure'], 'options': global_options, }, - 'erase_otadata': { - 'callback': build_target, - 'help': 'Erase otadata partition.', - 'options': global_options, - }, - 'read_otadata': { - 'callback': build_target, - 'help': 'Read otadata partition.', - 'options': global_options, - }, 'build-system-targets': { 'callback': list_build_system_targets, 'help': 'Print list of build system targets.', diff --git a/tools/idf_py_actions/serial_ext.py b/tools/idf_py_actions/serial_ext.py index 3aa7fe8f6a..9b8dfb8c74 100644 --- a/tools/idf_py_actions/serial_ext.py +++ b/tools/idf_py_actions/serial_ext.py @@ -138,6 +138,17 @@ def action_extensions(base_actions, project_path): task.action_args['encrypted'] = True break + def ota_targets(target_name, ctx, args): + """ + Execute the target build system to build target 'target_name'. + Additionally set global variables for baud and port. + Calls ensure_build_directory() which will run cmake to generate a build + directory (with the specified generator) as needed. + """ + args.port = args.port or _get_default_serial_port(args) + ensure_build_directory(args, ctx.info_name) + run_target(target_name, args, {'ESPBAUD': str(args.baud), 'ESPPORT': args.port}) + baud_rate = { 'names': ['-b', '--baud'], 'help': 'Baud rate for flashing.', @@ -154,19 +165,20 @@ def action_extensions(base_actions, project_path): 'default': None, } + BAUD_AND_PORT = [baud_rate, port] serial_actions = { 'global_action_callbacks': [global_callback], 'actions': { 'flash': { 'callback': flash, 'help': 'Flash the project.', - 'options': global_options + [baud_rate, port], + 'options': global_options + BAUD_AND_PORT, 'order_dependencies': ['all', 'erase_flash'], }, 'erase_flash': { 'callback': erase_flash, 'help': 'Erase entire flash chip.', - 'options': [baud_rate, port], + 'options': BAUD_AND_PORT, }, 'monitor': { 'callback': @@ -218,19 +230,19 @@ def action_extensions(base_actions, project_path): 'partition_table-flash': { 'callback': flash, 'help': 'Flash partition table only.', - 'options': [baud_rate, port], + 'options': BAUD_AND_PORT, 'order_dependencies': ['partition_table', 'erase_flash'], }, 'bootloader-flash': { 'callback': flash, 'help': 'Flash bootloader only.', - 'options': [baud_rate, port], + 'options': BAUD_AND_PORT, 'order_dependencies': ['bootloader', 'erase_flash'], }, 'app-flash': { 'callback': flash, 'help': 'Flash the app only.', - 'options': [baud_rate, port], + 'options': BAUD_AND_PORT, 'order_dependencies': ['app', 'erase_flash'], }, 'encrypted-app-flash': { @@ -243,6 +255,16 @@ def action_extensions(base_actions, project_path): 'help': 'Flash the encrypted project.', 'order_dependencies': ['all', 'erase_flash'], }, + 'erase_otadata': { + 'callback': ota_targets, + 'help': 'Erase otadata partition.', + 'options': global_options + BAUD_AND_PORT, + }, + 'read_otadata': { + 'callback': ota_targets, + 'help': 'Read otadata partition.', + 'options': global_options + BAUD_AND_PORT, + }, }, }