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#[repr(u8)] 2#[derive(Copy, Clone, Debug, Eq, PartialEq)] 3#[cfg_attr(feature = "defmt", derive(defmt::Format))] 4pub enum SyscallNumber { 5 Misc = 0, 6 Image = 1, 7 Input = 2, 8 Usb = 3, 9} 10 11impl TryFrom<u8> for SyscallNumber { 12 type Error = (); 13 14 fn try_from(value: u8) -> Result<Self, Self::Error> { 15 match value { 16 x if x == SyscallNumber::Misc as u8 => Ok(SyscallNumber::Misc), 17 x if x == SyscallNumber::Image as u8 => Ok(SyscallNumber::Image), 18 x if x == SyscallNumber::Input as u8 => Ok(SyscallNumber::Input), 19 x if x == SyscallNumber::Usb as u8 => Ok(SyscallNumber::Usb), 20 _ => Err(()), 21 } 22 } 23} 24 25/// Perform a raw system call. 26#[macro_export] 27macro_rules! syscall { 28 ( 29 $syscall_num:expr, 30 $( out $r0out:ident )? $( in $r0in:expr )? $(, 31 $( out $r1out:ident )? $( in $r1in:expr )? $(, 32 $( out $r2out:ident )? $( in $r2in:expr )? $(, 33 $( out $r3out:ident )? $( in $r3in:expr )? $(,)? 34 )? 35 )? 36 )? 37 ) => { 38 ::core::arch::asm!( 39 "svc #{syscall_num}", 40 $( in("r0") $r0in as usize, )? 41 $( lateout("r0") $r0out, )? 42 $( 43 $( in("r1") $r1in as usize, )? 44 $( lateout("r1") $r1out, )? 45 $( 46 $( in("r2") $r2in as usize, )? 47 $( lateout("r2") $r2out, )? 48 $( 49 $( in("r3") $r3in as usize, )? 50 $( lateout("r3") $r3out, )? 51 )? 52 )? 53 )? 54 syscall_num = const $syscall_num as u8, 55 ) 56 } 57}