osmo-gmr 0.2.104-2b98
Osmocom GMR-1

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]ilThe interleaver object
[out]bits_epN bits output from de-interleaver
[in]bits_eppN 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]outDeinterleaved bit array to write to
[in]inInterleaved bit array to read from
[in]NDimension 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]ilThe interleaver object
[out]bits_eppN bits output of interleaver
[in]bits_epN 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]outInterleaved bit array to write to
[in]inOriginal bit array to read from
[in]NDimension 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]ilThe 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]ilThe interleaver object to init
[in]NThe interleaving depth
[in]KThe interleaving width

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