rpi-ws281x / rpi-ws281x-rust

Rust bindings to the ws821x library enabled by bindgen.
MIT License
38 stars 24 forks source link

crates.io docs.rs

Welcome to the Rust Bindings for rpi_ws281x

PSA - Higher Level Abstraction

If you are looking at this crate and thinking "boy, I'd like to add {insert higher abstraction}" then you may be interested in one of the below projects. This project is meant to stick strictly to the driver's feature set (and possibly a subset of that even).

Remember to audit your dependencies, we take no responsibility for any security vulnerabilities resulting from the use of the above mentioned crates

If you have a crate that builds on this one and want it featured here, feel free to open a PR.

Usage Warning

This project is still a work-in-progress, and the API is very much subject to change. Most of the major stuff is covered by fairly idiomatic Rust. However, we are always striving to cover more to the level of @Meh who wrote manual bindings to this libray a while back.

Contributing

Code is licensed under the MIT license, so as long as you are cool with that, feel free to open an issue, talk about proposed changes, then open a PR! I would love a helping hand, just have to make sure things don't get too messy either.

Compiling on Raspbian

Cross-compiling on Ubuntu/Debian

AArch64 Builds

Cross-compiling on Windows

An example build script might look like this (using Git for Windows Bash):

#!/usr/bin/env bash

# inform rpi-ws2811-rust where the GCC sysroot is
export RPI_WS281X_SYSROOT=C:/SysGCC/raspberry/arm-linux-gnueabihf/sysroot
# point to the GCC ARM compiler/linker.
export CC_arm_unknown_linux_gnueabihf=C:/SysGCC/raspberry/bin/arm-linux-gnueabihf-gcc.exe
# point to the GCC ARM archiver
export AR_arm_unknown_linux_gnueabihf=C:/SysGCC/raspberry/bin/arm-linux-gnueabihf-ar.exe

# run the build command
cargo build $@