mirror of
https://chromium.googlesource.com/crosvm/crosvm
synced 2025-02-05 18:20:34 +00:00
42 lines
917 B
Rust
42 lines
917 B
Rust
|
// 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<Option<PowerData>, Box<dyn Error>>;
|
||
|
}
|
||
|
|
||
|
pub struct PowerData {
|
||
|
pub ac_online: bool,
|
||
|
pub battery: Option<BatteryData>,
|
||
|
}
|
||
|
|
||
|
pub struct BatteryData {
|
||
|
pub status: BatteryStatus,
|
||
|
pub percent: u32,
|
||
|
}
|
||
|
|
||
|
pub enum BatteryStatus {
|
||
|
Unknown,
|
||
|
Charging,
|
||
|
Discharging,
|
||
|
NotCharging,
|
||
|
}
|
||
|
|
||
|
pub trait CreatePowerMonitorFn:
|
||
|
Send + Fn() -> std::result::Result<Box<dyn PowerMonitor>, Box<dyn Error>>
|
||
|
{
|
||
|
}
|
||
|
|
||
|
impl<T> CreatePowerMonitorFn for T where
|
||
|
T: Send + Fn() -> std::result::Result<Box<dyn PowerMonitor>, Box<dyn Error>>
|
||
|
{
|
||
|
}
|
||
|
|
||
|
#[cfg(feature = "powerd")]
|
||
|
pub mod powerd;
|