From 28126fee8ce253e67ab737927ff0d89ebc24e419 Mon Sep 17 00:00:00 2001 From: Diego Barrios Romero Date: Thu, 29 Jul 2021 23:14:25 +0200 Subject: Add value-based one-shot trait to ease driver usage in functions --- examples/trait.rs | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 examples/trait.rs (limited to 'examples') diff --git a/examples/trait.rs b/examples/trait.rs new file mode 100644 index 0000000..eda1f37 --- /dev/null +++ b/examples/trait.rs @@ -0,0 +1,24 @@ +// This example demonstrates the use of a type alias for the `Ads1x1x` struct +// to ease usage in signatures. + +use linux_embedded_hal::I2cdev; +use nb::block; + +use ads1x1x::{Ads1x1x, ChannelSelection, DynamicOneShot, SlaveAddr}; + +/// Read a single value from channel A. +/// Returns 0 on Error. +pub fn read>(adc: &mut A) -> i16 { + block!(adc.read(ChannelSelection::SingleA0)).unwrap_or(0) +} + +fn main() { + let dev = I2cdev::new("/dev/i2c-1").unwrap(); + let address = SlaveAddr::default(); + let mut adc = Ads1x1x::new_ads1115(dev, address); + + let value = read(&mut adc); + println!("Measurement: {}", value); + // get I2C device back + let _dev = adc.destroy_ads1115(); +} -- cgit v1.2.3-54-g00ecf