Skip to main content

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")]
33pub mod macos;
34
35#[cfg(target_os = "linux")]
36pub mod linux;
37
38pub mod units {
39    pub use ::starship_battery::units::electric_potential::millivolt;
40    pub use ::starship_battery::units::energy::watt_hour;
41    pub use ::starship_battery::units::power::watt;
42    pub use ::starship_battery::units::ratio::percent;
43    pub use ::starship_battery::units::thermodynamic_temperature::degree_celsius;
44    pub use ::starship_battery::units::time::second;
45}