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}