use crate::{bindings, error::{PROSErr, PROSResult}, port::AdiPort};
#[derive(Debug, Clone, Copy)]
#[repr(u32)]
pub enum AdiConfig {
AnalogIn = 0,
AnalogOut = 1,
DigitalIn = 2,
DigitalOut = 3,
}
pub fn set_config(port: AdiPort, config: AdiConfig) {
unsafe {
bindings::adi_port_set_config(port as u8, config as u32);
}
}
pub unsafe fn digital_write(port: AdiPort, val: bool) -> Result<(), PROSErr> {
unsafe {
bindings::adi_digital_write(port as u8, val)
}.check().map(|_| ())
}
pub unsafe fn digital_read(port: AdiPort) -> Result<bool, PROSErr> {
unsafe {
bindings::adi_digital_read(port as u8)
}.check().map(|val| val != 0)
}