From 18c31baab4a550294633da806f9e18cbf09413cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Fri, 31 May 2024 15:09:22 +0100 Subject: [PATCH] Add "sanity checks" for incompatible and/or nonsense options (#273) --- nanoFirmwareFlasher.Tool/Program.cs | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/nanoFirmwareFlasher.Tool/Program.cs b/nanoFirmwareFlasher.Tool/Program.cs index 90ded135..ca7a961a 100644 --- a/nanoFirmwareFlasher.Tool/Program.cs +++ b/nanoFirmwareFlasher.Tool/Program.cs @@ -374,6 +374,15 @@ static async Task RunOptionsAndReturnExitCodeAsync(Options o) if (o.NanoDevice) { + // check for invalid options passed with nano device operations + if (o.Platform.HasValue + || !string.IsNullOrEmpty(o.TargetName)) + { + _exitCode = ExitCodes.E9000; + _extraMessage = "Incompatible options combined with --nanodevice."; + return; + } + var manager = new NanoDeviceManager(o, _verbosityLevel); // COM port is mandatory for nano device operations @@ -412,8 +421,16 @@ static async Task RunOptionsAndReturnExitCodeAsync(Options o) // if a target name was specified, try to be smart and set the platform accordingly (in case it wasn't specified) if (o.Platform == null - && !string.IsNullOrEmpty(o.TargetName)) + && !string.IsNullOrEmpty(o.TargetName)) { + // check for invalid options passed with platform option + if (o.NanoDevice) + { + _exitCode = ExitCodes.E9000; + _extraMessage = "Incompatible options combined with --platform."; + return; + } + // easiest one: ESP32 if (o.TargetName.StartsWith("ESP") || o.TargetName.StartsWith("M5") @@ -496,7 +513,7 @@ static async Task RunOptionsAndReturnExitCodeAsync(Options o) } // ESP32 related else if ( - !string.IsNullOrEmpty(o.SerialPort) && + !string.IsNullOrEmpty(o.SerialPort) && ((o.BaudRate != 921600) || (o.Esp32FlashMode != "dio") || (o.Esp32FlashFrequency != 40)))