firmware for my Touchscreen E-Paper Input Module for Framework Laptop 16
0

Configure Feed

Select the types of activity you want to include in your feed.

1#![no_std] 2#![no_main] 3 4extern crate panic_halt; 5 6use core::fmt::Write; 7use embedded_graphics::draw_target::DrawTarget; 8use embedded_graphics::Drawable; 9use embedded_graphics::pixelcolor::BinaryColor; 10use embedded_graphics::prelude::Point; 11use embedded_graphics::text::Text; 12use heapless::String; 13use eepy_gui::draw_target::EpdDrawTarget; 14use eepy_gui::element::button::Button; 15use eepy_gui::element::{Gui, DEFAULT_TEXT_STYLE}; 16use eepy_sys::{ProgramFunctionTable, RefreshBlockMode, SafeOption}; 17use eepy_sys::header::ProgramSlotHeader; 18 19extern "C" { 20 static _end: *const u8; 21} 22 23#[link_section = ".header"] 24#[used] 25static HEADER: ProgramSlotHeader = ProgramSlotHeader::partial( 26 "Example TESTING FOO BAR BAZ", 27 env!("CARGO_PKG_VERSION"), 28 entry, 29); 30 31#[used] 32static mut FOO: u32 = 10; 33 34#[no_mangle] 35pub extern "C" fn entry(pft: &ProgramFunctionTable) { 36 37 unsafe { (pft.set_touch_enabled)(true) }; 38 39 let mut draw_target = EpdDrawTarget::new(pft.write_image, pft.refresh); 40 41 let mut button = Button::with_default_style_auto_sized(Point::new(10, 40), "Click me", true); 42 button.draw_init(&mut draw_target); 43 draw_target.refresh(false, RefreshBlockMode::BlockAcknowledge); 44 45 let mut counter = 0; 46 47 loop { 48 while let SafeOption::Some(ev) = (pft.next_event)() { 49 let mut needs_refresh = false; 50 51 let response = button.tick(&mut draw_target, ev); 52 if response.clicked { 53 draw_target.clear(BinaryColor::Off).unwrap(); 54 button.draw_init(&mut draw_target); 55 56 counter += 1; 57 let mut s = String::<16>::new(); 58 write!(s, "{counter}").unwrap(); 59 Text::new(&s, Point::new(10, 80), DEFAULT_TEXT_STYLE) 60 .draw(&mut draw_target) 61 .unwrap(); 62 needs_refresh = true; 63 } 64 needs_refresh |= response.needs_refresh; 65 66 if needs_refresh { 67 draw_target.refresh(true, RefreshBlockMode::NonBlocking); 68 } 69 } 70 } 71}