osmo-gmr: Interleaving

osmo-gmr 0.2.104-2b98 Osmocom GMR-1

Files | Data Structures | Functions
Interleaving
GMR-1 Layer 1 library » Channel coding primitives

## Files
file | interleave.h
| Osmocom GMR-1 interleaving header.
file | interleave.c
| Osmocom GMR-1 interleaving implementation.

## Data Structures
struct | gmr1_interleaver
| GMR1 inter-burst (de)interleaver state. More...

## Functions
void | gmr1_interleave_intra (void *out, const void *in, int N)
| GMR-1 intra burst inteleaver. More...
void | gmr1_deinterleave_intra (void *out, const void *in, int N)
| GMR-1 intra burst de-interleaver. More...
int | gmr1_interleaver_init (struct gmr1_interleaver *il, int N, int K)
| GMR-1 inter burst interleaver initializer. More...
void | gmr1_interleaver_fini (struct gmr1_interleaver *il)
| GMR-1 inter burst interleaver cleanup. More...
void | gmr1_interleave_inter (struct gmr1_interleaver *il, void *bits_epp, void *bits_ep)
| GMR-1 inter burst interleaver. More...
void | gmr1_deinterleave_inter (struct gmr1_interleaver *il, void *bits_ep, void *bits_epp)
| GMR-1 inter burst de-interleaver. More...

## Detailed Description

## Function Documentation

## ◆ gmr1_deinterleave_inter()

void gmr1_deinterleave_inter | ( | struct gmr1_interleaver * | il,
|  | void * | bits_ep,
|  | void * | bits_epp
| ) |  |

GMR-1 inter burst de-interleaver.

Parameters

  [in] | il | The interleaver object
  [out] | bits_ep | N bits output from de-interleaver
  [in] | bits_epp | N bits input to de-interleaver

bits_ep and bits_epp can be equal for inplace processing

References gmr1_interleaver::bits_cpp, gmr1_interleaver::K, gmr1_interleaver::N, and gmr1_interleaver::n.

## ◆ gmr1_deinterleave_intra()

void gmr1_deinterleave_intra | ( | void * | out,
|  | const void * | in,
|  | int | N
| ) |  |

GMR-1 intra burst de-interleaver.

Parameters

  [out] | out | Deinterleaved bit array to write to
  [in] | in | Interleaved bit array to read from
  [in] | N | Dimension of the interleaving matrix

Both arrays need to have a length of (8*N). This routine works for any type that has the same size as uint8_t like sbit_t or ubit_t.

Referenced by gmr1_bcch_decode(), gmr1_ccch_decode(), gmr1_facch3_decode(), gmr1_facch9_decode(), gmr1_rach_decode(), and gmr1_xch_dc12_decode().

## ◆ gmr1_interleave_inter()

void gmr1_interleave_inter | ( | struct gmr1_interleaver * | il,
|  | void * | bits_epp,
|  | void * | bits_ep
| ) |  |

GMR-1 inter burst interleaver.

Parameters

  [in] | il | The interleaver object
  [out] | bits_epp | N bits output of interleaver
  [in] | bits_ep | N bits input to interleaver

bits_ep and bits_epp can be equal for inplace processing

References gmr1_interleaver::bits_cpp, gmr1_interleaver::K, gmr1_interleaver::N, and gmr1_interleaver::n.

## ◆ gmr1_interleave_intra()

void gmr1_interleave_intra | ( | void * | out,
|  | const void * | in,
|  | int | N
| ) |  |

GMR-1 intra burst inteleaver.

Parameters

  [out] | out | Interleaved bit array to write to
  [in] | in | Original bit array to read from
  [in] | N | Dimension of the interleaving matrix

Both arrays need to have a length of (8*N). This routine works for any type that has the same size as uint8_t like sbit_t or ubit_t.

## ◆ gmr1_interleaver_fini()

void gmr1_interleaver_fini | ( | struct gmr1_interleaver * | il | ) |

GMR-1 inter burst interleaver cleanup.

Parameters

  [in] | il | The interleaver object to release

References gmr1_interleaver::bits_cpp.

## ◆ gmr1_interleaver_init()

int gmr1_interleaver_init | ( | struct gmr1_interleaver * | il,
|  | int | N,
|  | int | K
| ) |  |

GMR-1 inter burst interleaver initializer.

Parameters

  [in] | il | The interleaver object to init
  [in] | N | The interleaving depth
  [in] | K | The interleaving width

References gmr1_interleaver::bits_cpp, gmr1_interleaver::K, and gmr1_interleaver::N.