ssp 0.5.4

Messages and related types for implementing the SSP/eSSP serial communication protocol
Documentation
use crate::{std::fmt, tuple_struct, Error, Result};

pub const BARCODE_MIN_CHARS: u8 = 6;
pub const BARCODE_MAX_CHARS: u8 = 24;

tuple_struct!(
    BarcodeCharacters,
    u8,
    "Number of characters the barcode reader supports."
);

impl BarcodeCharacters {
    pub fn is_valid(&self) -> Result<()> {
        if (BARCODE_MIN_CHARS..=BARCODE_MAX_CHARS).contains(&self.0) {
            Ok(())
        } else {
            Err(Error::InvalidBarcodeCharacters(self.0))
        }
    }
}

impl fmt::Display for BarcodeCharacters {
    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
        write!(f, "{}", self.as_inner())
    }
}