diff --git a/CHANGELOG.md b/CHANGELOG.md index aefd2154..605a5b2b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,8 +7,19 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [unreleased] +## [1.5.0] + +### Added + +- Support for MBED v4 logs + +### Changed + +- To reduce clotter, grids are now off by default + ### Dependencies +- Update all dependencies to latest - `cargo-bins/cargo-binstall`: 1.10.20 → 1.10.22 ([#161](https://github.com/luftkode/plotinator3000/pull/161)) ## [1.4.0] diff --git a/Cargo.lock b/Cargo.lock index 91e95913..5f3bc2ac 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -77,12 +77,6 @@ dependencies = [ "memchr", ] -[[package]] -name = "allocator-api2" -version = "0.2.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" - [[package]] name = "android-activity" version = "0.6.0" @@ -90,7 +84,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ef6978589202a00cd7e118380c448a08b6ed394c3a8df3a430d0898e3a42d046" dependencies = [ "android-properties", - "bitflags 2.6.0", + "bitflags 2.8.0", "cc", "cesu8", "jni", @@ -166,11 +160,12 @@ dependencies = [ [[package]] name = "anstyle-wincon" -version = "3.0.6" +version = "3.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2109dbce0e72be3ec00bed26e6a7479ca384ad226efdd66db8fa2e3a38c83125" +checksum = "ca3534e77181a9cc07539ad51f2141fe32f6c3ffd4df76db8ad92346b003ae4e" dependencies = [ "anstyle", + "once_cell", "windows-sys 0.59.0", ] @@ -255,9 +250,9 @@ dependencies = [ [[package]] name = "async-broadcast" -version = "0.7.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20cd0e2e25ea8e5f7e9df04578dc6cf5c83577fd09b1a46aaf5c85e1c33f2a7e" +checksum = "435a87a52755b8f27fcf321ac4f04b2802e337c8c4872923137471ec39c37532" dependencies = [ "event-listener", "event-listener-strategy", @@ -398,9 +393,9 @@ checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" [[package]] name = "async-trait" -version = "0.1.83" +version = "0.1.85" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" +checksum = "3f934833b4b7233644e5848f235df3f57ed8c80f1528a26c3dfa13d2147fa056" dependencies = [ "proc-macro2", "quote", @@ -421,9 +416,9 @@ checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" [[package]] name = "axoasset" -version = "1.0.1" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90f16d4ba2365a6f9b4394b369597b9bc00a1651db758edbe6d63a34879b9024" +checksum = "5ba1098cfaa17f0973d2b766ee07bedb3e81a29b35c8d8b26de5074e37011443" dependencies = [ "camino", "image", @@ -433,7 +428,7 @@ dependencies = [ "reqwest", "serde", "serde_json", - "thiserror 1.0.69", + "thiserror 2.0.11", "url", "walkdir", ] @@ -543,9 +538,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.6.0" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" +checksum = "8f68f53c83ab957f72c32642f3868eec03eb974d1fb82e453128456482613d36" dependencies = [ "serde", ] @@ -595,18 +590,18 @@ checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" [[package]] name = "bytemuck" -version = "1.20.0" +version = "1.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b37c88a63ffd85d15b406896cc343916d7cf57838a847b3a6f2ca5d39a5695a" +checksum = "ef657dfab802224e671f5818e9a4935f9b1957ed18e58292690cc39e7a4092a3" dependencies = [ "bytemuck_derive", ] [[package]] name = "bytemuck_derive" -version = "1.8.0" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcfcc3cd946cb52f0bbfdbbcfa2f4e24f75ebb6c0e1002f7c25904fada18b9ec" +checksum = "3fa76293b4f7bb636ab88fd78228235b5248b4d05cc589aed610f954af5d7c7a" dependencies = [ "proc-macro2", "quote", @@ -658,7 +653,7 @@ version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b99da2f8558ca23c71f4fd15dc57c906239752dd27ff3c00a1d56b685b7cbfec" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "log", "polling", "rustix", @@ -689,9 +684,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.2" +version = "1.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f34d93e62b03caf570cccc334cbc6c2fceca82f39211051345108adcba3eebdc" +checksum = "13208fcbb66eaeffe09b99fffbe1af420f00a7b35aa99ad683dfc1aa76145229" dependencies = [ "jobserver", "libc", @@ -909,9 +904,9 @@ dependencies = [ [[package]] name = "crossbeam-deque" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" +checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" dependencies = [ "crossbeam-epoch", "crossbeam-utils", @@ -928,9 +923,9 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.8.20" +version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" +checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" [[package]] name = "crypto-common" @@ -1267,9 +1262,9 @@ checksum = "a3d8a32ae18130a3c84dd492d4215c3d913c3b07c6b63c2eb3eb7ff1101ab7bf" [[package]] name = "enumflags2" -version = "0.7.10" +version = "0.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d232db7f5956f3f14313dc2f87985c58bd2c695ce124c8cdd984e08e15ac133d" +checksum = "ba2f4b465f5318854c6f8dd686ede6c0a9dc67d4b1ac241cf0eb51521a309147" dependencies = [ "enumflags2_derive", "serde", @@ -1277,9 +1272,9 @@ dependencies = [ [[package]] name = "enumflags2_derive" -version = "0.7.10" +version = "0.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de0d48a183585823424a4ce1aa132d174a6a81bd540895822eb4c8373a8e49e8" +checksum = "fc4caf64a58d7a6d65ab00639b046ff54399a39f5f2554728895ace4b297cd79" dependencies = [ "proc-macro2", "quote", @@ -1299,9 +1294,9 @@ dependencies = [ [[package]] name = "env_filter" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f2c92ceda6ceec50f43169f9ee8424fe2db276791afde7b2cd8bc084cb376ab" +checksum = "186e05a59d4c50738528153b83b0b0194d3a29507dfec16eccd4b342903397d0" dependencies = [ "log", "regex", @@ -1370,9 +1365,9 @@ checksum = "a5d9305ccc6942a704f4335694ecd3de2ea531b114ac2d51f5f843750787a92f" [[package]] name = "event-listener" -version = "5.3.1" +version = "5.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6032be9bd27023a771701cc49f9f053c751055f71efb2e0ae5c15809093675ba" +checksum = "3492acde4c3fc54c845eaab3eed8bd00c7a7d881f78bfc801e43a93dec1331ae" dependencies = [ "concurrent-queue", "parking", @@ -1391,15 +1386,15 @@ dependencies = [ [[package]] name = "fastrand" -version = "2.2.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "486f806e73c5707928240ddc295403b1b93c96a02038563881c4a2fd84b81ac4" +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" [[package]] name = "fdeflate" -version = "0.3.6" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07c6f4c64c1d33a3111c4466f7365ebdcc37c5bd1ea0d62aae2e3d722aacbedb" +checksum = "1e6853b52649d4ac5c0bd02320cddc5ba956bdb407c4b75a2c6b75bf51500f8c" dependencies = [ "simd-adler32", ] @@ -1420,6 +1415,12 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" +[[package]] +name = "foldhash" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0d2fde1f7b3d48b8395d5f2de76c18a528bd6a9cdde438df747bfcba3e05d6f" + [[package]] name = "foreign-types" version = "0.3.2" @@ -1494,9 +1495,9 @@ checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" [[package]] name = "futures-lite" -version = "2.5.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cef40d21ae2c515b51041df9ed313ed21e572df340ea58a922a0aefe7e8891a1" +checksum = "f5edaec856126859abb19ed65f39e90fea3a9574b9707f13539acf4abf7eb532" dependencies = [ "fastrand", "futures-core", @@ -1537,7 +1538,6 @@ dependencies = [ "futures-core", "futures-io", "futures-macro", - "futures-sink", "futures-task", "memchr", "pin-project-lite", @@ -1652,11 +1652,11 @@ dependencies = [ [[package]] name = "glutin" -version = "0.32.1" +version = "0.32.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec69412a0bf07ea7607e638b415447857a808846c2b685a43c8aa18bc6d5e499" +checksum = "03642b8b0cce622392deb0ee3e88511f75df2daac806102597905c3ea1974848" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "cfg_aliases 0.2.1", "cgl", "core-foundation 0.9.4", @@ -1689,9 +1689,9 @@ dependencies = [ [[package]] name = "glutin_egl_sys" -version = "0.7.0" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cae99fff4d2850dbe6fb8c1fa8e4fead5525bab715beaacfccf3fb994e01c827" +checksum = "4c4680ba6195f424febdc3ba46e7a42a0e58743f2edb115297b86d7f8ecc02d2" dependencies = [ "gl_generator", "windows-sys 0.52.0", @@ -1699,9 +1699,9 @@ dependencies = [ [[package]] name = "glutin_glx_sys" -version = "0.6.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c2b2d3918e76e18e08796b55eb64e8fe6ec67d5a6b2e2a7e2edce224ad24c63" +checksum = "8a7bb2938045a88b612499fbcba375a77198e01306f52272e692f8c1f3751185" dependencies = [ "gl_generator", "x11-dl", @@ -1709,9 +1709,9 @@ dependencies = [ [[package]] name = "glutin_wgl_sys" -version = "0.6.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a4e1951bbd9434a81aa496fe59ccc2235af3820d27b85f9314e279609211e2c" +checksum = "2c4ee00b289aba7a9e5306d57c2d05499b2e5dc427f84ac708bd2c090212cf3e" dependencies = [ "gl_generator", ] @@ -1722,7 +1722,7 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fbcd2dba93594b227a1f57ee09b8b9da8892c34d55aa332e034a228d0fe6a171" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "gpu-alloc-types", ] @@ -1732,18 +1732,18 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "98ff03b468aa837d70984d55f5d3f846f6ec31fe34bbb97c4f85219caeee1ca4" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", ] [[package]] name = "gpu-descriptor" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c08c1f623a8d0b722b8b99f821eb0ba672a1618f0d3b16ddbee1cedd2dd8557" +checksum = "dcf29e94d6d243368b7a56caa16bc213e4f9f8ed38c4d9557069527b5d5281ca" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "gpu-descriptor-types", - "hashbrown 0.14.5", + "hashbrown", ] [[package]] @@ -1752,7 +1752,7 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fdf242682df893b86f33a73828fb09ca4b2d3bb6cc95249707fc684d27484b91" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", ] [[package]] @@ -1774,29 +1774,22 @@ dependencies = [ "tracing", ] -[[package]] -name = "hashbrown" -version = "0.14.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" -dependencies = [ - "ahash", - "allocator-api2", -] - [[package]] name = "hashbrown" version = "0.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" +dependencies = [ + "foldhash", +] [[package]] name = "hdf5-metno" -version = "0.9.2" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3167207f341f305141d3fbae48690442cb4b57771c827ccfae7b66b7cd8891bc" +checksum = "44c9b4d0d095403ced0b9d8b727c55212f1d09526944d84b8d3dca02ee3c0a82" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "cfg-if", "hdf5-metno-derive", "hdf5-metno-sys", @@ -1809,12 +1802,12 @@ dependencies = [ [[package]] name = "hdf5-metno-derive" -version = "0.9.1" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c75d3c9831cc601c2f2829dcdc8178b2503a9127ce1255af33b7d6d3067d44e8" +checksum = "25557ccc26f5b17b8f6014c58761e5eb53e815728907071999c3957bfee23bc2" dependencies = [ "proc-macro-crate", - "proc-macro-error", + "proc-macro-error2", "proc-macro2", "quote", "syn", @@ -1822,18 +1815,18 @@ dependencies = [ [[package]] name = "hdf5-metno-src" -version = "0.9.2" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b746b01050a79cb2914d4d62ae61b8a7e93cc7699a050081b0f88329e859dcd" +checksum = "956b57b8b4e133bcfbc874a2c9c6d4020e0da420dcfa05aea79091888f2b0763" dependencies = [ "cmake", ] [[package]] name = "hdf5-metno-sys" -version = "0.9.1" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e7be8ee30e5034ee48dd30bc85a2fdde6e1ec0e5e19598409e8e9955eab14af" +checksum = "de20d5ba22c244493bdfefb91d8e9de08e3e58d96a792532da5e0df545aed279" dependencies = [ "hdf5-metno-src", "libc", @@ -1848,9 +1841,9 @@ dependencies = [ [[package]] name = "hdf5-metno-types" -version = "0.9.0" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "236c29ece21fd13543f45b1578c4e65d5d61da38d90192812f1f6ad86ac255ac" +checksum = "69effedfce92d28166b034585cdd62547a6aa92d1cd7a23d3215bb40fab91960" dependencies = [ "ascii", "cfg-if", @@ -1893,11 +1886,11 @@ dependencies = [ [[package]] name = "home" -version = "0.5.9" +version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5" +checksum = "589533453244b0995c858700322199b2becb13b627df2851f64a2775d024abcf" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -1960,9 +1953,9 @@ checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" [[package]] name = "hyper" -version = "1.5.1" +version = "1.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97818827ef4f364230e16705d4706e2897df2bb60617d6ca15d598025a3c481f" +checksum = "256fb8d4bd6413123cc9d91832d78325c48ff41677595be797d90f42969beae0" dependencies = [ "bytes", "futures-channel", @@ -1980,9 +1973,9 @@ dependencies = [ [[package]] name = "hyper-rustls" -version = "0.27.3" +version = "0.27.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08afdbb5c31130e3034af566421053ab03787c640246a446327f550d11bcb333" +checksum = "2d191583f3da1305256f22463b9bb0471acad48a4e534a5218b9963e9c1f59b2" dependencies = [ "futures-util", "http", @@ -2207,12 +2200,12 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.7.0" +version = "2.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62f822373a4fe84d4bb149bf54e584a7f4abec90e072ed49cda0edea5b95471f" +checksum = "8c9c992b02b5b4c94ea26e32fe5bccb7aa7d9f390ab5c1221ff895bc7ea8b652" dependencies = [ "equivalent", - "hashbrown 0.15.2", + "hashbrown", ] [[package]] @@ -2226,9 +2219,9 @@ dependencies = [ [[package]] name = "ipnet" -version = "2.10.1" +version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddc24109865250148c2e0f3d25d4f0f479571723792d3802153c60922a4fb708" +checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" [[package]] name = "is_terminal_polyfill" @@ -2328,16 +2321,16 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "libc", - "redox_syscall 0.5.7", + "redox_syscall 0.5.8", ] [[package]] name = "linux-raw-sys" -version = "0.4.14" +version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" +checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" [[package]] name = "litemap" @@ -2369,9 +2362,9 @@ checksum = "9374ef4228402d4b7e403e5838cb880d9ee663314b0a900d5a6aabf0c213552e" [[package]] name = "log" -version = "0.4.22" +version = "0.4.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" +checksum = "04cbf5b083de1c7e0222a7a51dbfdba1cbe1c6ab0b15e29fff3f6c077fd9cd9f" [[package]] name = "log_if" @@ -2441,7 +2434,7 @@ version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7ecfd3296f8c56b7c1f6fbac3c71cefa9d78ce009850c45000015f206dc7fa21" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "block", "core-graphics-types", "foreign-types 0.5.0", @@ -2481,9 +2474,9 @@ checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" [[package]] name = "miniz_oxide" -version = "0.8.0" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" +checksum = "b8402cab7aefae129c6977bb0ff1b8fd9a04eb5b51efc50a70bea51cda0c7924" dependencies = [ "adler2", "simd-adler32", @@ -2508,7 +2501,7 @@ checksum = "364f94bc34f61332abebe8cad6f6cd82a5b65cff22c828d05d0968911462ca4f" dependencies = [ "arrayvec", "bit-set", - "bitflags 2.6.0", + "bitflags 2.8.0", "cfg_aliases 0.1.1", "codespan-reporting", "hexf-parse", @@ -2559,7 +2552,7 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c3f42e7bbe13d351b6bead8286a43aac9534b82bd3cc43e47037f012ebfd62d4" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "jni-sys", "log", "ndk-sys 0.6.0+11769913", @@ -2598,7 +2591,7 @@ version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "cfg-if", "cfg_aliases 0.2.1", "libc", @@ -2696,7 +2689,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e4e89ad9e3d7d297152b17d39ed92cd50ca8063a89a9fa569046d41568891eff" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "block2", "libc", "objc2", @@ -2712,7 +2705,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "74dd3b56391c7a0596a295029734d3c1c5e7e510a4cb30245f8221ccea96b009" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "block2", "objc2", "objc2-core-location", @@ -2736,7 +2729,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "617fbf49e071c178c0b24c080767db52958f716d9eabdf0890523aeae54773ef" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "block2", "objc2", "objc2-foundation", @@ -2778,7 +2771,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ee638a5da3799329310ad4cfa62fbf045d5f56e3ef5ba4149e7452dcf89d5a8" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "block2", "dispatch", "libc", @@ -2803,7 +2796,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd0cba1276f6023976a406a14ffa85e1fdd19df6b0f737b063b95f6c8c7aadd6" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "block2", "objc2", "objc2-foundation", @@ -2815,7 +2808,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e42bee7bff906b14b167da2bac5efe6b6a07e6f7c0a21a7308d40c960242dc7a" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "block2", "objc2", "objc2-foundation", @@ -2838,7 +2831,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b8bb46798b20cd6b91cbd113524c490f1686f4c4e8f49502431415f3512e2b6f" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "block2", "objc2", "objc2-cloud-kit", @@ -2870,7 +2863,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "76cfcbf642358e8689af64cee815d139339f3ed8ad05103ed5eaf73db8d84cb3" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "block2", "objc2", "objc2-core-location", @@ -2879,9 +2872,9 @@ dependencies = [ [[package]] name = "object" -version = "0.36.5" +version = "0.36.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aedf0a2d09c573ed1d8d85b30c119153926a2b36dce0ab28322c09a117a4683e" +checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" dependencies = [ "memchr", ] @@ -2898,7 +2891,7 @@ version = "0.10.68" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6174bc48f102d208783c2c84bf931bb75927a617866870de8a4ea85597f871f5" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "cfg-if", "foreign-types 0.3.2", "libc", @@ -2988,7 +2981,7 @@ checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.5.7", + "redox_syscall 0.5.8", "smallvec", "windows-targets 0.52.6", ] @@ -3017,18 +3010,18 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "pin-project" -version = "1.1.7" +version = "1.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be57f64e946e500c8ee36ef6331845d40a93055567ec57e8fae13efd33759b95" +checksum = "1e2ec53ad785f4d35dac0adea7f7dc6f1bb277ad84a680c7afefeae05d1f5916" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.7" +version = "1.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c0f5fad0874fc7abcd4d750e76917eaebbecaa2c20bde22e1dbeeba8beb758c" +checksum = "d56a66c0c55993aa927429d0f8a0abfd74f084e4d9c192cffed01e418d83eefb" dependencies = [ "proc-macro2", "quote", @@ -3037,9 +3030,9 @@ dependencies = [ [[package]] name = "pin-project-lite" -version = "0.2.15" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "915a1e146535de9163f3987b8944ed8cf49a18bb0056bcebcdcece385cece4ff" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" [[package]] name = "pin-utils" @@ -3080,7 +3073,7 @@ dependencies = [ [[package]] name = "plotinator3000" -version = "1.4.0" +version = "1.5.0" dependencies = [ "axoupdater", "chrono", @@ -3113,9 +3106,9 @@ dependencies = [ [[package]] name = "png" -version = "0.17.14" +version = "0.17.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52f9d46a34a05a6a57566bc2bfae066ef07585a6e3fa30fbbdff5936380623f0" +checksum = "82151a2fc869e011c153adc57cf2789ccb8d9906ce52c0b39a6b5697749d7526" dependencies = [ "bitflags 1.3.2", "crc32fast", @@ -3194,29 +3187,6 @@ dependencies = [ "toml_edit", ] -[[package]] -name = "proc-macro-error" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" -dependencies = [ - "proc-macro-error-attr", - "proc-macro2", - "quote", - "version_check", -] - -[[package]] -name = "proc-macro-error-attr" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" -dependencies = [ - "proc-macro2", - "quote", - "version_check", -] - [[package]] name = "proc-macro-error-attr2" version = "2.0.0" @@ -3241,9 +3211,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.92" +version = "1.0.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37d3544b3f2748c54e147655edb5025752e2303145b5aefb3c3ea2c78b973bb0" +checksum = "60946a68e5f9d28b0dc1c21bb8a97ee7d018a8b322fa57838ba31cc878e22d99" dependencies = [ "unicode-ident", ] @@ -3303,9 +3273,9 @@ dependencies = [ [[package]] name = "quinn-udp" -version = "0.5.7" +version = "0.5.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d5a626c6807713b15cac82a6acaccd6043c9a5408c24baae07611fec3f243da" +checksum = "1c40286217b4ba3a71d644d752e6a0b71f13f1b6a2c5311acfcbe0c2418ed904" dependencies = [ "cfg_aliases 0.2.1", "libc", @@ -3317,9 +3287,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.37" +version = "1.0.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" +checksum = "0e4dccaaaf89514f546c693ddc140f729f958c247918a13380cccc6078391acc" dependencies = [ "proc-macro2", ] @@ -3397,11 +3367,11 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.7" +version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b6dfecf2c74bce2466cabf93f6664d6998a69eb21e39f4207930065b27b771f" +checksum = "03a862b389f93e68874fbf580b9de08dd02facb9a788ebadaf4a3fd33cf58834" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", ] [[package]] @@ -3534,7 +3504,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b91f7eff05f748767f183df4320a63d6936e9c6107d97c9e6bdd9784f4289c94" dependencies = [ "base64 0.21.7", - "bitflags 2.6.0", + "bitflags 2.8.0", "serde", "serde_derive", ] @@ -3559,22 +3529,22 @@ checksum = "c7fb8039b3032c191086b10f11f319a6e99e1e82889c5cc6046f515c9db1d497" [[package]] name = "rustix" -version = "0.38.41" +version = "0.38.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7f649912bc1495e167a6edee79151c84b1bad49748cb4f1f1167f459f6224f6" +checksum = "a78891ee6bf2340288408954ac787aa063d8e8817e9f53abb37c695c6d834ef6" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "errno", "libc", "linux-raw-sys", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] name = "rustls" -version = "0.23.19" +version = "0.23.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "934b404430bb06b3fae2cba809eb45a1ab1aecd64491213d7c3301b88393f8d1" +checksum = "8f287924602bf649d949c63dc8ac8b235fa5387d394020705b80c4eb597ce5b8" dependencies = [ "once_cell", "ring", @@ -3595,9 +3565,9 @@ dependencies = [ [[package]] name = "rustls-pki-types" -version = "1.10.0" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16f1201b3c9a7ee8039bcadc17b7e605e2945b27eee7631788c1bd2b0643674b" +checksum = "d2bf47e6ff922db3825eb750c4e2ff784c6ff8fb9e13046ef6a1d1c5401b0b37" dependencies = [ "web-time", ] @@ -3615,9 +3585,9 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.18" +version = "1.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e819f2bc632f285be6d7cd36e25940d45b2391dd6d9b939e79de557f7014248" +checksum = "f7c45b9784283f1b2e7fb61b42047c2fd678ef0960d4f6f1eba131594cc369d4" [[package]] name = "ryu" @@ -3685,7 +3655,7 @@ version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "core-foundation 0.9.4", "core-foundation-sys", "libc", @@ -3694,9 +3664,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.12.1" +version = "2.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa39c7303dc58b5543c94d22c1766b0d31f2ee58306363ea622b10bbc075eaa2" +checksum = "49db231d56a190491cb4aeda9527f1ad45345af50b0851622a7adb8c03b01c32" dependencies = [ "core-foundation-sys", "libc", @@ -3715,9 +3685,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.24" +version = "1.0.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3cb6eb87a131f756572d7fb904f6e7b68633f09cca868c5df1c4b8d1a694bbba" +checksum = "f79dfe2d285b0488816f30e700a7438c5a73d816b5b7d3ac72fbc48b0d185e03" [[package]] name = "serde" @@ -3761,9 +3731,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.133" +version = "1.0.137" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7fceb2473b9166b2294ef05efcb65a3db80803f0b03ef86a5fc88a2b85ee377" +checksum = "930cfb6e6abf99298aaad7d29abbef7a9999a9a8806a40088f55f0dcec03146b" dependencies = [ "itoa", "memchr", @@ -3908,7 +3878,7 @@ version = "0.19.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3457dea1f0eb631b4034d61d4d8c32074caa6cd1ab2d59f2327bd8461e2c0016" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "calloop", "calloop-wayland-source", "cursor-icon", @@ -3969,7 +3939,7 @@ version = "0.3.0+sdk-1.3.268.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eda41003dc44290527a59b13432d4a0379379fa074b70174882adfbdfd917844" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", ] [[package]] @@ -4011,9 +3981,9 @@ checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] name = "syn" -version = "2.0.90" +version = "2.0.96" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "919d3b74a5dd0ccd15aeb8f93e7006bd9e14c295087c9896a110f490752bcf31" +checksum = "d5d0adab1ae378d7f53bdebc67a39f1f151407ef230f0ce2883572f5d8985c80" dependencies = [ "proc-macro2", "quote", @@ -4046,7 +4016,7 @@ version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "core-foundation 0.9.4", "system-configuration-sys", ] @@ -4161,9 +4131,9 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.8.0" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" +checksum = "022db8904dfa342efe721985167e9fcd16c29b226db4397ed752a761cfce81e8" dependencies = [ "tinyvec_macros", ] @@ -4561,7 +4531,7 @@ version = "0.31.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b66249d3fc69f76fd74c82cc319300faa554e9d865dab1f7cd66cc20db10b280" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "rustix", "wayland-backend", "wayland-scanner", @@ -4573,7 +4543,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "625c5029dbd43d25e6aa9615e88b829a5cad13b2819c4ae129fdbb7c31ab4c7e" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "cursor-icon", "wayland-backend", ] @@ -4595,7 +4565,7 @@ version = "0.32.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7cd0ade57c4e6e9a8952741325c30bf82f4246885dca8bf561898b86d0c1f58e" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "wayland-backend", "wayland-client", "wayland-scanner", @@ -4607,7 +4577,7 @@ version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9b31cab548ee68c7eb155517f2212049dc151f7cd7910c2b66abfd31c3ee12bd" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "wayland-backend", "wayland-client", "wayland-protocols", @@ -4620,7 +4590,7 @@ version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "782e12f6cd923c3c316130d56205ebab53f55d6666b7faddfad36cecaeeb4022" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "wayland-backend", "wayland-client", "wayland-protocols", @@ -4729,7 +4699,7 @@ checksum = "d63c3c478de8e7e01786479919c8769f62a22eec16788d8c2ac77ce2c132778a" dependencies = [ "arrayvec", "bit-vec", - "bitflags 2.6.0", + "bitflags 2.8.0", "cfg_aliases 0.1.1", "document-features", "indexmap", @@ -4755,7 +4725,7 @@ dependencies = [ "android_system_properties", "arrayvec", "ash", - "bitflags 2.6.0", + "bitflags 2.8.0", "bytemuck", "cfg_aliases 0.1.1", "core-graphics-types", @@ -4792,7 +4762,7 @@ version = "23.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "610f6ff27778148c31093f3b03abc4840f9636d58d597ca2f5977433acfe0068" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "js-sys", "web-sys", ] @@ -5197,14 +5167,14 @@ checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "winit" -version = "0.30.5" +version = "0.30.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0be9e76a1f1077e04a411f0b989cbd3c93339e1771cb41e71ac4aee95bfd2c67" +checksum = "f5d74280aabb958072864bff6cfbcf9025cf8bfacdde5e32b5e12920ef703b0f" dependencies = [ "ahash", "android-activity", "atomic-waker", - "bitflags 2.6.0", + "bitflags 2.8.0", "block2", "bytemuck", "calloop", @@ -5248,9 +5218,9 @@ dependencies = [ [[package]] name = "winnow" -version = "0.6.20" +version = "0.6.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36c1fec1a2bb5866f07c25f68c26e565c4c200aebb96d7e55710c19d3e8ac49b" +checksum = "c8d71a593cc5c42ad7876e2c1fda56f314f3754c084128833e64f1345ff8a03a" dependencies = [ "memchr", ] @@ -5332,7 +5302,7 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d039de8032a9a8856a6be89cea3e5d12fdd82306ab7c94d74e6deab2460651c5" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "dlib", "log", "once_cell", @@ -5347,9 +5317,9 @@ checksum = "b9cc00251562a284751c9973bace760d86c0276c471b4be569fe6b068ee97a56" [[package]] name = "xml-rs" -version = "0.8.24" +version = "0.8.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea8b391c9a790b496184c29f7f93b9ed5b16abb306c05415b68bcc16e4d06432" +checksum = "c5b940ebc25896e71dd073bad2dbaa2abfe97b0a391415e22ad1326d9c54e3c4" [[package]] name = "yansi" @@ -5383,9 +5353,9 @@ dependencies = [ [[package]] name = "zbus" -version = "5.1.1" +version = "5.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1162094dc63b1629fcc44150bcceeaa80798cd28bcbe7fa987b65a034c258608" +checksum = "192a0d989036cd60a1e91a54c9851fb9ad5bd96125d41803eed79d2e2ef74bd7" dependencies = [ "async-broadcast", "async-executor", @@ -5419,9 +5389,9 @@ dependencies = [ [[package]] name = "zbus_macros" -version = "5.1.1" +version = "5.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2cd2dcdce3e2727f7d74b7e33b5a89539b3cc31049562137faf7ae4eb86cd16d" +checksum = "3685b5c81fce630efc3e143a4ded235b107f1b1cdf186c3f115529e5e5ae4265" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -5434,9 +5404,9 @@ dependencies = [ [[package]] name = "zbus_names" -version = "4.1.0" +version = "4.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "856b7a38811f71846fd47856ceee8bccaec8399ff53fb370247e66081ace647b" +checksum = "519629a3f80976d89c575895b05677cbc45eaf9f70d62a364d819ba646409cc8" dependencies = [ "serde", "static_assertions", @@ -5601,9 +5571,9 @@ dependencies = [ [[package]] name = "zvariant" -version = "5.1.0" +version = "5.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1200ee6ac32f1e5a312e455a949a4794855515d34f9909f4a3e082d14e1a56f" +checksum = "55e6b9b5f1361de2d5e7d9fd1ee5f6f7fcb6060618a1f82f3472f58f2b8d4be9" dependencies = [ "endi", "enumflags2", @@ -5617,9 +5587,9 @@ dependencies = [ [[package]] name = "zvariant_derive" -version = "5.1.0" +version = "5.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "687e3b97fae6c9104fbbd36c73d27d149abf04fb874e2efbd84838763daa8916" +checksum = "573a8dd76961957108b10f7a45bac6ab1ea3e9b7fe01aff88325dc57bb8f5c8b" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -5630,9 +5600,9 @@ dependencies = [ [[package]] name = "zvariant_utils" -version = "3.0.2" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20d1d011a38f12360e5fcccceeff5e2c42a8eb7f27f0dcba97a0862ede05c9c6" +checksum = "ddd46446ea2a1f353bfda53e35f17633afa79f4fe290a611c94645c69fe96a50" dependencies = [ "proc-macro2", "quote", diff --git a/Cargo.toml b/Cargo.toml index 145ddfde..f9e55d0d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -2,7 +2,7 @@ name = "plotinator3000" description = "Log viewer app for viewing plots of data from projects such as motor and generator control" authors = ["SkyTEM Surveys", "Marc Beck König"] -version = "1.4.0" +version = "1.5.0" edition = "2021" repository = "https://github.com/luftkode/plotinator3000" homepage = "https://github.com/luftkode/plotinator3000" @@ -61,7 +61,7 @@ eframe = { version = "0.30", default-features = false, features = [ "glow", # Use the glow rendering backend. Alternative: "wgpu". "persistence", # Enable restoring app state when restarting the app. "wayland", - "x11", + "x11" ] } rfd = "0.15" egui-phosphor = "0.8.0" diff --git a/crates/skytem_logs/src/mbed_motor_control/mbed_config/v3.rs b/crates/skytem_logs/src/mbed_motor_control/mbed_config/v3.rs index 31c1c956..e9e0367c 100644 --- a/crates/skytem_logs/src/mbed_motor_control/mbed_config/v3.rs +++ b/crates/skytem_logs/src/mbed_motor_control/mbed_config/v3.rs @@ -49,6 +49,8 @@ pub(crate) struct GeneralConfig { #[getset(get_copy = "pub")] initial_throttle_percent: f32, + #[getset(get_copy = "pub")] + initial_throttle_step_size_percent: f32, #[getset(get_copy = "pub")] rpm_idle: u16, @@ -82,6 +84,7 @@ impl MbedConfig for GeneralConfig { let t_fan_on = reader.read_u8()?; let t_fan_off = reader.read_u8()?; let initial_throttle_percent = reader.read_f32::()?; + let initial_throttle_step_size_percent = reader.read_f32::()?; let rpm_idle = reader.read_u16::()?; let rpm_standby = reader.read_u16::()?; let rpm_running = reader.read_u16::()?; @@ -96,6 +99,7 @@ impl MbedConfig for GeneralConfig { t_fan_on, t_fan_off, initial_throttle_percent, + initial_throttle_step_size_percent, rpm_idle, rpm_standby, rpm_running, @@ -117,6 +121,10 @@ impl MbedConfig for GeneralConfig { "INITIAL_THROTTLE_PERCENT".to_owned(), self.initial_throttle_percent().to_string(), ), + ( + "INITIAL_THROTTLE_STEP_SIZE_PERCENT".to_owned(), + self.initial_throttle_percent().to_string(), + ), ("RPM_IDLE".to_owned(), self.rpm_idle().to_string()), ("RPM_STANDBY".to_owned(), self.rpm_standby().to_string()), ("RPM_RUNNING".to_owned(), self.rpm_running().to_string()), diff --git a/crates/skytem_logs/src/mbed_motor_control/pid/header.rs b/crates/skytem_logs/src/mbed_motor_control/pid/header.rs index 0140ad8f..9b601fa1 100644 --- a/crates/skytem_logs/src/mbed_motor_control/pid/header.rs +++ b/crates/skytem_logs/src/mbed_motor_control/pid/header.rs @@ -98,7 +98,7 @@ impl PidLogHeader { _ => { return Err(io::Error::new( io::ErrorKind::InvalidData, - "Unsupported version", + format!("Unsupported version: {version}"), )); } }; diff --git a/crates/skytem_logs/src/mbed_motor_control/pid/pidlog.rs b/crates/skytem_logs/src/mbed_motor_control/pid/pidlog.rs index 94e49445..707a27ab 100644 --- a/crates/skytem_logs/src/mbed_motor_control/pid/pidlog.rs +++ b/crates/skytem_logs/src/mbed_motor_control/pid/pidlog.rs @@ -277,7 +277,7 @@ mod tests { "../../test_data/mbed_motor_control/v1/20240926_121708/pid_20240926_121708_00.bin"; const TEST_DATA_V2: &str = "../../test_data/mbed_motor_control/v2/20241014_080729/pid_20241014_080729_00.bin"; - const TEST_DATA_V4: &str = "../../test_data/mbed_motor_control/v4/pid_20241104_132254_00.bin"; + const TEST_DATA_V4: &str = "../../test_data/mbed_motor_control/v4/pid_20250120_092446_00.bin"; #[test] fn test_deserialize_v1() -> TestResult { @@ -356,7 +356,7 @@ mod tests { let full_data_len = data.len(); let (pidlog, bytes_read) = PidLog::from_reader(&mut data.as_slice())?; assert!(bytes_read <= full_data_len); - assert_eq!(bytes_read, 175595); + assert_eq!(bytes_read, 834543); let first_entry = pidlog.entries.first().expect("Empty entries"); assert_eq!(first_entry.rpm, 0.0); assert_eq!(first_entry.pid_output, 0.0); @@ -379,7 +379,7 @@ mod tests { let file = File::open(TEST_DATA_V4)?; let mut reader = io::BufReader::new(file); let (header, bytes_read) = PidLogHeader::from_reader(&mut reader)?; - assert_eq!(bytes_read, 323); + assert_eq!(bytes_read, 327); println!("{header}"); parse_and_display_log_entries::(&mut reader, Some(10)); Ok(()) diff --git a/crates/skytem_logs/src/mbed_motor_control/status/entry.rs b/crates/skytem_logs/src/mbed_motor_control/status/entry.rs index 25530f5d..19b836c7 100644 --- a/crates/skytem_logs/src/mbed_motor_control/status/entry.rs +++ b/crates/skytem_logs/src/mbed_motor_control/status/entry.rs @@ -4,15 +4,19 @@ use log_if::log::LogEntry; use serde::{Deserialize, Serialize}; use v1::StatusLogEntryV1; use v2::StatusLogEntryV2; +use v3::StatusLogEntryV3; pub(crate) mod v1; /// Only difference between v1 and v2 is changes to the motor state enum pub(crate) mod v2; +/// Now entries include the runtime counter +pub(crate) mod v3; #[derive(Debug, Clone, PartialEq, Deserialize, Serialize)] pub(crate) enum StatusLogEntry { V1(StatusLogEntryV1), V2(StatusLogEntryV2), + V3(StatusLogEntryV3), } impl fmt::Display for StatusLogEntry { @@ -20,6 +24,7 @@ impl fmt::Display for StatusLogEntry { match self { Self::V1(e) => write!(f, "{e}"), Self::V2(e) => write!(f, "{e}"), + Self::V3(e) => write!(f, "{e}"), } } } @@ -29,6 +34,7 @@ impl StatusLogEntry { match self { Self::V1(e) => e.timestamp_ns(), Self::V2(e) => e.timestamp_ns(), + Self::V3(e) => e.timestamp_ns(), } } @@ -36,6 +42,7 @@ impl StatusLogEntry { match self { Self::V1(e) => e.motor_state as u8, Self::V2(e) => e.motor_state as u8, + Self::V3(e) => e.motor_state as u8, } } @@ -43,6 +50,7 @@ impl StatusLogEntry { match self { Self::V1(e) => e.motor_state.to_string(), Self::V2(e) => e.motor_state.to_string(), + Self::V3(e) => e.motor_state.to_string(), } } } @@ -54,3 +62,7 @@ pub(super) fn convert_v1_to_status_log_entry(v1: Vec) -> Vec) -> Vec { v2.into_iter().map(StatusLogEntry::V2).collect() } + +pub(super) fn convert_v3_to_status_log_entry(v2: Vec) -> Vec { + v2.into_iter().map(StatusLogEntry::V3).collect() +} diff --git a/crates/skytem_logs/src/mbed_motor_control/status/entry/v3.rs b/crates/skytem_logs/src/mbed_motor_control/status/entry/v3.rs new file mode 100644 index 00000000..49fbee40 --- /dev/null +++ b/crates/skytem_logs/src/mbed_motor_control/status/entry/v3.rs @@ -0,0 +1,111 @@ +use std::{fmt, io}; + +use crate::util::parse_timestamp; +use byteorder::{LittleEndian, ReadBytesExt}; +use log_if::log::LogEntry; +use serde::{Deserialize, Serialize}; + +use super::v2; + +#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)] +pub struct StatusLogEntryV3 { + timestamp_ms_str: String, + pub timestamp_ms: u32, + pub engine_temp: f32, + pub fan_on: bool, + pub vbat: f32, + pub setpoint: f32, + pub motor_state: v2::MotorState, + pub runtime_s: u32, +} + +impl fmt::Display for StatusLogEntryV3 { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + write!( + f, + "{}: {} {} {} {} {} {}", + self.timestamp_ms, + self.engine_temp, + self.fan_on, + self.vbat, + self.setpoint, + self.motor_state, + self.runtime_s + ) + } +} + +impl LogEntry for StatusLogEntryV3 { + fn from_reader(reader: &mut impl io::BufRead) -> io::Result<(Self, usize)> { + // Start with 0 bytes read + let mut total_bytes_read = 0; + + // Read and track the number of bytes read after each operation + let timestamp_ms = reader.read_u32::()?; + total_bytes_read += size_of_val(×tamp_ms); + + let timestamp_ms_str = parse_timestamp(timestamp_ms); + + let engine_temp = reader.read_f32::()?; + total_bytes_read += size_of_val(&engine_temp); + + let fan_on_byte = reader.read_u8()?; + let fan_on = fan_on_byte == 1; + total_bytes_read += size_of_val(&fan_on_byte); + + let vbat = reader.read_f32::()?; + total_bytes_read += size_of_val(&vbat); + + let setpoint = reader.read_f32::()?; + total_bytes_read += size_of_val(&setpoint); + + // Handle MotorState with size tracking for the u8 used + let motor_state_byte = reader.read_u8()?; + total_bytes_read += size_of_val(&motor_state_byte); + let Some(motor_state) = v2::MotorState::from_repr(motor_state_byte.into()) else { + return Err(io::Error::new( + io::ErrorKind::InvalidData, + format!("Invalid motor state: {motor_state_byte}"), + )); + }; + + let runtime_s = reader.read_u32::()?; + total_bytes_read += size_of_val(&runtime_s); + + // Return the instance and total bytes read + Ok(( + Self { + timestamp_ms_str, + timestamp_ms, + engine_temp, + fan_on, + vbat, + setpoint, + motor_state, + runtime_s, + }, + total_bytes_read, + )) + } + + fn timestamp_ns(&self) -> f64 { + (self.timestamp_ms as u64 * 1_000_000) as f64 + } +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_motor_state_deserialize() { + assert_eq!( + v2::MotorState::DO_IGNITION, + v2::MotorState::from_repr(3).expect("Value doesn't map to variant") + ); + assert_eq!( + v2::MotorState::RUNNING, + v2::MotorState::from_repr(10).expect("Value doesn't map to variant") + ); + } +} diff --git a/crates/skytem_logs/src/mbed_motor_control/status/header.rs b/crates/skytem_logs/src/mbed_motor_control/status/header.rs index 5ab990b0..a6423f7e 100644 --- a/crates/skytem_logs/src/mbed_motor_control/status/header.rs +++ b/crates/skytem_logs/src/mbed_motor_control/status/header.rs @@ -24,7 +24,7 @@ pub enum StatusLogHeader { V1(StatusLogHeaderV1), V2(StatusLogHeaderV2), V3(StatusLogHeaderV3), - V4(StatusLogHeaderV4), + V5(StatusLogHeaderV4), } impl fmt::Display for StatusLogHeader { @@ -33,7 +33,7 @@ impl fmt::Display for StatusLogHeader { Self::V1(h) => write!(f, "{h}"), Self::V2(h) => write!(f, "{h}"), Self::V3(h) => write!(f, "{h}"), - Self::V4(h) => write!(f, "{h}"), + Self::V5(h) => write!(f, "{h}"), } } } @@ -44,7 +44,7 @@ impl StatusLogHeader { Self::V1(_) => 1, Self::V2(_) => 2, Self::V3(_) => 3, - Self::V4(_) => 4, + Self::V5(_) => 5, } } @@ -98,19 +98,21 @@ impl StatusLogHeader { Self::V3(header) } - 4 => { + 4 => panic!("Unsupported version. This log version is a pre-release version for MBED v4. The log version for the MBED v4 is 5."), + 5 => { let (header, bytes_read) = StatusLogHeaderV4::from_reader_with_uniq_descr_version( reader, unique_description, version, )?; total_bytes_read += bytes_read; - Self::V4(header) + Self::V5(header) + } _ => { return Err(io::Error::new( io::ErrorKind::InvalidData, - "Unsupported version", + format!("Unsupported version: {version}"), )); } }; diff --git a/crates/skytem_logs/src/mbed_motor_control/status/statuslog.rs b/crates/skytem_logs/src/mbed_motor_control/status/statuslog.rs index bafd3676..d8bac94e 100644 --- a/crates/skytem_logs/src/mbed_motor_control/status/statuslog.rs +++ b/crates/skytem_logs/src/mbed_motor_control/status/statuslog.rs @@ -17,8 +17,9 @@ use crate::{ use super::{ entry::{ - convert_v1_to_status_log_entry, convert_v2_to_status_log_entry, v1::StatusLogEntryV1, - v2::StatusLogEntryV2, StatusLogEntry, + convert_v1_to_status_log_entry, convert_v2_to_status_log_entry, + convert_v3_to_status_log_entry, v1::StatusLogEntryV1, v2::StatusLogEntryV2, + v3::StatusLogEntryV3, StatusLogEntry, }, header::StatusLogHeader, }; @@ -49,13 +50,13 @@ impl StatusLog { // helper function build all the plots that can be made from a statuslog fn build_raw_plots(startup_timestamp_ns: f64, entries: &[StatusLogEntry]) -> Vec { - let mut raw_plots = vec![]; let entry_count = entries.len(); let mut engine_temp_plot_raw: Vec<[f64; 2]> = Vec::with_capacity(entry_count); let mut fan_on_plot_raw: Vec<[f64; 2]> = Vec::with_capacity(entry_count); let mut vbat_plot_raw: Vec<[f64; 2]> = Vec::with_capacity(entry_count); let mut setpoint_plot_raw: Vec<[f64; 2]> = Vec::with_capacity(entry_count); let mut motor_state_plot_raw: Vec<[f64; 2]> = Vec::with_capacity(entry_count); + let mut runtime_s_plot_raw: Vec<[f64; 2]> = Vec::with_capacity(entry_count); for e in entries { match e { @@ -95,45 +96,95 @@ impl StatusLog { (e.motor_state as u8) as f64, ]); } + StatusLogEntry::V3(e) => { + engine_temp_plot_raw.push([ + e.timestamp_ns() + startup_timestamp_ns, + e.engine_temp as f64, + ]); + fan_on_plot_raw.push([ + e.timestamp_ns() + startup_timestamp_ns, + (e.fan_on as u8) as f64, + ]); + vbat_plot_raw.push([ + e.timestamp_ns() + startup_timestamp_ns, + (e.vbat as u8) as f64, + ]); + setpoint_plot_raw + .push([e.timestamp_ns() + startup_timestamp_ns, e.setpoint as f64]); + + motor_state_plot_raw.push([ + e.timestamp_ns() + startup_timestamp_ns, + (e.motor_state as u8) as f64, + ]); + runtime_s_plot_raw + .push([e.timestamp_ns() + startup_timestamp_ns, e.runtime_s as f64]); + } } } - if !engine_temp_plot_raw.is_empty() { + Self::collect_raw_plots( + engine_temp_plot_raw, + fan_on_plot_raw, + vbat_plot_raw, + setpoint_plot_raw, + motor_state_plot_raw, + runtime_s_plot_raw, + ) + } + + // Simply takes all vectors with raw plot points and collects them into a vector of `RawPlot` + fn collect_raw_plots( + engine_temp: Vec<[f64; 2]>, + fan_on: Vec<[f64; 2]>, + vbat: Vec<[f64; 2]>, + setpoint: Vec<[f64; 2]>, + motor_state: Vec<[f64; 2]>, + runtime_s: Vec<[f64; 2]>, + ) -> Vec { + let mut raw_plots = vec![]; + if !engine_temp.is_empty() { raw_plots.push(RawPlot::new( "Engine Temp °C".into(), - engine_temp_plot_raw, + engine_temp, ExpectedPlotRange::OneToOneHundred, )); } - if !fan_on_plot_raw.is_empty() { + if !fan_on.is_empty() { raw_plots.push(RawPlot::new( "Fan On".into(), - fan_on_plot_raw, + fan_on, ExpectedPlotRange::Percentage, )); } - if !vbat_plot_raw.is_empty() { + if !vbat.is_empty() { raw_plots.push(RawPlot::new( "Vbat [V]".into(), - vbat_plot_raw, + vbat, ExpectedPlotRange::OneToOneHundred, )); } - if !setpoint_plot_raw.is_empty() { + if !setpoint.is_empty() { raw_plots.push(RawPlot::new( "Setpoint".into(), - setpoint_plot_raw, + setpoint, ExpectedPlotRange::Thousands, )); } - if !motor_state_plot_raw.is_empty() { + if !motor_state.is_empty() { raw_plots.push(RawPlot::new( "Motor State".into(), - motor_state_plot_raw, + motor_state, ExpectedPlotRange::OneToOneHundred, )); } + if !runtime_s.is_empty() { + raw_plots.push(RawPlot::new( + "Runtime [s]".into(), + runtime_s, + ExpectedPlotRange::Thousands, + )); + } raw_plots } } @@ -160,16 +211,24 @@ impl Parseable for StatusLog { if header.version() < 3 { let (v1_vec, entry_bytes_read) = parse_to_vec::(reader); (convert_v1_to_status_log_entry(v1_vec), entry_bytes_read) - } else { + } else if header.version() < 5 { let (v2_vec, entry_bytes_read) = parse_to_vec::(reader); (convert_v2_to_status_log_entry(v2_vec), entry_bytes_read) + } else if header.version() == 5 { + let (v3_vec, entry_bytes_read) = parse_to_vec::(reader); + (convert_v3_to_status_log_entry(v3_vec), entry_bytes_read) + } else { + return Err(io::Error::new( + io::ErrorKind::InvalidInput, + format!("Unsupported header version: {}", header.version()), + )); }; total_bytes_read += entry_bytes_read; let startup_timestamp = match header { StatusLogHeader::V1(h) => h.startup_timestamp(), StatusLogHeader::V2(h) => h.startup_timestamp(), StatusLogHeader::V3(h) => h.startup_timestamp(), - StatusLogHeader::V4(h) => h.startup_timestamp(), + StatusLogHeader::V5(h) => h.startup_timestamp(), } .map_err(|e| io::Error::new(io::ErrorKind::InvalidData, e))? .and_utc(); @@ -221,7 +280,7 @@ impl GitMetadata for StatusLog { StatusLogHeader::V1(h) => h.project_version(), StatusLogHeader::V2(h) => h.project_version(), StatusLogHeader::V3(h) => h.project_version(), - StatusLogHeader::V4(h) => h.project_version(), + StatusLogHeader::V5(h) => h.project_version(), } } fn git_short_sha(&self) -> Option { @@ -229,7 +288,7 @@ impl GitMetadata for StatusLog { StatusLogHeader::V1(h) => h.git_short_sha(), StatusLogHeader::V2(h) => h.git_short_sha(), StatusLogHeader::V3(h) => h.git_short_sha(), - StatusLogHeader::V4(h) => h.git_short_sha(), + StatusLogHeader::V5(h) => h.git_short_sha(), } } @@ -238,7 +297,7 @@ impl GitMetadata for StatusLog { StatusLogHeader::V1(h) => h.git_branch(), StatusLogHeader::V2(h) => h.git_branch(), StatusLogHeader::V3(h) => h.git_branch(), - StatusLogHeader::V4(h) => h.git_branch(), + StatusLogHeader::V5(h) => h.git_branch(), } } @@ -247,7 +306,7 @@ impl GitMetadata for StatusLog { StatusLogHeader::V1(h) => h.git_repo_status(), StatusLogHeader::V2(h) => h.git_repo_status(), StatusLogHeader::V3(h) => h.git_repo_status(), - StatusLogHeader::V4(h) => h.git_repo_status(), + StatusLogHeader::V5(h) => h.git_repo_status(), } } } @@ -266,7 +325,7 @@ impl Plotable for StatusLog { StatusLogHeader::V1(_) => "Mbed Status v1", StatusLogHeader::V2(_) => "Mbed Status v2", StatusLogHeader::V3(_) => "Mbed Status v3", - StatusLogHeader::V4(_) => "Mbed Status v4", + StatusLogHeader::V5(_) => "Mbed Status v5", } } @@ -310,7 +369,7 @@ impl Plotable for StatusLog { metadata.push(("Config values".to_owned(), String::new())); metadata.extend_from_slice(&h.mbed_config().field_value_pairs()); } - StatusLogHeader::V4(h) => { + StatusLogHeader::V5(h) => { metadata.push(("Config values".to_owned(), String::new())); metadata.extend_from_slice(&h.mbed_config().field_value_pairs()); } @@ -371,8 +430,8 @@ mod tests { "../../test_data/mbed_motor_control/v2/20241014_080729/status_20241014_080729_00.bin"; const TEST_DATA_V3: &str = "../../test_data/mbed_motor_control/v3/short_start/status_20241029_133931_00.bin"; - const TEST_DATA_V4: &str = - "../../test_data/mbed_motor_control/v4/status_20241104_132254_00.bin"; + const TEST_DATA_V5: &str = + "../../test_data/mbed_motor_control/v5/status_20250120_092446_00.bin"; use crate::{ mbed_motor_control::status::entry::{v1::MotorState, v2}, @@ -397,7 +456,7 @@ mod tests { assert_eq!(first_entry.setpoint, 1800.0); assert_eq!(first_entry.motor_state, MotorState::ECU_ON_WAIT_PUMP); } - StatusLogEntry::V2(_) => panic!("Expected status log entry v1"), + StatusLogEntry::V2(_) | StatusLogEntry::V3(_) => panic!("Expected status log entry v1"), } let second_entry = &status_log.entries[1]; @@ -409,7 +468,7 @@ mod tests { assert_eq!(second_entry.setpoint, 1800.0); assert_eq!(second_entry.motor_state, MotorState::ECU_ON_WAIT_PUMP); } - StatusLogEntry::V2(_) => panic!("Expected status log entry v1"), + StatusLogEntry::V2(_) | StatusLogEntry::V3(_) => panic!("Expected status log entry v1"), } let last_entry = status_log.entries.last().expect("Empty entries vec"); @@ -422,7 +481,7 @@ mod tests { assert_eq!(last_entry.setpoint, 3600.0); assert_eq!(last_entry.motor_state, MotorState::STANDBY_WAIT_FOR_CAP); } - StatusLogEntry::V2(_) => panic!("Expected status log entry v1"), + StatusLogEntry::V2(_) | StatusLogEntry::V3(_) => panic!("Expected status log entry v1"), } //eprintln!("{status_log}"); @@ -453,7 +512,7 @@ mod tests { let first_entry = status_log.entries.first().expect("Empty entries vec"); let first_entry: &StatusLogEntryV1 = match first_entry { StatusLogEntry::V1(status_log_entry_v1) => status_log_entry_v1, - StatusLogEntry::V2(_) => panic!("Expected status log entry v1"), + StatusLogEntry::V2(_) | StatusLogEntry::V3(_) => panic!("Expected status log entry v1"), }; assert_eq!(first_entry.engine_temp, 4.8440366); assert!(!first_entry.fan_on); @@ -463,7 +522,7 @@ mod tests { let second_entry = &status_log.entries[1]; let second_entry = match second_entry { StatusLogEntry::V1(status_log_entry_v1) => status_log_entry_v1, - StatusLogEntry::V2(_) => panic!("Expected status log entry v1"), + StatusLogEntry::V2(_) | StatusLogEntry::V3(_) => panic!("Expected status log entry v1"), }; assert_eq!(second_entry.engine_temp, 4.8623853); assert!(!second_entry.fan_on); @@ -474,7 +533,7 @@ mod tests { let last_entry = status_log.entries.last().expect("Empty entries vec"); let last_entry = match last_entry { StatusLogEntry::V1(status_log_entry_v1) => status_log_entry_v1, - StatusLogEntry::V2(_) => panic!("Expected status log entry v1"), + StatusLogEntry::V2(_) | StatusLogEntry::V3(_) => panic!("Expected status log entry v1"), }; assert_eq!(last_entry.timestamp_ns(), 687042000000.0); assert_eq!(last_entry.engine_temp, 76.5566); @@ -510,7 +569,7 @@ mod tests { let first_entry = status_log.entries.first().expect("Empty entries vec"); let first_entry = match first_entry { - StatusLogEntry::V1(_) => panic!("Expected status log entry v2"), + StatusLogEntry::V1(_) | StatusLogEntry::V3(_) => panic!("Expected status log entry v2"), StatusLogEntry::V2(status_log_entry_v2) => status_log_entry_v2, }; assert_eq!(first_entry.engine_temp, 40.482456); @@ -520,7 +579,7 @@ mod tests { assert_eq!(first_entry.motor_state, v2::MotorState::POWER_HOLD); let second_entry = &status_log.entries[1]; let second_entry = match second_entry { - StatusLogEntry::V1(_) => panic!("Expected status log entry v2"), + StatusLogEntry::V1(_) | StatusLogEntry::V3(_) => panic!("Expected status log entry v2"), StatusLogEntry::V2(status_log_entry_v2) => status_log_entry_v2, }; assert_eq!(second_entry.engine_temp, 40.482456); @@ -531,7 +590,7 @@ mod tests { let last_entry = status_log.entries.last().expect("Empty entries vec"); let last_entry = match last_entry { - StatusLogEntry::V1(_) => panic!("Expected status log entry v2"), + StatusLogEntry::V1(_) | StatusLogEntry::V3(_) => panic!("Expected status log entry v2"), StatusLogEntry::V2(status_log_entry_v2) => status_log_entry_v2, }; assert_eq!(last_entry.timestamp_ns(), 14300000000.0); @@ -545,45 +604,45 @@ mod tests { } #[test] - fn test_deserialize_v4() -> TestResult { - let data = fs::read(TEST_DATA_V4)?; + fn test_deserialize_v5() -> TestResult { + let data = fs::read(TEST_DATA_V5)?; let full_data_len = data.len(); let (status_log, bytes_read) = StatusLog::from_reader(&mut data.as_slice())?; assert!(bytes_read <= full_data_len); - assert_eq!(bytes_read, 45557); + assert_eq!(bytes_read, 157165); eprintln!("{}", status_log.header); let first_entry = status_log.entries.first().expect("Empty entries vec"); let first_entry = match first_entry { - StatusLogEntry::V1(_) => panic!("Expected status log entry v2"), - StatusLogEntry::V2(status_log_entry_v2) => status_log_entry_v2, + StatusLogEntry::V1(_) | StatusLogEntry::V2(_) => panic!("Expected status log entry v3"), + StatusLogEntry::V3(status_log_entry_v3) => status_log_entry_v3, }; - assert_eq!(first_entry.engine_temp, 41.11842); + assert_eq!(first_entry.engine_temp, 74.63115); assert!(!first_entry.fan_on); - assert_eq!(first_entry.vbat, 12.101027); + assert_eq!(first_entry.vbat, 12.477095); assert_eq!(first_entry.setpoint, 1234.0); assert_eq!(first_entry.motor_state, v2::MotorState::ECU_ON_WAIT_PUMP); let second_entry = &status_log.entries[1]; let second_entry = match second_entry { - StatusLogEntry::V1(_) => panic!("Expected status log entry v2"), - StatusLogEntry::V2(status_log_entry_v2) => status_log_entry_v2, + StatusLogEntry::V1(_) | StatusLogEntry::V2(_) => panic!("Expected status log entry v3"), + StatusLogEntry::V3(status_log_entry_v2) => status_log_entry_v2, }; - assert_eq!(second_entry.engine_temp, 41.11842); + assert_eq!(second_entry.engine_temp, 74.63115); assert!(!second_entry.fan_on); - assert_eq!(second_entry.vbat, 12.101027); + assert_eq!(second_entry.vbat, 12.477095); assert_eq!(second_entry.setpoint, 1234.0); assert_eq!(second_entry.motor_state, v2::MotorState::ECU_ON_WAIT_PUMP); let last_entry = status_log.entries.last().expect("Empty entries vec"); let last_entry = match last_entry { - StatusLogEntry::V1(_) => panic!("Expected status log entry v2"), - StatusLogEntry::V2(status_log_entry_v2) => status_log_entry_v2, + StatusLogEntry::V1(_) | StatusLogEntry::V2(_) => panic!("Expected status log entry v3"), + StatusLogEntry::V3(status_log_entry_v2) => status_log_entry_v2, }; - assert_eq!(last_entry.timestamp_ns(), 287706000000.0); - assert_eq!(last_entry.engine_temp, 70.040985); - assert!(!last_entry.fan_on); - assert_eq!(last_entry.vbat, 12.484616); + assert_eq!(last_entry.timestamp_ns(), 906388000000.0); + assert_eq!(last_entry.engine_temp, 78.820755); + assert!(last_entry.fan_on); + assert_eq!(last_entry.vbat, 12.236411); assert_eq!(last_entry.setpoint, 2500.0); assert_eq!(last_entry.motor_state, v2::MotorState::WAIT_TIME_SHUTDOWN); //eprintln!("{status_log}"); diff --git a/src/plot/axis_config.rs b/src/plot/axis_config.rs index 49c92407..e5d65e1b 100644 --- a/src/plot/axis_config.rs +++ b/src/plot/axis_config.rs @@ -22,7 +22,7 @@ impl Default for AxisConfig { link_x: true, link_cursor_x: true, show_axes: true, - show_grid: true, + show_grid: false, y_axis_lock: YAxisLock::default(), ui_visible: false, } diff --git a/test_data/mbed_motor_control/v4/pid_20241104_132254_00.bin b/test_data/mbed_motor_control/v4/pid_20241104_132254_00.bin deleted file mode 100644 index 22eb7d86..00000000 Binary files a/test_data/mbed_motor_control/v4/pid_20241104_132254_00.bin and /dev/null differ diff --git a/test_data/mbed_motor_control/v4/pid_20250120_092446_00.bin b/test_data/mbed_motor_control/v4/pid_20250120_092446_00.bin new file mode 100644 index 00000000..3dc544eb Binary files /dev/null and b/test_data/mbed_motor_control/v4/pid_20250120_092446_00.bin differ diff --git a/test_data/mbed_motor_control/v4/status_20241104_132254_00.bin b/test_data/mbed_motor_control/v4/status_20241104_132254_00.bin deleted file mode 100644 index 00564e3b..00000000 Binary files a/test_data/mbed_motor_control/v4/status_20241104_132254_00.bin and /dev/null differ diff --git a/test_data/mbed_motor_control/v5/status_20250120_092446_00.bin b/test_data/mbed_motor_control/v5/status_20250120_092446_00.bin new file mode 100644 index 00000000..5ba3f249 Binary files /dev/null and b/test_data/mbed_motor_control/v5/status_20250120_092446_00.bin differ