// Copyright 2020 The Chromium OS Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. use std::error::Error; use std::os::unix::io::RawFd; pub trait PowerMonitor { fn poll_fd(&self) -> RawFd; fn read_message(&mut self) -> std::result::Result, Box>; } pub struct PowerData { pub ac_online: bool, pub battery: Option, } pub struct BatteryData { pub status: BatteryStatus, pub percent: u32, /// Battery voltage in microvolts. pub voltage: u32, /// Battery current in microamps. pub current: u32, /// Battery charge counter in microampere hours. pub charge_counter: u32, /// Battery full charge counter in microampere hours. pub charge_full: u32, } pub enum BatteryStatus { Unknown, Charging, Discharging, NotCharging, } pub trait CreatePowerMonitorFn: Send + Fn() -> std::result::Result, Box> { } impl CreatePowerMonitorFn for T where T: Send + Fn() -> std::result::Result, Box> { } #[cfg(feature = "powerd")] pub mod powerd;