pixtend 0.1.0

Rust library for the PiXtend V2L board
Documentation
use crate::error::PiXtendError;
use deku::prelude::*;

#[derive(Debug, DekuWrite, DekuRead)]
pub struct DigitalIn {
    #[deku(bits = "1")]
    pub in7: bool,
    #[deku(bits = "1")]
    pub in6: bool,
    #[deku(bits = "1")]
    pub in5: bool,
    #[deku(bits = "1")]
    pub in4: bool,
    #[deku(bits = "1")]
    pub in3: bool,
    #[deku(bits = "1")]
    pub in2: bool,
    #[deku(bits = "1")]
    pub in1: bool,
    #[deku(bits = "1")]
    pub in0: bool,
    #[deku(bits = "1")]
    pub in15: bool,
    #[deku(bits = "1")]
    pub in14: bool,
    #[deku(bits = "1")]
    pub in13: bool,
    #[deku(bits = "1")]
    pub in12: bool,
    #[deku(bits = "1")]
    pub in11: bool,
    #[deku(bits = "1")]
    pub in10: bool,
    #[deku(bits = "1")]
    pub in9: bool,
    #[deku(bits = "1")]
    pub in8: bool,
}

impl DigitalIn {
    pub fn get_digital_input(&self, index: u8) -> Result<bool, PiXtendError> {
        match index {
            0 => Ok(self.in0),
            1 => Ok(self.in1),
            2 => Ok(self.in2),
            3 => Ok(self.in3),
            4 => Ok(self.in4),
            5 => Ok(self.in5),
            6 => Ok(self.in6),
            7 => Ok(self.in7),
            8 => Ok(self.in8),
            9 => Ok(self.in9),
            10 => Ok(self.in10),
            11 => Ok(self.in11),
            12 => Ok(self.in12),
            13 => Ok(self.in13),
            14 => Ok(self.in14),
            15 => Ok(self.in15),
            _ => Err(PiXtendError::InvalidDigitalInputIndex(index)),
        }
    }
}