jolt_platform/
lib.rs

1//! Cross-platform battery and power monitoring for jolt.
2//!
3//! This crate provides platform-agnostic traits and types for accessing
4//! battery and power information, with platform-specific implementations.
5//!
6//! # Features
7//!
8//! - `macos` - Enable macOS support (IOReport, SMC, ioreg)
9//! - `linux` - Enable Linux support (RAPL, sysfs)
10//!
11//! # Example
12//!
13//! ```ignore
14//! use jolt_platform::{BatteryProvider, PowerProvider};
15//!
16//! #[cfg(target_os = "macos")]
17//! use jolt_platform::macos::{MacOSBattery, MacOSPower};
18//!
19//! let mut battery = MacOSBattery::new()?;
20//! battery.refresh()?;
21//! println!("Charge: {}%", battery.info().charge_percent);
22//! ```
23
24mod battery;
25mod power;
26mod types;
27
28pub use battery::{BatteryInfo, BatteryProvider};
29pub use power::{PowerInfo, PowerProvider};
30pub use types::{BatteryTechnology, ChargeState, PowerMode};
31
32#[cfg(target_os = "macos")]
33#[cfg(feature = "macos")]
34pub mod macos;
35
36#[cfg(target_os = "linux")]
37#[cfg(feature = "linux")]
38pub mod linux;
39
40pub mod units {
41    pub use ::starship_battery::units::electric_potential::millivolt;
42    pub use ::starship_battery::units::energy::watt_hour;
43    pub use ::starship_battery::units::power::watt;
44    pub use ::starship_battery::units::ratio::percent;
45    pub use ::starship_battery::units::thermodynamic_temperature::degree_celsius;
46    pub use ::starship_battery::units::time::second;
47}