diff --git a/Cargo.lock b/Cargo.lock index fbd4c0b..07bde12 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -93,21 +93,20 @@ dependencies = [ [[package]] name = "can-dbc" -version = "8.1.0" +version = "10.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "912874d84099e530055bac10893f2d2b09c63bcf41c02e854e42ca42ec33ade1" +checksum = "e39bde77280df32da397aaabc992cd252639af9cec2dff19f293668a9c0c162f" dependencies = [ "can-dbc-pest", - "encoding_rs", "serde", "thiserror", ] [[package]] name = "can-dbc-pest" -version = "0.7.2" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcb9648a43e6226967e08782b7146a0c0ab605d23334d5976246ff3c68b4aa35" +checksum = "3345d10c9b3676319c8865ce7622d03fff3c75fc21e1f7156afa629006618cf5" dependencies = [ "encoding_rs", "pest", @@ -151,7 +150,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -224,10 +223,10 @@ dependencies = [ "clap", "embedded-can", "heck", - "prettyplease", + "prettyplease 0.3.0", "proc-macro2", "quote", - "syn", + "syn 3.0.3", ] [[package]] @@ -462,7 +461,7 @@ dependencies = [ "pest_meta", "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -482,7 +481,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" dependencies = [ "proc-macro2", - "syn", + "syn 2.0.117", +] + +[[package]] +name = "prettyplease" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bfe0f4c752e450fc2faf62654f1c134747922825d5b04ca717b8874f41a40c0" +dependencies = [ + "proc-macro2", + "syn 3.0.3", ] [[package]] @@ -561,7 +570,7 @@ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -611,6 +620,17 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "syn" +version = "3.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53e9bae58849f64dfa4f5d5ae372c8341f7305f82a3868709269343628b659a3" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + [[package]] name = "tap" version = "1.0.1" @@ -647,7 +667,7 @@ checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -788,8 +808,8 @@ dependencies = [ "anyhow", "heck", "indexmap", - "prettyplease", - "syn", + "prettyplease 0.2.37", + "syn 2.0.117", "wasm-metadata", "wit-bindgen-core", "wit-component", @@ -802,10 +822,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c0f9bfd77e6a48eccf51359e3ae77140a7f50b1e2ebfe62422d8afdaffab17a" dependencies = [ "anyhow", - "prettyplease", + "prettyplease 0.2.37", "proc-macro2", "quote", - "syn", + "syn 2.0.117", "wit-bindgen-core", "wit-bindgen-rust", ] diff --git a/Cargo.toml b/Cargo.toml index 471d081..4947051 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -18,11 +18,11 @@ exclude = ["codegen-tests/*", "data/*"] [dependencies] anyhow = "1" -can-dbc = "8.0.0" +can-dbc = "10.0.0" embedded-can = "0.4" -prettyplease = "0.2" +prettyplease = "0.3" proc-macro2 = "1" quote = "1" -syn = { version = "2", features = ["full"] } +syn = { version = "3", features = ["full"] } clap = { version = "4", features = ["derive"] } heck = "0.5" diff --git a/src/ir/message.rs b/src/ir/message.rs index 36b04dd..a7394af 100644 --- a/src/ir/message.rs +++ b/src/ir/message.rs @@ -1,7 +1,6 @@ use crate::ir::signal::{MultiplexIndicator, Signal}; use crate::ir::{Identifier, MessageLayoutIdx, SignalIdx}; use can_dbc::MessageId as ParsedMessageId; -use can_dbc::Transmitter as ParsedTransmitter; use std::collections::BTreeMap; #[derive(Debug, Clone)] @@ -21,7 +20,7 @@ impl Message { id: ParsedMessageId, name: String, size: u64, - transmitter: ParsedTransmitter, + transmitter: Option, signals: Vec, layout: MessageLayoutIdx, comment: Option, @@ -92,11 +91,11 @@ pub enum Transmitter { Node(Identifier), VectorXXX, } -impl From for Transmitter { - fn from(value: ParsedTransmitter) -> Self { +impl From> for Transmitter { + fn from(value: Option) -> Self { match value { - ParsedTransmitter::NodeName(s) => Transmitter::Node(Identifier::from_raw(s)), - ParsedTransmitter::VectorXXX => Transmitter::VectorXXX, + Some(s) => Transmitter::Node(Identifier::from_raw(s)), + None => Transmitter::VectorXXX, } } } diff --git a/src/ir/signal_layout.rs b/src/ir/signal_layout.rs index 6e51cd7..10f992a 100644 --- a/src/ir/signal_layout.rs +++ b/src/ir/signal_layout.rs @@ -1,4 +1,5 @@ use can_dbc::ByteOrder as ParsedByteOrder; +use can_dbc::NumericValue; use can_dbc::Signal as ParsedSignal; use can_dbc::ValueType as ParsedValueType; @@ -30,14 +31,22 @@ impl From<&ParsedSignal> for SignalLayout { value_type: ValueType::from(value.value_type), factor: value.factor, offset: value.offset, - min: value.min, - max: value.max, + min: numeric_value_to_float(value.min), + max: numeric_value_to_float(value.max), bitvec_start: 0, bitvec_end: 0, } } } +fn numeric_value_to_float(value: NumericValue) -> f64 { + match value { + NumericValue::Uint(v) => v as f64, + NumericValue::Int(v) => v as f64, + NumericValue::Double(v) => v, + } +} + use std::hash::{Hash, Hasher}; impl PartialEq for SignalLayout {