All Projects → rust-embedded → Rust I2cdev

rust-embedded / Rust I2cdev

Licence: other
Rust library for interfacing with i2c devices under Linux

Programming Languages

rust
11053 projects

Projects that are alternatives of or similar to Rust I2cdev

Drivers
TinyGo drivers for sensors and other devices that use I2C, SPI, GPIO, ADC, and UART interfaces.
Stars: ✭ 250 (+110.08%)
Mutual labels:  i2c, embedded
IOsonata
IOsonata multi-platform multi-architecture power & performance optimized software library for fast and easy IoT MCU firmware development. Object Oriented design, no board package to define, just pure plug & play any boards
Stars: ✭ 40 (-66.39%)
Mutual labels:  embedded, i2c
embedded-sps
Embedded i2c Driver for Sensirion Particulate Matter Sensors - Download the Zip Package from the Release Page
Stars: ✭ 36 (-69.75%)
Mutual labels:  embedded, i2c
pwm-pca9685-rs
Platform-agnostic Rust driver for the PCA9685 I2C 16-channel, 12-bit PWM/Servo/LED controller
Stars: ✭ 19 (-84.03%)
Mutual labels:  embedded, i2c
embedded-ccs811-rs
Platform agnostic Rust driver for the CCS811 ultra-low power digital gas sensor for monitoring indoor air quality
Stars: ✭ 12 (-89.92%)
Mutual labels:  embedded, i2c
Waterius
Передача показаний воды по Wi-Fi. Watermeter Wi-Fi transmitter.
Stars: ✭ 295 (+147.9%)
Mutual labels:  i2c, embedded
Powershell Iot
Interact with I2C, SPI & GPIO devices using PowerShell Core!
Stars: ✭ 106 (-10.92%)
Mutual labels:  i2c
Wolfboot
wolfBoot is a portable, OS-agnostic, secure bootloader for microcontrollers, supporting firmware authentication and firmware update mechanisms.
Stars: ✭ 110 (-7.56%)
Mutual labels:  embedded
Linux Embedded Hal
Implementation of the `embedded-hal` traits for Linux devices
Stars: ✭ 105 (-11.76%)
Mutual labels:  embedded
Embassy
Rust Embedded async executor and HALs
Stars: ✭ 100 (-15.97%)
Mutual labels:  embedded
Anjay
C implementation of the client-side OMA LwM2M protocol
Stars: ✭ 115 (-3.36%)
Mutual labels:  embedded
Icemu
Emulate Integrated Circuits at the logic level
Stars: ✭ 113 (-5.04%)
Mutual labels:  embedded
Embedos
EmbedOS - Embedded security testing virtual machine
Stars: ✭ 108 (-9.24%)
Mutual labels:  embedded
List of robot electronics
A curated list of awesome open source electronic resources for robotics
Stars: ✭ 106 (-10.92%)
Mutual labels:  embedded
Button2
Arduino Library to simplify working with buttons. It allows you to use callback functions to track single, double, triple and long clicks. It also takes care of debouncing.
Stars: ✭ 109 (-8.4%)
Mutual labels:  embedded
Esp8266 Oled Ssd1306
Driver for the SSD1306 and SH1106 based 128x64, 128x32, 64x48 pixel OLED display running on ESP8266/ESP32
Stars: ✭ 1,590 (+1236.13%)
Mutual labels:  i2c
U Root
A fully Go userland with Linux bootloaders! u-root can create a one-binary root file system (initramfs) containing a busybox-like set of tools written in Go.
Stars: ✭ 1,816 (+1426.05%)
Mutual labels:  embedded
Spokestack Python
Spokestack is a library that allows a user to easily incorporate a voice interface into any Python application.
Stars: ✭ 103 (-13.45%)
Mutual labels:  embedded
Sod
An Embedded Computer Vision & Machine Learning Library (CPU Optimized & IoT Capable)
Stars: ✭ 1,460 (+1126.89%)
Mutual labels:  embedded
Rinside
Seamless embedding of R in C++ programs
Stars: ✭ 112 (-5.88%)
Mutual labels:  embedded

Rust I2cdev

Build Status Version License

Documentation

The Rust i2cdev crate seeks to provide full access to the Linux i2cdev driver interface in Rust without the need to wrap any C code or directly make low-level system calls. The documentation for the i2cdev interace can be found at https://www.kernel.org/doc/Documentation/i2c/dev-interface and in the lm-sensors projects.

Device driver developers should consider building on top of the embedded-hal traits rather than directly coupling to this library. An implementation of those generic traits for Linux can be found in linux-embedded-hal which, at present, uses this crate as the backend for I2C.

Example/API

The source includes an example of using the library to talk to a Wii Nunchuck (which has an i2c interface). Go View the Example.

The Documentation contains a quick overview of how to get started with an i2c device.

In addition to the Read/Write traits, the following methods are available via the I2CDevice trait.

Features

The following features are implemented and planned for the library:

  • [x] Implement the Read trait
  • [x] Implement the Write trait
  • [x] Implement SMBus Methods
  • [x] Add Tests/Example for SMBus Methods
  • [x] Add sensor library for handy sensors (and examples)
  • [ ] Add higher-level APIs/Macros for simplifying access to devices with large register sets
  • [ ] Add Support for Non-SMBus ioctl methods
  • [ ] Add examples for non-smbus ioctl methods
  • [ ] Unit Testing

Cross Compiling

Most likely, the machine you are running on is not your development machine (although it could be). In those cases, you will need to cross-compile. See https://github.com/japaric/rust-cross for pointers.

Minimum Supported Rust Version (MSRV)

This crate is guaranteed to compile on stable Rust 1.32.0 and up. It might compile with older versions but that may change in any new patch release.

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Code of Conduct

Contribution to this crate is organized under the terms of the Rust Code of Conduct, the maintainer of this crate, the Embedded Linux Team, promises to intervene to uphold that code of conduct.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].