From 2a2fd6b140b832b5a173e4c11b1ad04df127cbae Mon Sep 17 00:00:00 2001 From: hodasemi Date: Fri, 15 Mar 2024 07:31:23 +0100 Subject: [PATCH] Use logger crate --- Cargo.toml | 3 ++- example/rp_pico_dht22.rs | 47 +++++++++++++++------------------------- 2 files changed, 20 insertions(+), 30 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 06c7b0d..03ea8bf 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -26,7 +26,8 @@ fixed = "1.23.1" [dev-dependencies] embassy-executor = { version = "0.5.0", features = ["task-arena-size-32768", "arch-cortex-m", "executor-thread", "executor-interrupt", "integrated-timers"] } embassy-futures = { version = "0.1.1" } -embassy_serial = { git = "https://gavania.de/hodasemi/embassy_serial" } +embassy-usb-logger = { version = "0.1.0" } +log = "0.4" [[example]] name = "rp-pico-dht22" diff --git a/example/rp_pico_dht22.rs b/example/rp_pico_dht22.rs index 322ac62..84ff60f 100644 --- a/example/rp_pico_dht22.rs +++ b/example/rp_pico_dht22.rs @@ -4,17 +4,16 @@ use core::panic::PanicInfo; use embassy_executor::Spawner; -use embassy_futures::join::join; use embassy_rp::{ bind_interrupts, gpio::{Level, Output}, - peripherals::{PIN_15, PIO0}, - pio::{InterruptHandler, Pio}, + peripherals::{PIN_15, PIO0, USB}, + pio::{InterruptHandler as PioInterruptHandler, Pio}, + usb::{Driver, InterruptHandler as USBInterrupthandler}, }; use embassy_time::Timer; use dht_pio::{Dht, Dht22, DhtError}; -use embassy_serial; #[panic_handler] fn panic(_info: &PanicInfo) -> ! { @@ -28,20 +27,25 @@ fn panic(_info: &PanicInfo) -> ! { static mut PANIC_LED: Option> = None; bind_interrupts!(struct Irqs { - PIO0_IRQ_0 => InterruptHandler; + PIO0_IRQ_0 => PioInterruptHandler; + USBCTRL_IRQ => USBInterrupthandler; }); +#[embassy_executor::task] +async fn logger_task(driver: Driver<'static, USB>) { + embassy_usb_logger::run!(1024, log::LevelFilter::Info, driver); +} + #[embassy_executor::main] -async fn main(_spawner: Spawner) { +async fn main(spawner: Spawner) { let p = embassy_rp::init(Default::default()); unsafe { PANIC_LED = Some(Output::new(p.PIN_15, Level::Low)); } - // debug: serial port - let (mut serial, usb_future) = - embassy_serial::Serial::new(p.USB, embassy_serial::SerialConfig::new()); + let driver = Driver::new(p.USB, Irqs); + spawner.spawn(logger_task(driver)).unwrap(); // pio access let pio = p.PIO0; @@ -60,29 +64,14 @@ async fn main(_spawner: Spawner) { loop { match dht.read().await { Ok(reading) => { - serial.send_msg("temp:\n").await.unwrap(); - serial - .send_number(reading.temperature as u32, 10) - .await - .unwrap(); - serial.send_msg("\n").await.unwrap(); - serial.send_msg("humid:\n").await.unwrap(); - serial - .send_number(reading.humidity as u32, 10) - .await - .unwrap(); - serial.send_msg("\n").await.unwrap(); + log::info!("temp: {}, humid: {}", reading.temperature, reading.humidity); } Err(err) => match err { - DhtError::Timeout => serial.send_msg("dht timeout error\n").await.unwrap(), + DhtError::Timeout => log::info!("dht timeout error"), DhtError::CrcMismatch(data, crc) => { - serial.send_msg("dht checksum error\n").await.unwrap(); - serial.send_number(data, 16).await.unwrap(); - serial.send_msg("\n").await.unwrap(); - serial.send_number(crc, 16).await.unwrap(); - serial.send_msg("\n").await.unwrap(); + log::info!("dht checksum error:\ndata: {data}\ncrc: {crc}"); } - DhtError::ReadError => serial.send_msg("dht read error\n").await.unwrap(), + DhtError::ReadError => log::info!("dht read error"), }, } @@ -90,5 +79,5 @@ async fn main(_spawner: Spawner) { } }; - join(usb_future, dht_reading).await; + dht_reading.await; }