leodos_protocols/coding/fec/mod.rs
1//! Forward error-correction codes.
2
3/// CCSDS Reed-Solomon (255,223) (CCSDS 131.0-B-5).
4pub mod reed_solomon;
5/// CCSDS LDPC (AR4JA) codes (CCSDS 131.0-B-5).
6pub mod ldpc;
7/// Convolutional code (rate 1/2, K=7) with Viterbi decoding
8/// (CCSDS 131.0-B-5).
9pub mod convolutional;
10
11/// Forward error-correction encoder (Reed-Solomon, LDPC, convolutional).
12pub trait FecEncoder {
13 /// Error type for encoding operations.
14 type Error;
15 /// Encodes `data` with FEC parity into `output`.
16 fn encode(&self, data: &[u8], output: &mut [u8]) -> Result<usize, Self::Error>;
17}
18
19/// Forward error-correction decoder.
20pub trait FecDecoder {
21 /// Error type for decoding operations.
22 type Error;
23 /// Decodes and corrects `data` in-place.
24 fn decode(&self, data: &mut [u8]) -> Result<usize, Self::Error>;
25}