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