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

Configure Feed

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

eepy-launcher: display progress UI during program rx

+31 -1
+1 -1
eepy-launcher/src/main.rs
··· 65 65 if let MainGui::MainPage(page) = &mut gui { 66 66 page.refresh_buttons(); 67 67 page.draw_init(&mut draw_target); 68 - draw_target.refresh(false); 69 68 } 69 + draw_target.refresh(false); 70 70 } else if NEEDS_REFRESH.swap(false, Ordering::Relaxed) { 71 71 gui.draw_init(&mut draw_target); 72 72 draw_target.refresh(false);
+5
eepy-launcher/src/serial.rs
··· 12 12 use eepy_sys::misc::{debug, info, trace}; 13 13 use eepy_sys::usb::UsbBus; 14 14 use crate::{USB_DEVICE, USB_SERIAL}; 15 + use crate::ui::flashing::draw_flashing_ui; 15 16 16 17 #[derive(Copy, Clone, Debug)] 17 18 enum SerialState { ··· 135 136 if PROG_SLOT.load(Ordering::Relaxed) == 0 { 136 137 write_all(serial, &[Response::NoProgramSlot as u8]); 137 138 } else { 139 + set_touch_enabled(false); 138 140 *state = SerialState::FlashingProgram { index: 0, page: 0, num_pages: None, remainder: None }; 139 141 write_all(serial, &[Response::Ack as u8]); 140 142 } ··· 177 179 // else is written successfully 178 180 // Keep page 0 in the first 4096 bytes of BUF for the end 179 181 if *page == 0 { 182 + draw_flashing_ui(*page, None); 180 183 debug("receiving page 0"); 181 184 if let Ok(count) = serial.read(&mut buf[*index..4096]) { 182 185 *index += count; ··· 195 198 } 196 199 } 197 200 } else { 201 + draw_flashing_ui(*page, *num_pages); 198 202 if let Ok(count) = serial.read(&mut buf[(4096 + *index)..8192]) { 199 203 let mut message = heapless::String::<32>::new(); 200 204 write!(message, "receiving page {page}").unwrap(); ··· 224 228 PROG_SLOT.store(0, Ordering::Relaxed); 225 229 226 230 NEEDS_REFRESH_PROGRAMS.store(true, Ordering::Relaxed); 231 + set_touch_enabled(true); 227 232 info("Finished writing program"); 228 233 229 234 *state = SerialState::ReadyForCommand;
+24
eepy-launcher/src/ui/flashing.rs
··· 1 + use core::fmt::Write; 2 + use embedded_graphics::Drawable; 3 + use embedded_graphics::prelude::*; 4 + use embedded_graphics::text::Text; 5 + use eepy_gui::draw_target::EpdDrawTarget; 6 + use eepy_gui::element::DEFAULT_TEXT_STYLE; 7 + 8 + pub(crate) fn draw_flashing_ui(page: usize, num_pages: Option<usize>) { 9 + let mut target = EpdDrawTarget::default(); 10 + 11 + Text::new("Receiving program...", Point::new(10, 20), DEFAULT_TEXT_STYLE) 12 + .draw(&mut target) 13 + .unwrap(); 14 + 15 + if let Some(num_pages) = num_pages { 16 + let mut s = heapless::String::<16>::new(); 17 + write!(s, "({page} / {num_pages})").unwrap(); 18 + 19 + Text::new(&s, Point::new(10, 40), DEFAULT_TEXT_STYLE) 20 + .draw(&mut target) 21 + .unwrap(); 22 + } 23 + target.maybe_refresh(true); 24 + }
+1
eepy-launcher/src/ui/mod.rs
··· 8 8 use crate::ui::page::scratchpad::ScratchpadPage; 9 9 10 10 mod page; 11 + pub(crate) mod flashing; 11 12 12 13 pub(crate) enum MainGui { 13 14 MainPage(MainPage),