From fad275c1d2f7de0a02a74a82cc385507a2cdf90e Mon Sep 17 00:00:00 2001 From: Dreaded_X Date: Fri, 1 Sep 2023 01:48:43 +0200 Subject: [PATCH] Updated dsmr5 to 0.3 --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- src/main.rs | 15 ++++++++------- 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index c37ff39..5c03ac3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -376,9 +376,9 @@ checksum = "1aaf95b3e5c8f23aa320147307562d361db0ae0d51242340f558153b4eb2439b" [[package]] name = "dsmr5" -version = "0.2.2" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7b8dcac624a4bae4c257775a5845535d5d3b3c5b1201f335aa0d8fcbd62dc70" +checksum = "7f33c828db9cdf93901b9d001a30a16609131ecc361a23a4d261aa5beede06f9" dependencies = [ "crc16", "serde", diff --git a/Cargo.toml b/Cargo.toml index 32b6365..672859a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -55,7 +55,7 @@ static_cell = { version = "1.1", features = ["nightly"] } heapless = { version = "0.7.16", features = ["defmt"] } embedded-io-async = { version = "0.5", features = ["defmt-03"] } crc16 = "0.4" -dsmr5 = "0.2" +dsmr5 = "0.3" rust-mqtt = { version = "0.1.5", features = [ "defmt", "no_std", diff --git a/src/main.rs b/src/main.rs index aba54e6..138f647 100644 --- a/src/main.rs +++ b/src/main.rs @@ -109,12 +109,15 @@ async fn get_readout(rx: &mut BufferedUartRx<'static, UART0>) -> Readout { #[embassy_executor::task] async fn uart_rx_task( mut rx: BufferedUartRx<'static, UART0>, - sender: Sender<'static, NoopRawMutex, Readout, 1>, + sender: Sender<'static, NoopRawMutex, dsmr5::state::State, 1>, ) { info!("Wating for serial data"); loop { let readout = get_readout(&mut rx).await; - match sender.try_send(readout) { + let telegram = &readout.to_telegram().unwrap(); + let state = telegram.try_into().unwrap(); + + match sender.try_send(state) { Ok(_) => {} Err(_) => warn!("Queue is full!"), } @@ -126,7 +129,7 @@ async fn main(spawner: Spawner) { info!("Starting..."); let p = embassy_rp::init(Default::default()); - let channel = make_static!(Channel::::new()); + let channel = make_static!(Channel::::new()); // === UART === let mut config = uart::Config::default(); @@ -262,13 +265,11 @@ async fn main(spawner: Spawner) { loop { match select(keep_alive.next(), receiver.receive()).await { Either::First(_) => client.send_ping().await.unwrap(), - Either::Second(readout) => { + Either::Second(state) => { + // Blink the LED to show that a readout was received control.gpio_set(0, true).await; control.gpio_set(0, false).await; - let telegram = readout.to_telegram().unwrap(); - let state = dsmr5::Result::::from(&telegram).unwrap(); - let msg: Vec = serde_json_core::to_vec(&state).unwrap(); info!("len: {}", msg.len());