use pros_core::{bail_on, map_errno};
use pros_sys::{PROS_ERR, PROS_ERR_F};
use snafu::Snafu;
pub fn capacity() -> Result<f64, BatteryError> {
Ok(bail_on!(PROS_ERR_F, unsafe {
pros_sys::misc::battery_get_capacity()
}))
}
pub fn temperature() -> Result<f64, BatteryError> {
Ok(bail_on!(PROS_ERR_F, unsafe {
pros_sys::misc::battery_get_temperature()
}))
}
pub fn current() -> Result<i32, BatteryError> {
Ok(bail_on!(PROS_ERR, unsafe {
pros_sys::misc::battery_get_current()
}))
}
pub fn voltage() -> Result<i32, BatteryError> {
Ok(bail_on!(PROS_ERR, unsafe {
pros_sys::misc::battery_get_voltage()
}))
}
#[derive(Debug, Snafu)]
pub enum BatteryError {
ConcurrentAccess,
}
map_errno! {
BatteryError {
EACCES => Self::ConcurrentAccess,
}
}