diff --git a/nanoFirmwareFlasher/Program.cs b/nanoFirmwareFlasher/Program.cs index cded4973..e5fc240d 100644 --- a/nanoFirmwareFlasher/Program.cs +++ b/nanoFirmwareFlasher/Program.cs @@ -473,7 +473,10 @@ static async Task RunOptionsAndReturnExitCodeAsync(Options o) return; } - if (!string.IsNullOrEmpty(o.DfuFile)) + var connectedStDfuDevices = StmDfuDevice.ListDfuDevices(); + var connectedStJtagDevices = StmJtagDevice.ListDevices(); + + if (!string.IsNullOrEmpty(o.DfuFile) && connectedStDfuDevices.Count != 0) { // there is a DFU file argument, so follow DFU path var dfuDevice = new StmDfuDevice(o.DfuDeviceId); @@ -522,7 +525,9 @@ static async Task RunOptionsAndReturnExitCodeAsync(Options o) } else if ( o.BinFile.Any() && - o.HexFile.Any()) + o.HexFile.Any() && + connectedStJtagDevices.Count != 0 + ) { // this has to be a JTAG connected device diff --git a/nanoFirmwareFlasher/Stm32Firmware.cs b/nanoFirmwareFlasher/Stm32Firmware.cs index 7a723caa..63ec6cf4 100644 --- a/nanoFirmwareFlasher/Stm32Firmware.cs +++ b/nanoFirmwareFlasher/Stm32Firmware.cs @@ -40,11 +40,8 @@ public Stm32Firmware(string targetName, string fwVersion, bool stable) { DfuPackage = dfuFile.FirstOrDefault(); } - else - { - nanoBooterFile = Directory.EnumerateFiles(LocationPath, "nanoBooter.hex").FirstOrDefault(); - nanoCLRFile = Directory.EnumerateFiles(LocationPath, "nanoCLR.hex").FirstOrDefault(); - } + nanoBooterFile = Directory.EnumerateFiles(LocationPath, "nanoBooter.hex").FirstOrDefault(); + nanoCLRFile = Directory.EnumerateFiles(LocationPath, "nanoCLR.hex").FirstOrDefault(); } return executionResult; diff --git a/nanoFirmwareFlasher/Stm32Operations.cs b/nanoFirmwareFlasher/Stm32Operations.cs index abaa7ce9..38b94334 100644 --- a/nanoFirmwareFlasher/Stm32Operations.cs +++ b/nanoFirmwareFlasher/Stm32Operations.cs @@ -85,8 +85,11 @@ internal static async System.Threading.Tasks.Task UpdateFirmwareAsync } } + var connectedStDfuDevices = StmDfuDevice.ListDfuDevices(); + var connectedStJtagDevices = StmJtagDevice.ListDevices(); + // need DFU or JTAG device - if (firmware.HasDfuPackage) + if (firmware.HasDfuPackage && connectedStDfuDevices.Count !=0) { // DFU package dfuDevice = new StmDfuDevice(dfuDeviceId); @@ -120,7 +123,7 @@ internal static async System.Threading.Tasks.Task UpdateFirmwareAsync return ExitCodes.E1003; } } - else + else if (connectedStJtagDevices.Count != 0) { // JATG device jtagDevice = new StmJtagDevice(jtagId); @@ -162,6 +165,11 @@ internal static async System.Threading.Tasks.Task UpdateFirmwareAsync return programResult; } + else + { + // no device was found to update. + return ExitCodes.E7000; + } } internal static ExitCodes ResetMcu(