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
// SPDX-License-Identifier: MIT

//! Library for accessing System76 ECs
//! First, construct an access method, using an object implementing the `Access` trait. Next, an Ec
//! object can be contructed, which exposes the command interface.
//!
//! There are some differences between targets and features that are listed below:
//!  - `AccessHid` requires the `hidapi` feature. Only functional on USB ECs.
//!  - `AccessLpcDirect` requires the `redox_hwio` feature and a nightly compiler. This method is
//!    only recommended for use in firmware with LPC ECs, as mutual exclusion is not guaranteed.
//!  - `AccessLpcLinux` requires the `std` feature and `linux` target_os. Recommended for LPC ECs,
//!    as this method can utilize mutual exclusion.
//!  - `EcLegacy`, `Pmc`, and `SuperIo` all require the `redox_hwio` feature and a nightly
//!    compiler. It is only recommended to use these in firmware, as mutual exclusion is not
//!    guaranteed.

#![cfg_attr(not(feature = "std"), no_std)]

#[cfg(not(feature = "std"))]
extern crate alloc;

pub use self::access::*;
mod access;

pub use self::ec::Ec;
mod ec;

pub use self::error::Error;
mod error;

pub use self::firmware::Firmware;
mod firmware;

#[cfg(feature = "redox_hwio")]
pub use self::legacy::EcLegacy;
#[cfg(feature = "redox_hwio")]
mod legacy;

#[cfg(feature = "redox_hwio")]
pub use self::pmc::Pmc;
#[cfg(feature = "redox_hwio")]
mod pmc;

pub use self::spi::{Spi, SpiRom, SpiTarget};
mod spi;

#[cfg(feature = "redox_hwio")]
pub use self::super_io::SuperIo;
#[cfg(feature = "redox_hwio")]
mod super_io;

pub use self::timeout::Timeout;
#[cfg(feature = "std")]
pub use self::timeout::StdTimeout;
mod timeout;