oled_notifier/
lib.rs

1#![doc = include_str!("../README.md")]
2
3mod duration;
4pub mod stats;
5
6use embedded_graphics::mono_font::MonoTextStyleBuilder;
7use embedded_graphics::mono_font::ascii::*;
8use embedded_graphics::text::{Baseline, Text};
9use embedded_graphics_core::{draw_target::DrawTarget, pixelcolor::BinaryColor, prelude::*};
10
11use crate::stats::*;
12
13use systemstat::Platform;
14
15pub struct Error;
16
17pub fn draw_frame<D, P>(display: &mut D, sys: &P) -> Result<(), D::Error>
18where
19    P: Platform,
20    D: DrawTarget<Color = BinaryColor>,
21{
22    let text_style = MonoTextStyleBuilder::new()
23        .font(&FONT_8X13)
24        .text_color(BinaryColor::On)
25        .build();
26
27    let cpu_load = format_load_average(sys.load_average());
28
29    Text::with_baseline(&cpu_load, Point::zero(), text_style, Baseline::Top).draw(display)?;
30
31    let mem = format_memory(sys.memory());
32
33    Text::with_baseline(&mem, Point::new(0, 16), text_style, Baseline::Top).draw(display)?;
34
35    let net = format_networks(sys.networks());
36
37    Text::with_baseline(&net, Point::new(0, 32), text_style, Baseline::Top).draw(display)?;
38
39    let up = format_uptime(sys.uptime());
40
41    Text::with_baseline(&up, Point::new(0, 48), text_style, Baseline::Top).draw(display)?;
42
43    Ok(())
44}