/rust-sysfs-pwm

Linux PWM Access via Sysfs in Rust

Primary LanguageRustApache License 2.0Apache-2.0

rust-sysfs-pwm

Build Status Version License

rust-sysfs-pwm is a rust library/crate providing access to the Linux sysfs PWM interface. It seeks to provide an API that is safe, convenient, and efficient.

Install/Use

To use sysfs-pwm, first add this to your Cargo.toml:

[dependencies]
# or latest version
sysfs-pwm = "^0.1.0"

Then, add this to your crate root:

extern crate sysfs_pwm;

Example/API

The main API consists of a Pwm struct with the following methods:

  • Pwm::new - Create a Pwm instance
  • pwm.with_exported - Execute a block with the Pwm exported
  • pwm.set_active - Enable/Disable the Pwm
  • pwm.get_duty_cycle - Get duty cycle as percentage of period
  • pwm.set_duty_cycle - Set duty cycle as percentage of period
  • pwm.get_duty_cycle_ns - Get duty cycle in nanoseconds
  • pwm.set_duty_cycle_ns - Set duty cyle in nanoseconds
  • pwm.get_period_ns - Get the Pwm period in nanoseconds
  • pwm.set_period_ns - Set the Pwm period in nanoseconds

Check out the Breathing LED example for a usage example.

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. The instructions here provide great details on cross compiling for your platform.

Running the Example

Cross-compiling can be done by specifying an appropriate target. You can then move that to your device by whatever means and run it.

$ cargo build --target=arm-unknown-linux-gnueabihf --example breathe
$ scp target/arm-unknown-linux-gnueabihf/debug/examples/breathe ...

License

Copyright (c) 2016, Paul Osborne <ospbau@gmail.com>

Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
http://www.apache.org/license/LICENSE-2.0> or the MIT license
<LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
option.  This file may not be copied, modified, or distributed
except according to those terms.