1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#![deny(missing_docs)]

//! Interface to the LSM303 digital accelerometer and magnetometer.
//!
//! - [Datasheet](http://www.st.com/resource/en/datasheet/lsm303dlhc.pdf)
//! - [Application notes](http://www.st.com/content/ccc/resource/technical/document/application_note/e6/f0/fa/af/94/5e/43/de/CD00269797.pdf/files/CD00269797.pdf/jcr:content/translations/en.CD00269797.pdf)
//!
//! ```no_run
//! # use std::time::Duration;
//! # fn main() { test().unwrap(); }
//! # fn test() -> lsm303::Result<()> {
//! let device = "/dev/i2c-1";
//! let mut accelerometer =
//!     lsm303::Accelerometer::new(device)?;
//! let mut magnetometer =
//!     lsm303::Magnetometer::new(device)?;
//!
//!  loop {
//!     let accel = accelerometer.read_acceleration()?;
//!     let mag = magnetometer.read_magnetic_field()?;
//!     println!("Accel: ({}, {}, {})  ||  Mag: ({}, {}, {})",
//!              accel.x, accel.y, accel.z,
//!              mag.x, mag.y, mag.z);
//!     std::thread::sleep(Duration::from_millis(100));
//! }
//! # Ok(())
//! # }
//! ```

// External crates

#[macro_use]
extern crate bitflags;

extern crate byteorder;

extern crate dimensioned;

#[macro_use]
extern crate error_chain;

extern crate i2cdev;

// Exports

pub mod common;

mod errors;
pub use errors::{Error, ErrorKind, Result, ResultExt};

#[macro_use]
pub mod registers;

pub mod accelerometer;
pub use accelerometer::Accelerometer;

pub mod magnetometer;
pub use magnetometer::Magnetometer;