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.

1use tp370pgh01::IMAGE_BYTES; 2use crate::syscall; 3use crate::syscall::SyscallNumber; 4 5#[repr(usize)] 6#[derive(Copy, Clone, Debug, Eq, PartialEq)] 7#[cfg_attr(feature = "defmt", derive(defmt::Format))] 8pub enum ImageSyscall { 9 WriteImage = 0, 10 Refresh = 1, 11} 12 13impl TryFrom<usize> for ImageSyscall { 14 type Error = (); 15 16 fn try_from(value: usize) -> Result<Self, Self::Error> { 17 match value { 18 x if x == ImageSyscall::WriteImage as usize => Ok(ImageSyscall::WriteImage), 19 x if x == ImageSyscall::Refresh as usize => Ok(ImageSyscall::Refresh), 20 _ => Err(()), 21 } 22 } 23} 24 25#[repr(usize)] 26#[derive(Copy, Clone, Debug, Eq, PartialEq)] 27#[cfg_attr(feature = "defmt", derive(defmt::Format))] 28pub enum RefreshBlockMode { 29 NonBlocking, 30 BlockAcknowledge, 31 BlockFinish, 32} 33 34impl TryFrom<usize> for RefreshBlockMode { 35 type Error = (); 36 37 fn try_from(value: usize) -> Result<Self, Self::Error> { 38 match value { 39 x if x == RefreshBlockMode::NonBlocking as usize => Ok(RefreshBlockMode::NonBlocking), 40 x if x == RefreshBlockMode::BlockAcknowledge as usize => Ok(RefreshBlockMode::BlockAcknowledge), 41 x if x == RefreshBlockMode::BlockFinish as usize => Ok(RefreshBlockMode::BlockFinish), 42 _ => Err(()), 43 } 44 } 45} 46 47pub fn write_image(image: &[u8; IMAGE_BYTES]) { 48 unsafe { 49 syscall!( 50 SyscallNumber::Image, 51 in ImageSyscall::WriteImage, 52 in &raw const *image, 53 ); 54 } 55} 56 57pub fn refresh(fast_refresh: bool, refresh_block_mode: RefreshBlockMode) { 58 unsafe { 59 syscall!( 60 SyscallNumber::Image, 61 in ImageSyscall::Refresh, 62 in fast_refresh, 63 in refresh_block_mode, 64 ); 65 } 66}