diff --git a/extra_scripts/reset_board.py b/extra_scripts/reset_board.py new file mode 100644 index 0000000..e63846e --- /dev/null +++ b/extra_scripts/reset_board.py @@ -0,0 +1,38 @@ +# thanks to [maxgerhardt](https://community.platformio.org/u/maxgerhardt/summary) +Import("env") +import os +from platformio.builder.tools.pioupload import AutodetectUploadPort + +platform = env.PioPlatform() + +AutodetectUploadPort(env) +upload_port = env.subst('$UPLOAD_PORT') + +def get_esptoolpy_reset_flags(resetmethod): + # no dtr, no_sync + resets = ("no_reset_no_sync", "soft_reset") + if resetmethod == "nodemcu": + # dtr + resets = ("default_reset", "hard_reset") + elif resetmethod == "ck": + # no dtr + resets = ("no_reset", "soft_reset") + + return ["--before", resets[0], "--after", resets[1]] + +reset_flags = ' '.join(get_esptoolpy_reset_flags(env.subst("$UPLOAD_RESETMETHOD"))) + +esptool = os.path.join(platform.get_package_dir("tool-esptoolpy"), "esptool.py") +esptool_cmd = f'$PYTHONEXE "{esptool}" --port {upload_port} {reset_flags} --no-stub run' + +# Multiple actions +env.AddCustomTarget( + name="reset", + dependencies=None, + actions=[ + esptool_cmd, + "pio device monitor" + ], + title="Reset ESP8266", + description="Resets the ESP8266 board" +)