pub mod reed_solomon;
pub mod generate;
pub mod blocks;
pub use reed_solomon::GF256;
pub use generate::generate_ecc;
pub use blocks::{
split_into_blocks, interleave, DataBlock, total_data_codewords, ecc_codewords_per_block,
max_allowed_errors,
};
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum ECCLevel {
L, M, Q, H, }
impl std::fmt::Display for ECCLevel {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {
ECCLevel::L => write!(f, "L"),
ECCLevel::M => write!(f, "M"),
ECCLevel::Q => write!(f, "Q"),
ECCLevel::H => write!(f, "H"),
}
}
}
impl ECCLevel {
pub fn indicator_bits(&self) -> u8 {
match self {
ECCLevel::L => 0b01,
ECCLevel::M => 0b00,
ECCLevel::Q => 0b11,
ECCLevel::H => 0b10,
}
}
}