pub struct TurboCode {
pub decoder: TurboDecoder,
/* private fields */
}Expand description
A parallel concatenation of two $(13, 15)_{8}$ recursive systematic codes.
Fields§
§decoder: TurboDecoderThe decoder settings.
Implementations§
Source§impl TurboCode
impl TurboCode
Sourcepub fn lte(k: usize) -> Result<TurboCode>
pub fn lte(k: usize) -> Result<TurboCode>
The code of LTE: the quadratic permutation polynomial interleaver of lte_qpp
for the 188 block sizes of TS 36.212 (40 to 6144), a random interleaver of the
same length (seeded by RANDOM_INTERLEAVER_SEED) for any other size.
§Errors
comnum_core::Error::Config for $K = 0$.
Sourcepub fn with_interleaver(interleaver: Interleaver) -> Result<TurboCode>
pub fn with_interleaver(interleaver: Interleaver) -> Result<TurboCode>
The code with a given interleaver (its length is $K$), the decoder of
TurboDecoder::default (8 iterations of log-MAP).
§Errors
comnum_core::Error::Config for an empty interleaver.
Sourcepub fn trellis(&self) -> &Trellis
pub fn trellis(&self) -> &Trellis
The constituent trellis, the $(13, 15)_{8}$ recursive systematic code.
Sourcepub fn interleaver(&self) -> &Interleaver
pub fn interleaver(&self) -> &Interleaver
The interleaver of the second encoder.
Trait Implementations§
Source§impl BlockCode for TurboCode
impl BlockCode for TurboCode
Source§fn encode_block(&self, info: &[u8]) -> Result<Vec<u8>>
fn encode_block(&self, info: &[u8]) -> Result<Vec<u8>>
Source§fn decode_block(&self, llr: &[f64]) -> Result<Vec<u8>>
fn decode_block(&self, llr: &[f64]) -> Result<Vec<u8>>
Source§fn encode_block_into(&self, info: &[u8], out: &mut [u8]) -> Result<()>
fn encode_block_into(&self, info: &[u8], out: &mut [u8]) -> Result<()>
out (ADR 0011: the default
copies BlockCode::encode_block; a code overrides it when a profile shows the
copy). Read moreSource§fn decode_block_into(&self, llr: &[f64], out: &mut [u8]) -> Result<()>
fn decode_block_into(&self, llr: &[f64], out: &mut [u8]) -> Result<()>
out (as
BlockCode::encode_block_into). Read moreSource§impl SoftDecode for TurboCode
impl SoftDecode for TurboCode
Source§fn app_into(
&self,
llr: &[f64],
apriori: Option<&[f64]>,
out: &mut [f64],
) -> Result<usize>
fn app_into( &self, llr: &[f64], apriori: Option<&[f64]>, out: &mut [f64], ) -> Result<usize>
The a posteriori LLRs of the second decoder after the last iteration, deinterleaved; the a priori LLRs add to the systematic channel LLRs. With 0 iterations, the systematic LLRs (and the a priori ones).