- Fix esptool detection to use 'version' subcommand instead of no arguments
- Fix device-update.bat to use 115200 bps for flashing, 1200 bps only for reset
- Add missing closing quotes in debug messages
Replace magic numbers with named constants for better maintainability
- Add RESET_BAUD=1200 constant for reset baud rate
- Add UPDATE_OFFSET=0x10000 constant for update flash offset
- Use constants instead of hardcoded values throughout script
Extract magic numbers to constants in shell scripts for consistency
- Add FLASH_BAUD, RESET_BAUD, UPDATE_OFFSET constants to device-update.sh
- Add RESET_BAUD, FIRMWARE_OFFSET constants to device-install.sh
- Replace hardcoded values with named constants throughout
- Maintain consistency with batch script improvements
Fix Python path quoting and remove unreachable code
- Quote Python interpreter paths to handle spaces in paths like 'C:\Program Files\Python\python.exe'
- Remove unreachable GOTO statements after EXIT /B commands
- Improve robustness when custom Python interpreters are specified
Fix esptool detection for pipx installations
- Change from checking ERRORLEVEL GEQ 2 to EQU 9009
- Pipx-installed esptool returns exit code 2 when showing help (normal)
- Only treat Windows 'command not found' error (9009) as truly not found
- Add debug output to show actual exit codes for troubleshooting
The previous method of removing `--change-mode` from the argument list used a
string (`NEW_ARGS`) and `eval set -- $NEW_ARGS` to reconstruct the positional
parameters. This was both unsafe and incorrect.
Because `NEW_ARGS` was built using quoted literal `$arg` strings instead of the
actual values, it resulted in all filtered arguments being set to the same last
value of `$arg`. This caused `getopts` to receive incorrect input and silently
fail to parse options like `-p` and `-f`, leading to broken behavior and unset
variables (e.g., `ESPTOOL_CMD` never got a port).
This patch rewrites the logic to use an array (`NEW_ARGS+=("$arg")`), and
resets positional parameters via `set -- "${NEW_ARGS[@]}"`. This preserves
argument integrity and avoids the unsafe use of `eval`.
Example of the broken behavior before this fix:
./device-update.sh -p /dev/ttyACM0 -f firmware.bin
Resulted in:
set -- firmware.bin firmware.bin firmware.bin firmware.bin
Now:
set -- -p /dev/ttyACM0 -f firmware.bin
as expected.
Signed-off-by: Neil Hanlon <neil@shrug.pw>
Fixed quoting of the `FILENAME` variable to work when the path of the
passed argument contains a space. Also fixed syntactical issues called
out by `shellcheck` in multi-condition `if` statements.
Also normalized indentation chars (was mix of tabs & spaces) and
trailing whitespace.
Co-authored-by: Tom Fifield <tom@tomfifield.net>
* add change-mode support
* add change-mode support
* tab to space
* fix if check
* change param name to 1200bps-reset
* update help section
* missed one in help seciton
---------
Co-authored-by: Ben Meadors <benmmeadors@gmail.com>