\doxysection{src/coding/gsm0503\+\_\+coding.c File Reference}
\label{gsm0503__coding_8c}\index{src/coding/gsm0503\_coding.c@{src/coding/gsm0503\_coding.c}}
{\ttfamily \#include $<$stdio.\+h$>$}\newline
{\ttfamily \#include $<$stdint.\+h$>$}\newline
{\ttfamily \#include $<$string.\+h$>$}\newline
{\ttfamily \#include $<$stdlib.\+h$>$}\newline
{\ttfamily \#include $<$errno.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/core/bits.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/core/conv.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/core/utils.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/core/crcgen.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/core/endian.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/gsm/protocol/gsm\+\_\+44\+\_\+060.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/gsm/protocol/gsm\+\_\+04\+\_\+08.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/gsm/gsm0503.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/codec/codec.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/coding/gsm0503\+\_\+interleaving.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/coding/gsm0503\+\_\+mapping.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/coding/gsm0503\+\_\+tables.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/coding/gsm0503\+\_\+coding.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/coding/gsm0503\+\_\+parity.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/coding/gsm0503\+\_\+amr\+\_\+dtx.\+h$>$}\newline
\doxysubsection*{Data Structures}
\begin{DoxyCompactItemize}
\item 
union \textbf{ gprs\+\_\+rlc\+\_\+ul\+\_\+hdr\+\_\+egprs}
\begin{DoxyCompactList}\small\item\em union across the three different EGPRS Uplink header types \end{DoxyCompactList}\item 
union \textbf{ gprs\+\_\+rlc\+\_\+dl\+\_\+hdr\+\_\+egprs}
\begin{DoxyCompactList}\small\item\em union across the three different EGPRS Downlink header types \end{DoxyCompactList}\item 
struct \textbf{ gsm0503\+\_\+mcs\+\_\+code}
\begin{DoxyCompactList}\small\item\em Structure describing a Modulation and Coding Scheme. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection*{Macros}
\begin{DoxyCompactItemize}
\item 
\#define \textbf{ EGPRS\+\_\+\+HDR\+\_\+\+UPP\+\_\+\+MAX}~54
\item 
\#define \textbf{ EGPRS\+\_\+\+HDR\+\_\+\+C\+\_\+\+MAX}~162
\item 
\#define \textbf{ EGPRS\+\_\+\+HDR\+\_\+\+HC\+\_\+\+MAX}~160
\item 
\#define \textbf{ EGPRS\+\_\+\+DATA\+\_\+\+U\+\_\+\+MAX}~612
\item 
\#define \textbf{ EGPRS\+\_\+\+DATA\+\_\+\+C\+\_\+\+MAX}~1836
\item 
\#define \textbf{ EGPRS\+\_\+\+DATA\+\_\+\+DC\+\_\+\+MAX}~1248
\item 
\#define \textbf{ EGPRS\+\_\+\+DATA\+\_\+\+C1}~612
\item 
\#define \textbf{ EGPRS\+\_\+\+DATA\+\_\+\+C2}~\textbf{ EGPRS\+\_\+\+DATA\+\_\+\+C1}
\end{DoxyCompactItemize}
\doxysubsection*{Functions}
\begin{DoxyCompactItemize}
\item 
static int \textbf{ osmo\+\_\+conv\+\_\+decode\+\_\+ber\+\_\+punctured} (const struct \textbf{ osmo\+\_\+conv\+\_\+code} $\ast$code, const \textbf{ sbit\+\_\+t} $\ast$input, \textbf{ ubit\+\_\+t} $\ast$output, int $\ast$n\+\_\+errors, int $\ast$n\+\_\+bits\+\_\+total, const uint8\+\_\+t $\ast$data\+\_\+punc)
\begin{DoxyCompactList}\small\item\em Convolutional Decode + compute BER for punctured codes. \end{DoxyCompactList}\item 
static int \textbf{ osmo\+\_\+conv\+\_\+decode\+\_\+ber} (const struct \textbf{ osmo\+\_\+conv\+\_\+code} $\ast$code, const \textbf{ sbit\+\_\+t} $\ast$input, \textbf{ ubit\+\_\+t} $\ast$output, int $\ast$n\+\_\+errors, int $\ast$n\+\_\+bits\+\_\+total)
\begin{DoxyCompactList}\small\item\em Convolutional Decode + compute BER for non-\/punctured codes. \end{DoxyCompactList}\item 
static int \textbf{ \+\_\+xcch\+\_\+decode\+\_\+cB} (uint8\+\_\+t $\ast$l2\+\_\+data, const \textbf{ sbit\+\_\+t} $\ast$cB, int $\ast$n\+\_\+errors, int $\ast$n\+\_\+bits\+\_\+total)
\begin{DoxyCompactList}\small\item\em convenience wrapper for decoding coded bits \end{DoxyCompactList}\item 
static int \textbf{ \+\_\+xcch\+\_\+encode\+\_\+cB} (\textbf{ ubit\+\_\+t} $\ast$cB, const uint8\+\_\+t $\ast$l2\+\_\+data)
\begin{DoxyCompactList}\small\item\em convenience wrapper for encoding to coded bits \end{DoxyCompactList}\item 
int \textbf{ gsm0503\+\_\+xcch\+\_\+decode} (uint8\+\_\+t $\ast$l2\+\_\+data, const \textbf{ sbit\+\_\+t} $\ast$bursts, int $\ast$n\+\_\+errors, int $\ast$n\+\_\+bits\+\_\+total)
\begin{DoxyCompactList}\small\item\em Decoding of x\+CCH data from bursts to L2 frame. \end{DoxyCompactList}\item 
int \textbf{ gsm0503\+\_\+xcch\+\_\+encode} (\textbf{ ubit\+\_\+t} $\ast$bursts, const uint8\+\_\+t $\ast$l2\+\_\+data)
\begin{DoxyCompactList}\small\item\em Encoding of x\+CCH data from L2 frame to bursts. \end{DoxyCompactList}\item 
static int \textbf{ egprs\+\_\+type3\+\_\+unmap} (const \textbf{ sbit\+\_\+t} $\ast$bursts, \textbf{ sbit\+\_\+t} $\ast$hc, \textbf{ sbit\+\_\+t} $\ast$dc)
\item 
static int \textbf{ egprs\+\_\+type2\+\_\+unmap} (const \textbf{ sbit\+\_\+t} $\ast$bursts, \textbf{ sbit\+\_\+t} $\ast$hc, \textbf{ sbit\+\_\+t} $\ast$dc)
\item 
static int \textbf{ egprs\+\_\+type1\+\_\+unmap} (const \textbf{ sbit\+\_\+t} $\ast$bursts, \textbf{ sbit\+\_\+t} $\ast$hc, \textbf{ sbit\+\_\+t} $\ast$c1, \textbf{ sbit\+\_\+t} $\ast$c2, int msc)
\item 
static int \textbf{ \+\_\+egprs\+\_\+decode\+\_\+hdr} (const \textbf{ sbit\+\_\+t} $\ast$hc, int mcs, union \textbf{ gprs\+\_\+rlc\+\_\+ul\+\_\+hdr\+\_\+egprs} $\ast$\textbf{ hdr})
\item 
static int \textbf{ egprs\+\_\+decode\+\_\+hdr} (union \textbf{ gprs\+\_\+rlc\+\_\+ul\+\_\+hdr\+\_\+egprs} $\ast$\textbf{ hdr}, const \textbf{ sbit\+\_\+t} $\ast$bursts, uint16\+\_\+t nbits)
\item 
static int \textbf{ egprs\+\_\+parse\+\_\+ul\+\_\+cps} (struct \textbf{ egprs\+\_\+cps} $\ast$cps, union \textbf{ gprs\+\_\+rlc\+\_\+ul\+\_\+hdr\+\_\+egprs} $\ast$\textbf{ hdr}, int \textbf{ type})
\item 
static int \textbf{ egprs\+\_\+decode\+\_\+data} (uint8\+\_\+t $\ast$l2\+\_\+data, const \textbf{ sbit\+\_\+t} $\ast$\textbf{ c}, int mcs, int p, int \textbf{ blk}, int $\ast$n\+\_\+errors, int $\ast$n\+\_\+bits\+\_\+total)
\item 
int \textbf{ gsm0503\+\_\+pdtch\+\_\+egprs\+\_\+decode} (uint8\+\_\+t $\ast$l2\+\_\+data, const \textbf{ sbit\+\_\+t} $\ast$bursts, uint16\+\_\+t nbits, uint8\+\_\+t $\ast$usf\+\_\+p, int $\ast$n\+\_\+errors, int $\ast$n\+\_\+bits\+\_\+total)
\begin{DoxyCompactList}\small\item\em Decode EGPRS UL message. \end{DoxyCompactList}\item 
int \textbf{ gsm0503\+\_\+pdtch\+\_\+decode} (uint8\+\_\+t $\ast$l2\+\_\+data, const \textbf{ sbit\+\_\+t} $\ast$bursts, uint8\+\_\+t $\ast$usf\+\_\+p, int $\ast$n\+\_\+errors, int $\ast$n\+\_\+bits\+\_\+total)
\begin{DoxyCompactList}\small\item\em Decode GPRS PDTCH. \end{DoxyCompactList}\item 
static int \textbf{ egprs\+\_\+type3\+\_\+map} (\textbf{ ubit\+\_\+t} $\ast$bursts, const \textbf{ ubit\+\_\+t} $\ast$hc, const \textbf{ ubit\+\_\+t} $\ast$dc, int usf)
\item 
static int \textbf{ egprs\+\_\+type2\+\_\+map} (\textbf{ ubit\+\_\+t} $\ast$bursts, const \textbf{ ubit\+\_\+t} $\ast$hc, const \textbf{ ubit\+\_\+t} $\ast$dc, int usf)
\item 
static int \textbf{ egprs\+\_\+type1\+\_\+map} (\textbf{ ubit\+\_\+t} $\ast$bursts, const \textbf{ ubit\+\_\+t} $\ast$hc, const \textbf{ ubit\+\_\+t} $\ast$c1, const \textbf{ ubit\+\_\+t} $\ast$c2, int usf, int mcs)
\item 
static int \textbf{ egprs\+\_\+encode\+\_\+hdr} (\textbf{ ubit\+\_\+t} $\ast$hc, const uint8\+\_\+t $\ast$l2\+\_\+data, int mcs)
\item 
static int \textbf{ egprs\+\_\+encode\+\_\+data} (\textbf{ ubit\+\_\+t} $\ast$\textbf{ c}, const uint8\+\_\+t $\ast$l2\+\_\+data, int mcs, int p, int \textbf{ blk})
\item 
static int \textbf{ egprs\+\_\+parse\+\_\+dl\+\_\+cps} (struct \textbf{ egprs\+\_\+cps} $\ast$cps, const union \textbf{ gprs\+\_\+rlc\+\_\+dl\+\_\+hdr\+\_\+egprs} $\ast$\textbf{ hdr}, int \textbf{ type})
\item 
int \textbf{ gsm0503\+\_\+pdtch\+\_\+egprs\+\_\+encode} (\textbf{ ubit\+\_\+t} $\ast$bursts, const uint8\+\_\+t $\ast$l2\+\_\+data, uint8\+\_\+t l2\+\_\+len)
\begin{DoxyCompactList}\small\item\em EGPRS DL message encoding. \end{DoxyCompactList}\item 
int \textbf{ gsm0503\+\_\+pdtch\+\_\+encode} (\textbf{ ubit\+\_\+t} $\ast$bursts, const uint8\+\_\+t $\ast$l2\+\_\+data, uint8\+\_\+t l2\+\_\+len)
\begin{DoxyCompactList}\small\item\em GPRS DL message encoding. \end{DoxyCompactList}\item 
static void \textbf{ tch\+\_\+fr\+\_\+reassemble} (uint8\+\_\+t $\ast$tch\+\_\+data, const \textbf{ ubit\+\_\+t} $\ast$b\+\_\+bits, int net\+\_\+order)
\begin{DoxyCompactList}\small\item\em assemble a FR codec frame in format as used inside RTP \end{DoxyCompactList}\item 
static void \textbf{ tch\+\_\+fr\+\_\+disassemble} (\textbf{ ubit\+\_\+t} $\ast$b\+\_\+bits, const uint8\+\_\+t $\ast$tch\+\_\+data, int net\+\_\+order)
\item 
static void \textbf{ tch\+\_\+hr\+\_\+reassemble} (uint8\+\_\+t $\ast$tch\+\_\+data, const \textbf{ ubit\+\_\+t} $\ast$b\+\_\+bits)
\item 
static void \textbf{ tch\+\_\+hr\+\_\+disassemble} (\textbf{ ubit\+\_\+t} $\ast$b\+\_\+bits, const uint8\+\_\+t $\ast$tch\+\_\+data)
\item 
static void \textbf{ tch\+\_\+efr\+\_\+reassemble} (uint8\+\_\+t $\ast$tch\+\_\+data, const \textbf{ ubit\+\_\+t} $\ast$b\+\_\+bits)
\item 
static void \textbf{ tch\+\_\+efr\+\_\+disassemble} (\textbf{ ubit\+\_\+t} $\ast$b\+\_\+bits, const uint8\+\_\+t $\ast$tch\+\_\+data)
\item 
static void \textbf{ tch\+\_\+amr\+\_\+reassemble} (uint8\+\_\+t $\ast$tch\+\_\+data, const \textbf{ ubit\+\_\+t} $\ast$d\+\_\+bits, int \textbf{ len})
\item 
static void \textbf{ tch\+\_\+amr\+\_\+disassemble} (\textbf{ ubit\+\_\+t} $\ast$d\+\_\+bits, const uint8\+\_\+t $\ast$tch\+\_\+data, int \textbf{ len})
\item 
static void \textbf{ tch\+\_\+amr\+\_\+sid\+\_\+update\+\_\+append} (\textbf{ ubit\+\_\+t} $\ast$sid\+\_\+update, uint8\+\_\+t sti, uint8\+\_\+t \textbf{ mi})
\item 
static void \textbf{ extract\+\_\+afs\+\_\+sid\+\_\+update} (\textbf{ sbit\+\_\+t} $\ast$sid\+\_\+update, const \textbf{ sbit\+\_\+t} $\ast$sbits)
\item 
static void \textbf{ tch\+\_\+fr\+\_\+d\+\_\+to\+\_\+b} (\textbf{ ubit\+\_\+t} $\ast$b\+\_\+bits, const \textbf{ ubit\+\_\+t} $\ast$d\+\_\+bits)
\item 
static void \textbf{ tch\+\_\+fr\+\_\+b\+\_\+to\+\_\+d} (\textbf{ ubit\+\_\+t} $\ast$d\+\_\+bits, const \textbf{ ubit\+\_\+t} $\ast$b\+\_\+bits)
\item 
static void \textbf{ tch\+\_\+hr\+\_\+d\+\_\+to\+\_\+b} (\textbf{ ubit\+\_\+t} $\ast$b\+\_\+bits, const \textbf{ ubit\+\_\+t} $\ast$d\+\_\+bits)
\item 
static void \textbf{ tch\+\_\+hr\+\_\+b\+\_\+to\+\_\+d} (\textbf{ ubit\+\_\+t} $\ast$d\+\_\+bits, const \textbf{ ubit\+\_\+t} $\ast$b\+\_\+bits)
\item 
static void \textbf{ tch\+\_\+efr\+\_\+d\+\_\+to\+\_\+w} (\textbf{ ubit\+\_\+t} $\ast$b\+\_\+bits, const \textbf{ ubit\+\_\+t} $\ast$d\+\_\+bits)
\item 
static void \textbf{ tch\+\_\+efr\+\_\+w\+\_\+to\+\_\+d} (\textbf{ ubit\+\_\+t} $\ast$d\+\_\+bits, const \textbf{ ubit\+\_\+t} $\ast$b\+\_\+bits)
\item 
static void \textbf{ tch\+\_\+efr\+\_\+protected} (const \textbf{ ubit\+\_\+t} $\ast$s\+\_\+bits, \textbf{ ubit\+\_\+t} $\ast$b\+\_\+bits)
\item 
static void \textbf{ tch\+\_\+fr\+\_\+unreorder} (\textbf{ ubit\+\_\+t} $\ast$d, \textbf{ ubit\+\_\+t} $\ast$p, const \textbf{ ubit\+\_\+t} $\ast$\textbf{ u})
\item 
static void \textbf{ tch\+\_\+fr\+\_\+reorder} (\textbf{ ubit\+\_\+t} $\ast$\textbf{ u}, const \textbf{ ubit\+\_\+t} $\ast$d, const \textbf{ ubit\+\_\+t} $\ast$p)
\item 
static void \textbf{ tch\+\_\+hr\+\_\+unreorder} (\textbf{ ubit\+\_\+t} $\ast$d, \textbf{ ubit\+\_\+t} $\ast$p, const \textbf{ ubit\+\_\+t} $\ast$\textbf{ u})
\item 
static void \textbf{ tch\+\_\+hr\+\_\+reorder} (\textbf{ ubit\+\_\+t} $\ast$\textbf{ u}, const \textbf{ ubit\+\_\+t} $\ast$d, const \textbf{ ubit\+\_\+t} $\ast$p)
\item 
static void \textbf{ tch\+\_\+efr\+\_\+reorder} (\textbf{ ubit\+\_\+t} $\ast$w, const \textbf{ ubit\+\_\+t} $\ast$s, const \textbf{ ubit\+\_\+t} $\ast$p)
\item 
static void \textbf{ tch\+\_\+efr\+\_\+unreorder} (\textbf{ ubit\+\_\+t} $\ast$s, \textbf{ ubit\+\_\+t} $\ast$p, const \textbf{ ubit\+\_\+t} $\ast$w)
\item 
static void \textbf{ tch\+\_\+amr\+\_\+merge} (\textbf{ ubit\+\_\+t} $\ast$\textbf{ u}, const \textbf{ ubit\+\_\+t} $\ast$d, const \textbf{ ubit\+\_\+t} $\ast$p, int \textbf{ len}, int prot)
\item 
static void \textbf{ tch\+\_\+amr\+\_\+unmerge} (\textbf{ ubit\+\_\+t} $\ast$d, \textbf{ ubit\+\_\+t} $\ast$p, const \textbf{ ubit\+\_\+t} $\ast$\textbf{ u}, int \textbf{ len}, int prot)
\item 
int \textbf{ gsm0503\+\_\+tch\+\_\+fr\+\_\+decode} (uint8\+\_\+t $\ast$tch\+\_\+data, const \textbf{ sbit\+\_\+t} $\ast$bursts, int net\+\_\+order, int efr, int $\ast$n\+\_\+errors, int $\ast$n\+\_\+bits\+\_\+total)
\begin{DoxyCompactList}\small\item\em Perform channel decoding of a FR/\+EFR channel according TS 05.\+03. \end{DoxyCompactList}\item 
int \textbf{ gsm0503\+\_\+tch\+\_\+fr\+\_\+encode} (\textbf{ ubit\+\_\+t} $\ast$bursts, const uint8\+\_\+t $\ast$tch\+\_\+data, int \textbf{ len}, int net\+\_\+order)
\begin{DoxyCompactList}\small\item\em Perform channel encoding on a TCH/\+FS channel according to TS 05.\+03. \end{DoxyCompactList}\item 
int \textbf{ gsm0503\+\_\+tch\+\_\+hr\+\_\+decode2} (uint8\+\_\+t $\ast$tch\+\_\+data, const \textbf{ sbit\+\_\+t} $\ast$bursts, int odd, int $\ast$n\+\_\+errors, int $\ast$n\+\_\+bits\+\_\+total)
\begin{DoxyCompactList}\small\item\em Perform channel decoding of a HR(v1) channel according TS 05.\+03. \end{DoxyCompactList}\item 
int \textbf{ gsm0503\+\_\+tch\+\_\+hr\+\_\+decode} (uint8\+\_\+t $\ast$tch\+\_\+data, const \textbf{ sbit\+\_\+t} $\ast$bursts, int odd, int $\ast$n\+\_\+errors, int $\ast$n\+\_\+bits\+\_\+total)
\begin{DoxyCompactList}\small\item\em Perform channel decoding of a HR(v1) channel according TS 05.\+03, deprecated legacy API. \end{DoxyCompactList}\item 
int \textbf{ gsm0503\+\_\+tch\+\_\+hr\+\_\+encode} (\textbf{ ubit\+\_\+t} $\ast$bursts, const uint8\+\_\+t $\ast$tch\+\_\+data, int \textbf{ len})
\begin{DoxyCompactList}\small\item\em Perform channel encoding on a TCH/\+HS channel according to TS 05.\+03. \end{DoxyCompactList}\item 
static uint8\+\_\+t \textbf{ gsm0503\+\_\+tch\+\_\+afs\+\_\+decode\+\_\+inband} (const \textbf{ sbit\+\_\+t} $\ast$cB)
\item 
int \textbf{ gsm0503\+\_\+tch\+\_\+afs\+\_\+decode} (uint8\+\_\+t $\ast$tch\+\_\+data, const \textbf{ sbit\+\_\+t} $\ast$bursts, int codec\+\_\+mode\+\_\+req, uint8\+\_\+t $\ast$codec, int codecs, uint8\+\_\+t $\ast$ft, uint8\+\_\+t $\ast$cmr, int $\ast$n\+\_\+errors, int $\ast$n\+\_\+bits\+\_\+total)
\begin{DoxyCompactList}\small\item\em Perform channel decoding of a TCH/\+AFS channel according TS 05.\+03. \end{DoxyCompactList}\item 
int \textbf{ gsm0503\+\_\+tch\+\_\+afs\+\_\+decode\+\_\+dtx} (uint8\+\_\+t $\ast$tch\+\_\+data, const \textbf{ sbit\+\_\+t} $\ast$bursts, int codec\+\_\+mode\+\_\+req, uint8\+\_\+t $\ast$codec, int codecs, uint8\+\_\+t $\ast$ft, uint8\+\_\+t $\ast$cmr, int $\ast$n\+\_\+errors, int $\ast$n\+\_\+bits\+\_\+total, uint8\+\_\+t $\ast$dtx)
\begin{DoxyCompactList}\small\item\em Perform channel decoding of a TCH/\+AFS channel according TS 05.\+03. \end{DoxyCompactList}\item 
int \textbf{ gsm0503\+\_\+tch\+\_\+afs\+\_\+encode} (\textbf{ ubit\+\_\+t} $\ast$bursts, const uint8\+\_\+t $\ast$tch\+\_\+data, int \textbf{ len}, int codec\+\_\+mode\+\_\+req, const uint8\+\_\+t $\ast$codec, int codecs, uint8\+\_\+t ft, uint8\+\_\+t cmr)
\begin{DoxyCompactList}\small\item\em Perform channel encoding on a TCH/\+AFS channel according to TS 05.\+03. \end{DoxyCompactList}\item 
static uint8\+\_\+t \textbf{ gsm0503\+\_\+tch\+\_\+ahs\+\_\+decode\+\_\+inband} (const \textbf{ sbit\+\_\+t} $\ast$cB)
\item 
int \textbf{ gsm0503\+\_\+tch\+\_\+ahs\+\_\+decode} (uint8\+\_\+t $\ast$tch\+\_\+data, const \textbf{ sbit\+\_\+t} $\ast$bursts, int odd, int codec\+\_\+mode\+\_\+req, uint8\+\_\+t $\ast$codec, int codecs, uint8\+\_\+t $\ast$ft, uint8\+\_\+t $\ast$cmr, int $\ast$n\+\_\+errors, int $\ast$n\+\_\+bits\+\_\+total)
\begin{DoxyCompactList}\small\item\em Perform channel decoding of a TCH/\+AHS channel according TS 05.\+03. \end{DoxyCompactList}\item 
int \textbf{ gsm0503\+\_\+tch\+\_\+ahs\+\_\+decode\+\_\+dtx} (uint8\+\_\+t $\ast$tch\+\_\+data, const \textbf{ sbit\+\_\+t} $\ast$bursts, int odd, int codec\+\_\+mode\+\_\+req, uint8\+\_\+t $\ast$codec, int codecs, uint8\+\_\+t $\ast$ft, uint8\+\_\+t $\ast$cmr, int $\ast$n\+\_\+errors, int $\ast$n\+\_\+bits\+\_\+total, uint8\+\_\+t $\ast$dtx)
\begin{DoxyCompactList}\small\item\em Perform channel decoding of a TCH/\+AHS channel according TS 05.\+03. \end{DoxyCompactList}\item 
int \textbf{ gsm0503\+\_\+tch\+\_\+ahs\+\_\+encode} (\textbf{ ubit\+\_\+t} $\ast$bursts, const uint8\+\_\+t $\ast$tch\+\_\+data, int \textbf{ len}, int codec\+\_\+mode\+\_\+req, const uint8\+\_\+t $\ast$codec, int codecs, uint8\+\_\+t ft, uint8\+\_\+t cmr)
\begin{DoxyCompactList}\small\item\em Perform channel encoding on a TCH/\+AHS channel according to TS 05.\+03. \end{DoxyCompactList}\item 
static void \textbf{ rach\+\_\+apply\+\_\+bsic} (\textbf{ ubit\+\_\+t} $\ast$d, uint8\+\_\+t bsic, uint8\+\_\+t \textbf{ start})
\item 
static int16\+\_\+t \textbf{ rach\+\_\+decode\+\_\+ber} (const \textbf{ sbit\+\_\+t} $\ast$burst, uint8\+\_\+t bsic, bool is\+\_\+11bit, int $\ast$n\+\_\+errors, int $\ast$n\+\_\+bits\+\_\+total)
\item 
int \textbf{ gsm0503\+\_\+rach\+\_\+ext\+\_\+decode} (uint16\+\_\+t $\ast$ra, const \textbf{ sbit\+\_\+t} $\ast$burst, uint8\+\_\+t bsic)
\begin{DoxyCompactList}\small\item\em Decode the Extended (11-\/bit) RACH according to 3GPP TS 45.\+003. \end{DoxyCompactList}\item 
int \textbf{ gsm0503\+\_\+rach\+\_\+decode} (uint8\+\_\+t $\ast$ra, const \textbf{ sbit\+\_\+t} $\ast$burst, uint8\+\_\+t bsic)
\begin{DoxyCompactList}\small\item\em Decode the (8-\/bit) RACH according to TS 05.\+03. \end{DoxyCompactList}\item 
int \textbf{ gsm0503\+\_\+rach\+\_\+ext\+\_\+decode\+\_\+ber} (uint16\+\_\+t $\ast$ra, const \textbf{ sbit\+\_\+t} $\ast$burst, uint8\+\_\+t bsic, int $\ast$n\+\_\+errors, int $\ast$n\+\_\+bits\+\_\+total)
\begin{DoxyCompactList}\small\item\em Decode the Extended (11-\/bit) RACH according to 3GPP TS 45.\+003. \end{DoxyCompactList}\item 
int \textbf{ gsm0503\+\_\+rach\+\_\+decode\+\_\+ber} (uint8\+\_\+t $\ast$ra, const \textbf{ sbit\+\_\+t} $\ast$burst, uint8\+\_\+t bsic, int $\ast$n\+\_\+errors, int $\ast$n\+\_\+bits\+\_\+total)
\begin{DoxyCompactList}\small\item\em Decode the (8-\/bit) RACH according to TS 05.\+03. \end{DoxyCompactList}\item 
int \textbf{ gsm0503\+\_\+rach\+\_\+encode} (\textbf{ ubit\+\_\+t} $\ast$burst, const uint8\+\_\+t $\ast$ra, uint8\+\_\+t bsic)
\begin{DoxyCompactList}\small\item\em Encode the (8-\/bit) RACH according to TS 05.\+03. \end{DoxyCompactList}\item 
int \textbf{ gsm0503\+\_\+rach\+\_\+ext\+\_\+encode} (\textbf{ ubit\+\_\+t} $\ast$burst, uint16\+\_\+t ra11, uint8\+\_\+t bsic, bool is\+\_\+11bit)
\begin{DoxyCompactList}\small\item\em Encode the Extended (11-\/bit) or regular (8-\/bit) RACH according to 3GPP TS 45.\+003. \end{DoxyCompactList}\item 
int \textbf{ gsm0503\+\_\+sch\+\_\+decode} (uint8\+\_\+t $\ast$sb\+\_\+info, const \textbf{ sbit\+\_\+t} $\ast$burst)
\begin{DoxyCompactList}\small\item\em Decode the SCH according to TS 05.\+03. \end{DoxyCompactList}\item 
int \textbf{ gsm0503\+\_\+sch\+\_\+encode} (\textbf{ ubit\+\_\+t} $\ast$burst, const uint8\+\_\+t $\ast$sb\+\_\+info)
\begin{DoxyCompactList}\small\item\em Encode the SCH according to TS 05.\+03. \end{DoxyCompactList}\item 
static void \textbf{ \+\_\+tch\+\_\+csd\+\_\+burst\+\_\+map} (\textbf{ ubit\+\_\+t} $\ast$burst, const \textbf{ ubit\+\_\+t} $\ast$iB)
\item 
int \textbf{ gsm0503\+\_\+tch\+\_\+fr96\+\_\+encode} (\textbf{ ubit\+\_\+t} $\ast$bursts, const \textbf{ ubit\+\_\+t} $\ast$\textbf{ data})
\begin{DoxyCompactList}\small\item\em Perform channel encoding of a TCH/\+F9.\+6 channel as per section 3.\+3. \end{DoxyCompactList}\item 
int \textbf{ gsm0503\+\_\+tch\+\_\+fr96\+\_\+decode} (\textbf{ ubit\+\_\+t} $\ast$\textbf{ data}, const \textbf{ sbit\+\_\+t} $\ast$bursts, int $\ast$n\+\_\+errors, int $\ast$n\+\_\+bits\+\_\+total)
\begin{DoxyCompactList}\small\item\em Perform channel decoding of a TCH/\+F9.\+6 channel as per section 3.\+3. \end{DoxyCompactList}\item 
int \textbf{ gsm0503\+\_\+tch\+\_\+fr48\+\_\+encode} (\textbf{ ubit\+\_\+t} $\ast$bursts, const \textbf{ ubit\+\_\+t} $\ast$\textbf{ data})
\begin{DoxyCompactList}\small\item\em Perform channel encoding of a TCH/\+F4.\+8 channel as per section 3.\+4. \end{DoxyCompactList}\item 
int \textbf{ gsm0503\+\_\+tch\+\_\+fr48\+\_\+decode} (\textbf{ ubit\+\_\+t} $\ast$\textbf{ data}, const \textbf{ sbit\+\_\+t} $\ast$bursts, int $\ast$n\+\_\+errors, int $\ast$n\+\_\+bits\+\_\+total)
\begin{DoxyCompactList}\small\item\em Perform channel decoding of a TCH/\+F4.\+8 channel as per section 3.\+4. \end{DoxyCompactList}\item 
int \textbf{ gsm0503\+\_\+tch\+\_\+hr48\+\_\+encode} (\textbf{ ubit\+\_\+t} $\ast$bursts, const \textbf{ ubit\+\_\+t} $\ast$\textbf{ data})
\begin{DoxyCompactList}\small\item\em Perform channel encoding of a TCH/\+H4.\+8 channel as per section 3.\+5. \end{DoxyCompactList}\item 
int \textbf{ gsm0503\+\_\+tch\+\_\+hr48\+\_\+decode} (\textbf{ ubit\+\_\+t} $\ast$\textbf{ data}, const \textbf{ sbit\+\_\+t} $\ast$bursts, int $\ast$n\+\_\+errors, int $\ast$n\+\_\+bits\+\_\+total)
\begin{DoxyCompactList}\small\item\em Perform channel decoding of a TCH/\+H4.\+8 channel as per section 3.\+5. \end{DoxyCompactList}\item 
int \textbf{ gsm0503\+\_\+tch\+\_\+fr24\+\_\+encode} (\textbf{ ubit\+\_\+t} $\ast$bursts, const \textbf{ ubit\+\_\+t} $\ast$\textbf{ data})
\begin{DoxyCompactList}\small\item\em Perform channel encoding of a TCH/\+F2.\+4 channel as per section 3.\+6. \end{DoxyCompactList}\item 
int \textbf{ gsm0503\+\_\+tch\+\_\+fr24\+\_\+decode} (\textbf{ ubit\+\_\+t} $\ast$\textbf{ data}, const \textbf{ sbit\+\_\+t} $\ast$bursts, int $\ast$n\+\_\+errors, int $\ast$n\+\_\+bits\+\_\+total)
\begin{DoxyCompactList}\small\item\em Perform channel decoding of a TCH/\+F2.\+4 channel as per section 3.\+6. \end{DoxyCompactList}\item 
int \textbf{ gsm0503\+\_\+tch\+\_\+hr24\+\_\+encode} (\textbf{ ubit\+\_\+t} $\ast$bursts, const \textbf{ ubit\+\_\+t} $\ast$\textbf{ data})
\begin{DoxyCompactList}\small\item\em Perform channel encoding of a TCH/\+H2.\+4 channel as per section 3.\+7. \end{DoxyCompactList}\item 
int \textbf{ gsm0503\+\_\+tch\+\_\+hr24\+\_\+decode} (\textbf{ ubit\+\_\+t} $\ast$\textbf{ data}, const \textbf{ sbit\+\_\+t} $\ast$bursts, int $\ast$n\+\_\+errors, int $\ast$n\+\_\+bits\+\_\+total)
\begin{DoxyCompactList}\small\item\em Perform channel decoding of a TCH/\+H2.\+4 channel as per section 3.\+7. \end{DoxyCompactList}\item 
int \textbf{ gsm0503\+\_\+tch\+\_\+fr144\+\_\+encode} (\textbf{ ubit\+\_\+t} $\ast$bursts, const \textbf{ ubit\+\_\+t} $\ast$\textbf{ data})
\begin{DoxyCompactList}\small\item\em Perform channel encoding of a TCH/\+F14.\+4 channel as per section 3.\+8. \end{DoxyCompactList}\item 
int \textbf{ gsm0503\+\_\+tch\+\_\+fr144\+\_\+decode} (\textbf{ ubit\+\_\+t} $\ast$\textbf{ data}, const \textbf{ sbit\+\_\+t} $\ast$bursts, int $\ast$n\+\_\+errors, int $\ast$n\+\_\+bits\+\_\+total)
\begin{DoxyCompactList}\small\item\em Perform channel decoding of a TCH/14.\+4 channel as per section 3.\+8. \end{DoxyCompactList}\item 
int \textbf{ gsm0503\+\_\+tch\+\_\+fr\+\_\+facch\+\_\+encode} (\textbf{ ubit\+\_\+t} $\ast$bursts, const uint8\+\_\+t $\ast$\textbf{ data})
\begin{DoxyCompactList}\small\item\em Perform channel encoding of a FACCH/F data as per section 4.\+2. \end{DoxyCompactList}\item 
int \textbf{ gsm0503\+\_\+tch\+\_\+fr\+\_\+facch\+\_\+decode} (uint8\+\_\+t $\ast$\textbf{ data}, const \textbf{ sbit\+\_\+t} $\ast$bursts, int $\ast$n\+\_\+errors, int $\ast$n\+\_\+bits\+\_\+total)
\begin{DoxyCompactList}\small\item\em Perform channel decoding of a FACCH/F data as per section 4.\+2. \end{DoxyCompactList}\item 
int \textbf{ gsm0503\+\_\+tch\+\_\+hr\+\_\+facch\+\_\+encode} (\textbf{ ubit\+\_\+t} $\ast$bursts, const uint8\+\_\+t $\ast$\textbf{ data})
\begin{DoxyCompactList}\small\item\em Perform channel encoding of a FACCH/H data as per section 4.\+3. \end{DoxyCompactList}\item 
int \textbf{ gsm0503\+\_\+tch\+\_\+hr\+\_\+facch\+\_\+decode} (uint8\+\_\+t $\ast$\textbf{ data}, const \textbf{ sbit\+\_\+t} $\ast$bursts, int $\ast$n\+\_\+errors, int $\ast$n\+\_\+bits\+\_\+total)
\begin{DoxyCompactList}\small\item\em Perform channel decoding of a FACCH/H data as per section 4.\+3. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection*{Variables}
\begin{DoxyCompactItemize}
\item 
const struct \textbf{ gsm0503\+\_\+mcs\+\_\+code} \textbf{ gsm0503\+\_\+mcs\+\_\+ul\+\_\+codes} [\textbf{ EGPRS\+\_\+\+NUM\+\_\+\+MCS}]
\item 
const struct \textbf{ gsm0503\+\_\+mcs\+\_\+code} \textbf{ gsm0503\+\_\+mcs\+\_\+dl\+\_\+codes} [\textbf{ EGPRS\+\_\+\+NUM\+\_\+\+MCS}]
\end{DoxyCompactItemize}
