diff --git a/CHANGELOG.md b/CHANGELOG.md index 0794ca9..c7cb845 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,6 +21,7 @@ Check [Keep a Changelog](http://keepachangelog.com/) for recommendations on how ### Changed - Reduce amount of default logging +- Use new `firmware.valid` attribute to gate firmware update ### Added diff --git a/Cargo.lock b/Cargo.lock index 81b8a9c..19801f3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -503,9 +503,9 @@ checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[package]] name = "cpufeatures" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16b80225097f2e5ae4e7179dd2266824648f3e2f49d9134d584b76389d31c4c3" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" dependencies = [ "libc", ] @@ -1520,9 +1520,9 @@ dependencies = [ [[package]] name = "native-tls" -version = "0.2.12" +version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8614eb2c83d59d1c8cc974dd3f920198647674a0a035e1af1fa58707e317466" +checksum = "0dab59f8e050d5df8e4dd87d9206fb6f65a483e20ac9fda365ade4fab353196c" dependencies = [ "libc", "log", @@ -1634,9 +1634,9 @@ checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" [[package]] name = "openssl" -version = "0.10.68" +version = "0.10.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6174bc48f102d208783c2c84bf931bb75927a617866870de8a4ea85597f871f5" +checksum = "f5e534d133a060a3c19daec1eb3e98ec6f4685978834f2dbadfe2ec215bab64e" dependencies = [ "bitflags", "cfg-if 1.0.0", @@ -2093,9 +2093,9 @@ dependencies = [ [[package]] name = "rustls-pki-types" -version = "1.10.1" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2bf47e6ff922db3825eb750c4e2ff784c6ff8fb9e13046ef6a1d1c5401b0b37" +checksum = "917ce264624a4b4db1c364dcc35bfca9ded014d0a958cd47ad3e960e988ea51c" [[package]] name = "rustls-webpki" @@ -2133,9 +2133,9 @@ checksum = "22a197350ece202f19a166d1ad6d9d6de145e1d2a8ef47db299abe164dbd7530" [[package]] name = "ryu" -version = "1.0.18" +version = "1.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" +checksum = "6ea1a2d0a644769cc99faa24c3ad26b379b786fe7c36fd3c546254801650e6dd" [[package]] name = "schannel" @@ -2702,8 +2702,7 @@ checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" [[package]] name = "tsp-toolkit-kic-lib" -version = "0.19.4" -source = "git+https://github.com/tektronix/tsp-toolkit-kic-lib.git?tag=v0.19.4#2da4105553c278331e6d44290bea136b77923a18" +version = "0.19.5" dependencies = [ "bytes", "chrono", @@ -2726,9 +2725,9 @@ checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" [[package]] name = "unicode-ident" -version = "1.0.15" +version = "1.0.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11cd88e12b17c6494200a9c1b683a04fcac9573ed74cd1b62aeb2727c5592243" +checksum = "a210d160f08b701c8721ba1c726c11662f877ea6b7094007e1ca9a1041945034" [[package]] name = "unicode-xid" @@ -3133,9 +3132,9 @@ checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "winnow" -version = "0.6.24" +version = "0.6.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8d71a593cc5c42ad7876e2c1fda56f314f3754c084128833e64f1345ff8a03a" +checksum = "ad699df48212c6cc6eb4435f35500ac6fd3b9913324f938aea302022ce19d310" dependencies = [ "memchr", ] diff --git a/Cargo.toml b/Cargo.toml index f8a8491..ec75a44 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -39,7 +39,7 @@ serde_json = "1.0.114" thiserror = "2.0.3" tracing = { version = "0.1.40", features = ["async-await"] } tracing-subscriber = { version = "0.3.18", features = ["json"] } -tsp-toolkit-kic-lib = { git = "https://github.com/tektronix/tsp-toolkit-kic-lib.git", tag = "v0.19.4" } +tsp-toolkit-kic-lib = { git = "https://github.com/tektronix/tsp-toolkit-kic-lib.git", tag = "v0.19.5-0" } [workspace.lints.rust] warnings = "deny" diff --git a/instrument-repl/src/repl.rs b/instrument-repl/src/repl.rs index 4d4f207..3a72093 100644 --- a/instrument-repl/src/repl.rs +++ b/instrument-repl/src/repl.rs @@ -22,7 +22,7 @@ use std::{ }; use tracing::{debug, error, info, instrument, trace, warn}; -use tsp_toolkit_kic_lib::instrument::Instrument; +use tsp_toolkit_kic_lib::{instrument::Instrument, InstrumentError}; use crate::{ command::Request, @@ -299,7 +299,7 @@ impl Repl { if slot.is_some_and(|s| s > 0) { // Upgrading Module Self::println_flush( - &"Sending firmware file to mainframe. Please wait for module upgrade to complete (2-5 minutes)..." + &"Sending firmware file to mainframe. Please wait for module upgrade to complete (up to 10 minutes)..." .bright_yellow(), )?; } else { @@ -308,16 +308,26 @@ impl Repl { .bright_yellow(), )?; } - self.inst.flash_firmware(contents.as_ref(), slot)?; - if slot.is_some_and(|s| s > 0) { - // Upgrading Module - Self::println_flush(&"Module upgrade complete.".bright_yellow())?; - } else { - Self::println_flush( - &"Firmware file download complete.".bright_yellow(), - )?; - // Upgrading Mainframe - Self::println_flush(&"Close the terminal (.exit) and reconnect after the instrument has restarted.".bright_yellow())?; + match self.inst.flash_firmware(contents.as_ref(), slot) { + Ok(()) => { + if slot.is_some_and(|s| s > 0) { + // Upgrading Module + Self::println_flush( + &"Module upgrade complete.".bright_yellow(), + )?; + } else { + Self::println_flush( + &"Firmware file download complete.".bright_yellow(), + )?; + // Upgrading Mainframe + Self::println_flush(&"Close the terminal (.exit) and reconnect after the instrument has restarted.".bright_yellow())?; + } + } + Err(InstrumentError::FwUpgradeFailure(msg)) => { + error!("{msg}"); + Self::println_flush(&msg.red())?; + } + Err(e) => return Err(e.into()), } // Flashing FW disables prompts before flashing but might // lose runtime state, so we can't save the previous