selection ui for user apps

works
This commit is contained in:
2025-11-04 13:43:48 -07:00
parent dd26e3528b
commit ee0d2880bb
12 changed files with 320 additions and 70 deletions

View File

@@ -12,7 +12,6 @@ defmt = ["dep:defmt"]
strum = { version = "0.27.2", default-features = false, features = ["derive"] }
bitflags = "2.9.4"
embedded-graphics = "0.8.1"
embedded-sdmmc = { version = "0.9.0", default-features = false }
defmt = { version = "0.3", optional = true }
[build-dependencies]

View File

@@ -1,14 +1,13 @@
#![no_std]
#[cfg(feature = "alloc")]
use core::alloc::Layout;
use core::ffi::c_char;
use embedded_graphics::{
Pixel,
pixelcolor::{Rgb565, raw::RawU16},
prelude::{IntoStorage, Point},
};
use embedded_sdmmc::DirEntry;
use strum::{EnumCount, EnumIter};
pub type EntryFn = fn();
@@ -396,21 +395,23 @@ pub extern "C" fn gen_rand(req: &mut RngRequest) {
pub type ListDir = extern "C" fn(
str: *const u8,
len: usize,
files: *mut Option<DirEntry>,
entries: *mut *mut c_char,
file_len: usize,
max_entry_str_len: usize,
) -> usize;
#[unsafe(no_mangle)]
pub extern "C" fn list_dir(
str: *const u8,
len: usize,
files: *mut Option<DirEntry>,
file_len: usize,
entries: *mut *mut c_char,
entry_count: usize,
max_entry_str_len: usize,
) -> usize {
unsafe {
let ptr = CALL_ABI_TABLE[CallTable::ListDir as usize];
let f: ListDir = core::mem::transmute(ptr);
f(str, len, files, file_len)
f(str, len, entries, entry_count, max_entry_str_len)
}
}