Skip to main content

Crate grift_arena_embedded

Crate grift_arena_embedded 

Source
Expand description

§Grift Arena Embedded

Embedded-specific features for the Grift Scheme interpreter.

This crate provides native Rust functions for:

  • Hardware register access (read/write)
  • Memory peek/poke operations
  • GPIO control
  • Bit manipulation utilities

§Design

This crate is designed to be modular and work in no_std environments. The core Lisp interpreter (grift_eval) remains independent of hardware, while this crate provides the bridge to embedded functionality.

§Usage

use grift_eval::{Lisp, Evaluator};
use grift_arena_embedded::register_embedded_natives;

let lisp: Lisp<20000> = Lisp::new();
let mut eval = Evaluator::new(&lisp).unwrap();

// Register all embedded native functions
register_embedded_natives(&mut eval).unwrap();

// Now you can call embedded functions from Lisp:
// (peek 0)           ; Read memory at address
// (poke 0 42)        ; Write to memory
// (gpio-read 0)      ; Read GPIO register 0
// (gpio-write 0 1)   ; Write 1 to GPIO register 0

§Safety

Memory access functions are inherently unsafe on real hardware. This crate provides a mock implementation for testing that uses a simulated memory space rather than real hardware registers.

Structs§

EmbeddedIoProvider
A no_std, fixed-buffer I/O provider for embedded targets.

Functions§

native_bit_extract
native_bit_insert
native_bit_set
native_gpio_clear
native_gpio_read
native_gpio_set
native_gpio_toggle
native_gpio_write
native_peek
native_peek32
native_poke
native_poke32
register_embedded_natives
reset_mock_hardware