use crate::{PhysAddr, Status};
#[repr(C)]
pub enum SleepState {
S0 = 0,
S1 = 1,
S2 = 2,
S3 = 3,
S4 = 4,
S5 = 5,
}
#[cfg(not(feature = "reduced-hardware"))]
pub fn set_waking_vector(addr32: PhysAddr, addr64: PhysAddr) -> Result<(), Status> {
let status: Status = unsafe { uacpi_sys::uacpi_set_waking_vector(addr32.0, addr64.0).into() };
match status {
Status::Ok => Ok(()),
_ => Err(status)
}
}
#[cfg(feature = "reduced-hardware")]
pub fn set_waking_vector(addr32: PhysAddr, addr64: PhysAddr) -> Result<(), Status> {
Err(Status::CompiledOut)
}
pub fn prepare_for_sleep(state: SleepState) -> Result<(), Status> {
let status: Status = unsafe { uacpi_sys::uacpi_prepare_for_sleep_state(state as _).into() };
match status {
Status::Ok => Ok(()),
_ => Err(status)
}
}
pub fn enter_sleep(state: SleepState) -> Result<(), Status> {
let status: Status = unsafe { uacpi_sys::uacpi_enter_sleep_state(state as _).into() };
match status {
Status::Ok => Ok(()),
_ => Err(status)
}
}
pub fn prepare_for_wake_from_sleep(state: SleepState) -> Result<(), Status> {
let status: Status = unsafe { uacpi_sys::uacpi_prepare_for_wake_from_sleep_state(state as _).into() };
match status {
Status::Ok => Ok(()),
_ => Err(status)
}
}
pub fn wake_from_sleep(state: SleepState) -> Result<(), Status> {
let status: Status = unsafe { uacpi_sys::uacpi_wake_from_sleep_state(state as _).into() };
match status {
Status::Ok => Ok(()),
_ => Err(status)
}
}
pub fn reboot() -> Result<(), Status> {
let status: Status = unsafe { uacpi_sys::uacpi_reboot().into() };
match status {
Status::Ok => Ok(()),
_ => Err(status)
}
}