10 releases

0.1.9 Oct 29, 2024
0.1.8 Oct 19, 2024
0.1.7 Aug 16, 2024
0.1.6 May 11, 2024
0.1.1 Oct 30, 2023

#187 in Hardware support

Download history 11/week @ 2024-08-09 247/week @ 2024-08-16 25/week @ 2024-08-23 92/week @ 2024-08-30 46/week @ 2024-09-06 40/week @ 2024-09-13 30/week @ 2024-09-20 25/week @ 2024-09-27 18/week @ 2024-10-04 27/week @ 2024-10-11 180/week @ 2024-10-18 161/week @ 2024-10-25 27/week @ 2024-11-01 9/week @ 2024-11-08 5/week @ 2024-11-15

52 downloads per month

MIT license

52KB
1.5K SLoC

mlua-periphery

A Rust-native implementation of lua-periphery for mlua.

License Arch Lua

From lua-periphery:

lua-periphery is a library for GPIO, LED, PWM, SPI, I2C, MMIO, and Serial peripheral I/O interface access in userspace Linux. It is useful in embedded Linux environments (including Raspberry Pi, BeagleBone, etc. platforms) for interfacing with external peripherals.

Using Python or C? Check out the python-periphery and c-periphery projects.

Installing

Add to your Rust project using one of MLua's features: [lua51, lua52, lua53, lua54, luajit, luajit52].

$ cargo add mlua-periphery --features luajit

Using

use mlua::Lua;

let lua = Lua::new();
mlua_periphery::preload(&lua);
let script = r#"
    local LED = require('periphery.LED')
    local led = LED('led0')
    return led:read(), led.brightness, led.max_brightness
"#;
let (value, brightness, max_brightness): (bool, u32, u32) = lua.load(script).eval()?;

Testing

An integration_tests.rs file exists in each submodule and demonstrates:

Running the i2cdetect example

$ cargo run -v --example i2cdetect --features lua54

     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
10: -- -- -- -- -- -- -- -- -- -- 1a -- -- -- -- -- 
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- -- --                         

Dependencies

~3.5–9.5MB
~105K SLoC