Added defmt logging
This commit is contained in:
70
Cargo.lock
generated
70
Cargo.lock
generated
@@ -2,6 +2,12 @@
|
|||||||
# It is not intended for manual editing.
|
# It is not intended for manual editing.
|
||||||
version = 4
|
version = 4
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "bitflags"
|
||||||
|
version = "1.3.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "convert_case"
|
name = "convert_case"
|
||||||
version = "0.6.0"
|
version = "0.6.0"
|
||||||
@@ -11,6 +17,47 @@ dependencies = [
|
|||||||
"unicode-segmentation",
|
"unicode-segmentation",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "defmt"
|
||||||
|
version = "0.3.100"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "f0963443817029b2024136fc4dd07a5107eb8f977eaf18fcd1fdeb11306b64ad"
|
||||||
|
dependencies = [
|
||||||
|
"defmt 1.0.1",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "defmt"
|
||||||
|
version = "1.0.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "548d977b6da32fa1d1fda2876453da1e7df63ad0304c8b3dae4dbe7b96f39b78"
|
||||||
|
dependencies = [
|
||||||
|
"bitflags",
|
||||||
|
"defmt-macros",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "defmt-macros"
|
||||||
|
version = "1.0.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "3d4fc12a85bcf441cfe44344c4b72d58493178ce635338a3f3b78943aceb258e"
|
||||||
|
dependencies = [
|
||||||
|
"defmt-parser",
|
||||||
|
"proc-macro-error2",
|
||||||
|
"proc-macro2",
|
||||||
|
"quote",
|
||||||
|
"syn",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "defmt-parser"
|
||||||
|
version = "1.0.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "10d60334b3b2e7c9d91ef8150abfb6fa4c1c39ebbcf4a81c2e346aad939fee3e"
|
||||||
|
dependencies = [
|
||||||
|
"thiserror",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "enum_stringify"
|
name = "enum_stringify"
|
||||||
version = "0.6.4"
|
version = "0.6.4"
|
||||||
@@ -94,6 +141,28 @@ dependencies = [
|
|||||||
"toml_edit",
|
"toml_edit",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "proc-macro-error-attr2"
|
||||||
|
version = "2.0.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5"
|
||||||
|
dependencies = [
|
||||||
|
"proc-macro2",
|
||||||
|
"quote",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "proc-macro-error2"
|
||||||
|
version = "2.0.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802"
|
||||||
|
dependencies = [
|
||||||
|
"proc-macro-error-attr2",
|
||||||
|
"proc-macro2",
|
||||||
|
"quote",
|
||||||
|
"syn",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "proc-macro2"
|
name = "proc-macro2"
|
||||||
version = "1.0.103"
|
version = "1.0.103"
|
||||||
@@ -107,6 +176,7 @@ dependencies = [
|
|||||||
name = "protocol_300"
|
name = "protocol_300"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
|
"defmt 0.3.100",
|
||||||
"enum_stringify",
|
"enum_stringify",
|
||||||
"log",
|
"log",
|
||||||
"num_enum",
|
"num_enum",
|
||||||
|
|||||||
@@ -11,8 +11,10 @@ categories = ["encoding", "decoding"]
|
|||||||
|
|
||||||
[features]
|
[features]
|
||||||
default = ["std"]
|
default = ["std"]
|
||||||
std = ["serde/std", "serde_json/std", "thiserror/std", "num_enum/std"]
|
std = ["serde/std", "serde_json/std", "thiserror/std", "num_enum/std", "log"]
|
||||||
json = ["serde_json"]
|
json = ["serde_json"]
|
||||||
|
defmt = ["dep:defmt"]
|
||||||
|
log = ["dep:log"]
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
serde = { version = "1.0", default-features = false}
|
serde = { version = "1.0", default-features = false}
|
||||||
@@ -21,7 +23,8 @@ thiserror = {version="2.0.17", default-features = false}
|
|||||||
# chrono = { version = "0.4", features = ["serde"] }
|
# chrono = { version = "0.4", features = ["serde"] }
|
||||||
enum_stringify = "0.6.4"
|
enum_stringify = "0.6.4"
|
||||||
num_enum = {version="0.7.5", default-features = false}
|
num_enum = {version="0.7.5", default-features = false}
|
||||||
log = { version = "0.4" }
|
log = { version = "0.4", optional = true }
|
||||||
|
defmt = { version = "0.3", optional = true }
|
||||||
|
|
||||||
|
|
||||||
[lints.clippy]
|
[lints.clippy]
|
||||||
|
|||||||
@@ -1,3 +1,7 @@
|
|||||||
|
#[cfg(feature = "defmt")]
|
||||||
|
use defmt::{warn, error};
|
||||||
|
|
||||||
|
#[cfg(feature = "log")]
|
||||||
use log::{warn, error};
|
use log::{warn, error};
|
||||||
|
|
||||||
extern crate alloc;
|
extern crate alloc;
|
||||||
@@ -223,7 +227,11 @@ impl Protocol300Message {
|
|||||||
|
|
||||||
// Fail if the checksums do not match
|
// Fail if the checksums do not match
|
||||||
if checksum != checksum_calculated {
|
if checksum != checksum_calculated {
|
||||||
|
#[cfg(feature = "log")]
|
||||||
error!("Failed to decode message: checksum mismatch - received: 0x{checksum:02X}, calculated: 0x{checksum_calculated:02X}, address: 0x{data_address:04X}, message_id: {message_identifier}, function: {function_code}");
|
error!("Failed to decode message: checksum mismatch - received: 0x{checksum:02X}, calculated: 0x{checksum_calculated:02X}, address: 0x{data_address:04X}, message_id: {message_identifier}, function: {function_code}");
|
||||||
|
#[cfg(feature = "defmt")]
|
||||||
|
error!("Failed to decode message: checksum mismatch - received: 0x{:02X}, calculated: 0x{:02X}, address: 0x{:04X}, message_id: {}, function: {}", checksum, checksum_calculated, data_address, defmt::Debug2Format(&message_identifier), defmt::Debug2Format(&function_code));
|
||||||
|
|
||||||
return Err(MessageDecodingError::Checksum)
|
return Err(MessageDecodingError::Checksum)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,12 @@
|
|||||||
use crate::{Protocol300Message, message};
|
use crate::{Protocol300Message, message};
|
||||||
use thiserror::Error;
|
use thiserror::Error;
|
||||||
use log::error;
|
|
||||||
|
#[cfg(feature = "defmt")]
|
||||||
|
use defmt::{error};
|
||||||
|
|
||||||
|
#[cfg(feature = "log")]
|
||||||
|
use log::{error};
|
||||||
|
|
||||||
extern crate alloc;
|
extern crate alloc;
|
||||||
|
|
||||||
use alloc::vec;
|
use alloc::vec;
|
||||||
@@ -36,7 +42,7 @@ impl Protocol300Transmission {
|
|||||||
[0x16, 0x00, 0x00] => Ok(Self::Init),
|
[0x16, 0x00, 0x00] => Ok(Self::Init),
|
||||||
[0x41, ..] => Ok(Self::Message(Protocol300Message::try_from_bytes(bytes)?)),
|
[0x41, ..] => Ok(Self::Message(Protocol300Message::try_from_bytes(bytes)?)),
|
||||||
_ => {
|
_ => {
|
||||||
error!("Failed to parse Protocol300 transmission: invalid byte sequence (length: {}, first byte: 0x{:02X?})",
|
error!("Failed to parse Protocol300 transmission: invalid byte sequence (length: {}, first byte: 0x{:02X})",
|
||||||
bytes.len(),
|
bytes.len(),
|
||||||
bytes.first().unwrap_or(&0x00));
|
bytes.first().unwrap_or(&0x00));
|
||||||
Err(FromBytesError::InvalidByte)
|
Err(FromBytesError::InvalidByte)
|
||||||
|
|||||||
Reference in New Issue
Block a user