1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
use core::convert::Infallible; use std::fmt::Display; use embedded_hal::digital::v2::OutputPin; use serde::Serialize; #[derive(Debug, Default, Serialize)] pub struct PinCounter { pub changes: usize, } impl OutputPin for PinCounter { type Error = Infallible; fn set_low(&mut self) -> Result<(), Self::Error> { self.changes += 1; Ok(()) } fn set_high(&mut self) -> Result<(), Self::Error> { self.changes += 1; Ok(()) } } impl Display for PinCounter { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { write!(f, "Changes: {}", self.changes) } }