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;