use crate::Bus;
use crate::Error;
pub mod bank;
pub mod config;
pub use bank::*;
pub use config::*;
use std::sync::Mutex;
mod get;
mod set;
#[derive(Debug)]
pub struct Gpio<'a> {
bus: &'a Bus,
mode_pin_map: Mutex<u16>,
state_pin_map: Mutex<u16>,
function_pin_map: Mutex<u16>,
prescaler_bank_map: Mutex<u16>,
banks: Mutex<Vec<Bank<'a>>>,
}
impl<'a> Gpio<'a> {
pub fn new(bus: &'a Bus) -> Gpio {
Gpio {
bus,
mode_pin_map: Mutex::new(0x0),
state_pin_map: Mutex::new(0x0),
function_pin_map: Mutex::new(0x0),
prescaler_bank_map: Mutex::new(0x0),
banks: Mutex::new(Bank::new_set(&bus)),
}
}
fn is_pin_valid(pin: u8) -> Result<(), Error> {
if pin > 15 {
return Err(Error::InvalidGpioPin);
}
Ok(())
}
}