\doxysection{Coding}
\label{group__coding}\index{Coding@{Coding}}


GSM TS 05.\+03 coding.  


\doxysubsection*{Files}
\begin{DoxyCompactItemize}
\item 
file \textbf{ gsm0503\+\_\+amr\+\_\+dtx.\+h}
\begin{DoxyCompactList}\small\item\em GSM TS 05.\+03 coding. \end{DoxyCompactList}\item 
file \textbf{ gsm0503\+\_\+coding.\+h}
\begin{DoxyCompactList}\small\item\em GSM TS 05.\+03 coding. \end{DoxyCompactList}\item 
file \textbf{ gsm0503\+\_\+coding.\+c}
\end{DoxyCompactItemize}
\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{ GSM0503\+\_\+\+GPRS\+\_\+\+BURSTS\+\_\+\+NBITS}~(116 $\ast$ 4)
\item 
\#define \textbf{ GSM0503\+\_\+\+EGPRS\+\_\+\+BURSTS\+\_\+\+NBITS}~(348 $\ast$ 4)
\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*{Enumerations}
\begin{DoxyCompactItemize}
\item 
enum \textbf{ gsm0503\+\_\+amr\+\_\+dtx\+\_\+frames} \{ \newline
\textbf{ AMR\+\_\+\+OTHER}
, \newline
\textbf{ AFS\+\_\+\+SID\+\_\+\+FIRST}
, \newline
\textbf{ AFS\+\_\+\+SID\+\_\+\+UPDATE}
, \newline
\textbf{ AFS\+\_\+\+SID\+\_\+\+UPDATE\+\_\+\+CN}
, \newline
\textbf{ AFS\+\_\+\+ONSET}
, \newline
\textbf{ AHS\+\_\+\+SID\+\_\+\+UPDATE}
, \newline
\textbf{ AHS\+\_\+\+SID\+\_\+\+UPDATE\+\_\+\+CN}
, \newline
\textbf{ AHS\+\_\+\+SID\+\_\+\+FIRST\+\_\+\+P1}
, \newline
\textbf{ AHS\+\_\+\+SID\+\_\+\+FIRST\+\_\+\+P2}
, \newline
\textbf{ AHS\+\_\+\+ONSET}
, \newline
\textbf{ AHS\+\_\+\+SID\+\_\+\+FIRST\+\_\+\+INH}
, \newline
\textbf{ AHS\+\_\+\+SID\+\_\+\+UPDATE\+\_\+\+INH}
 \}
\item 
enum \textbf{ gsm0503\+\_\+egprs\+\_\+mcs} \{ \newline
\textbf{ EGPRS\+\_\+\+MCS0}
, \newline
\textbf{ EGPRS\+\_\+\+MCS1}
, \newline
\textbf{ EGPRS\+\_\+\+MCS2}
, \newline
\textbf{ EGPRS\+\_\+\+MCS3}
, \newline
\textbf{ EGPRS\+\_\+\+MCS4}
, \newline
\textbf{ EGPRS\+\_\+\+MCS5}
, \newline
\textbf{ EGPRS\+\_\+\+MCS6}
, \newline
\textbf{ EGPRS\+\_\+\+MCS7}
, \newline
\textbf{ EGPRS\+\_\+\+MCS8}
, \newline
\textbf{ EGPRS\+\_\+\+MCS9}
, \newline
\textbf{ EGPRS\+\_\+\+NUM\+\_\+\+MCS}
 \}
\end{DoxyCompactItemize}
\doxysubsection*{Functions}
\begin{DoxyCompactItemize}
\item 
static const char $\ast$ \textbf{ gsm0503\+\_\+amr\+\_\+dtx\+\_\+frame\+\_\+name} (enum \textbf{ gsm0503\+\_\+amr\+\_\+dtx\+\_\+frames} frame)
\item 
enum \textbf{ gsm0503\+\_\+amr\+\_\+dtx\+\_\+frames} \textbf{ gsm0503\+\_\+detect\+\_\+afs\+\_\+dtx\+\_\+frame} (int $\ast$n\+\_\+errors, int $\ast$n\+\_\+bits\+\_\+total, const \textbf{ ubit\+\_\+t} $\ast$ubits) \textbf{ OSMO\+\_\+\+DEPRECATED}(\char`\"{}Use \textbf{ gsm0503\+\_\+detect\+\_\+afs\+\_\+dtx\+\_\+frame2}() \textbf{ instead}\char`\"{})
\begin{DoxyCompactList}\small\item\em Detect FR AMR DTX frame in unmapped, deinterleaved frame bits. \end{DoxyCompactList}\item 
enum \textbf{ gsm0503\+\_\+amr\+\_\+dtx\+\_\+frames} \textbf{ gsm0503\+\_\+detect\+\_\+ahs\+\_\+dtx\+\_\+frame} (int $\ast$n\+\_\+errors, int $\ast$n\+\_\+bits\+\_\+total, const \textbf{ ubit\+\_\+t} $\ast$ubits) \textbf{ OSMO\+\_\+\+DEPRECATED}(\char`\"{}Use \textbf{ gsm0503\+\_\+detect\+\_\+ahs\+\_\+dtx\+\_\+frame2}() \textbf{ instead}\char`\"{})
\begin{DoxyCompactList}\small\item\em Detect HR AMR DTX frame in unmapped, deinterleaved frame bits. \end{DoxyCompactList}\item 
enum \textbf{ gsm0503\+\_\+amr\+\_\+dtx\+\_\+frames} \textbf{ gsm0503\+\_\+detect\+\_\+afs\+\_\+dtx\+\_\+frame2} (int $\ast$n\+\_\+errors, int $\ast$n\+\_\+bits\+\_\+total, int $\ast$mode\+\_\+id, const \textbf{ sbit\+\_\+t} $\ast$sbits)
\begin{DoxyCompactList}\small\item\em Detect FR AMR DTX frame in unmapped, deinterleaved frame bits. \end{DoxyCompactList}\item 
enum \textbf{ gsm0503\+\_\+amr\+\_\+dtx\+\_\+frames} \textbf{ gsm0503\+\_\+detect\+\_\+ahs\+\_\+dtx\+\_\+frame2} (int $\ast$n\+\_\+errors, int $\ast$n\+\_\+bits\+\_\+total, int $\ast$mode\+\_\+id, const \textbf{ sbit\+\_\+t} $\ast$sbits)
\begin{DoxyCompactList}\small\item\em Detect HR AMR DTX frame in unmapped, deinterleaved frame bits. \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 
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\+\_\+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 
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 
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\+\_\+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\+\_\+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\+\_\+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\+\_\+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 
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\+\_\+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\+\_\+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 
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\+\_\+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 
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\+\_\+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\+\_\+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\+\_\+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\+\_\+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\+\_\+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\+\_\+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\+\_\+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 
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\+\_\+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}\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 
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 
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 
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 
static uint8\+\_\+t \textbf{ gsm0503\+\_\+tch\+\_\+afs\+\_\+decode\+\_\+inband} (const \textbf{ sbit\+\_\+t} $\ast$cB)
\item 
static uint8\+\_\+t \textbf{ gsm0503\+\_\+tch\+\_\+ahs\+\_\+decode\+\_\+inband} (const \textbf{ sbit\+\_\+t} $\ast$cB)
\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 
static void \textbf{ \+\_\+tch\+\_\+csd\+\_\+burst\+\_\+map} (\textbf{ ubit\+\_\+t} $\ast$burst, const \textbf{ ubit\+\_\+t} $\ast$iB)
\end{DoxyCompactItemize}
\doxysubsection*{Variables}
\begin{DoxyCompactItemize}
\item 
const struct \textbf{ value\+\_\+string} \textbf{ gsm0503\+\_\+amr\+\_\+dtx\+\_\+frame\+\_\+names} [$\,$]
\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}


\doxysubsection{Detailed Description}
GSM TS 05.\+03 coding. 

This module is the \char`\"{}master module\char`\"{} of libosmocoding. It uses the various other modules (mapping, parity, interleaving) in order to implement the complete channel coding (and decoding) chain for the various channel types as defined in TS 05.\+03 / 45.\+003. 

\doxysubsection{Macro Definition Documentation}
\mbox{\label{group__coding_ga2f0b5f4f04dab76c9d70d7418189b985}} 
\index{Coding@{Coding}!EGPRS\_DATA\_C1@{EGPRS\_DATA\_C1}}
\index{EGPRS\_DATA\_C1@{EGPRS\_DATA\_C1}!Coding@{Coding}}
\doxysubsubsection{EGPRS\_DATA\_C1}
{\footnotesize\ttfamily \#define EGPRS\+\_\+\+DATA\+\_\+\+C1~612}

\mbox{\label{group__coding_ga6f0d98df8ca9c3976ecd5e8067baca49}} 
\index{Coding@{Coding}!EGPRS\_DATA\_C2@{EGPRS\_DATA\_C2}}
\index{EGPRS\_DATA\_C2@{EGPRS\_DATA\_C2}!Coding@{Coding}}
\doxysubsubsection{EGPRS\_DATA\_C2}
{\footnotesize\ttfamily \#define EGPRS\+\_\+\+DATA\+\_\+\+C2~\textbf{ EGPRS\+\_\+\+DATA\+\_\+\+C1}}

\mbox{\label{group__coding_gae593cb69136c4beed90b41dd54aa8147}} 
\index{Coding@{Coding}!EGPRS\_DATA\_C\_MAX@{EGPRS\_DATA\_C\_MAX}}
\index{EGPRS\_DATA\_C\_MAX@{EGPRS\_DATA\_C\_MAX}!Coding@{Coding}}
\doxysubsubsection{EGPRS\_DATA\_C\_MAX}
{\footnotesize\ttfamily \#define EGPRS\+\_\+\+DATA\+\_\+\+C\+\_\+\+MAX~1836}

\mbox{\label{group__coding_gad110a2930828f9cbb61a5753dc849a37}} 
\index{Coding@{Coding}!EGPRS\_DATA\_DC\_MAX@{EGPRS\_DATA\_DC\_MAX}}
\index{EGPRS\_DATA\_DC\_MAX@{EGPRS\_DATA\_DC\_MAX}!Coding@{Coding}}
\doxysubsubsection{EGPRS\_DATA\_DC\_MAX}
{\footnotesize\ttfamily \#define EGPRS\+\_\+\+DATA\+\_\+\+DC\+\_\+\+MAX~1248}

\mbox{\label{group__coding_ga0833ea064fc2c54223a92fa9db57770e}} 
\index{Coding@{Coding}!EGPRS\_DATA\_U\_MAX@{EGPRS\_DATA\_U\_MAX}}
\index{EGPRS\_DATA\_U\_MAX@{EGPRS\_DATA\_U\_MAX}!Coding@{Coding}}
\doxysubsubsection{EGPRS\_DATA\_U\_MAX}
{\footnotesize\ttfamily \#define EGPRS\+\_\+\+DATA\+\_\+\+U\+\_\+\+MAX~612}

\mbox{\label{group__coding_ga51f33621edbd0942747ca84e0104d5d3}} 
\index{Coding@{Coding}!EGPRS\_HDR\_C\_MAX@{EGPRS\_HDR\_C\_MAX}}
\index{EGPRS\_HDR\_C\_MAX@{EGPRS\_HDR\_C\_MAX}!Coding@{Coding}}
\doxysubsubsection{EGPRS\_HDR\_C\_MAX}
{\footnotesize\ttfamily \#define EGPRS\+\_\+\+HDR\+\_\+\+C\+\_\+\+MAX~162}

\mbox{\label{group__coding_gac7859b130b032fdeab289b2c8f6805c7}} 
\index{Coding@{Coding}!EGPRS\_HDR\_HC\_MAX@{EGPRS\_HDR\_HC\_MAX}}
\index{EGPRS\_HDR\_HC\_MAX@{EGPRS\_HDR\_HC\_MAX}!Coding@{Coding}}
\doxysubsubsection{EGPRS\_HDR\_HC\_MAX}
{\footnotesize\ttfamily \#define EGPRS\+\_\+\+HDR\+\_\+\+HC\+\_\+\+MAX~160}

\mbox{\label{group__coding_gacc592c64715344cd320a8ff7708dad7c}} 
\index{Coding@{Coding}!EGPRS\_HDR\_UPP\_MAX@{EGPRS\_HDR\_UPP\_MAX}}
\index{EGPRS\_HDR\_UPP\_MAX@{EGPRS\_HDR\_UPP\_MAX}!Coding@{Coding}}
\doxysubsubsection{EGPRS\_HDR\_UPP\_MAX}
{\footnotesize\ttfamily \#define EGPRS\+\_\+\+HDR\+\_\+\+UPP\+\_\+\+MAX~54}

\mbox{\label{group__coding_ga57e9d12e68eaf8f2bca48be36ec42f7c}} 
\index{Coding@{Coding}!GSM0503\_EGPRS\_BURSTS\_NBITS@{GSM0503\_EGPRS\_BURSTS\_NBITS}}
\index{GSM0503\_EGPRS\_BURSTS\_NBITS@{GSM0503\_EGPRS\_BURSTS\_NBITS}!Coding@{Coding}}
\doxysubsubsection{GSM0503\_EGPRS\_BURSTS\_NBITS}
{\footnotesize\ttfamily \#define GSM0503\+\_\+\+EGPRS\+\_\+\+BURSTS\+\_\+\+NBITS~(348 $\ast$ 4)}

\mbox{\label{group__coding_ga23ac46ba797f736da88c48417c3159b1}} 
\index{Coding@{Coding}!GSM0503\_GPRS\_BURSTS\_NBITS@{GSM0503\_GPRS\_BURSTS\_NBITS}}
\index{GSM0503\_GPRS\_BURSTS\_NBITS@{GSM0503\_GPRS\_BURSTS\_NBITS}!Coding@{Coding}}
\doxysubsubsection{GSM0503\_GPRS\_BURSTS\_NBITS}
{\footnotesize\ttfamily \#define GSM0503\+\_\+\+GPRS\+\_\+\+BURSTS\+\_\+\+NBITS~(116 $\ast$ 4)}



\doxysubsection{Enumeration Type Documentation}
\mbox{\label{group__coding_gadca0cb6bbe4f321f8b7e3c14dc9007d8}} 
\index{Coding@{Coding}!gsm0503\_amr\_dtx\_frames@{gsm0503\_amr\_dtx\_frames}}
\index{gsm0503\_amr\_dtx\_frames@{gsm0503\_amr\_dtx\_frames}!Coding@{Coding}}
\doxysubsubsection{gsm0503\_amr\_dtx\_frames}
{\footnotesize\ttfamily enum \textbf{ gsm0503\+\_\+amr\+\_\+dtx\+\_\+frames}}

\begin{DoxyEnumFields}{Enumerator}
\raisebox{\heightof{T}}[0pt][0pt]{\index{AMR\_OTHER@{AMR\_OTHER}!Coding@{Coding}}\index{Coding@{Coding}!AMR\_OTHER@{AMR\_OTHER}}}\mbox{\label{group__coding_ggadca0cb6bbe4f321f8b7e3c14dc9007d8ac6826d44d302961c67736b07d4239b55}} 
AMR\+\_\+\+OTHER&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{AFS\_SID\_FIRST@{AFS\_SID\_FIRST}!Coding@{Coding}}\index{Coding@{Coding}!AFS\_SID\_FIRST@{AFS\_SID\_FIRST}}}\mbox{\label{group__coding_ggadca0cb6bbe4f321f8b7e3c14dc9007d8a80671ff0cf5f173c6230cd0802e07ec2}} 
AFS\+\_\+\+SID\+\_\+\+FIRST&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{AFS\_SID\_UPDATE@{AFS\_SID\_UPDATE}!Coding@{Coding}}\index{Coding@{Coding}!AFS\_SID\_UPDATE@{AFS\_SID\_UPDATE}}}\mbox{\label{group__coding_ggadca0cb6bbe4f321f8b7e3c14dc9007d8afd75b6e83edae2b047efdaaa20161ef6}} 
AFS\+\_\+\+SID\+\_\+\+UPDATE&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{AFS\_SID\_UPDATE\_CN@{AFS\_SID\_UPDATE\_CN}!Coding@{Coding}}\index{Coding@{Coding}!AFS\_SID\_UPDATE\_CN@{AFS\_SID\_UPDATE\_CN}}}\mbox{\label{group__coding_ggadca0cb6bbe4f321f8b7e3c14dc9007d8aa3b8cd5246b7fcde15c57351aa16e50c}} 
AFS\+\_\+\+SID\+\_\+\+UPDATE\+\_\+\+CN&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{AFS\_ONSET@{AFS\_ONSET}!Coding@{Coding}}\index{Coding@{Coding}!AFS\_ONSET@{AFS\_ONSET}}}\mbox{\label{group__coding_ggadca0cb6bbe4f321f8b7e3c14dc9007d8aa3dcf5ab5a039fd578353b229a200b1a}} 
AFS\+\_\+\+ONSET&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{AHS\_SID\_UPDATE@{AHS\_SID\_UPDATE}!Coding@{Coding}}\index{Coding@{Coding}!AHS\_SID\_UPDATE@{AHS\_SID\_UPDATE}}}\mbox{\label{group__coding_ggadca0cb6bbe4f321f8b7e3c14dc9007d8ac36ed3cc9213e59edf0f324bc7897162}} 
AHS\+\_\+\+SID\+\_\+\+UPDATE&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{AHS\_SID\_UPDATE\_CN@{AHS\_SID\_UPDATE\_CN}!Coding@{Coding}}\index{Coding@{Coding}!AHS\_SID\_UPDATE\_CN@{AHS\_SID\_UPDATE\_CN}}}\mbox{\label{group__coding_ggadca0cb6bbe4f321f8b7e3c14dc9007d8a4f4624db162f8c4d3ecc90dd925ebcee}} 
AHS\+\_\+\+SID\+\_\+\+UPDATE\+\_\+\+CN&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{AHS\_SID\_FIRST\_P1@{AHS\_SID\_FIRST\_P1}!Coding@{Coding}}\index{Coding@{Coding}!AHS\_SID\_FIRST\_P1@{AHS\_SID\_FIRST\_P1}}}\mbox{\label{group__coding_ggadca0cb6bbe4f321f8b7e3c14dc9007d8a77e46e6154c137187772f1694b5878b8}} 
AHS\+\_\+\+SID\+\_\+\+FIRST\+\_\+\+P1&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{AHS\_SID\_FIRST\_P2@{AHS\_SID\_FIRST\_P2}!Coding@{Coding}}\index{Coding@{Coding}!AHS\_SID\_FIRST\_P2@{AHS\_SID\_FIRST\_P2}}}\mbox{\label{group__coding_ggadca0cb6bbe4f321f8b7e3c14dc9007d8a23b810c20fdfe3f8d178a3b9c37348f9}} 
AHS\+\_\+\+SID\+\_\+\+FIRST\+\_\+\+P2&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{AHS\_ONSET@{AHS\_ONSET}!Coding@{Coding}}\index{Coding@{Coding}!AHS\_ONSET@{AHS\_ONSET}}}\mbox{\label{group__coding_ggadca0cb6bbe4f321f8b7e3c14dc9007d8a3be49f1926262c91664284d77810d633}} 
AHS\+\_\+\+ONSET&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{AHS\_SID\_FIRST\_INH@{AHS\_SID\_FIRST\_INH}!Coding@{Coding}}\index{Coding@{Coding}!AHS\_SID\_FIRST\_INH@{AHS\_SID\_FIRST\_INH}}}\mbox{\label{group__coding_ggadca0cb6bbe4f321f8b7e3c14dc9007d8a58bf29a80404c62271d4dd7d6d33299b}} 
AHS\+\_\+\+SID\+\_\+\+FIRST\+\_\+\+INH&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{AHS\_SID\_UPDATE\_INH@{AHS\_SID\_UPDATE\_INH}!Coding@{Coding}}\index{Coding@{Coding}!AHS\_SID\_UPDATE\_INH@{AHS\_SID\_UPDATE\_INH}}}\mbox{\label{group__coding_ggadca0cb6bbe4f321f8b7e3c14dc9007d8a9d2826bd26f739bf6979dbe0bb89c6d5}} 
AHS\+\_\+\+SID\+\_\+\+UPDATE\+\_\+\+INH&\\
\hline

\end{DoxyEnumFields}
\mbox{\label{group__coding_gaadce72fa9aeafadf3b1884e4d817248d}} 
\index{Coding@{Coding}!gsm0503\_egprs\_mcs@{gsm0503\_egprs\_mcs}}
\index{gsm0503\_egprs\_mcs@{gsm0503\_egprs\_mcs}!Coding@{Coding}}
\doxysubsubsection{gsm0503\_egprs\_mcs}
{\footnotesize\ttfamily enum \textbf{ gsm0503\+\_\+egprs\+\_\+mcs}}

\begin{DoxyEnumFields}{Enumerator}
\raisebox{\heightof{T}}[0pt][0pt]{\index{EGPRS\_MCS0@{EGPRS\_MCS0}!Coding@{Coding}}\index{Coding@{Coding}!EGPRS\_MCS0@{EGPRS\_MCS0}}}\mbox{\label{group__coding_ggaadce72fa9aeafadf3b1884e4d817248dac3c7d103819fa921018c8d1914b95f4a}} 
EGPRS\+\_\+\+MCS0&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{EGPRS\_MCS1@{EGPRS\_MCS1}!Coding@{Coding}}\index{Coding@{Coding}!EGPRS\_MCS1@{EGPRS\_MCS1}}}\mbox{\label{group__coding_ggaadce72fa9aeafadf3b1884e4d817248daa4db730aa752ff56b783f599aa1d8181}} 
EGPRS\+\_\+\+MCS1&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{EGPRS\_MCS2@{EGPRS\_MCS2}!Coding@{Coding}}\index{Coding@{Coding}!EGPRS\_MCS2@{EGPRS\_MCS2}}}\mbox{\label{group__coding_ggaadce72fa9aeafadf3b1884e4d817248da7d4af946cd0dc88c99dfee30ecbeaba8}} 
EGPRS\+\_\+\+MCS2&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{EGPRS\_MCS3@{EGPRS\_MCS3}!Coding@{Coding}}\index{Coding@{Coding}!EGPRS\_MCS3@{EGPRS\_MCS3}}}\mbox{\label{group__coding_ggaadce72fa9aeafadf3b1884e4d817248da64144ea654def16ca8b215094739489f}} 
EGPRS\+\_\+\+MCS3&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{EGPRS\_MCS4@{EGPRS\_MCS4}!Coding@{Coding}}\index{Coding@{Coding}!EGPRS\_MCS4@{EGPRS\_MCS4}}}\mbox{\label{group__coding_ggaadce72fa9aeafadf3b1884e4d817248da8af4398e7166bd5924f3aa418b30c29e}} 
EGPRS\+\_\+\+MCS4&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{EGPRS\_MCS5@{EGPRS\_MCS5}!Coding@{Coding}}\index{Coding@{Coding}!EGPRS\_MCS5@{EGPRS\_MCS5}}}\mbox{\label{group__coding_ggaadce72fa9aeafadf3b1884e4d817248dada135a70aa76da62df86eb99964dd65c}} 
EGPRS\+\_\+\+MCS5&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{EGPRS\_MCS6@{EGPRS\_MCS6}!Coding@{Coding}}\index{Coding@{Coding}!EGPRS\_MCS6@{EGPRS\_MCS6}}}\mbox{\label{group__coding_ggaadce72fa9aeafadf3b1884e4d817248dab940bb4672739944df9d15ed6128e81c}} 
EGPRS\+\_\+\+MCS6&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{EGPRS\_MCS7@{EGPRS\_MCS7}!Coding@{Coding}}\index{Coding@{Coding}!EGPRS\_MCS7@{EGPRS\_MCS7}}}\mbox{\label{group__coding_ggaadce72fa9aeafadf3b1884e4d817248daef1a0689598e615b278c1ffa7cb8a82c}} 
EGPRS\+\_\+\+MCS7&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{EGPRS\_MCS8@{EGPRS\_MCS8}!Coding@{Coding}}\index{Coding@{Coding}!EGPRS\_MCS8@{EGPRS\_MCS8}}}\mbox{\label{group__coding_ggaadce72fa9aeafadf3b1884e4d817248dab22dc1595b05f9d86ee63a9c77e37970}} 
EGPRS\+\_\+\+MCS8&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{EGPRS\_MCS9@{EGPRS\_MCS9}!Coding@{Coding}}\index{Coding@{Coding}!EGPRS\_MCS9@{EGPRS\_MCS9}}}\mbox{\label{group__coding_ggaadce72fa9aeafadf3b1884e4d817248dafc26bd4e6a07b5e94fe840203200676f}} 
EGPRS\+\_\+\+MCS9&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{EGPRS\_NUM\_MCS@{EGPRS\_NUM\_MCS}!Coding@{Coding}}\index{Coding@{Coding}!EGPRS\_NUM\_MCS@{EGPRS\_NUM\_MCS}}}\mbox{\label{group__coding_ggaadce72fa9aeafadf3b1884e4d817248da0cdd12761753d27eb216c650b9d79524}} 
EGPRS\+\_\+\+NUM\+\_\+\+MCS&\\
\hline

\end{DoxyEnumFields}


\doxysubsection{Function Documentation}
\mbox{\label{group__coding_gab05126259500480cb32538a185411be3}} 
\index{Coding@{Coding}!\_egprs\_decode\_hdr@{\_egprs\_decode\_hdr}}
\index{\_egprs\_decode\_hdr@{\_egprs\_decode\_hdr}!Coding@{Coding}}
\doxysubsubsection{\_egprs\_decode\_hdr()}
{\footnotesize\ttfamily static int \+\_\+egprs\+\_\+decode\+\_\+hdr (\begin{DoxyParamCaption}\item[{const \textbf{ sbit\+\_\+t} $\ast$}]{hc,  }\item[{int}]{mcs,  }\item[{union \textbf{ gprs\+\_\+rlc\+\_\+ul\+\_\+hdr\+\_\+egprs} $\ast$}]{hdr }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ EGPRS\+\_\+\+HDR\+\_\+\+C\+\_\+\+MAX}, \textbf{ EGPRS\+\_\+\+HDR\+\_\+\+UPP\+\_\+\+MAX}, \textbf{ EGPRS\+\_\+\+MCS5}, \textbf{ EGPRS\+\_\+\+MCS6}, \textbf{ gsm0503\+\_\+mcs\+\_\+crc8\+\_\+hdr}, \textbf{ gsm0503\+\_\+mcs\+\_\+ul\+\_\+codes}, \textbf{ hdr}, \textbf{ gsm0503\+\_\+mcs\+\_\+code\+::hdr\+\_\+code\+\_\+len}, \textbf{ gsm0503\+\_\+mcs\+\_\+code\+::hdr\+\_\+conv}, \textbf{ gsm0503\+\_\+mcs\+\_\+code\+::hdr\+\_\+len}, \textbf{ gsm0503\+\_\+mcs\+\_\+code\+::hdr\+\_\+punc}, \textbf{ gsm0503\+\_\+mcs\+\_\+code\+::hdr\+\_\+punc\+\_\+len}, \textbf{ gsm0503\+\_\+mcs\+\_\+code\+::mcs}, \textbf{ osmo\+\_\+conv\+\_\+decode\+\_\+ber()}, \textbf{ osmo\+\_\+crc8gen\+\_\+check\+\_\+bits()}, and \textbf{ osmo\+\_\+ubit2pbit\+\_\+ext()}.



Referenced by \textbf{ egprs\+\_\+decode\+\_\+hdr()}.

\mbox{\label{group__coding_gacb9ebc2073df481bfd4f851449df869f}} 
\index{Coding@{Coding}!\_tch\_csd\_burst\_map@{\_tch\_csd\_burst\_map}}
\index{\_tch\_csd\_burst\_map@{\_tch\_csd\_burst\_map}!Coding@{Coding}}
\doxysubsubsection{\_tch\_csd\_burst\_map()}
{\footnotesize\ttfamily static void \+\_\+tch\+\_\+csd\+\_\+burst\+\_\+map (\begin{DoxyParamCaption}\item[{\textbf{ ubit\+\_\+t} $\ast$}]{burst,  }\item[{const \textbf{ ubit\+\_\+t} $\ast$}]{iB }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}



Referenced by \textbf{ gsm0503\+\_\+tch\+\_\+fr144\+\_\+encode()}, \textbf{ gsm0503\+\_\+tch\+\_\+fr48\+\_\+encode()}, \textbf{ gsm0503\+\_\+tch\+\_\+fr96\+\_\+encode()}, and \textbf{ gsm0503\+\_\+tch\+\_\+hr24\+\_\+encode()}.

\mbox{\label{group__coding_gaa19b7914c0989af44686370c11f1d647}} 
\index{Coding@{Coding}!\_xcch\_decode\_cB@{\_xcch\_decode\_cB}}
\index{\_xcch\_decode\_cB@{\_xcch\_decode\_cB}!Coding@{Coding}}
\doxysubsubsection{\_xcch\_decode\_cB()}
{\footnotesize\ttfamily static int \+\_\+xcch\+\_\+decode\+\_\+cB (\begin{DoxyParamCaption}\item[{uint8\+\_\+t $\ast$}]{l2\+\_\+data,  }\item[{const \textbf{ sbit\+\_\+t} $\ast$}]{cB,  }\item[{int $\ast$}]{n\+\_\+errors,  }\item[{int $\ast$}]{n\+\_\+bits\+\_\+total }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



convenience wrapper for decoding coded bits 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ out}}  & {\em l2\+\_\+data} & caller-\/allocated buffer for L2 Frame \\
\hline
\mbox{\texttt{ in}}  & {\em cB} & 456 coded (soft) bits as per TS 05.\+03 4.\+1.\+3 \\
\hline
\mbox{\texttt{ out}}  & {\em n\+\_\+errors} & Number of detected errors \\
\hline
\mbox{\texttt{ out}}  & {\em n\+\_\+bits\+\_\+total} & Number of total coded bits \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 on success; -\/1 on CRC error 
\end{DoxyReturn}


References \textbf{ gsm0503\+\_\+fire\+\_\+crc40}, \textbf{ gsm0503\+\_\+xcch}, \textbf{ osmo\+\_\+conv\+\_\+decode\+\_\+ber()}, \textbf{ osmo\+\_\+crc64gen\+\_\+check\+\_\+bits()}, and \textbf{ osmo\+\_\+ubit2pbit\+\_\+ext()}.



Referenced by \textbf{ gsm0503\+\_\+tch\+\_\+afs\+\_\+decode\+\_\+dtx()}, \textbf{ gsm0503\+\_\+tch\+\_\+ahs\+\_\+decode\+\_\+dtx()}, \textbf{ gsm0503\+\_\+tch\+\_\+fr\+\_\+decode()}, \textbf{ gsm0503\+\_\+tch\+\_\+fr\+\_\+facch\+\_\+decode()}, \textbf{ gsm0503\+\_\+tch\+\_\+hr\+\_\+decode2()}, \textbf{ gsm0503\+\_\+tch\+\_\+hr\+\_\+facch\+\_\+decode()}, and \textbf{ gsm0503\+\_\+xcch\+\_\+decode()}.

\mbox{\label{group__coding_ga7d9f553543eb382831702f2aa7382da3}} 
\index{Coding@{Coding}!\_xcch\_encode\_cB@{\_xcch\_encode\_cB}}
\index{\_xcch\_encode\_cB@{\_xcch\_encode\_cB}!Coding@{Coding}}
\doxysubsubsection{\_xcch\_encode\_cB()}
{\footnotesize\ttfamily static int \+\_\+xcch\+\_\+encode\+\_\+cB (\begin{DoxyParamCaption}\item[{\textbf{ ubit\+\_\+t} $\ast$}]{cB,  }\item[{const uint8\+\_\+t $\ast$}]{l2\+\_\+data }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



convenience wrapper for encoding to coded bits 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ out}}  & {\em cB} & caller-\/allocated buffer for 456 coded bits as per TS 05.\+03 4.\+1.\+3 \\
\hline
\mbox{\texttt{ in}}  & {\em l2\+\_\+data} & to-\/be-\/encoded L2 Frame \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 
\end{DoxyReturn}


References \textbf{ gsm0503\+\_\+fire\+\_\+crc40}, \textbf{ gsm0503\+\_\+xcch}, \textbf{ osmo\+\_\+conv\+\_\+encode()}, \textbf{ osmo\+\_\+crc64gen\+\_\+set\+\_\+bits()}, and \textbf{ osmo\+\_\+pbit2ubit\+\_\+ext()}.



Referenced by \textbf{ gsm0503\+\_\+tch\+\_\+afs\+\_\+encode()}, \textbf{ gsm0503\+\_\+tch\+\_\+ahs\+\_\+encode()}, \textbf{ gsm0503\+\_\+tch\+\_\+fr\+\_\+encode()}, \textbf{ gsm0503\+\_\+tch\+\_\+fr\+\_\+facch\+\_\+encode()}, \textbf{ gsm0503\+\_\+tch\+\_\+hr\+\_\+encode()}, \textbf{ gsm0503\+\_\+tch\+\_\+hr\+\_\+facch\+\_\+encode()}, and \textbf{ gsm0503\+\_\+xcch\+\_\+encode()}.

\mbox{\label{group__coding_ga5987c7d3bc75d0c0be09315a15e60633}} 
\index{Coding@{Coding}!egprs\_decode\_data@{egprs\_decode\_data}}
\index{egprs\_decode\_data@{egprs\_decode\_data}!Coding@{Coding}}
\doxysubsubsection{egprs\_decode\_data()}
{\footnotesize\ttfamily static int egprs\+\_\+decode\+\_\+data (\begin{DoxyParamCaption}\item[{uint8\+\_\+t $\ast$}]{l2\+\_\+data,  }\item[{const \textbf{ sbit\+\_\+t} $\ast$}]{c,  }\item[{int}]{mcs,  }\item[{int}]{p,  }\item[{int}]{blk,  }\item[{int $\ast$}]{n\+\_\+errors,  }\item[{int $\ast$}]{n\+\_\+bits\+\_\+total }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ blk}, \textbf{ c}, \textbf{ gsm0503\+\_\+mcs\+\_\+code\+::data\+\_\+code\+\_\+len}, \textbf{ gsm0503\+\_\+mcs\+\_\+code\+::data\+\_\+conv}, \textbf{ gsm0503\+\_\+mcs\+\_\+code\+::data\+\_\+len}, \textbf{ gsm0503\+\_\+mcs\+\_\+code\+::data\+\_\+punc}, \textbf{ gsm0503\+\_\+mcs\+\_\+code\+::data\+\_\+punc\+\_\+len}, \textbf{ EGPRS\+\_\+\+DATA\+\_\+\+C\+\_\+\+MAX}, \textbf{ EGPRS\+\_\+\+DATA\+\_\+\+U\+\_\+\+MAX}, \textbf{ EGPRS\+\_\+\+MCS7}, \textbf{ gsm0503\+\_\+mcs\+\_\+crc12}, \textbf{ gsm0503\+\_\+mcs\+\_\+ul\+\_\+codes}, \textbf{ gsm0503\+\_\+mcs\+\_\+code\+::hdr\+\_\+len}, \textbf{ gsm0503\+\_\+mcs\+\_\+code\+::mcs}, \textbf{ OSMO\+\_\+\+BYTES\+\_\+\+FOR\+\_\+\+BITS}, \textbf{ osmo\+\_\+conv\+\_\+decode\+\_\+ber\+\_\+punctured()}, \textbf{ osmo\+\_\+crc16gen\+\_\+check\+\_\+bits()}, \textbf{ osmo\+\_\+ubit2pbit\+\_\+ext()}, and \textbf{ u}.



Referenced by \textbf{ gsm0503\+\_\+pdtch\+\_\+egprs\+\_\+decode()}.

\mbox{\label{group__coding_ga14d34d19e0104530cd84242240eaef15}} 
\index{Coding@{Coding}!egprs\_decode\_hdr@{egprs\_decode\_hdr}}
\index{egprs\_decode\_hdr@{egprs\_decode\_hdr}!Coding@{Coding}}
\doxysubsubsection{egprs\_decode\_hdr()}
{\footnotesize\ttfamily static int egprs\+\_\+decode\+\_\+hdr (\begin{DoxyParamCaption}\item[{union \textbf{ gprs\+\_\+rlc\+\_\+ul\+\_\+hdr\+\_\+egprs} $\ast$}]{hdr,  }\item[{const \textbf{ sbit\+\_\+t} $\ast$}]{bursts,  }\item[{uint16\+\_\+t}]{nbits }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ \+\_\+egprs\+\_\+decode\+\_\+hdr()}, \textbf{ EGPRS\+\_\+\+HDR\+\_\+\+HC\+\_\+\+MAX}, \textbf{ EGPRS\+\_\+\+HDR\+\_\+\+TYPE1}, \textbf{ EGPRS\+\_\+\+HDR\+\_\+\+TYPE2}, \textbf{ EGPRS\+\_\+\+HDR\+\_\+\+TYPE3}, \textbf{ EGPRS\+\_\+\+MCS1}, \textbf{ EGPRS\+\_\+\+MCS5}, \textbf{ EGPRS\+\_\+\+MCS7}, \textbf{ egprs\+\_\+type1\+\_\+unmap()}, \textbf{ egprs\+\_\+type2\+\_\+unmap()}, \textbf{ egprs\+\_\+type3\+\_\+unmap()}, \textbf{ GSM0503\+\_\+\+EGPRS\+\_\+\+BURSTS\+\_\+\+NBITS}, \textbf{ GSM0503\+\_\+\+GPRS\+\_\+\+BURSTS\+\_\+\+NBITS}, and \textbf{ hdr}.



Referenced by \textbf{ gsm0503\+\_\+pdtch\+\_\+egprs\+\_\+decode()}.

\mbox{\label{group__coding_ga911546c5aa517876f857688bc5748d7c}} 
\index{Coding@{Coding}!egprs\_encode\_data@{egprs\_encode\_data}}
\index{egprs\_encode\_data@{egprs\_encode\_data}!Coding@{Coding}}
\doxysubsubsection{egprs\_encode\_data()}
{\footnotesize\ttfamily static int egprs\+\_\+encode\+\_\+data (\begin{DoxyParamCaption}\item[{\textbf{ ubit\+\_\+t} $\ast$}]{c,  }\item[{const uint8\+\_\+t $\ast$}]{l2\+\_\+data,  }\item[{int}]{mcs,  }\item[{int}]{p,  }\item[{int}]{blk }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ blk}, \textbf{ c}, \textbf{ gsm0503\+\_\+mcs\+\_\+code\+::data\+\_\+code\+\_\+len}, \textbf{ gsm0503\+\_\+mcs\+\_\+code\+::data\+\_\+conv}, \textbf{ gsm0503\+\_\+mcs\+\_\+code\+::data\+\_\+len}, \textbf{ gsm0503\+\_\+mcs\+\_\+code\+::data\+\_\+punc}, \textbf{ EGPRS\+\_\+\+DATA\+\_\+\+C\+\_\+\+MAX}, \textbf{ EGPRS\+\_\+\+DATA\+\_\+\+U\+\_\+\+MAX}, \textbf{ EGPRS\+\_\+\+MCS7}, \textbf{ gsm0503\+\_\+mcs\+\_\+crc12}, \textbf{ gsm0503\+\_\+mcs\+\_\+dl\+\_\+codes}, \textbf{ gsm0503\+\_\+mcs\+\_\+code\+::hdr\+\_\+len}, \textbf{ gsm0503\+\_\+mcs\+\_\+code\+::mcs}, \textbf{ osmo\+\_\+conv\+\_\+encode()}, \textbf{ osmo\+\_\+crc16gen\+\_\+set\+\_\+bits()}, \textbf{ osmo\+\_\+pbit2ubit\+\_\+ext()}, \textbf{ u}, and \textbf{ gsm0503\+\_\+mcs\+\_\+code\+::usf\+\_\+len}.



Referenced by \textbf{ gsm0503\+\_\+pdtch\+\_\+egprs\+\_\+encode()}.

\mbox{\label{group__coding_ga02c9db7d058fe2cb6e666c0eb25571e0}} 
\index{Coding@{Coding}!egprs\_encode\_hdr@{egprs\_encode\_hdr}}
\index{egprs\_encode\_hdr@{egprs\_encode\_hdr}!Coding@{Coding}}
\doxysubsubsection{egprs\_encode\_hdr()}
{\footnotesize\ttfamily static int egprs\+\_\+encode\+\_\+hdr (\begin{DoxyParamCaption}\item[{\textbf{ ubit\+\_\+t} $\ast$}]{hc,  }\item[{const uint8\+\_\+t $\ast$}]{l2\+\_\+data,  }\item[{int}]{mcs }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ EGPRS\+\_\+\+HDR\+\_\+\+C\+\_\+\+MAX}, \textbf{ EGPRS\+\_\+\+HDR\+\_\+\+UPP\+\_\+\+MAX}, \textbf{ EGPRS\+\_\+\+MCS5}, \textbf{ EGPRS\+\_\+\+MCS6}, \textbf{ gsm0503\+\_\+mcs\+\_\+crc8\+\_\+hdr}, \textbf{ gsm0503\+\_\+mcs\+\_\+dl\+\_\+codes}, \textbf{ gsm0503\+\_\+mcs\+\_\+code\+::hdr\+\_\+code\+\_\+len}, \textbf{ gsm0503\+\_\+mcs\+\_\+code\+::hdr\+\_\+conv}, \textbf{ gsm0503\+\_\+mcs\+\_\+code\+::hdr\+\_\+len}, \textbf{ gsm0503\+\_\+mcs\+\_\+code\+::hdr\+\_\+punc}, \textbf{ gsm0503\+\_\+mcs\+\_\+code\+::mcs}, \textbf{ osmo\+\_\+conv\+\_\+encode()}, \textbf{ osmo\+\_\+crc8gen\+\_\+set\+\_\+bits()}, \textbf{ osmo\+\_\+pbit2ubit\+\_\+ext()}, and \textbf{ gsm0503\+\_\+mcs\+\_\+code\+::usf\+\_\+len}.



Referenced by \textbf{ gsm0503\+\_\+pdtch\+\_\+egprs\+\_\+encode()}.

\mbox{\label{group__coding_gad1c79e3305ac35ceb93e568f165a1834}} 
\index{Coding@{Coding}!egprs\_parse\_dl\_cps@{egprs\_parse\_dl\_cps}}
\index{egprs\_parse\_dl\_cps@{egprs\_parse\_dl\_cps}!Coding@{Coding}}
\doxysubsubsection{egprs\_parse\_dl\_cps()}
{\footnotesize\ttfamily static int egprs\+\_\+parse\+\_\+dl\+\_\+cps (\begin{DoxyParamCaption}\item[{struct \textbf{ egprs\+\_\+cps} $\ast$}]{cps,  }\item[{const union \textbf{ gprs\+\_\+rlc\+\_\+dl\+\_\+hdr\+\_\+egprs} $\ast$}]{hdr,  }\item[{int}]{type }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ egprs\+\_\+get\+\_\+cps()}, \textbf{ EGPRS\+\_\+\+HDR\+\_\+\+TYPE1}, \textbf{ EGPRS\+\_\+\+HDR\+\_\+\+TYPE2}, \textbf{ EGPRS\+\_\+\+HDR\+\_\+\+TYPE3}, \textbf{ hdr}, and \textbf{ type}.



Referenced by \textbf{ gsm0503\+\_\+pdtch\+\_\+egprs\+\_\+encode()}.

\mbox{\label{group__coding_ga72af702cd734f3a63e67e0382debcf26}} 
\index{Coding@{Coding}!egprs\_parse\_ul\_cps@{egprs\_parse\_ul\_cps}}
\index{egprs\_parse\_ul\_cps@{egprs\_parse\_ul\_cps}!Coding@{Coding}}
\doxysubsubsection{egprs\_parse\_ul\_cps()}
{\footnotesize\ttfamily static int egprs\+\_\+parse\+\_\+ul\+\_\+cps (\begin{DoxyParamCaption}\item[{struct \textbf{ egprs\+\_\+cps} $\ast$}]{cps,  }\item[{union \textbf{ gprs\+\_\+rlc\+\_\+ul\+\_\+hdr\+\_\+egprs} $\ast$}]{hdr,  }\item[{int}]{type }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ egprs\+\_\+get\+\_\+cps()}, \textbf{ EGPRS\+\_\+\+HDR\+\_\+\+TYPE1}, \textbf{ EGPRS\+\_\+\+HDR\+\_\+\+TYPE2}, \textbf{ EGPRS\+\_\+\+HDR\+\_\+\+TYPE3}, \textbf{ hdr}, and \textbf{ type}.



Referenced by \textbf{ gsm0503\+\_\+pdtch\+\_\+egprs\+\_\+decode()}.

\mbox{\label{group__coding_ga0d18e230a9f208fbb262d7bae855fc05}} 
\index{Coding@{Coding}!egprs\_type1\_map@{egprs\_type1\_map}}
\index{egprs\_type1\_map@{egprs\_type1\_map}!Coding@{Coding}}
\doxysubsubsection{egprs\_type1\_map()}
{\footnotesize\ttfamily static int egprs\+\_\+type1\+\_\+map (\begin{DoxyParamCaption}\item[{\textbf{ ubit\+\_\+t} $\ast$}]{bursts,  }\item[{const \textbf{ ubit\+\_\+t} $\ast$}]{hc,  }\item[{const \textbf{ ubit\+\_\+t} $\ast$}]{c1,  }\item[{const \textbf{ ubit\+\_\+t} $\ast$}]{c2,  }\item[{int}]{usf,  }\item[{int}]{mcs }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ EGPRS\+\_\+\+DATA\+\_\+\+C1}, \textbf{ EGPRS\+\_\+\+HDR\+\_\+\+HC\+\_\+\+MAX}, \textbf{ EGPRS\+\_\+\+MCS7}, \textbf{ gsm0503\+\_\+mcs5\+\_\+burst\+\_\+swap()}, \textbf{ gsm0503\+\_\+mcs5\+\_\+usf\+\_\+precode\+\_\+table}, \textbf{ gsm0503\+\_\+mcs7\+\_\+dl\+\_\+burst\+\_\+map()}, \textbf{ gsm0503\+\_\+mcs7\+\_\+dl\+\_\+interleave()}, and \textbf{ gsm0503\+\_\+mcs8\+\_\+dl\+\_\+interleave()}.



Referenced by \textbf{ gsm0503\+\_\+pdtch\+\_\+egprs\+\_\+encode()}.

\mbox{\label{group__coding_ga0cec5aaedea9b35cec8931df06dc17a9}} 
\index{Coding@{Coding}!egprs\_type1\_unmap@{egprs\_type1\_unmap}}
\index{egprs\_type1\_unmap@{egprs\_type1\_unmap}!Coding@{Coding}}
\doxysubsubsection{egprs\_type1\_unmap()}
{\footnotesize\ttfamily static int egprs\+\_\+type1\+\_\+unmap (\begin{DoxyParamCaption}\item[{const \textbf{ sbit\+\_\+t} $\ast$}]{bursts,  }\item[{\textbf{ sbit\+\_\+t} $\ast$}]{hc,  }\item[{\textbf{ sbit\+\_\+t} $\ast$}]{c1,  }\item[{\textbf{ sbit\+\_\+t} $\ast$}]{c2,  }\item[{int}]{msc }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ EGPRS\+\_\+\+DATA\+\_\+\+C1}, \textbf{ EGPRS\+\_\+\+HDR\+\_\+\+HC\+\_\+\+MAX}, \textbf{ EGPRS\+\_\+\+MCS7}, \textbf{ gsm0503\+\_\+mcs5\+\_\+burst\+\_\+swap()}, \textbf{ gsm0503\+\_\+mcs7\+\_\+ul\+\_\+burst\+\_\+unmap()}, \textbf{ gsm0503\+\_\+mcs7\+\_\+ul\+\_\+deinterleave()}, and \textbf{ gsm0503\+\_\+mcs8\+\_\+ul\+\_\+deinterleave()}.



Referenced by \textbf{ egprs\+\_\+decode\+\_\+hdr()}, and \textbf{ gsm0503\+\_\+pdtch\+\_\+egprs\+\_\+decode()}.

\mbox{\label{group__coding_ga626e189f084f868a76f7d1c504fa8d66}} 
\index{Coding@{Coding}!egprs\_type2\_map@{egprs\_type2\_map}}
\index{egprs\_type2\_map@{egprs\_type2\_map}!Coding@{Coding}}
\doxysubsubsection{egprs\_type2\_map()}
{\footnotesize\ttfamily static int egprs\+\_\+type2\+\_\+map (\begin{DoxyParamCaption}\item[{\textbf{ ubit\+\_\+t} $\ast$}]{bursts,  }\item[{const \textbf{ ubit\+\_\+t} $\ast$}]{hc,  }\item[{const \textbf{ ubit\+\_\+t} $\ast$}]{dc,  }\item[{int}]{usf }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ EGPRS\+\_\+\+DATA\+\_\+\+DC\+\_\+\+MAX}, \textbf{ EGPRS\+\_\+\+HDR\+\_\+\+HC\+\_\+\+MAX}, \textbf{ gsm0503\+\_\+mcs5\+\_\+burst\+\_\+swap()}, \textbf{ gsm0503\+\_\+mcs5\+\_\+dl\+\_\+burst\+\_\+map()}, \textbf{ gsm0503\+\_\+mcs5\+\_\+dl\+\_\+interleave()}, and \textbf{ gsm0503\+\_\+mcs5\+\_\+usf\+\_\+precode\+\_\+table}.



Referenced by \textbf{ gsm0503\+\_\+pdtch\+\_\+egprs\+\_\+encode()}.

\mbox{\label{group__coding_ga82f35acd0015a9ccae67119d6e35e9f0}} 
\index{Coding@{Coding}!egprs\_type2\_unmap@{egprs\_type2\_unmap}}
\index{egprs\_type2\_unmap@{egprs\_type2\_unmap}!Coding@{Coding}}
\doxysubsubsection{egprs\_type2\_unmap()}
{\footnotesize\ttfamily static int egprs\+\_\+type2\+\_\+unmap (\begin{DoxyParamCaption}\item[{const \textbf{ sbit\+\_\+t} $\ast$}]{bursts,  }\item[{\textbf{ sbit\+\_\+t} $\ast$}]{hc,  }\item[{\textbf{ sbit\+\_\+t} $\ast$}]{dc }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ EGPRS\+\_\+\+DATA\+\_\+\+DC\+\_\+\+MAX}, \textbf{ EGPRS\+\_\+\+HDR\+\_\+\+HC\+\_\+\+MAX}, \textbf{ gsm0503\+\_\+mcs5\+\_\+burst\+\_\+swap()}, \textbf{ gsm0503\+\_\+mcs5\+\_\+ul\+\_\+burst\+\_\+unmap()}, and \textbf{ gsm0503\+\_\+mcs5\+\_\+ul\+\_\+deinterleave()}.



Referenced by \textbf{ egprs\+\_\+decode\+\_\+hdr()}, and \textbf{ gsm0503\+\_\+pdtch\+\_\+egprs\+\_\+decode()}.

\mbox{\label{group__coding_ga89f4b8e29839f11ea726a2d0337d6fef}} 
\index{Coding@{Coding}!egprs\_type3\_map@{egprs\_type3\_map}}
\index{egprs\_type3\_map@{egprs\_type3\_map}!Coding@{Coding}}
\doxysubsubsection{egprs\_type3\_map()}
{\footnotesize\ttfamily static int egprs\+\_\+type3\+\_\+map (\begin{DoxyParamCaption}\item[{\textbf{ ubit\+\_\+t} $\ast$}]{bursts,  }\item[{const \textbf{ ubit\+\_\+t} $\ast$}]{hc,  }\item[{const \textbf{ ubit\+\_\+t} $\ast$}]{dc,  }\item[{int}]{usf }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ gsm0503\+\_\+mcs1\+\_\+dl\+\_\+interleave()}, \textbf{ gsm0503\+\_\+pdtch\+\_\+hl\+\_\+hn\+\_\+ubit}, \textbf{ gsm0503\+\_\+usf2twelve\+\_\+ubit}, and \textbf{ gsm0503\+\_\+xcch\+\_\+burst\+\_\+map()}.



Referenced by \textbf{ gsm0503\+\_\+pdtch\+\_\+egprs\+\_\+encode()}.

\mbox{\label{group__coding_gae56b8ea3a8665ce8cec892bfe2ae64cf}} 
\index{Coding@{Coding}!egprs\_type3\_unmap@{egprs\_type3\_unmap}}
\index{egprs\_type3\_unmap@{egprs\_type3\_unmap}!Coding@{Coding}}
\doxysubsubsection{egprs\_type3\_unmap()}
{\footnotesize\ttfamily static int egprs\+\_\+type3\+\_\+unmap (\begin{DoxyParamCaption}\item[{const \textbf{ sbit\+\_\+t} $\ast$}]{bursts,  }\item[{\textbf{ sbit\+\_\+t} $\ast$}]{hc,  }\item[{\textbf{ sbit\+\_\+t} $\ast$}]{dc }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ gsm0503\+\_\+mcs1\+\_\+ul\+\_\+deinterleave()}, and \textbf{ gsm0503\+\_\+xcch\+\_\+burst\+\_\+unmap()}.



Referenced by \textbf{ egprs\+\_\+decode\+\_\+hdr()}, and \textbf{ gsm0503\+\_\+pdtch\+\_\+egprs\+\_\+decode()}.

\mbox{\label{group__coding_gaa01691d95b7a6a4202a1e33f7226313a}} 
\index{Coding@{Coding}!extract\_afs\_sid\_update@{extract\_afs\_sid\_update}}
\index{extract\_afs\_sid\_update@{extract\_afs\_sid\_update}!Coding@{Coding}}
\doxysubsubsection{extract\_afs\_sid\_update()}
{\footnotesize\ttfamily static void extract\+\_\+afs\+\_\+sid\+\_\+update (\begin{DoxyParamCaption}\item[{\textbf{ sbit\+\_\+t} $\ast$}]{sid\+\_\+update,  }\item[{const \textbf{ sbit\+\_\+t} $\ast$}]{sbits }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



Referenced by \textbf{ gsm0503\+\_\+tch\+\_\+afs\+\_\+decode\+\_\+dtx()}.

\mbox{\label{group__coding_ga3a3fedc575e3f94dee991684e0ff8311}} 
\index{Coding@{Coding}!gsm0503\_amr\_dtx\_frame\_name@{gsm0503\_amr\_dtx\_frame\_name}}
\index{gsm0503\_amr\_dtx\_frame\_name@{gsm0503\_amr\_dtx\_frame\_name}!Coding@{Coding}}
\doxysubsubsection{gsm0503\_amr\_dtx\_frame\_name()}
{\footnotesize\ttfamily static const char $\ast$ gsm0503\+\_\+amr\+\_\+dtx\+\_\+frame\+\_\+name (\begin{DoxyParamCaption}\item[{enum \textbf{ gsm0503\+\_\+amr\+\_\+dtx\+\_\+frames}}]{frame }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}



References \textbf{ get\+\_\+value\+\_\+string()}, and \textbf{ gsm0503\+\_\+amr\+\_\+dtx\+\_\+frame\+\_\+names}.

\mbox{\label{group__coding_ga142a36f1698193812ab3cce476913d39}} 
\index{Coding@{Coding}!gsm0503\_detect\_afs\_dtx\_frame@{gsm0503\_detect\_afs\_dtx\_frame}}
\index{gsm0503\_detect\_afs\_dtx\_frame@{gsm0503\_detect\_afs\_dtx\_frame}!Coding@{Coding}}
\doxysubsubsection{gsm0503\_detect\_afs\_dtx\_frame()}
{\footnotesize\ttfamily enum \textbf{ gsm0503\+\_\+amr\+\_\+dtx\+\_\+frames} gsm0503\+\_\+detect\+\_\+afs\+\_\+dtx\+\_\+frame (\begin{DoxyParamCaption}\item[{int $\ast$}]{n\+\_\+errors,  }\item[{int $\ast$}]{n\+\_\+bits\+\_\+total,  }\item[{const \textbf{ ubit\+\_\+t} $\ast$}]{ubits }\end{DoxyParamCaption})}



Detect FR AMR DTX frame in unmapped, deinterleaved frame bits. 

DEPRECATED\+: use \doxyref{gsm0503\+\_\+detect\+\_\+afs\+\_\+dtx\+\_\+frame2()}{p.}{group__coding_gae6f7ba026b9c1622324c7c803b409467} instead. 
\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ out}}  & {\em n\+\_\+errors} & number of errornous bits. \\
\hline
\mbox{\texttt{ out}}  & {\em n\+\_\+bits\+\_\+total} & number of checked bits. \\
\hline
\mbox{\texttt{ in}}  & {\em ubits} & input bits (456 bit). \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
dtx frame type. 
\end{DoxyReturn}


References \textbf{ gsm0503\+\_\+detect\+\_\+afs\+\_\+dtx\+\_\+frame2()}, and \textbf{ osmo\+\_\+ubit2sbit()}.

\mbox{\label{group__coding_gae6f7ba026b9c1622324c7c803b409467}} 
\index{Coding@{Coding}!gsm0503\_detect\_afs\_dtx\_frame2@{gsm0503\_detect\_afs\_dtx\_frame2}}
\index{gsm0503\_detect\_afs\_dtx\_frame2@{gsm0503\_detect\_afs\_dtx\_frame2}!Coding@{Coding}}
\doxysubsubsection{gsm0503\_detect\_afs\_dtx\_frame2()}
{\footnotesize\ttfamily enum \textbf{ gsm0503\+\_\+amr\+\_\+dtx\+\_\+frames} gsm0503\+\_\+detect\+\_\+afs\+\_\+dtx\+\_\+frame2 (\begin{DoxyParamCaption}\item[{int $\ast$}]{n\+\_\+errors,  }\item[{int $\ast$}]{n\+\_\+bits\+\_\+total,  }\item[{int $\ast$}]{mode\+\_\+id,  }\item[{const \textbf{ sbit\+\_\+t} $\ast$}]{sbits }\end{DoxyParamCaption})}



Detect FR AMR DTX frame in unmapped, deinterleaved frame bits. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ out}}  & {\em n\+\_\+errors} & number of errornous bits. \\
\hline
\mbox{\texttt{ out}}  & {\em n\+\_\+bits\+\_\+total} & number of checked bits. \\
\hline
\mbox{\texttt{ out}}  & {\em mode\+\_\+id} & codec mode ID (0..3 or -\/1). \\
\hline
\mbox{\texttt{ in}}  & {\em sbits} & input soft-\/bits (456 bit). \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
dtx frame type. 
\end{DoxyReturn}


References \textbf{ AFS\+\_\+\+ONSET}, \textbf{ AFS\+\_\+\+SID\+\_\+\+FIRST}, \textbf{ AFS\+\_\+\+SID\+\_\+\+UPDATE}, \textbf{ AMR\+\_\+\+OTHER}, \textbf{ detect\+\_\+afs\+\_\+onset()}, \textbf{ detect\+\_\+afs\+\_\+sid\+\_\+first()}, and \textbf{ detect\+\_\+afs\+\_\+sid\+\_\+update()}.



Referenced by \textbf{ gsm0503\+\_\+detect\+\_\+afs\+\_\+dtx\+\_\+frame()}, and \textbf{ gsm0503\+\_\+tch\+\_\+afs\+\_\+decode\+\_\+dtx()}.

\mbox{\label{group__coding_ga38e577bf45c242154a1cbfbd75dada89}} 
\index{Coding@{Coding}!gsm0503\_detect\_ahs\_dtx\_frame@{gsm0503\_detect\_ahs\_dtx\_frame}}
\index{gsm0503\_detect\_ahs\_dtx\_frame@{gsm0503\_detect\_ahs\_dtx\_frame}!Coding@{Coding}}
\doxysubsubsection{gsm0503\_detect\_ahs\_dtx\_frame()}
{\footnotesize\ttfamily enum \textbf{ gsm0503\+\_\+amr\+\_\+dtx\+\_\+frames} gsm0503\+\_\+detect\+\_\+ahs\+\_\+dtx\+\_\+frame (\begin{DoxyParamCaption}\item[{int $\ast$}]{n\+\_\+errors,  }\item[{int $\ast$}]{n\+\_\+bits\+\_\+total,  }\item[{const \textbf{ ubit\+\_\+t} $\ast$}]{ubits }\end{DoxyParamCaption})}



Detect HR AMR DTX frame in unmapped, deinterleaved frame bits. 

DEPRECATED\+: use \doxyref{gsm0503\+\_\+detect\+\_\+ahs\+\_\+dtx\+\_\+frame2()}{p.}{group__coding_ga5edbb45ebf87a4658dec798637adf156} instead. 
\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ out}}  & {\em n\+\_\+errors} & number of errornous bits. \\
\hline
\mbox{\texttt{ out}}  & {\em n\+\_\+bits\+\_\+total} & number of checked bits. \\
\hline
\mbox{\texttt{ in}}  & {\em ubits} & input bits (456 bit). \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
dtx frame type, 
\end{DoxyReturn}


References \textbf{ gsm0503\+\_\+detect\+\_\+ahs\+\_\+dtx\+\_\+frame2()}, and \textbf{ osmo\+\_\+ubit2sbit()}.

\mbox{\label{group__coding_ga5edbb45ebf87a4658dec798637adf156}} 
\index{Coding@{Coding}!gsm0503\_detect\_ahs\_dtx\_frame2@{gsm0503\_detect\_ahs\_dtx\_frame2}}
\index{gsm0503\_detect\_ahs\_dtx\_frame2@{gsm0503\_detect\_ahs\_dtx\_frame2}!Coding@{Coding}}
\doxysubsubsection{gsm0503\_detect\_ahs\_dtx\_frame2()}
{\footnotesize\ttfamily enum \textbf{ gsm0503\+\_\+amr\+\_\+dtx\+\_\+frames} gsm0503\+\_\+detect\+\_\+ahs\+\_\+dtx\+\_\+frame2 (\begin{DoxyParamCaption}\item[{int $\ast$}]{n\+\_\+errors,  }\item[{int $\ast$}]{n\+\_\+bits\+\_\+total,  }\item[{int $\ast$}]{mode\+\_\+id,  }\item[{const \textbf{ sbit\+\_\+t} $\ast$}]{sbits }\end{DoxyParamCaption})}



Detect HR AMR DTX frame in unmapped, deinterleaved frame bits. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ out}}  & {\em n\+\_\+errors} & number of errornous bits. \\
\hline
\mbox{\texttt{ out}}  & {\em n\+\_\+bits\+\_\+total} & number of checked bits. \\
\hline
\mbox{\texttt{ out}}  & {\em mode\+\_\+id} & codec ID (CMI or CMC/\+CMR). \\
\hline
\mbox{\texttt{ out}}  & {\em mode\+\_\+id} & codec mode ID (0..3 or -\/1). \\
\hline
\mbox{\texttt{ in}}  & {\em sbits} & input soft-\/bits (456 bit). \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
dtx frame type, 
\end{DoxyReturn}


References \textbf{ AHS\+\_\+\+ONSET}, \textbf{ AHS\+\_\+\+SID\+\_\+\+FIRST\+\_\+\+INH}, \textbf{ AHS\+\_\+\+SID\+\_\+\+FIRST\+\_\+\+P1}, \textbf{ AHS\+\_\+\+SID\+\_\+\+FIRST\+\_\+\+P2}, \textbf{ AHS\+\_\+\+SID\+\_\+\+UPDATE}, \textbf{ AHS\+\_\+\+SID\+\_\+\+UPDATE\+\_\+\+INH}, \textbf{ AMR\+\_\+\+OTHER}, \textbf{ detect\+\_\+ahs\+\_\+onset()}, \textbf{ detect\+\_\+ahs\+\_\+sid\+\_\+first\+\_\+inh()}, \textbf{ detect\+\_\+ahs\+\_\+sid\+\_\+first\+\_\+p1()}, \textbf{ detect\+\_\+ahs\+\_\+sid\+\_\+first\+\_\+p2()}, \textbf{ detect\+\_\+ahs\+\_\+sid\+\_\+update()}, and \textbf{ detect\+\_\+ahs\+\_\+sid\+\_\+update\+\_\+inh()}.



Referenced by \textbf{ gsm0503\+\_\+detect\+\_\+ahs\+\_\+dtx\+\_\+frame()}, and \textbf{ gsm0503\+\_\+tch\+\_\+ahs\+\_\+decode\+\_\+dtx()}.

\mbox{\label{group__coding_ga9a38e782bd06f67c16f2924b60421c32}} 
\index{Coding@{Coding}!gsm0503\_pdtch\_decode@{gsm0503\_pdtch\_decode}}
\index{gsm0503\_pdtch\_decode@{gsm0503\_pdtch\_decode}!Coding@{Coding}}
\doxysubsubsection{gsm0503\_pdtch\_decode()}
{\footnotesize\ttfamily int gsm0503\+\_\+pdtch\+\_\+decode (\begin{DoxyParamCaption}\item[{uint8\+\_\+t $\ast$}]{l2\+\_\+data,  }\item[{const \textbf{ sbit\+\_\+t} $\ast$}]{bursts,  }\item[{uint8\+\_\+t $\ast$}]{usf\+\_\+p,  }\item[{int $\ast$}]{n\+\_\+errors,  }\item[{int $\ast$}]{n\+\_\+bits\+\_\+total }\end{DoxyParamCaption})}



Decode GPRS PDTCH. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ out}}  & {\em l2\+\_\+data} & caller-\/allocated buffer for L2 Frame \\
\hline
\mbox{\texttt{ in}}  & {\em bursts} & burst input data as soft unpacked bits \\
\hline
\mbox{\texttt{ out}}  & {\em usf\+\_\+p} & Uplink State Flag, only relevant for DL blocks \\
\hline
\mbox{\texttt{ out}}  & {\em n\+\_\+errors} & number of detected bit-\/errors \\
\hline
\mbox{\texttt{ out}}  & {\em n\+\_\+bits\+\_\+total} & total number of decoded bits \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
number of bytes decoded; negative on error 
\end{DoxyReturn}


References \textbf{ gsm0503\+\_\+cs234\+\_\+crc16}, \textbf{ gsm0503\+\_\+cs2\+\_\+np}, \textbf{ gsm0503\+\_\+cs3\+\_\+np}, \textbf{ gsm0503\+\_\+fire\+\_\+crc40}, \textbf{ gsm0503\+\_\+pdtch\+\_\+hl\+\_\+hn\+\_\+sbit}, \textbf{ gsm0503\+\_\+puncture\+\_\+cs2}, \textbf{ gsm0503\+\_\+puncture\+\_\+cs3}, \textbf{ gsm0503\+\_\+usf2six}, \textbf{ gsm0503\+\_\+usf2twelve\+\_\+sbit}, \textbf{ gsm0503\+\_\+xcch}, \textbf{ gsm0503\+\_\+xcch\+\_\+burst\+\_\+unmap()}, \textbf{ gsm0503\+\_\+xcch\+\_\+deinterleave()}, \textbf{ k}, \textbf{ osmo\+\_\+conv\+\_\+decode\+\_\+ber()}, \textbf{ osmo\+\_\+conv\+\_\+decode\+\_\+ber\+\_\+punctured()}, \textbf{ osmo\+\_\+crc16gen\+\_\+check\+\_\+bits()}, \textbf{ osmo\+\_\+crc64gen\+\_\+check\+\_\+bits()}, and \textbf{ osmo\+\_\+ubit2pbit\+\_\+ext()}.

\mbox{\label{group__coding_ga3f241958cd15c8030212c0b936337f0c}} 
\index{Coding@{Coding}!gsm0503\_pdtch\_egprs\_decode@{gsm0503\_pdtch\_egprs\_decode}}
\index{gsm0503\_pdtch\_egprs\_decode@{gsm0503\_pdtch\_egprs\_decode}!Coding@{Coding}}
\doxysubsubsection{gsm0503\_pdtch\_egprs\_decode()}
{\footnotesize\ttfamily int gsm0503\+\_\+pdtch\+\_\+egprs\+\_\+decode (\begin{DoxyParamCaption}\item[{uint8\+\_\+t $\ast$}]{l2\+\_\+data,  }\item[{const \textbf{ sbit\+\_\+t} $\ast$}]{bursts,  }\item[{uint16\+\_\+t}]{nbits,  }\item[{uint8\+\_\+t $\ast$}]{usf\+\_\+p,  }\item[{int $\ast$}]{n\+\_\+errors,  }\item[{int $\ast$}]{n\+\_\+bits\+\_\+total }\end{DoxyParamCaption})}



Decode EGPRS UL message. 


\begin{DoxyEnumerate}
\item Header section decoding
\item Extract CPS settings
\item Burst unmapping and deinterleaving
\item Data section decoding 
\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ out}}  & {\em l2\+\_\+data} & caller-\/allocated buffer for L2 Frame \\
\hline
\mbox{\texttt{ in}}  & {\em bursts} & burst input data as soft unpacked bits \\
\hline
\mbox{\texttt{ in}}  & {\em nbits} & number of bits in {\itshape bursts} \\
\hline
 & {\em usf\+\_\+p} & Uplink State Flag, FIXME\+: not implemented \\
\hline
\mbox{\texttt{ out}}  & {\em n\+\_\+errors} & number of detected bit-\/errors \\
\hline
\mbox{\texttt{ out}}  & {\em n\+\_\+bits\+\_\+total} & total number of decoded bits \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
number of bytes decoded; negative on error 
\end{DoxyReturn}

\end{DoxyEnumerate}

References \textbf{ EGPRS\+\_\+\+DATA\+\_\+\+C1}, \textbf{ EGPRS\+\_\+\+DATA\+\_\+\+C2}, \textbf{ EGPRS\+\_\+\+DATA\+\_\+\+DC\+\_\+\+MAX}, \textbf{ egprs\+\_\+decode\+\_\+data()}, \textbf{ egprs\+\_\+decode\+\_\+hdr()}, \textbf{ EGPRS\+\_\+\+MCS0}, \textbf{ EGPRS\+\_\+\+MCS1}, \textbf{ EGPRS\+\_\+\+MCS2}, \textbf{ EGPRS\+\_\+\+MCS3}, \textbf{ EGPRS\+\_\+\+MCS4}, \textbf{ EGPRS\+\_\+\+MCS5}, \textbf{ EGPRS\+\_\+\+MCS6}, \textbf{ EGPRS\+\_\+\+MCS7}, \textbf{ EGPRS\+\_\+\+MCS8}, \textbf{ EGPRS\+\_\+\+MCS9}, \textbf{ egprs\+\_\+parse\+\_\+ul\+\_\+cps()}, \textbf{ egprs\+\_\+type1\+\_\+unmap()}, \textbf{ egprs\+\_\+type2\+\_\+unmap()}, \textbf{ egprs\+\_\+type3\+\_\+unmap()}, \textbf{ ENOTSUP}, \textbf{ GSM0503\+\_\+\+EGPRS\+\_\+\+BURSTS\+\_\+\+NBITS}, \textbf{ GSM0503\+\_\+\+GPRS\+\_\+\+BURSTS\+\_\+\+NBITS}, \textbf{ hdr}, \textbf{ egprs\+\_\+cps\+::mcs}, \textbf{ egprs\+\_\+cps\+::p}, and \textbf{ type}.

\mbox{\label{group__coding_gadedeea2653a7262a862cde40bcf57e7a}} 
\index{Coding@{Coding}!gsm0503\_pdtch\_egprs\_encode@{gsm0503\_pdtch\_egprs\_encode}}
\index{gsm0503\_pdtch\_egprs\_encode@{gsm0503\_pdtch\_egprs\_encode}!Coding@{Coding}}
\doxysubsubsection{gsm0503\_pdtch\_egprs\_encode()}
{\footnotesize\ttfamily int gsm0503\+\_\+pdtch\+\_\+egprs\+\_\+encode (\begin{DoxyParamCaption}\item[{\textbf{ ubit\+\_\+t} $\ast$}]{bursts,  }\item[{const uint8\+\_\+t $\ast$}]{l2\+\_\+data,  }\item[{uint8\+\_\+t}]{l2\+\_\+len }\end{DoxyParamCaption})}



EGPRS DL message encoding. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ out}}  & {\em bursts} & caller-\/allocated buffer for unpacked burst bits \\
\hline
\mbox{\texttt{ in}}  & {\em l2\+\_\+data} & L2 (MAC) block to be encoded \\
\hline
\mbox{\texttt{ in}}  & {\em l2\+\_\+len} & length of l2\+\_\+data in bytes, used to determine MCS \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
number of bits encoded; negative on error 
\end{DoxyReturn}


References \textbf{ EGPRS\+\_\+\+DATA\+\_\+\+C1}, \textbf{ EGPRS\+\_\+\+DATA\+\_\+\+C2}, \textbf{ EGPRS\+\_\+\+DATA\+\_\+\+C\+\_\+\+MAX}, \textbf{ EGPRS\+\_\+\+DATA\+\_\+\+DC\+\_\+\+MAX}, \textbf{ egprs\+\_\+encode\+\_\+data()}, \textbf{ egprs\+\_\+encode\+\_\+hdr()}, \textbf{ EGPRS\+\_\+\+HDR\+\_\+\+TYPE1}, \textbf{ EGPRS\+\_\+\+HDR\+\_\+\+TYPE2}, \textbf{ EGPRS\+\_\+\+HDR\+\_\+\+TYPE3}, \textbf{ EGPRS\+\_\+\+MCS1}, \textbf{ EGPRS\+\_\+\+MCS2}, \textbf{ EGPRS\+\_\+\+MCS3}, \textbf{ EGPRS\+\_\+\+MCS4}, \textbf{ EGPRS\+\_\+\+MCS5}, \textbf{ EGPRS\+\_\+\+MCS6}, \textbf{ EGPRS\+\_\+\+MCS7}, \textbf{ EGPRS\+\_\+\+MCS8}, \textbf{ EGPRS\+\_\+\+MCS9}, \textbf{ egprs\+\_\+parse\+\_\+dl\+\_\+cps()}, \textbf{ egprs\+\_\+type1\+\_\+map()}, \textbf{ egprs\+\_\+type2\+\_\+map()}, \textbf{ egprs\+\_\+type3\+\_\+map()}, \textbf{ GSM0503\+\_\+\+EGPRS\+\_\+\+BURSTS\+\_\+\+NBITS}, \textbf{ GSM0503\+\_\+\+GPRS\+\_\+\+BURSTS\+\_\+\+NBITS}, \textbf{ hdr}, \textbf{ egprs\+\_\+cps\+::mcs}, \textbf{ gsm0503\+\_\+mcs\+\_\+code\+::mcs}, and \textbf{ egprs\+\_\+cps\+::p}.

\mbox{\label{group__coding_gaa1b099432ef4cd099921f266e5774a84}} 
\index{Coding@{Coding}!gsm0503\_pdtch\_encode@{gsm0503\_pdtch\_encode}}
\index{gsm0503\_pdtch\_encode@{gsm0503\_pdtch\_encode}!Coding@{Coding}}
\doxysubsubsection{gsm0503\_pdtch\_encode()}
{\footnotesize\ttfamily int gsm0503\+\_\+pdtch\+\_\+encode (\begin{DoxyParamCaption}\item[{\textbf{ ubit\+\_\+t} $\ast$}]{bursts,  }\item[{const uint8\+\_\+t $\ast$}]{l2\+\_\+data,  }\item[{uint8\+\_\+t}]{l2\+\_\+len }\end{DoxyParamCaption})}



GPRS DL message encoding. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ out}}  & {\em bursts} & caller-\/allocated buffer for unpacked burst bits \\
\hline
\mbox{\texttt{ in}}  & {\em l2\+\_\+data} & L2 (MAC) block to be encoded \\
\hline
\mbox{\texttt{ in}}  & {\em l2\+\_\+len} & length of l2\+\_\+data in bytes, used to determine CS \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
number of bits encoded; negative on error 
\end{DoxyReturn}


References \textbf{ gsm0503\+\_\+cs234\+\_\+crc16}, \textbf{ gsm0503\+\_\+cs2\+\_\+np}, \textbf{ gsm0503\+\_\+cs3\+\_\+np}, \textbf{ gsm0503\+\_\+fire\+\_\+crc40}, \textbf{ GSM0503\+\_\+\+GPRS\+\_\+\+BURSTS\+\_\+\+NBITS}, \textbf{ gsm0503\+\_\+pdtch\+\_\+hl\+\_\+hn\+\_\+ubit}, \textbf{ gsm0503\+\_\+puncture\+\_\+cs2}, \textbf{ gsm0503\+\_\+puncture\+\_\+cs3}, \textbf{ gsm0503\+\_\+usf2six}, \textbf{ gsm0503\+\_\+usf2twelve\+\_\+ubit}, \textbf{ gsm0503\+\_\+xcch}, \textbf{ gsm0503\+\_\+xcch\+\_\+burst\+\_\+map()}, \textbf{ gsm0503\+\_\+xcch\+\_\+interleave()}, \textbf{ osmo\+\_\+conv\+\_\+encode()}, \textbf{ osmo\+\_\+crc16gen\+\_\+set\+\_\+bits()}, \textbf{ osmo\+\_\+crc64gen\+\_\+set\+\_\+bits()}, and \textbf{ osmo\+\_\+pbit2ubit\+\_\+ext()}.

\mbox{\label{group__coding_ga5f04d52cbf344b753ed095eb4d00e87c}} 
\index{Coding@{Coding}!gsm0503\_rach\_decode@{gsm0503\_rach\_decode}}
\index{gsm0503\_rach\_decode@{gsm0503\_rach\_decode}!Coding@{Coding}}
\doxysubsubsection{gsm0503\_rach\_decode()}
{\footnotesize\ttfamily int gsm0503\+\_\+rach\+\_\+decode (\begin{DoxyParamCaption}\item[{uint8\+\_\+t $\ast$}]{ra,  }\item[{const \textbf{ sbit\+\_\+t} $\ast$}]{burst,  }\item[{uint8\+\_\+t}]{bsic }\end{DoxyParamCaption})}



Decode the (8-\/bit) RACH according to TS 05.\+03. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ out}}  & {\em ra} & output buffer for RACH data \\
\hline
\mbox{\texttt{ in}}  & {\em burst} & Input burst data \\
\hline
\mbox{\texttt{ in}}  & {\em bsic} & BSIC used in this cell \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 on success; negative on error (e.\+g. CRC error) 
\end{DoxyReturn}


References \textbf{ rach\+\_\+decode\+\_\+ber()}.

\mbox{\label{group__coding_gad8375fc6a13b64e763338ff34ef88790}} 
\index{Coding@{Coding}!gsm0503\_rach\_decode\_ber@{gsm0503\_rach\_decode\_ber}}
\index{gsm0503\_rach\_decode\_ber@{gsm0503\_rach\_decode\_ber}!Coding@{Coding}}
\doxysubsubsection{gsm0503\_rach\_decode\_ber()}
{\footnotesize\ttfamily int gsm0503\+\_\+rach\+\_\+decode\+\_\+ber (\begin{DoxyParamCaption}\item[{uint8\+\_\+t $\ast$}]{ra,  }\item[{const \textbf{ sbit\+\_\+t} $\ast$}]{burst,  }\item[{uint8\+\_\+t}]{bsic,  }\item[{int $\ast$}]{n\+\_\+errors,  }\item[{int $\ast$}]{n\+\_\+bits\+\_\+total }\end{DoxyParamCaption})}



Decode the (8-\/bit) RACH according to TS 05.\+03. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ out}}  & {\em ra} & output buffer for RACH data \\
\hline
\mbox{\texttt{ in}}  & {\em burst} & Input burst data \\
\hline
\mbox{\texttt{ in}}  & {\em bsic} & BSIC used in this cell \\
\hline
\mbox{\texttt{ out}}  & {\em n\+\_\+errors} & Number of detected bit errors \\
\hline
\mbox{\texttt{ out}}  & {\em n\+\_\+bits\+\_\+total} & Total number of bits \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 on success; negative on error (e.\+g. CRC error) 
\end{DoxyReturn}


References \textbf{ rach\+\_\+decode\+\_\+ber()}.

\mbox{\label{group__coding_gaffc33f8c2b8ab1407e1f1f6f6e13fb8f}} 
\index{Coding@{Coding}!gsm0503\_rach\_encode@{gsm0503\_rach\_encode}}
\index{gsm0503\_rach\_encode@{gsm0503\_rach\_encode}!Coding@{Coding}}
\doxysubsubsection{gsm0503\_rach\_encode()}
{\footnotesize\ttfamily int gsm0503\+\_\+rach\+\_\+encode (\begin{DoxyParamCaption}\item[{\textbf{ ubit\+\_\+t} $\ast$}]{burst,  }\item[{const uint8\+\_\+t $\ast$}]{ra,  }\item[{uint8\+\_\+t}]{bsic }\end{DoxyParamCaption})}



Encode the (8-\/bit) RACH according to TS 05.\+03. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ out}}  & {\em burst} & Caller-\/allocated output burst buffer \\
\hline
\mbox{\texttt{ in}}  & {\em ra} & Input RACH data \\
\hline
\mbox{\texttt{ in}}  & {\em bsic} & BSIC used in this cell \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 on success; negative on error 
\end{DoxyReturn}


References \textbf{ gsm0503\+\_\+rach\+\_\+ext\+\_\+encode()}.

\mbox{\label{group__coding_ga5d58808507534cc0f63d5bfd1f1d8f03}} 
\index{Coding@{Coding}!gsm0503\_rach\_ext\_decode@{gsm0503\_rach\_ext\_decode}}
\index{gsm0503\_rach\_ext\_decode@{gsm0503\_rach\_ext\_decode}!Coding@{Coding}}
\doxysubsubsection{gsm0503\_rach\_ext\_decode()}
{\footnotesize\ttfamily int gsm0503\+\_\+rach\+\_\+ext\+\_\+decode (\begin{DoxyParamCaption}\item[{uint16\+\_\+t $\ast$}]{ra,  }\item[{const \textbf{ sbit\+\_\+t} $\ast$}]{burst,  }\item[{uint8\+\_\+t}]{bsic }\end{DoxyParamCaption})}



Decode the Extended (11-\/bit) RACH according to 3GPP TS 45.\+003. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ out}}  & {\em ra} & output buffer for RACH data \\
\hline
\mbox{\texttt{ in}}  & {\em burst} & Input burst data \\
\hline
\mbox{\texttt{ in}}  & {\em bsic} & BSIC used in this cell \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 on success; negative on error (e.\+g. CRC error) 
\end{DoxyReturn}


References \textbf{ rach\+\_\+decode\+\_\+ber()}.

\mbox{\label{group__coding_ga2e011193420fc9a110309d9d169ffb0f}} 
\index{Coding@{Coding}!gsm0503\_rach\_ext\_decode\_ber@{gsm0503\_rach\_ext\_decode\_ber}}
\index{gsm0503\_rach\_ext\_decode\_ber@{gsm0503\_rach\_ext\_decode\_ber}!Coding@{Coding}}
\doxysubsubsection{gsm0503\_rach\_ext\_decode\_ber()}
{\footnotesize\ttfamily int gsm0503\+\_\+rach\+\_\+ext\+\_\+decode\+\_\+ber (\begin{DoxyParamCaption}\item[{uint16\+\_\+t $\ast$}]{ra,  }\item[{const \textbf{ sbit\+\_\+t} $\ast$}]{burst,  }\item[{uint8\+\_\+t}]{bsic,  }\item[{int $\ast$}]{n\+\_\+errors,  }\item[{int $\ast$}]{n\+\_\+bits\+\_\+total }\end{DoxyParamCaption})}



Decode the Extended (11-\/bit) RACH according to 3GPP TS 45.\+003. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ out}}  & {\em ra} & output buffer for RACH data \\
\hline
\mbox{\texttt{ in}}  & {\em burst} & Input burst data \\
\hline
\mbox{\texttt{ in}}  & {\em bsic} & BSIC used in this cell \\
\hline
\mbox{\texttt{ out}}  & {\em n\+\_\+errors} & Number of detected bit errors \\
\hline
\mbox{\texttt{ out}}  & {\em n\+\_\+bits\+\_\+total} & Total number of bits \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 on success; negative on error (e.\+g. CRC error) 
\end{DoxyReturn}


References \textbf{ rach\+\_\+decode\+\_\+ber()}.

\mbox{\label{group__coding_gae6d1d9e581297c32b5ee85f6a7228554}} 
\index{Coding@{Coding}!gsm0503\_rach\_ext\_encode@{gsm0503\_rach\_ext\_encode}}
\index{gsm0503\_rach\_ext\_encode@{gsm0503\_rach\_ext\_encode}!Coding@{Coding}}
\doxysubsubsection{gsm0503\_rach\_ext\_encode()}
{\footnotesize\ttfamily int gsm0503\+\_\+rach\+\_\+ext\+\_\+encode (\begin{DoxyParamCaption}\item[{\textbf{ ubit\+\_\+t} $\ast$}]{burst,  }\item[{uint16\+\_\+t}]{ra11,  }\item[{uint8\+\_\+t}]{bsic,  }\item[{bool}]{is\+\_\+11bit }\end{DoxyParamCaption})}



Encode the Extended (11-\/bit) or regular (8-\/bit) RACH according to 3GPP TS 45.\+003. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ out}}  & {\em burst} & Caller-\/allocated output burst buffer \\
\hline
\mbox{\texttt{ in}}  & {\em ra11} & Input RACH data \\
\hline
\mbox{\texttt{ in}}  & {\em bsic} & BSIC used in this cell \\
\hline
\mbox{\texttt{ in}}  & {\em is\+\_\+11bit} & whether given RA is 11 bit or not \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 on success; negative on error 
\end{DoxyReturn}


References \textbf{ gsm0503\+\_\+rach}, \textbf{ gsm0503\+\_\+rach\+\_\+crc6}, \textbf{ gsm0503\+\_\+rach\+\_\+ext}, \textbf{ osmo\+\_\+conv\+\_\+encode()}, \textbf{ osmo\+\_\+crc8gen\+\_\+set\+\_\+bits()}, \textbf{ osmo\+\_\+pbit2ubit\+\_\+ext()}, and \textbf{ rach\+\_\+apply\+\_\+bsic()}.



Referenced by \textbf{ gsm0503\+\_\+rach\+\_\+encode()}.

\mbox{\label{group__coding_ga69de07ebfc75a31abb14bb42fda552c0}} 
\index{Coding@{Coding}!gsm0503\_sch\_decode@{gsm0503\_sch\_decode}}
\index{gsm0503\_sch\_decode@{gsm0503\_sch\_decode}!Coding@{Coding}}
\doxysubsubsection{gsm0503\_sch\_decode()}
{\footnotesize\ttfamily int gsm0503\+\_\+sch\+\_\+decode (\begin{DoxyParamCaption}\item[{uint8\+\_\+t $\ast$}]{sb\+\_\+info,  }\item[{const \textbf{ sbit\+\_\+t} $\ast$}]{burst }\end{DoxyParamCaption})}



Decode the SCH according to TS 05.\+03. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ out}}  & {\em sb\+\_\+info} & output buffer for SCH data \\
\hline
\mbox{\texttt{ in}}  & {\em burst} & Input burst data \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 on success; negative on error (e.\+g. CRC error) 
\end{DoxyReturn}


References \textbf{ gsm0503\+\_\+sch}, \textbf{ gsm0503\+\_\+sch\+\_\+crc10}, \textbf{ osmo\+\_\+conv\+\_\+decode()}, \textbf{ osmo\+\_\+crc16gen\+\_\+check\+\_\+bits()}, and \textbf{ osmo\+\_\+ubit2pbit\+\_\+ext()}.

\mbox{\label{group__coding_gaf4f515f02366a8eb459855c8e819329a}} 
\index{Coding@{Coding}!gsm0503\_sch\_encode@{gsm0503\_sch\_encode}}
\index{gsm0503\_sch\_encode@{gsm0503\_sch\_encode}!Coding@{Coding}}
\doxysubsubsection{gsm0503\_sch\_encode()}
{\footnotesize\ttfamily int gsm0503\+\_\+sch\+\_\+encode (\begin{DoxyParamCaption}\item[{\textbf{ ubit\+\_\+t} $\ast$}]{burst,  }\item[{const uint8\+\_\+t $\ast$}]{sb\+\_\+info }\end{DoxyParamCaption})}



Encode the SCH according to TS 05.\+03. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ out}}  & {\em burst} & Caller-\/allocated output burst buffer \\
\hline
\mbox{\texttt{ in}}  & {\em sb\+\_\+info} & Input SCH data \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 on success; negative on error 
\end{DoxyReturn}


References \textbf{ gsm0503\+\_\+sch}, \textbf{ gsm0503\+\_\+sch\+\_\+crc10}, \textbf{ osmo\+\_\+conv\+\_\+encode()}, \textbf{ osmo\+\_\+crc16gen\+\_\+set\+\_\+bits()}, and \textbf{ osmo\+\_\+pbit2ubit\+\_\+ext()}.

\mbox{\label{group__coding_ga96dbbac3ff96b8ab820c2d8f6efd9aed}} 
\index{Coding@{Coding}!gsm0503\_tch\_afs\_decode@{gsm0503\_tch\_afs\_decode}}
\index{gsm0503\_tch\_afs\_decode@{gsm0503\_tch\_afs\_decode}!Coding@{Coding}}
\doxysubsubsection{gsm0503\_tch\_afs\_decode()}
{\footnotesize\ttfamily int gsm0503\+\_\+tch\+\_\+afs\+\_\+decode (\begin{DoxyParamCaption}\item[{uint8\+\_\+t $\ast$}]{tch\+\_\+data,  }\item[{const \textbf{ sbit\+\_\+t} $\ast$}]{bursts,  }\item[{int}]{codec\+\_\+mode\+\_\+req,  }\item[{uint8\+\_\+t $\ast$}]{codec,  }\item[{int}]{codecs,  }\item[{uint8\+\_\+t $\ast$}]{ft,  }\item[{uint8\+\_\+t $\ast$}]{cmr,  }\item[{int $\ast$}]{n\+\_\+errors,  }\item[{int $\ast$}]{n\+\_\+bits\+\_\+total }\end{DoxyParamCaption})}



Perform channel decoding of a TCH/\+AFS channel according TS 05.\+03. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ out}}  & {\em tch\+\_\+data} & Codec frame in RTP payload format \\
\hline
\mbox{\texttt{ in}}  & {\em bursts} & buffer containing the symbols of 8 bursts \\
\hline
\mbox{\texttt{ in}}  & {\em codec\+\_\+mode\+\_\+req} & is this CMR (1) or CMC (0) \\
\hline
\mbox{\texttt{ in}}  & {\em codec} & array of active codecs (active codec set) \\
\hline
\mbox{\texttt{ in}}  & {\em codecs} & number of codecs in {\itshape codec} \\
\hline
 & {\em ft} & Frame Type; Input if {\itshape codec\+\_\+mode\+\_\+req} = 1, Output $\ast$ otherwise \\
\hline
\mbox{\texttt{ out}}  & {\em cmr} & Output in {\itshape codec\+\_\+mode\+\_\+req} = 1 \\
\hline
\mbox{\texttt{ out}}  & {\em n\+\_\+errors} & Number of detected bit errors \\
\hline
\mbox{\texttt{ out}}  & {\em n\+\_\+bits\+\_\+total} & Total number of bits \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
($>$=4) length of bytes used in {\itshape tch\+\_\+data} output buffer; ([0,3]) codec out of range; negative on error 
\end{DoxyReturn}


References \textbf{ gsm0503\+\_\+tch\+\_\+afs\+\_\+decode\+\_\+dtx()}.

\mbox{\label{group__coding_ga0b3c7c3d7d7e27c7e33fd80c0d4e7b1d}} 
\index{Coding@{Coding}!gsm0503\_tch\_afs\_decode\_dtx@{gsm0503\_tch\_afs\_decode\_dtx}}
\index{gsm0503\_tch\_afs\_decode\_dtx@{gsm0503\_tch\_afs\_decode\_dtx}!Coding@{Coding}}
\doxysubsubsection{gsm0503\_tch\_afs\_decode\_dtx()}
{\footnotesize\ttfamily int gsm0503\+\_\+tch\+\_\+afs\+\_\+decode\+\_\+dtx (\begin{DoxyParamCaption}\item[{uint8\+\_\+t $\ast$}]{tch\+\_\+data,  }\item[{const \textbf{ sbit\+\_\+t} $\ast$}]{bursts,  }\item[{int}]{codec\+\_\+mode\+\_\+req,  }\item[{uint8\+\_\+t $\ast$}]{codec,  }\item[{int}]{codecs,  }\item[{uint8\+\_\+t $\ast$}]{ft,  }\item[{uint8\+\_\+t $\ast$}]{cmr,  }\item[{int $\ast$}]{n\+\_\+errors,  }\item[{int $\ast$}]{n\+\_\+bits\+\_\+total,  }\item[{uint8\+\_\+t $\ast$}]{dtx }\end{DoxyParamCaption})}



Perform channel decoding of a TCH/\+AFS channel according TS 05.\+03. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ out}}  & {\em tch\+\_\+data} & Codec frame in RTP payload format \\
\hline
\mbox{\texttt{ in}}  & {\em bursts} & buffer containing the symbols of 8 bursts \\
\hline
\mbox{\texttt{ in}}  & {\em codec\+\_\+mode\+\_\+req} & is this CMR (1) or CMC (0) \\
\hline
\mbox{\texttt{ in}}  & {\em codec} & array of active codecs (active codec set) \\
\hline
\mbox{\texttt{ in}}  & {\em codecs} & number of codecs in {\itshape codec} \\
\hline
 & {\em ft} & Frame Type; Input if {\itshape codec\+\_\+mode\+\_\+req} = 1, Output $\ast$ otherwise \\
\hline
\mbox{\texttt{ out}}  & {\em cmr} & Output in {\itshape codec\+\_\+mode\+\_\+req} = 1 \\
\hline
\mbox{\texttt{ out}}  & {\em n\+\_\+errors} & Number of detected bit errors \\
\hline
\mbox{\texttt{ out}}  & {\em n\+\_\+bits\+\_\+total} & Total number of bits \\
\hline
\mbox{\texttt{ in,out}}  & {\em dtx} & DTX frame type output, previous DTX frame type input \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
($>$=4) length of bytes used in {\itshape tch\+\_\+data} output buffer; ([0,3]) codec out of range; negative on error 
\end{DoxyReturn}


References \textbf{ \+\_\+xcch\+\_\+decode\+\_\+c\+B()}, \textbf{ AFS\+\_\+\+ONSET}, \textbf{ AFS\+\_\+\+SID\+\_\+\+FIRST}, \textbf{ AFS\+\_\+\+SID\+\_\+\+UPDATE}, \textbf{ AFS\+\_\+\+SID\+\_\+\+UPDATE\+\_\+\+CN}, \textbf{ AMR\+\_\+\+OTHER}, \textbf{ extract\+\_\+afs\+\_\+sid\+\_\+update()}, \textbf{ gsm0503\+\_\+amr\+\_\+crc14}, \textbf{ gsm0503\+\_\+amr\+\_\+crc6}, \textbf{ gsm0503\+\_\+detect\+\_\+afs\+\_\+dtx\+\_\+frame2()}, \textbf{ gsm0503\+\_\+tch\+\_\+afs\+\_\+10\+\_\+2}, \textbf{ gsm0503\+\_\+tch\+\_\+afs\+\_\+12\+\_\+2}, \textbf{ gsm0503\+\_\+tch\+\_\+afs\+\_\+4\+\_\+75}, \textbf{ gsm0503\+\_\+tch\+\_\+afs\+\_\+5\+\_\+15}, \textbf{ gsm0503\+\_\+tch\+\_\+afs\+\_\+5\+\_\+9}, \textbf{ gsm0503\+\_\+tch\+\_\+afs\+\_\+6\+\_\+7}, \textbf{ gsm0503\+\_\+tch\+\_\+afs\+\_\+7\+\_\+4}, \textbf{ gsm0503\+\_\+tch\+\_\+afs\+\_\+7\+\_\+95}, \textbf{ gsm0503\+\_\+tch\+\_\+afs\+\_\+decode\+\_\+inband()}, \textbf{ gsm0503\+\_\+tch\+\_\+axs\+\_\+sid\+\_\+update}, \textbf{ gsm0503\+\_\+tch\+\_\+burst\+\_\+unmap()}, \textbf{ gsm0503\+\_\+tch\+\_\+fr\+\_\+deinterleave()}, \textbf{ GSM\+\_\+\+MACBLOCK\+\_\+\+LEN}, \textbf{ h}, \textbf{ len()}, \textbf{ osmo\+\_\+conv\+\_\+decode\+\_\+ber()}, \textbf{ osmo\+\_\+crc16gen\+\_\+check\+\_\+bits()}, \textbf{ osmo\+\_\+crc8gen\+\_\+check\+\_\+bits()}, \textbf{ tch\+\_\+amr\+\_\+reassemble()}, \textbf{ tch\+\_\+amr\+\_\+sid\+\_\+update\+\_\+append()}, and \textbf{ tch\+\_\+amr\+\_\+unmerge()}.



Referenced by \textbf{ gsm0503\+\_\+tch\+\_\+afs\+\_\+decode()}.

\mbox{\label{group__coding_gaf29ad94feec656d312a60028e5bfadd2}} 
\index{Coding@{Coding}!gsm0503\_tch\_afs\_decode\_inband@{gsm0503\_tch\_afs\_decode\_inband}}
\index{gsm0503\_tch\_afs\_decode\_inband@{gsm0503\_tch\_afs\_decode\_inband}!Coding@{Coding}}
\doxysubsubsection{gsm0503\_tch\_afs\_decode\_inband()}
{\footnotesize\ttfamily static uint8\+\_\+t gsm0503\+\_\+tch\+\_\+afs\+\_\+decode\+\_\+inband (\begin{DoxyParamCaption}\item[{const \textbf{ sbit\+\_\+t} $\ast$}]{cB }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ gsm0503\+\_\+afs\+\_\+ic\+\_\+sbit}, and \textbf{ k}.



Referenced by \textbf{ gsm0503\+\_\+tch\+\_\+afs\+\_\+decode\+\_\+dtx()}.

\mbox{\label{group__coding_ga119fc1ea19d5f7080e23ad88fc0645bd}} 
\index{Coding@{Coding}!gsm0503\_tch\_afs\_encode@{gsm0503\_tch\_afs\_encode}}
\index{gsm0503\_tch\_afs\_encode@{gsm0503\_tch\_afs\_encode}!Coding@{Coding}}
\doxysubsubsection{gsm0503\_tch\_afs\_encode()}
{\footnotesize\ttfamily int gsm0503\+\_\+tch\+\_\+afs\+\_\+encode (\begin{DoxyParamCaption}\item[{\textbf{ ubit\+\_\+t} $\ast$}]{bursts,  }\item[{const uint8\+\_\+t $\ast$}]{tch\+\_\+data,  }\item[{int}]{len,  }\item[{int}]{codec\+\_\+mode\+\_\+req,  }\item[{const uint8\+\_\+t $\ast$}]{codec,  }\item[{int}]{codecs,  }\item[{uint8\+\_\+t}]{ft,  }\item[{uint8\+\_\+t}]{cmr }\end{DoxyParamCaption})}



Perform channel encoding on a TCH/\+AFS channel according to TS 05.\+03. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ out}}  & {\em bursts} & caller-\/allocated output buffer for bursts bits \\
\hline
\mbox{\texttt{ in}}  & {\em tch\+\_\+data} & Codec input data in RTP payload format \\
\hline
\mbox{\texttt{ in}}  & {\em len} & Length of {\itshape tch\+\_\+data} in bytes or 0 to generate a bad frame \\
\hline
\mbox{\texttt{ in}}  & {\em codec\+\_\+mode\+\_\+req} & Use CMR (1) or FT (0) \\
\hline
\mbox{\texttt{ in}}  & {\em codec} & Array of codecs (active codec set) \\
\hline
\mbox{\texttt{ in}}  & {\em codecs} & Number of entries in {\itshape codec} \\
\hline
\mbox{\texttt{ in}}  & {\em ft} & Frame Type to be used for encoding (index to {\itshape codec}) \\
\hline
\mbox{\texttt{ in}}  & {\em cmr} & Codec Mode Request (used in codec\+\_\+mode\+\_\+req = 1 only) \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 in case of success; negative on error 
\end{DoxyReturn}


References \textbf{ \+\_\+xcch\+\_\+encode\+\_\+c\+B()}, \textbf{ ARRAY\+\_\+\+SIZE}, \textbf{ gsm0503\+\_\+afs\+\_\+ic\+\_\+ubit}, \textbf{ gsm0503\+\_\+amr\+\_\+crc6}, \textbf{ gsm0503\+\_\+tch\+\_\+afs\+\_\+10\+\_\+2}, \textbf{ gsm0503\+\_\+tch\+\_\+afs\+\_\+12\+\_\+2}, \textbf{ gsm0503\+\_\+tch\+\_\+afs\+\_\+4\+\_\+75}, \textbf{ gsm0503\+\_\+tch\+\_\+afs\+\_\+5\+\_\+15}, \textbf{ gsm0503\+\_\+tch\+\_\+afs\+\_\+5\+\_\+9}, \textbf{ gsm0503\+\_\+tch\+\_\+afs\+\_\+6\+\_\+7}, \textbf{ gsm0503\+\_\+tch\+\_\+afs\+\_\+7\+\_\+4}, \textbf{ gsm0503\+\_\+tch\+\_\+afs\+\_\+7\+\_\+95}, \textbf{ gsm0503\+\_\+tch\+\_\+burst\+\_\+map()}, \textbf{ gsm0503\+\_\+tch\+\_\+fr\+\_\+interleave()}, \textbf{ GSM\+\_\+\+MACBLOCK\+\_\+\+LEN}, \textbf{ h}, \textbf{ len()}, \textbf{ osmo\+\_\+conv\+\_\+encode()}, \textbf{ osmo\+\_\+crc8gen\+\_\+set\+\_\+bits()}, \textbf{ OSMO\+\_\+\+UNLIKELY}, \textbf{ tch\+\_\+amr\+\_\+disassemble()}, and \textbf{ tch\+\_\+amr\+\_\+merge()}.

\mbox{\label{group__coding_gaab9c00633bc6f683808014185465af7a}} 
\index{Coding@{Coding}!gsm0503\_tch\_ahs\_decode@{gsm0503\_tch\_ahs\_decode}}
\index{gsm0503\_tch\_ahs\_decode@{gsm0503\_tch\_ahs\_decode}!Coding@{Coding}}
\doxysubsubsection{gsm0503\_tch\_ahs\_decode()}
{\footnotesize\ttfamily int gsm0503\+\_\+tch\+\_\+ahs\+\_\+decode (\begin{DoxyParamCaption}\item[{uint8\+\_\+t $\ast$}]{tch\+\_\+data,  }\item[{const \textbf{ sbit\+\_\+t} $\ast$}]{bursts,  }\item[{int}]{odd,  }\item[{int}]{codec\+\_\+mode\+\_\+req,  }\item[{uint8\+\_\+t $\ast$}]{codec,  }\item[{int}]{codecs,  }\item[{uint8\+\_\+t $\ast$}]{ft,  }\item[{uint8\+\_\+t $\ast$}]{cmr,  }\item[{int $\ast$}]{n\+\_\+errors,  }\item[{int $\ast$}]{n\+\_\+bits\+\_\+total }\end{DoxyParamCaption})}



Perform channel decoding of a TCH/\+AHS channel according TS 05.\+03. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ out}}  & {\em tch\+\_\+data} & Codec frame in RTP payload format \\
\hline
\mbox{\texttt{ in}}  & {\em bursts} & buffer containing the symbols of 6 bursts \\
\hline
\mbox{\texttt{ in}}  & {\em odd} & Is this an odd (1) or even (0) frame number? \\
\hline
\mbox{\texttt{ in}}  & {\em codec\+\_\+mode\+\_\+req} & is this CMR (1) or CMC (0) \\
\hline
\mbox{\texttt{ in}}  & {\em codec} & array of active codecs (active codec set) \\
\hline
\mbox{\texttt{ in}}  & {\em codecs} & number of codecs in {\itshape codec} \\
\hline
 & {\em ft} & Frame Type; Input if {\itshape codec\+\_\+mode\+\_\+req} = 1, Output $\ast$ otherwise \\
\hline
\mbox{\texttt{ out}}  & {\em cmr} & Output in {\itshape codec\+\_\+mode\+\_\+req} = 1 \\
\hline
\mbox{\texttt{ out}}  & {\em n\+\_\+errors} & Number of detected bit errors \\
\hline
\mbox{\texttt{ out}}  & {\em n\+\_\+bits\+\_\+total} & Total number of bits \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
($>$=4) length of bytes used in {\itshape tch\+\_\+data} output buffer; ([0,3]) codec out of range; negative on error 
\end{DoxyReturn}


References \textbf{ gsm0503\+\_\+tch\+\_\+ahs\+\_\+decode\+\_\+dtx()}.

\mbox{\label{group__coding_gaffe80a231a3a5169bf20a96bc1109533}} 
\index{Coding@{Coding}!gsm0503\_tch\_ahs\_decode\_dtx@{gsm0503\_tch\_ahs\_decode\_dtx}}
\index{gsm0503\_tch\_ahs\_decode\_dtx@{gsm0503\_tch\_ahs\_decode\_dtx}!Coding@{Coding}}
\doxysubsubsection{gsm0503\_tch\_ahs\_decode\_dtx()}
{\footnotesize\ttfamily int gsm0503\+\_\+tch\+\_\+ahs\+\_\+decode\+\_\+dtx (\begin{DoxyParamCaption}\item[{uint8\+\_\+t $\ast$}]{tch\+\_\+data,  }\item[{const \textbf{ sbit\+\_\+t} $\ast$}]{bursts,  }\item[{int}]{odd,  }\item[{int}]{codec\+\_\+mode\+\_\+req,  }\item[{uint8\+\_\+t $\ast$}]{codec,  }\item[{int}]{codecs,  }\item[{uint8\+\_\+t $\ast$}]{ft,  }\item[{uint8\+\_\+t $\ast$}]{cmr,  }\item[{int $\ast$}]{n\+\_\+errors,  }\item[{int $\ast$}]{n\+\_\+bits\+\_\+total,  }\item[{uint8\+\_\+t $\ast$}]{dtx }\end{DoxyParamCaption})}



Perform channel decoding of a TCH/\+AHS channel according TS 05.\+03. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ out}}  & {\em tch\+\_\+data} & Codec frame in RTP payload format \\
\hline
\mbox{\texttt{ in}}  & {\em bursts} & buffer containing the symbols of 6 bursts \\
\hline
\mbox{\texttt{ in}}  & {\em odd} & Is this an odd (1) or even (0) frame number? \\
\hline
\mbox{\texttt{ in}}  & {\em codec\+\_\+mode\+\_\+req} & is this CMR (1) or CMC (0) \\
\hline
\mbox{\texttt{ in}}  & {\em codec} & array of active codecs (active codec set) \\
\hline
\mbox{\texttt{ in}}  & {\em codecs} & number of codecs in {\itshape codec} \\
\hline
 & {\em ft} & Frame Type; Input if {\itshape codec\+\_\+mode\+\_\+req} = 1, Output $\ast$ otherwise \\
\hline
\mbox{\texttt{ out}}  & {\em cmr} & Output in {\itshape codec\+\_\+mode\+\_\+req} = 1 \\
\hline
\mbox{\texttt{ out}}  & {\em n\+\_\+errors} & Number of detected bit errors \\
\hline
\mbox{\texttt{ out}}  & {\em n\+\_\+bits\+\_\+total} & Total number of bits \\
\hline
\mbox{\texttt{ in,out}}  & {\em dtx} & DTX frame type output, previous DTX frame type input \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
($>$=4) length of bytes used in {\itshape tch\+\_\+data} output buffer; ([0,3]) codec out of range; negative on error 
\end{DoxyReturn}


References \textbf{ \+\_\+xcch\+\_\+decode\+\_\+c\+B()}, \textbf{ AHS\+\_\+\+ONSET}, \textbf{ AHS\+\_\+\+SID\+\_\+\+FIRST\+\_\+\+INH}, \textbf{ AHS\+\_\+\+SID\+\_\+\+FIRST\+\_\+\+P1}, \textbf{ AHS\+\_\+\+SID\+\_\+\+FIRST\+\_\+\+P2}, \textbf{ AHS\+\_\+\+SID\+\_\+\+UPDATE}, \textbf{ AHS\+\_\+\+SID\+\_\+\+UPDATE\+\_\+\+CN}, \textbf{ AHS\+\_\+\+SID\+\_\+\+UPDATE\+\_\+\+INH}, \textbf{ AMR\+\_\+\+OTHER}, \textbf{ gsm0503\+\_\+amr\+\_\+crc14}, \textbf{ gsm0503\+\_\+amr\+\_\+crc6}, \textbf{ gsm0503\+\_\+detect\+\_\+ahs\+\_\+dtx\+\_\+frame2()}, \textbf{ gsm0503\+\_\+tch\+\_\+ahs\+\_\+4\+\_\+75}, \textbf{ gsm0503\+\_\+tch\+\_\+ahs\+\_\+5\+\_\+15}, \textbf{ gsm0503\+\_\+tch\+\_\+ahs\+\_\+5\+\_\+9}, \textbf{ gsm0503\+\_\+tch\+\_\+ahs\+\_\+6\+\_\+7}, \textbf{ gsm0503\+\_\+tch\+\_\+ahs\+\_\+7\+\_\+4}, \textbf{ gsm0503\+\_\+tch\+\_\+ahs\+\_\+7\+\_\+95}, \textbf{ gsm0503\+\_\+tch\+\_\+ahs\+\_\+decode\+\_\+inband()}, \textbf{ gsm0503\+\_\+tch\+\_\+axs\+\_\+sid\+\_\+update}, \textbf{ gsm0503\+\_\+tch\+\_\+burst\+\_\+unmap()}, \textbf{ gsm0503\+\_\+tch\+\_\+fr\+\_\+deinterleave()}, \textbf{ gsm0503\+\_\+tch\+\_\+hr\+\_\+deinterleave()}, \textbf{ GSM\+\_\+\+MACBLOCK\+\_\+\+LEN}, \textbf{ h}, \textbf{ len()}, \textbf{ osmo\+\_\+conv\+\_\+decode\+\_\+ber()}, \textbf{ osmo\+\_\+crc16gen\+\_\+check\+\_\+bits()}, \textbf{ osmo\+\_\+crc8gen\+\_\+check\+\_\+bits()}, \textbf{ tch\+\_\+amr\+\_\+reassemble()}, \textbf{ tch\+\_\+amr\+\_\+sid\+\_\+update\+\_\+append()}, and \textbf{ tch\+\_\+amr\+\_\+unmerge()}.



Referenced by \textbf{ gsm0503\+\_\+tch\+\_\+ahs\+\_\+decode()}.

\mbox{\label{group__coding_gaf722b2278abde0854b463aa1f1d3a455}} 
\index{Coding@{Coding}!gsm0503\_tch\_ahs\_decode\_inband@{gsm0503\_tch\_ahs\_decode\_inband}}
\index{gsm0503\_tch\_ahs\_decode\_inband@{gsm0503\_tch\_ahs\_decode\_inband}!Coding@{Coding}}
\doxysubsubsection{gsm0503\_tch\_ahs\_decode\_inband()}
{\footnotesize\ttfamily static uint8\+\_\+t gsm0503\+\_\+tch\+\_\+ahs\+\_\+decode\+\_\+inband (\begin{DoxyParamCaption}\item[{const \textbf{ sbit\+\_\+t} $\ast$}]{cB }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ gsm0503\+\_\+ahs\+\_\+ic\+\_\+sbit}, and \textbf{ k}.



Referenced by \textbf{ gsm0503\+\_\+tch\+\_\+ahs\+\_\+decode\+\_\+dtx()}.

\mbox{\label{group__coding_ga26fdcbd349fa6de5eba8e27c69d104f8}} 
\index{Coding@{Coding}!gsm0503\_tch\_ahs\_encode@{gsm0503\_tch\_ahs\_encode}}
\index{gsm0503\_tch\_ahs\_encode@{gsm0503\_tch\_ahs\_encode}!Coding@{Coding}}
\doxysubsubsection{gsm0503\_tch\_ahs\_encode()}
{\footnotesize\ttfamily int gsm0503\+\_\+tch\+\_\+ahs\+\_\+encode (\begin{DoxyParamCaption}\item[{\textbf{ ubit\+\_\+t} $\ast$}]{bursts,  }\item[{const uint8\+\_\+t $\ast$}]{tch\+\_\+data,  }\item[{int}]{len,  }\item[{int}]{codec\+\_\+mode\+\_\+req,  }\item[{const uint8\+\_\+t $\ast$}]{codec,  }\item[{int}]{codecs,  }\item[{uint8\+\_\+t}]{ft,  }\item[{uint8\+\_\+t}]{cmr }\end{DoxyParamCaption})}



Perform channel encoding on a TCH/\+AHS channel according to TS 05.\+03. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ out}}  & {\em bursts} & caller-\/allocated output buffer for bursts bits \\
\hline
\mbox{\texttt{ in}}  & {\em tch\+\_\+data} & Codec input data in RTP payload format \\
\hline
\mbox{\texttt{ in}}  & {\em len} & Length of {\itshape tch\+\_\+data} in bytes or 0 to generate a bad frame \\
\hline
\mbox{\texttt{ in}}  & {\em codec\+\_\+mode\+\_\+req} & Use CMR (1) or FT (0) \\
\hline
\mbox{\texttt{ in}}  & {\em codec} & Array of codecs (active codec set) \\
\hline
\mbox{\texttt{ in}}  & {\em codecs} & Number of entries in {\itshape codec} \\
\hline
\mbox{\texttt{ in}}  & {\em ft} & Frame Type to be used for encoding (index to {\itshape codec}) \\
\hline
\mbox{\texttt{ in}}  & {\em cmr} & Codec Mode Request (used in codec\+\_\+mode\+\_\+req = 1 only) \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 in case of success; negative on error 
\end{DoxyReturn}


References \textbf{ \+\_\+xcch\+\_\+encode\+\_\+c\+B()}, \textbf{ ARRAY\+\_\+\+SIZE}, \textbf{ gsm0503\+\_\+ahs\+\_\+ic\+\_\+ubit}, \textbf{ gsm0503\+\_\+amr\+\_\+crc6}, \textbf{ gsm0503\+\_\+tch\+\_\+ahs\+\_\+4\+\_\+75}, \textbf{ gsm0503\+\_\+tch\+\_\+ahs\+\_\+5\+\_\+15}, \textbf{ gsm0503\+\_\+tch\+\_\+ahs\+\_\+5\+\_\+9}, \textbf{ gsm0503\+\_\+tch\+\_\+ahs\+\_\+6\+\_\+7}, \textbf{ gsm0503\+\_\+tch\+\_\+ahs\+\_\+7\+\_\+4}, \textbf{ gsm0503\+\_\+tch\+\_\+ahs\+\_\+7\+\_\+95}, \textbf{ gsm0503\+\_\+tch\+\_\+burst\+\_\+map()}, \textbf{ gsm0503\+\_\+tch\+\_\+fr\+\_\+interleave()}, \textbf{ gsm0503\+\_\+tch\+\_\+hr\+\_\+interleave()}, \textbf{ GSM\+\_\+\+MACBLOCK\+\_\+\+LEN}, \textbf{ h}, \textbf{ len()}, \textbf{ osmo\+\_\+conv\+\_\+encode()}, \textbf{ osmo\+\_\+crc8gen\+\_\+set\+\_\+bits()}, \textbf{ OSMO\+\_\+\+UNLIKELY}, \textbf{ tch\+\_\+amr\+\_\+disassemble()}, and \textbf{ tch\+\_\+amr\+\_\+merge()}.

\mbox{\label{group__coding_gab254dccf6bff6900c2ad35bf02383d9f}} 
\index{Coding@{Coding}!gsm0503\_tch\_fr144\_decode@{gsm0503\_tch\_fr144\_decode}}
\index{gsm0503\_tch\_fr144\_decode@{gsm0503\_tch\_fr144\_decode}!Coding@{Coding}}
\doxysubsubsection{gsm0503\_tch\_fr144\_decode()}
{\footnotesize\ttfamily int gsm0503\+\_\+tch\+\_\+fr144\+\_\+decode (\begin{DoxyParamCaption}\item[{\textbf{ ubit\+\_\+t} $\ast$}]{data,  }\item[{const \textbf{ sbit\+\_\+t} $\ast$}]{bursts,  }\item[{int $\ast$}]{n\+\_\+errors,  }\item[{int $\ast$}]{n\+\_\+bits\+\_\+total }\end{DoxyParamCaption})}



Perform channel decoding of a TCH/14.\+4 channel as per section 3.\+8. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ out}}  & {\em data} & Caller-\/allocated buffer for decoded data (290 unpacked bits). \\
\hline
\mbox{\texttt{ in}}  & {\em bursts} & Buffer containing the symbols of 22 bursts, 22 $\ast$ 2 $\ast$ 58 == 2552 bits total. \\
\hline
\mbox{\texttt{ out}}  & {\em n\+\_\+errors} & Number of detected bit errors. \\
\hline
\mbox{\texttt{ out}}  & {\em n\+\_\+bits\+\_\+total} & Total number of bits. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
Number of unpacked bits used in the output buffer; negative on error. 
\end{DoxyReturn}


References \textbf{ data}, \textbf{ gsm0503\+\_\+tch\+\_\+f144}, \textbf{ gsm0503\+\_\+tch\+\_\+f96\+\_\+deinterleave()}, and \textbf{ osmo\+\_\+conv\+\_\+decode\+\_\+ber()}.

\mbox{\label{group__coding_ga45cabb51f385d1aa76f3ab9a351808c1}} 
\index{Coding@{Coding}!gsm0503\_tch\_fr144\_encode@{gsm0503\_tch\_fr144\_encode}}
\index{gsm0503\_tch\_fr144\_encode@{gsm0503\_tch\_fr144\_encode}!Coding@{Coding}}
\doxysubsubsection{gsm0503\_tch\_fr144\_encode()}
{\footnotesize\ttfamily int gsm0503\+\_\+tch\+\_\+fr144\+\_\+encode (\begin{DoxyParamCaption}\item[{\textbf{ ubit\+\_\+t} $\ast$}]{bursts,  }\item[{const \textbf{ ubit\+\_\+t} $\ast$}]{data }\end{DoxyParamCaption})}



Perform channel encoding of a TCH/\+F14.\+4 channel as per section 3.\+8. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ out}}  & {\em bursts} & Caller-\/allocated buffer for symbols of 22 bursts, 22 $\ast$ 2 $\ast$ 58 == 2552 bits total. \\
\hline
\mbox{\texttt{ in}}  & {\em data} & Data to be encoded (290 unpacked bits). \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 in case of success; negative on error 
\end{DoxyReturn}


References \textbf{ \+\_\+tch\+\_\+csd\+\_\+burst\+\_\+map()}, \textbf{ data}, \textbf{ gsm0503\+\_\+tch\+\_\+f144}, \textbf{ gsm0503\+\_\+tch\+\_\+f96\+\_\+interleave()}, and \textbf{ osmo\+\_\+conv\+\_\+encode()}.

\mbox{\label{group__coding_ga1d00f6b3a6348c2f20effedcdda103ef}} 
\index{Coding@{Coding}!gsm0503\_tch\_fr24\_decode@{gsm0503\_tch\_fr24\_decode}}
\index{gsm0503\_tch\_fr24\_decode@{gsm0503\_tch\_fr24\_decode}!Coding@{Coding}}
\doxysubsubsection{gsm0503\_tch\_fr24\_decode()}
{\footnotesize\ttfamily int gsm0503\+\_\+tch\+\_\+fr24\+\_\+decode (\begin{DoxyParamCaption}\item[{\textbf{ ubit\+\_\+t} $\ast$}]{data,  }\item[{const \textbf{ sbit\+\_\+t} $\ast$}]{bursts,  }\item[{int $\ast$}]{n\+\_\+errors,  }\item[{int $\ast$}]{n\+\_\+bits\+\_\+total }\end{DoxyParamCaption})}



Perform channel decoding of a TCH/\+F2.\+4 channel as per section 3.\+6. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ out}}  & {\em data} & Caller-\/allocated buffer for decoded data (72 unpacked bits). \\
\hline
\mbox{\texttt{ in}}  & {\em bursts} & Buffer containing the symbols of 8 bursts, 8 $\ast$ 2 $\ast$ 58 == 928 bits total. \\
\hline
\mbox{\texttt{ out}}  & {\em n\+\_\+errors} & Number of detected bit errors. \\
\hline
\mbox{\texttt{ out}}  & {\em n\+\_\+bits\+\_\+total} & Total number of bits. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
Number of unpacked bits used in the output buffer; negative on error. 
\end{DoxyReturn}


References \textbf{ data}, \textbf{ gsm0503\+\_\+tch\+\_\+burst\+\_\+unmap()}, \textbf{ gsm0503\+\_\+tch\+\_\+f24}, \textbf{ gsm0503\+\_\+tch\+\_\+fr\+\_\+deinterleave()}, and \textbf{ osmo\+\_\+conv\+\_\+decode\+\_\+ber()}.

\mbox{\label{group__coding_gaf9ab1afcb241f0d03b01d4157125a5a5}} 
\index{Coding@{Coding}!gsm0503\_tch\_fr24\_encode@{gsm0503\_tch\_fr24\_encode}}
\index{gsm0503\_tch\_fr24\_encode@{gsm0503\_tch\_fr24\_encode}!Coding@{Coding}}
\doxysubsubsection{gsm0503\_tch\_fr24\_encode()}
{\footnotesize\ttfamily int gsm0503\+\_\+tch\+\_\+fr24\+\_\+encode (\begin{DoxyParamCaption}\item[{\textbf{ ubit\+\_\+t} $\ast$}]{bursts,  }\item[{const \textbf{ ubit\+\_\+t} $\ast$}]{data }\end{DoxyParamCaption})}



Perform channel encoding of a TCH/\+F2.\+4 channel as per section 3.\+6. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ out}}  & {\em bursts} & Caller-\/allocated buffer for symbols of 8 bursts, 8 $\ast$ 2 $\ast$ 58 == 928 bits total. \\
\hline
\mbox{\texttt{ in}}  & {\em data} & Data to be encoded (72 unpacked bits). \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 in case of success; negative on error 
\end{DoxyReturn}


References \textbf{ data}, \textbf{ gsm0503\+\_\+tch\+\_\+burst\+\_\+map()}, \textbf{ gsm0503\+\_\+tch\+\_\+f24}, \textbf{ gsm0503\+\_\+tch\+\_\+fr\+\_\+interleave()}, \textbf{ h}, and \textbf{ osmo\+\_\+conv\+\_\+encode()}.

\mbox{\label{group__coding_ga3046a6661c2e7a88c5e5d4b85717de7f}} 
\index{Coding@{Coding}!gsm0503\_tch\_fr48\_decode@{gsm0503\_tch\_fr48\_decode}}
\index{gsm0503\_tch\_fr48\_decode@{gsm0503\_tch\_fr48\_decode}!Coding@{Coding}}
\doxysubsubsection{gsm0503\_tch\_fr48\_decode()}
{\footnotesize\ttfamily int gsm0503\+\_\+tch\+\_\+fr48\+\_\+decode (\begin{DoxyParamCaption}\item[{\textbf{ ubit\+\_\+t} $\ast$}]{data,  }\item[{const \textbf{ sbit\+\_\+t} $\ast$}]{bursts,  }\item[{int $\ast$}]{n\+\_\+errors,  }\item[{int $\ast$}]{n\+\_\+bits\+\_\+total }\end{DoxyParamCaption})}



Perform channel decoding of a TCH/\+F4.\+8 channel as per section 3.\+4. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ out}}  & {\em data} & Caller-\/allocated buffer for decoded data (120 unpacked bits). \\
\hline
\mbox{\texttt{ in}}  & {\em bursts} & Buffer containing the symbols of 22 bursts, 22 $\ast$ 2 $\ast$ 58 == 2552 bits total. \\
\hline
\mbox{\texttt{ out}}  & {\em n\+\_\+errors} & Number of detected bit errors. \\
\hline
\mbox{\texttt{ out}}  & {\em n\+\_\+bits\+\_\+total} & Total number of bits. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
Number of unpacked bits used in the output buffer; negative on error. 
\end{DoxyReturn}


References \textbf{ data}, \textbf{ gsm0503\+\_\+tch\+\_\+f48}, \textbf{ gsm0503\+\_\+tch\+\_\+f96\+\_\+deinterleave()}, \textbf{ k}, and \textbf{ osmo\+\_\+conv\+\_\+decode\+\_\+ber()}.

\mbox{\label{group__coding_ga7403e1f084346ab60bbc25b4abd3a4e3}} 
\index{Coding@{Coding}!gsm0503\_tch\_fr48\_encode@{gsm0503\_tch\_fr48\_encode}}
\index{gsm0503\_tch\_fr48\_encode@{gsm0503\_tch\_fr48\_encode}!Coding@{Coding}}
\doxysubsubsection{gsm0503\_tch\_fr48\_encode()}
{\footnotesize\ttfamily int gsm0503\+\_\+tch\+\_\+fr48\+\_\+encode (\begin{DoxyParamCaption}\item[{\textbf{ ubit\+\_\+t} $\ast$}]{bursts,  }\item[{const \textbf{ ubit\+\_\+t} $\ast$}]{data }\end{DoxyParamCaption})}



Perform channel encoding of a TCH/\+F4.\+8 channel as per section 3.\+4. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ out}}  & {\em bursts} & Caller-\/allocated buffer for symbols of 22 bursts, 22 $\ast$ 2 $\ast$ 58 == 2552 bits total. \\
\hline
\mbox{\texttt{ in}}  & {\em data} & Data to be encoded (120 unpacked bits). \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 in case of success; negative on error 
\end{DoxyReturn}


References \textbf{ \+\_\+tch\+\_\+csd\+\_\+burst\+\_\+map()}, \textbf{ data}, \textbf{ gsm0503\+\_\+tch\+\_\+f48}, \textbf{ gsm0503\+\_\+tch\+\_\+f96\+\_\+interleave()}, \textbf{ k}, and \textbf{ osmo\+\_\+conv\+\_\+encode()}.

\mbox{\label{group__coding_ga7ea10e056c14ac3702a88309b5fae41f}} 
\index{Coding@{Coding}!gsm0503\_tch\_fr96\_decode@{gsm0503\_tch\_fr96\_decode}}
\index{gsm0503\_tch\_fr96\_decode@{gsm0503\_tch\_fr96\_decode}!Coding@{Coding}}
\doxysubsubsection{gsm0503\_tch\_fr96\_decode()}
{\footnotesize\ttfamily int gsm0503\+\_\+tch\+\_\+fr96\+\_\+decode (\begin{DoxyParamCaption}\item[{\textbf{ ubit\+\_\+t} $\ast$}]{data,  }\item[{const \textbf{ sbit\+\_\+t} $\ast$}]{bursts,  }\item[{int $\ast$}]{n\+\_\+errors,  }\item[{int $\ast$}]{n\+\_\+bits\+\_\+total }\end{DoxyParamCaption})}



Perform channel decoding of a TCH/\+F9.\+6 channel as per section 3.\+3. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ out}}  & {\em data} & Caller-\/allocated buffer for decoded data (240 unpacked bits). \\
\hline
\mbox{\texttt{ in}}  & {\em bursts} & Buffer containing the symbols of 22 bursts, 22 $\ast$ 2 $\ast$ 58 == 2552 bits total. \\
\hline
\mbox{\texttt{ out}}  & {\em n\+\_\+errors} & Number of detected bit errors. \\
\hline
\mbox{\texttt{ out}}  & {\em n\+\_\+bits\+\_\+total} & Total number of bits. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
Number of unpacked bits used in the output buffer; negative on error. 
\end{DoxyReturn}


References \textbf{ data}, \textbf{ gsm0503\+\_\+tch\+\_\+f96}, \textbf{ gsm0503\+\_\+tch\+\_\+f96\+\_\+deinterleave()}, and \textbf{ osmo\+\_\+conv\+\_\+decode\+\_\+ber()}.



Referenced by \textbf{ gsm0503\+\_\+tch\+\_\+hr48\+\_\+decode()}.

\mbox{\label{group__coding_gac087fd5cbb0e876cea5cc6570ca7d8bb}} 
\index{Coding@{Coding}!gsm0503\_tch\_fr96\_encode@{gsm0503\_tch\_fr96\_encode}}
\index{gsm0503\_tch\_fr96\_encode@{gsm0503\_tch\_fr96\_encode}!Coding@{Coding}}
\doxysubsubsection{gsm0503\_tch\_fr96\_encode()}
{\footnotesize\ttfamily int gsm0503\+\_\+tch\+\_\+fr96\+\_\+encode (\begin{DoxyParamCaption}\item[{\textbf{ ubit\+\_\+t} $\ast$}]{bursts,  }\item[{const \textbf{ ubit\+\_\+t} $\ast$}]{data }\end{DoxyParamCaption})}



Perform channel encoding of a TCH/\+F9.\+6 channel as per section 3.\+3. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ out}}  & {\em bursts} & Caller-\/allocated buffer for symbols of 22 bursts, 22 $\ast$ 2 $\ast$ 58 == 2552 bits total. \\
\hline
\mbox{\texttt{ in}}  & {\em data} & Data to be encoded (240 unpacked bits). \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 in case of success; negative on error. 
\end{DoxyReturn}


References \textbf{ \+\_\+tch\+\_\+csd\+\_\+burst\+\_\+map()}, \textbf{ data}, \textbf{ gsm0503\+\_\+tch\+\_\+f96}, \textbf{ gsm0503\+\_\+tch\+\_\+f96\+\_\+interleave()}, and \textbf{ osmo\+\_\+conv\+\_\+encode()}.



Referenced by \textbf{ gsm0503\+\_\+tch\+\_\+hr48\+\_\+encode()}.

\mbox{\label{group__coding_ga9e0cfc96b6060108e6d9b4a87b55ed77}} 
\index{Coding@{Coding}!gsm0503\_tch\_fr\_decode@{gsm0503\_tch\_fr\_decode}}
\index{gsm0503\_tch\_fr\_decode@{gsm0503\_tch\_fr\_decode}!Coding@{Coding}}
\doxysubsubsection{gsm0503\_tch\_fr\_decode()}
{\footnotesize\ttfamily int gsm0503\+\_\+tch\+\_\+fr\+\_\+decode (\begin{DoxyParamCaption}\item[{uint8\+\_\+t $\ast$}]{tch\+\_\+data,  }\item[{const \textbf{ sbit\+\_\+t} $\ast$}]{bursts,  }\item[{int}]{net\+\_\+order,  }\item[{int}]{efr,  }\item[{int $\ast$}]{n\+\_\+errors,  }\item[{int $\ast$}]{n\+\_\+bits\+\_\+total }\end{DoxyParamCaption})}



Perform channel decoding of a FR/\+EFR channel according TS 05.\+03. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ out}}  & {\em tch\+\_\+data} & Codec frame in RTP payload format \\
\hline
\mbox{\texttt{ in}}  & {\em bursts} & buffer containing the symbols of 8 bursts \\
\hline
\mbox{\texttt{ in}}  & {\em net\+\_\+order} & FIXME \\
\hline
\mbox{\texttt{ in}}  & {\em efr} & Is this channel using EFR (1) or FR (0) \\
\hline
\mbox{\texttt{ out}}  & {\em n\+\_\+errors} & Number of detected bit errors \\
\hline
\mbox{\texttt{ out}}  & {\em n\+\_\+bits\+\_\+total} & Total number of bits \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
length of bytes used in {\itshape tch\+\_\+data} output buffer; negative on error 
\end{DoxyReturn}


References \textbf{ \+\_\+xcch\+\_\+decode\+\_\+c\+B()}, \textbf{ gsm0503\+\_\+tch\+\_\+burst\+\_\+unmap()}, \textbf{ gsm0503\+\_\+tch\+\_\+efr\+\_\+crc8}, \textbf{ gsm0503\+\_\+tch\+\_\+fr}, \textbf{ gsm0503\+\_\+tch\+\_\+fr\+\_\+crc3}, \textbf{ gsm0503\+\_\+tch\+\_\+fr\+\_\+deinterleave()}, \textbf{ GSM\+\_\+\+EFR\+\_\+\+BYTES}, \textbf{ GSM\+\_\+\+FR\+\_\+\+BYTES}, \textbf{ GSM\+\_\+\+MACBLOCK\+\_\+\+LEN}, \textbf{ h}, \textbf{ len()}, \textbf{ osmo\+\_\+conv\+\_\+decode\+\_\+ber()}, \textbf{ osmo\+\_\+crc8gen\+\_\+check\+\_\+bits()}, \textbf{ tch\+\_\+efr\+\_\+d\+\_\+to\+\_\+w()}, \textbf{ tch\+\_\+efr\+\_\+protected()}, \textbf{ tch\+\_\+efr\+\_\+reassemble()}, \textbf{ tch\+\_\+efr\+\_\+unreorder()}, \textbf{ tch\+\_\+fr\+\_\+d\+\_\+to\+\_\+b()}, \textbf{ tch\+\_\+fr\+\_\+reassemble()}, and \textbf{ tch\+\_\+fr\+\_\+unreorder()}.

\mbox{\label{group__coding_ga8b1d6e6325eff6d29be9f05813fc7386}} 
\index{Coding@{Coding}!gsm0503\_tch\_fr\_encode@{gsm0503\_tch\_fr\_encode}}
\index{gsm0503\_tch\_fr\_encode@{gsm0503\_tch\_fr\_encode}!Coding@{Coding}}
\doxysubsubsection{gsm0503\_tch\_fr\_encode()}
{\footnotesize\ttfamily int gsm0503\+\_\+tch\+\_\+fr\+\_\+encode (\begin{DoxyParamCaption}\item[{\textbf{ ubit\+\_\+t} $\ast$}]{bursts,  }\item[{const uint8\+\_\+t $\ast$}]{tch\+\_\+data,  }\item[{int}]{len,  }\item[{int}]{net\+\_\+order }\end{DoxyParamCaption})}



Perform channel encoding on a TCH/\+FS channel according to TS 05.\+03. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ out}}  & {\em bursts} & caller-\/allocated output buffer for bursts bits \\
\hline
\mbox{\texttt{ in}}  & {\em tch\+\_\+data} & Codec input data in RTP payload format \\
\hline
\mbox{\texttt{ in}}  & {\em len} & Length of {\itshape tch\+\_\+data} in bytes \\
\hline
\mbox{\texttt{ in}}  & {\em net\+\_\+order} & FIXME \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 in case of success; negative on error 
\end{DoxyReturn}


References \textbf{ \+\_\+xcch\+\_\+encode\+\_\+c\+B()}, \textbf{ gsm0503\+\_\+tch\+\_\+burst\+\_\+map()}, \textbf{ gsm0503\+\_\+tch\+\_\+efr\+\_\+crc8}, \textbf{ gsm0503\+\_\+tch\+\_\+fr}, \textbf{ gsm0503\+\_\+tch\+\_\+fr\+\_\+crc3}, \textbf{ gsm0503\+\_\+tch\+\_\+fr\+\_\+interleave()}, \textbf{ GSM\+\_\+\+EFR\+\_\+\+BYTES}, \textbf{ GSM\+\_\+\+FR\+\_\+\+BYTES}, \textbf{ GSM\+\_\+\+MACBLOCK\+\_\+\+LEN}, \textbf{ h}, \textbf{ len()}, \textbf{ osmo\+\_\+conv\+\_\+encode()}, \textbf{ osmo\+\_\+crc8gen\+\_\+set\+\_\+bits()}, \textbf{ tch\+\_\+efr\+\_\+disassemble()}, \textbf{ tch\+\_\+efr\+\_\+protected()}, \textbf{ tch\+\_\+efr\+\_\+reorder()}, \textbf{ tch\+\_\+efr\+\_\+w\+\_\+to\+\_\+d()}, \textbf{ tch\+\_\+fr\+\_\+b\+\_\+to\+\_\+d()}, \textbf{ tch\+\_\+fr\+\_\+disassemble()}, and \textbf{ tch\+\_\+fr\+\_\+reorder()}.

\mbox{\label{group__coding_gae14f30123469935205f1108f16d3edff}} 
\index{Coding@{Coding}!gsm0503\_tch\_fr\_facch\_decode@{gsm0503\_tch\_fr\_facch\_decode}}
\index{gsm0503\_tch\_fr\_facch\_decode@{gsm0503\_tch\_fr\_facch\_decode}!Coding@{Coding}}
\doxysubsubsection{gsm0503\_tch\_fr\_facch\_decode()}
{\footnotesize\ttfamily int gsm0503\+\_\+tch\+\_\+fr\+\_\+facch\+\_\+decode (\begin{DoxyParamCaption}\item[{uint8\+\_\+t $\ast$}]{data,  }\item[{const \textbf{ sbit\+\_\+t} $\ast$}]{bursts,  }\item[{int $\ast$}]{n\+\_\+errors,  }\item[{int $\ast$}]{n\+\_\+bits\+\_\+total }\end{DoxyParamCaption})}



Perform channel decoding of a FACCH/F data as per section 4.\+2. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ out}}  & {\em data} & Caller-\/allocated buffer for decoded FACCH (GSM\+\_\+\+MACBLOCK\+\_\+\+LEN). \\
\hline
\mbox{\texttt{ in}}  & {\em bursts} & Buffer containing the symbols of 8 bursts, 8 $\ast$ 2 $\ast$ 58 == 928 bits total. \\
\hline
\mbox{\texttt{ out}}  & {\em n\+\_\+errors} & Number of detected bit errors. \\
\hline
\mbox{\texttt{ out}}  & {\em n\+\_\+bits\+\_\+total} & Total number of bits. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
Number of bytes used in the output buffer; negative on error. 
\end{DoxyReturn}


References \textbf{ \+\_\+xcch\+\_\+decode\+\_\+c\+B()}, \textbf{ data}, \textbf{ gsm0503\+\_\+tch\+\_\+burst\+\_\+unmap()}, \textbf{ gsm0503\+\_\+tch\+\_\+fr\+\_\+deinterleave()}, and \textbf{ GSM\+\_\+\+MACBLOCK\+\_\+\+LEN}.

\mbox{\label{group__coding_ga42f4ba3c943bcf4081b3cbb2c7f3ff1f}} 
\index{Coding@{Coding}!gsm0503\_tch\_fr\_facch\_encode@{gsm0503\_tch\_fr\_facch\_encode}}
\index{gsm0503\_tch\_fr\_facch\_encode@{gsm0503\_tch\_fr\_facch\_encode}!Coding@{Coding}}
\doxysubsubsection{gsm0503\_tch\_fr\_facch\_encode()}
{\footnotesize\ttfamily int gsm0503\+\_\+tch\+\_\+fr\+\_\+facch\+\_\+encode (\begin{DoxyParamCaption}\item[{\textbf{ ubit\+\_\+t} $\ast$}]{bursts,  }\item[{const uint8\+\_\+t $\ast$}]{data }\end{DoxyParamCaption})}



Perform channel encoding of a FACCH/F data as per section 4.\+2. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ out}}  & {\em bursts} & Caller-\/allocated buffer for symbols of 8 bursts, 8 $\ast$ 2 $\ast$ 58 == 928 bits total. \\
\hline
\mbox{\texttt{ in}}  & {\em data} & FACCH MAC block to be encoded (GSM\+\_\+\+MACBLOCK\+\_\+\+LEN). \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 in case of success; negative on error 
\end{DoxyReturn}


References \textbf{ \+\_\+xcch\+\_\+encode\+\_\+c\+B()}, \textbf{ data}, \textbf{ gsm0503\+\_\+tch\+\_\+burst\+\_\+map()}, \textbf{ gsm0503\+\_\+tch\+\_\+fr\+\_\+interleave()}, and \textbf{ h}.

\mbox{\label{group__coding_gaffe840cab7925dcb960f80936c734e34}} 
\index{Coding@{Coding}!gsm0503\_tch\_hr24\_decode@{gsm0503\_tch\_hr24\_decode}}
\index{gsm0503\_tch\_hr24\_decode@{gsm0503\_tch\_hr24\_decode}!Coding@{Coding}}
\doxysubsubsection{gsm0503\_tch\_hr24\_decode()}
{\footnotesize\ttfamily int gsm0503\+\_\+tch\+\_\+hr24\+\_\+decode (\begin{DoxyParamCaption}\item[{\textbf{ ubit\+\_\+t} $\ast$}]{data,  }\item[{const \textbf{ sbit\+\_\+t} $\ast$}]{bursts,  }\item[{int $\ast$}]{n\+\_\+errors,  }\item[{int $\ast$}]{n\+\_\+bits\+\_\+total }\end{DoxyParamCaption})}



Perform channel decoding of a TCH/\+H2.\+4 channel as per section 3.\+7. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ out}}  & {\em data} & Caller-\/allocated buffer for decoded data (144 unpacked bits). \\
\hline
\mbox{\texttt{ in}}  & {\em bursts} & Buffer containing the symbols of 22 bursts, 22 $\ast$ 2 $\ast$ 58 == 2552 bits total. \\
\hline
\mbox{\texttt{ out}}  & {\em n\+\_\+errors} & Number of detected bit errors. \\
\hline
\mbox{\texttt{ out}}  & {\em n\+\_\+bits\+\_\+total} & Total number of bits. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
Number of unpacked bits used in the output buffer; negative on error. 
\end{DoxyReturn}


References \textbf{ data}, \textbf{ gsm0503\+\_\+tch\+\_\+f96\+\_\+deinterleave()}, \textbf{ gsm0503\+\_\+tch\+\_\+h24}, and \textbf{ osmo\+\_\+conv\+\_\+decode\+\_\+ber()}.

\mbox{\label{group__coding_ga52d369adf44e732fe215e1c09ce9e444}} 
\index{Coding@{Coding}!gsm0503\_tch\_hr24\_encode@{gsm0503\_tch\_hr24\_encode}}
\index{gsm0503\_tch\_hr24\_encode@{gsm0503\_tch\_hr24\_encode}!Coding@{Coding}}
\doxysubsubsection{gsm0503\_tch\_hr24\_encode()}
{\footnotesize\ttfamily int gsm0503\+\_\+tch\+\_\+hr24\+\_\+encode (\begin{DoxyParamCaption}\item[{\textbf{ ubit\+\_\+t} $\ast$}]{bursts,  }\item[{const \textbf{ ubit\+\_\+t} $\ast$}]{data }\end{DoxyParamCaption})}



Perform channel encoding of a TCH/\+H2.\+4 channel as per section 3.\+7. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ out}}  & {\em bursts} & Caller-\/allocated buffer for symbols of 22 bursts, 22 $\ast$ 2 $\ast$ 58 == 2552 bits total. \\
\hline
\mbox{\texttt{ in}}  & {\em data} & Data to be encoded (144 unpacked bits). \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 in case of success; negative on error 
\end{DoxyReturn}


References \textbf{ \+\_\+tch\+\_\+csd\+\_\+burst\+\_\+map()}, \textbf{ data}, \textbf{ gsm0503\+\_\+tch\+\_\+f96\+\_\+interleave()}, \textbf{ gsm0503\+\_\+tch\+\_\+h24}, and \textbf{ osmo\+\_\+conv\+\_\+encode()}.

\mbox{\label{group__coding_gaeabf84d3a0705967343ddecba972a1e8}} 
\index{Coding@{Coding}!gsm0503\_tch\_hr48\_decode@{gsm0503\_tch\_hr48\_decode}}
\index{gsm0503\_tch\_hr48\_decode@{gsm0503\_tch\_hr48\_decode}!Coding@{Coding}}
\doxysubsubsection{gsm0503\_tch\_hr48\_decode()}
{\footnotesize\ttfamily int gsm0503\+\_\+tch\+\_\+hr48\+\_\+decode (\begin{DoxyParamCaption}\item[{\textbf{ ubit\+\_\+t} $\ast$}]{data,  }\item[{const \textbf{ sbit\+\_\+t} $\ast$}]{bursts,  }\item[{int $\ast$}]{n\+\_\+errors,  }\item[{int $\ast$}]{n\+\_\+bits\+\_\+total }\end{DoxyParamCaption})}



Perform channel decoding of a TCH/\+H4.\+8 channel as per section 3.\+5. 

The algorithm is identical to TCH/\+F9.\+6, so it\textquotesingle{}s just a wrapper. 
\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ out}}  & {\em data} & Caller-\/allocated buffer for decoded data (240 unpacked bits). \\
\hline
\mbox{\texttt{ in}}  & {\em bursts} & Buffer containing the symbols of 22 bursts, 22 $\ast$ 2 $\ast$ 58 == 2552 bits total. \\
\hline
\mbox{\texttt{ out}}  & {\em n\+\_\+errors} & Number of detected bit errors. \\
\hline
\mbox{\texttt{ out}}  & {\em n\+\_\+bits\+\_\+total} & Total number of bits. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
Number of unpacked bits used in the output buffer; negative on error. 
\end{DoxyReturn}


References \textbf{ data}, and \textbf{ gsm0503\+\_\+tch\+\_\+fr96\+\_\+decode()}.

\mbox{\label{group__coding_ga459ace47353ae0e74af8fcbfa86849c2}} 
\index{Coding@{Coding}!gsm0503\_tch\_hr48\_encode@{gsm0503\_tch\_hr48\_encode}}
\index{gsm0503\_tch\_hr48\_encode@{gsm0503\_tch\_hr48\_encode}!Coding@{Coding}}
\doxysubsubsection{gsm0503\_tch\_hr48\_encode()}
{\footnotesize\ttfamily int gsm0503\+\_\+tch\+\_\+hr48\+\_\+encode (\begin{DoxyParamCaption}\item[{\textbf{ ubit\+\_\+t} $\ast$}]{bursts,  }\item[{const \textbf{ ubit\+\_\+t} $\ast$}]{data }\end{DoxyParamCaption})}



Perform channel encoding of a TCH/\+H4.\+8 channel as per section 3.\+5. 

The algorithm is identical to TCH/\+F9.\+6, so it\textquotesingle{}s just a wrapper. 
\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ out}}  & {\em bursts} & Caller-\/allocated buffer for symbols of 22 bursts, 22 $\ast$ 2 $\ast$ 58 == 2552 bits total. \\
\hline
\mbox{\texttt{ in}}  & {\em data} & Data to be encoded (240 unpacked bits). \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 in case of success; negative on error 
\end{DoxyReturn}


References \textbf{ data}, and \textbf{ gsm0503\+\_\+tch\+\_\+fr96\+\_\+encode()}.

\mbox{\label{group__coding_ga81401428d93aefa21534191db69b465f}} 
\index{Coding@{Coding}!gsm0503\_tch\_hr\_decode@{gsm0503\_tch\_hr\_decode}}
\index{gsm0503\_tch\_hr\_decode@{gsm0503\_tch\_hr\_decode}!Coding@{Coding}}
\doxysubsubsection{gsm0503\_tch\_hr\_decode()}
{\footnotesize\ttfamily int gsm0503\+\_\+tch\+\_\+hr\+\_\+decode (\begin{DoxyParamCaption}\item[{uint8\+\_\+t $\ast$}]{tch\+\_\+data,  }\item[{const \textbf{ sbit\+\_\+t} $\ast$}]{bursts,  }\item[{int}]{odd,  }\item[{int $\ast$}]{n\+\_\+errors,  }\item[{int $\ast$}]{n\+\_\+bits\+\_\+total }\end{DoxyParamCaption})}



Perform channel decoding of a HR(v1) channel according TS 05.\+03, deprecated legacy API. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ out}}  & {\em tch\+\_\+data} & Codec frame in pseudo-\/\+RFC5993 format \\
\hline
\mbox{\texttt{ in}}  & {\em bursts} & buffer containing the symbols of 6 bursts \\
\hline
\mbox{\texttt{ in}}  & {\em odd} & Odd (1) or even (0) frame number \\
\hline
\mbox{\texttt{ out}}  & {\em n\+\_\+errors} & Number of detected bit errors \\
\hline
\mbox{\texttt{ out}}  & {\em n\+\_\+bits\+\_\+total} & Total number of bits \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
length of bytes used in {\itshape tch\+\_\+data} output buffer; negative on error
\end{DoxyReturn}
The HR1 codec frame format returned by this function is pseudo-\/\+RFC5993, not true RFC 5993, as there is no SID classification being done and the FT bits in the ToC octet are always set to 0 -\/ but this arguably-\/bogus format is the legacy public API. 

References \textbf{ gsm0503\+\_\+tch\+\_\+hr\+\_\+decode2()}, \textbf{ GSM\+\_\+\+HR\+\_\+\+BYTES}, and \textbf{ GSM\+\_\+\+HR\+\_\+\+BYTES\+\_\+\+RTP\+\_\+\+RFC5993}.

\mbox{\label{group__coding_gac65bf1238eabc998313e977905444f40}} 
\index{Coding@{Coding}!gsm0503\_tch\_hr\_decode2@{gsm0503\_tch\_hr\_decode2}}
\index{gsm0503\_tch\_hr\_decode2@{gsm0503\_tch\_hr\_decode2}!Coding@{Coding}}
\doxysubsubsection{gsm0503\_tch\_hr\_decode2()}
{\footnotesize\ttfamily int gsm0503\+\_\+tch\+\_\+hr\+\_\+decode2 (\begin{DoxyParamCaption}\item[{uint8\+\_\+t $\ast$}]{tch\+\_\+data,  }\item[{const \textbf{ sbit\+\_\+t} $\ast$}]{bursts,  }\item[{int}]{odd,  }\item[{int $\ast$}]{n\+\_\+errors,  }\item[{int $\ast$}]{n\+\_\+bits\+\_\+total }\end{DoxyParamCaption})}



Perform channel decoding of a HR(v1) channel according TS 05.\+03. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ out}}  & {\em tch\+\_\+data} & Codec frame in TS 101 318 canonical format \\
\hline
\mbox{\texttt{ in}}  & {\em bursts} & buffer containing the symbols of 6 bursts \\
\hline
\mbox{\texttt{ in}}  & {\em odd} & Odd (1) or even (0) frame number \\
\hline
\mbox{\texttt{ out}}  & {\em n\+\_\+errors} & Number of detected bit errors \\
\hline
\mbox{\texttt{ out}}  & {\em n\+\_\+bits\+\_\+total} & Total number of bits \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
length of bytes used in {\itshape tch\+\_\+data} output buffer; negative on error 
\end{DoxyReturn}


References \textbf{ \+\_\+xcch\+\_\+decode\+\_\+c\+B()}, \textbf{ gsm0503\+\_\+tch\+\_\+burst\+\_\+unmap()}, \textbf{ gsm0503\+\_\+tch\+\_\+fr\+\_\+crc3}, \textbf{ gsm0503\+\_\+tch\+\_\+fr\+\_\+deinterleave()}, \textbf{ gsm0503\+\_\+tch\+\_\+hr}, \textbf{ gsm0503\+\_\+tch\+\_\+hr\+\_\+deinterleave()}, \textbf{ GSM\+\_\+\+HR\+\_\+\+BYTES}, \textbf{ GSM\+\_\+\+MACBLOCK\+\_\+\+LEN}, \textbf{ h}, \textbf{ osmo\+\_\+conv\+\_\+decode\+\_\+ber()}, \textbf{ osmo\+\_\+crc8gen\+\_\+check\+\_\+bits()}, \textbf{ tch\+\_\+hr\+\_\+d\+\_\+to\+\_\+b()}, \textbf{ tch\+\_\+hr\+\_\+reassemble()}, and \textbf{ tch\+\_\+hr\+\_\+unreorder()}.



Referenced by \textbf{ gsm0503\+\_\+tch\+\_\+hr\+\_\+decode()}.

\mbox{\label{group__coding_gaaba88e74c29c9f9e0a738f62cedad203}} 
\index{Coding@{Coding}!gsm0503\_tch\_hr\_encode@{gsm0503\_tch\_hr\_encode}}
\index{gsm0503\_tch\_hr\_encode@{gsm0503\_tch\_hr\_encode}!Coding@{Coding}}
\doxysubsubsection{gsm0503\_tch\_hr\_encode()}
{\footnotesize\ttfamily int gsm0503\+\_\+tch\+\_\+hr\+\_\+encode (\begin{DoxyParamCaption}\item[{\textbf{ ubit\+\_\+t} $\ast$}]{bursts,  }\item[{const uint8\+\_\+t $\ast$}]{tch\+\_\+data,  }\item[{int}]{len }\end{DoxyParamCaption})}



Perform channel encoding on a TCH/\+HS channel according to TS 05.\+03. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ out}}  & {\em bursts} & caller-\/allocated output buffer for bursts bits \\
\hline
\mbox{\texttt{ in}}  & {\em tch\+\_\+data} & Codec input data in RTP payload format \\
\hline
\mbox{\texttt{ in}}  & {\em len} & Length of {\itshape tch\+\_\+data} in bytes \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 in case of success; negative on error 
\end{DoxyReturn}


References \textbf{ \+\_\+xcch\+\_\+encode\+\_\+c\+B()}, \textbf{ gsm0503\+\_\+tch\+\_\+burst\+\_\+map()}, \textbf{ gsm0503\+\_\+tch\+\_\+fr\+\_\+crc3}, \textbf{ gsm0503\+\_\+tch\+\_\+fr\+\_\+interleave()}, \textbf{ gsm0503\+\_\+tch\+\_\+hr}, \textbf{ gsm0503\+\_\+tch\+\_\+hr\+\_\+interleave()}, \textbf{ GSM\+\_\+\+HR\+\_\+\+BYTES}, \textbf{ GSM\+\_\+\+HR\+\_\+\+BYTES\+\_\+\+RTP\+\_\+\+RFC5993}, \textbf{ GSM\+\_\+\+MACBLOCK\+\_\+\+LEN}, \textbf{ h}, \textbf{ len()}, \textbf{ osmo\+\_\+conv\+\_\+encode()}, \textbf{ osmo\+\_\+crc8gen\+\_\+set\+\_\+bits()}, \textbf{ tch\+\_\+hr\+\_\+b\+\_\+to\+\_\+d()}, \textbf{ tch\+\_\+hr\+\_\+disassemble()}, and \textbf{ tch\+\_\+hr\+\_\+reorder()}.

\mbox{\label{group__coding_ga678aff059e13739a56e8d48ce0f556e5}} 
\index{Coding@{Coding}!gsm0503\_tch\_hr\_facch\_decode@{gsm0503\_tch\_hr\_facch\_decode}}
\index{gsm0503\_tch\_hr\_facch\_decode@{gsm0503\_tch\_hr\_facch\_decode}!Coding@{Coding}}
\doxysubsubsection{gsm0503\_tch\_hr\_facch\_decode()}
{\footnotesize\ttfamily int gsm0503\+\_\+tch\+\_\+hr\+\_\+facch\+\_\+decode (\begin{DoxyParamCaption}\item[{uint8\+\_\+t $\ast$}]{data,  }\item[{const \textbf{ sbit\+\_\+t} $\ast$}]{bursts,  }\item[{int $\ast$}]{n\+\_\+errors,  }\item[{int $\ast$}]{n\+\_\+bits\+\_\+total }\end{DoxyParamCaption})}



Perform channel decoding of a FACCH/H data as per section 4.\+3. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ out}}  & {\em data} & Caller-\/allocated buffer for decoded FACCH (GSM\+\_\+\+MACBLOCK\+\_\+\+LEN). \\
\hline
\mbox{\texttt{ in}}  & {\em bursts} & Buffer containing the symbols of 6 bursts, 6 $\ast$ 2 $\ast$ 58 == 696 bits total. \\
\hline
\mbox{\texttt{ out}}  & {\em n\+\_\+errors} & Number of detected bit errors. \\
\hline
\mbox{\texttt{ out}}  & {\em n\+\_\+bits\+\_\+total} & Total number of bits. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
Number of bytes used in the output buffer; negative on error. 
\end{DoxyReturn}


References \textbf{ \+\_\+xcch\+\_\+decode\+\_\+c\+B()}, \textbf{ data}, \textbf{ gsm0503\+\_\+tch\+\_\+burst\+\_\+unmap()}, \textbf{ gsm0503\+\_\+tch\+\_\+fr\+\_\+deinterleave()}, and \textbf{ GSM\+\_\+\+MACBLOCK\+\_\+\+LEN}.

\mbox{\label{group__coding_ga5cebfcc3954a869ab4bca14bdf59a6fd}} 
\index{Coding@{Coding}!gsm0503\_tch\_hr\_facch\_encode@{gsm0503\_tch\_hr\_facch\_encode}}
\index{gsm0503\_tch\_hr\_facch\_encode@{gsm0503\_tch\_hr\_facch\_encode}!Coding@{Coding}}
\doxysubsubsection{gsm0503\_tch\_hr\_facch\_encode()}
{\footnotesize\ttfamily int gsm0503\+\_\+tch\+\_\+hr\+\_\+facch\+\_\+encode (\begin{DoxyParamCaption}\item[{\textbf{ ubit\+\_\+t} $\ast$}]{bursts,  }\item[{const uint8\+\_\+t $\ast$}]{data }\end{DoxyParamCaption})}



Perform channel encoding of a FACCH/H data as per section 4.\+3. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ out}}  & {\em bursts} & Caller-\/allocated buffer for symbols of 6 bursts, 6 $\ast$ 2 $\ast$ 58 == 696 bits total. \\
\hline
\mbox{\texttt{ in}}  & {\em data} & FACCH MAC block to be encoded (GSM\+\_\+\+MACBLOCK\+\_\+\+LEN). \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 in case of success; negative on error 
\end{DoxyReturn}


References \textbf{ \+\_\+xcch\+\_\+encode\+\_\+c\+B()}, \textbf{ data}, \textbf{ gsm0503\+\_\+tch\+\_\+burst\+\_\+map()}, \textbf{ gsm0503\+\_\+tch\+\_\+fr\+\_\+interleave()}, and \textbf{ h}.

\mbox{\label{group__coding_ga34e4e392553fc551b999564119a7e0ef}} 
\index{Coding@{Coding}!gsm0503\_xcch\_decode@{gsm0503\_xcch\_decode}}
\index{gsm0503\_xcch\_decode@{gsm0503\_xcch\_decode}!Coding@{Coding}}
\doxysubsubsection{gsm0503\_xcch\_decode()}
{\footnotesize\ttfamily int gsm0503\+\_\+xcch\+\_\+decode (\begin{DoxyParamCaption}\item[{uint8\+\_\+t $\ast$}]{l2\+\_\+data,  }\item[{const \textbf{ sbit\+\_\+t} $\ast$}]{bursts,  }\item[{int $\ast$}]{n\+\_\+errors,  }\item[{int $\ast$}]{n\+\_\+bits\+\_\+total }\end{DoxyParamCaption})}



Decoding of x\+CCH data from bursts to L2 frame. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ out}}  & {\em l2\+\_\+data} & caller-\/allocated output data buffer \\
\hline
\mbox{\texttt{ in}}  & {\em bursts} & four GSM bursts in soft-\/bits \\
\hline
\mbox{\texttt{ out}}  & {\em n\+\_\+errors} & Number of detected errors \\
\hline
\mbox{\texttt{ out}}  & {\em n\+\_\+bits\+\_\+total} & Number of total coded bits \\
\hline
\end{DoxyParams}


References \textbf{ \+\_\+xcch\+\_\+decode\+\_\+c\+B()}, \textbf{ gsm0503\+\_\+xcch\+\_\+burst\+\_\+unmap()}, and \textbf{ gsm0503\+\_\+xcch\+\_\+deinterleave()}.

\mbox{\label{group__coding_ga18c423289aa88bc11c42f9412e269bee}} 
\index{Coding@{Coding}!gsm0503\_xcch\_encode@{gsm0503\_xcch\_encode}}
\index{gsm0503\_xcch\_encode@{gsm0503\_xcch\_encode}!Coding@{Coding}}
\doxysubsubsection{gsm0503\_xcch\_encode()}
{\footnotesize\ttfamily int gsm0503\+\_\+xcch\+\_\+encode (\begin{DoxyParamCaption}\item[{\textbf{ ubit\+\_\+t} $\ast$}]{bursts,  }\item[{const uint8\+\_\+t $\ast$}]{l2\+\_\+data }\end{DoxyParamCaption})}



Encoding of x\+CCH data from L2 frame to bursts. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ out}}  & {\em bursts} & caller-\/allocated burst data (unpacked bits) \\
\hline
\mbox{\texttt{ in}}  & {\em l2\+\_\+data} & L2 input data (MAC block) \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 
\end{DoxyReturn}


References \textbf{ \+\_\+xcch\+\_\+encode\+\_\+c\+B()}, \textbf{ gsm0503\+\_\+xcch\+\_\+burst\+\_\+map()}, and \textbf{ gsm0503\+\_\+xcch\+\_\+interleave()}.

\mbox{\label{group__coding_gafe350de1d066020a7477dd0d52979c03}} 
\index{Coding@{Coding}!osmo\_conv\_decode\_ber@{osmo\_conv\_decode\_ber}}
\index{osmo\_conv\_decode\_ber@{osmo\_conv\_decode\_ber}!Coding@{Coding}}
\doxysubsubsection{osmo\_conv\_decode\_ber()}
{\footnotesize\ttfamily static int osmo\+\_\+conv\+\_\+decode\+\_\+ber (\begin{DoxyParamCaption}\item[{const struct \textbf{ osmo\+\_\+conv\+\_\+code} $\ast$}]{code,  }\item[{const \textbf{ sbit\+\_\+t} $\ast$}]{input,  }\item[{\textbf{ ubit\+\_\+t} $\ast$}]{output,  }\item[{int $\ast$}]{n\+\_\+errors,  }\item[{int $\ast$}]{n\+\_\+bits\+\_\+total }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



Convolutional Decode + compute BER for non-\/punctured codes. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em code} & Description of Convolutional Code \\
\hline
\mbox{\texttt{ in}}  & {\em input} & Input soft-\/bits (-\/127...127) \\
\hline
\mbox{\texttt{ out}}  & {\em output} & bits \\
\hline
\mbox{\texttt{ out}}  & {\em n\+\_\+errors} & Number of bit-\/errors \\
\hline
\mbox{\texttt{ out}}  & {\em n\+\_\+bits\+\_\+total} & Number of bits \\
\hline
\end{DoxyParams}


References \textbf{ osmo\+\_\+conv\+\_\+decode\+\_\+ber\+\_\+punctured()}.



Referenced by \textbf{ \+\_\+egprs\+\_\+decode\+\_\+hdr()}, \textbf{ \+\_\+xcch\+\_\+decode\+\_\+c\+B()}, \textbf{ gsm0503\+\_\+pdtch\+\_\+decode()}, \textbf{ gsm0503\+\_\+tch\+\_\+afs\+\_\+decode\+\_\+dtx()}, \textbf{ gsm0503\+\_\+tch\+\_\+ahs\+\_\+decode\+\_\+dtx()}, \textbf{ gsm0503\+\_\+tch\+\_\+fr144\+\_\+decode()}, \textbf{ gsm0503\+\_\+tch\+\_\+fr24\+\_\+decode()}, \textbf{ gsm0503\+\_\+tch\+\_\+fr48\+\_\+decode()}, \textbf{ gsm0503\+\_\+tch\+\_\+fr96\+\_\+decode()}, \textbf{ gsm0503\+\_\+tch\+\_\+fr\+\_\+decode()}, \textbf{ gsm0503\+\_\+tch\+\_\+hr24\+\_\+decode()}, \textbf{ gsm0503\+\_\+tch\+\_\+hr\+\_\+decode2()}, and \textbf{ rach\+\_\+decode\+\_\+ber()}.

\mbox{\label{group__coding_gac0f61956bb1571655636a60ff69629bf}} 
\index{Coding@{Coding}!osmo\_conv\_decode\_ber\_punctured@{osmo\_conv\_decode\_ber\_punctured}}
\index{osmo\_conv\_decode\_ber\_punctured@{osmo\_conv\_decode\_ber\_punctured}!Coding@{Coding}}
\doxysubsubsection{osmo\_conv\_decode\_ber\_punctured()}
{\footnotesize\ttfamily static int osmo\+\_\+conv\+\_\+decode\+\_\+ber\+\_\+punctured (\begin{DoxyParamCaption}\item[{const struct \textbf{ osmo\+\_\+conv\+\_\+code} $\ast$}]{code,  }\item[{const \textbf{ sbit\+\_\+t} $\ast$}]{input,  }\item[{\textbf{ ubit\+\_\+t} $\ast$}]{output,  }\item[{int $\ast$}]{n\+\_\+errors,  }\item[{int $\ast$}]{n\+\_\+bits\+\_\+total,  }\item[{const uint8\+\_\+t $\ast$}]{data\+\_\+punc }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



Convolutional Decode + compute BER for punctured codes. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em code} & Description of Convolutional Code \\
\hline
\mbox{\texttt{ in}}  & {\em input} & Input soft-\/bits (-\/127...127) \\
\hline
\mbox{\texttt{ out}}  & {\em output} & bits \\
\hline
\mbox{\texttt{ out}}  & {\em n\+\_\+errors} & Number of bit-\/errors \\
\hline
\mbox{\texttt{ out}}  & {\em n\+\_\+bits\+\_\+total} & Number of bits \\
\hline
\mbox{\texttt{ in}}  & {\em data\+\_\+punc} & Puncturing mask array. Can be NULL. \\
\hline
\end{DoxyParams}


References \textbf{ ARRAY\+\_\+\+SIZE}, \textbf{ gsm0503\+\_\+mcs\+\_\+code\+::data\+\_\+punc}, \textbf{ EGPRS\+\_\+\+DATA\+\_\+\+C\+\_\+\+MAX}, \textbf{ OSMO\+\_\+\+ASSERT}, \textbf{ osmo\+\_\+conv\+\_\+decode()}, \textbf{ osmo\+\_\+conv\+\_\+encode()}, and \textbf{ res}.



Referenced by \textbf{ egprs\+\_\+decode\+\_\+data()}, \textbf{ gsm0503\+\_\+pdtch\+\_\+decode()}, and \textbf{ osmo\+\_\+conv\+\_\+decode\+\_\+ber()}.

\mbox{\label{group__coding_ga8ed7491e35558793236511c0042eb939}} 
\index{Coding@{Coding}!rach\_apply\_bsic@{rach\_apply\_bsic}}
\index{rach\_apply\_bsic@{rach\_apply\_bsic}!Coding@{Coding}}
\doxysubsubsection{rach\_apply\_bsic()}
{\footnotesize\ttfamily static void rach\+\_\+apply\+\_\+bsic (\begin{DoxyParamCaption}\item[{\textbf{ ubit\+\_\+t} $\ast$}]{d,  }\item[{uint8\+\_\+t}]{bsic,  }\item[{uint8\+\_\+t}]{start }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}



References \textbf{ start}.



Referenced by \textbf{ gsm0503\+\_\+rach\+\_\+ext\+\_\+encode()}, and \textbf{ rach\+\_\+decode\+\_\+ber()}.

\mbox{\label{group__coding_gabcf231903331a70beb6870f3552cd449}} 
\index{Coding@{Coding}!rach\_decode\_ber@{rach\_decode\_ber}}
\index{rach\_decode\_ber@{rach\_decode\_ber}!Coding@{Coding}}
\doxysubsubsection{rach\_decode\_ber()}
{\footnotesize\ttfamily static int16\+\_\+t rach\+\_\+decode\+\_\+ber (\begin{DoxyParamCaption}\item[{const \textbf{ sbit\+\_\+t} $\ast$}]{burst,  }\item[{uint8\+\_\+t}]{bsic,  }\item[{bool}]{is\+\_\+11bit,  }\item[{int $\ast$}]{n\+\_\+errors,  }\item[{int $\ast$}]{n\+\_\+bits\+\_\+total }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}



References \textbf{ gsm0503\+\_\+rach}, \textbf{ gsm0503\+\_\+rach\+\_\+crc6}, \textbf{ gsm0503\+\_\+rach\+\_\+ext}, \textbf{ osmo\+\_\+conv\+\_\+decode\+\_\+ber()}, \textbf{ osmo\+\_\+crc8gen\+\_\+check\+\_\+bits()}, \textbf{ osmo\+\_\+ubit2pbit\+\_\+ext()}, and \textbf{ rach\+\_\+apply\+\_\+bsic()}.



Referenced by \textbf{ gsm0503\+\_\+rach\+\_\+decode()}, \textbf{ gsm0503\+\_\+rach\+\_\+decode\+\_\+ber()}, \textbf{ gsm0503\+\_\+rach\+\_\+ext\+\_\+decode()}, and \textbf{ gsm0503\+\_\+rach\+\_\+ext\+\_\+decode\+\_\+ber()}.

\mbox{\label{group__coding_gab0962be93bb2bd962a0bb56dbfa7145a}} 
\index{Coding@{Coding}!tch\_amr\_disassemble@{tch\_amr\_disassemble}}
\index{tch\_amr\_disassemble@{tch\_amr\_disassemble}!Coding@{Coding}}
\doxysubsubsection{tch\_amr\_disassemble()}
{\footnotesize\ttfamily static void tch\+\_\+amr\+\_\+disassemble (\begin{DoxyParamCaption}\item[{\textbf{ ubit\+\_\+t} $\ast$}]{d\+\_\+bits,  }\item[{const uint8\+\_\+t $\ast$}]{tch\+\_\+data,  }\item[{int}]{len }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ len()}.



Referenced by \textbf{ gsm0503\+\_\+tch\+\_\+afs\+\_\+encode()}, and \textbf{ gsm0503\+\_\+tch\+\_\+ahs\+\_\+encode()}.

\mbox{\label{group__coding_gac878ee1bf9fc9c53ae582e7886ddd7d9}} 
\index{Coding@{Coding}!tch\_amr\_merge@{tch\_amr\_merge}}
\index{tch\_amr\_merge@{tch\_amr\_merge}!Coding@{Coding}}
\doxysubsubsection{tch\_amr\_merge()}
{\footnotesize\ttfamily static void tch\+\_\+amr\+\_\+merge (\begin{DoxyParamCaption}\item[{\textbf{ ubit\+\_\+t} $\ast$}]{u,  }\item[{const \textbf{ ubit\+\_\+t} $\ast$}]{d,  }\item[{const \textbf{ ubit\+\_\+t} $\ast$}]{p,  }\item[{int}]{len,  }\item[{int}]{prot }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ len()}, and \textbf{ u}.



Referenced by \textbf{ gsm0503\+\_\+tch\+\_\+afs\+\_\+encode()}, and \textbf{ gsm0503\+\_\+tch\+\_\+ahs\+\_\+encode()}.

\mbox{\label{group__coding_ga0e7a7286646ce463d937f28ed692dc70}} 
\index{Coding@{Coding}!tch\_amr\_reassemble@{tch\_amr\_reassemble}}
\index{tch\_amr\_reassemble@{tch\_amr\_reassemble}!Coding@{Coding}}
\doxysubsubsection{tch\_amr\_reassemble()}
{\footnotesize\ttfamily static void tch\+\_\+amr\+\_\+reassemble (\begin{DoxyParamCaption}\item[{uint8\+\_\+t $\ast$}]{tch\+\_\+data,  }\item[{const \textbf{ ubit\+\_\+t} $\ast$}]{d\+\_\+bits,  }\item[{int}]{len }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ len()}.



Referenced by \textbf{ gsm0503\+\_\+tch\+\_\+afs\+\_\+decode\+\_\+dtx()}, and \textbf{ gsm0503\+\_\+tch\+\_\+ahs\+\_\+decode\+\_\+dtx()}.

\mbox{\label{group__coding_gaec404c34d9b3039b5fb5081e7ee45aa6}} 
\index{Coding@{Coding}!tch\_amr\_sid\_update\_append@{tch\_amr\_sid\_update\_append}}
\index{tch\_amr\_sid\_update\_append@{tch\_amr\_sid\_update\_append}!Coding@{Coding}}
\doxysubsubsection{tch\_amr\_sid\_update\_append()}
{\footnotesize\ttfamily static void tch\+\_\+amr\+\_\+sid\+\_\+update\+\_\+append (\begin{DoxyParamCaption}\item[{\textbf{ ubit\+\_\+t} $\ast$}]{sid\+\_\+update,  }\item[{uint8\+\_\+t}]{sti,  }\item[{uint8\+\_\+t}]{mi }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ mi}.



Referenced by \textbf{ gsm0503\+\_\+tch\+\_\+afs\+\_\+decode\+\_\+dtx()}, and \textbf{ gsm0503\+\_\+tch\+\_\+ahs\+\_\+decode\+\_\+dtx()}.

\mbox{\label{group__coding_ga0439674045925c136d7e0c3f592f1472}} 
\index{Coding@{Coding}!tch\_amr\_unmerge@{tch\_amr\_unmerge}}
\index{tch\_amr\_unmerge@{tch\_amr\_unmerge}!Coding@{Coding}}
\doxysubsubsection{tch\_amr\_unmerge()}
{\footnotesize\ttfamily static void tch\+\_\+amr\+\_\+unmerge (\begin{DoxyParamCaption}\item[{\textbf{ ubit\+\_\+t} $\ast$}]{d,  }\item[{\textbf{ ubit\+\_\+t} $\ast$}]{p,  }\item[{const \textbf{ ubit\+\_\+t} $\ast$}]{u,  }\item[{int}]{len,  }\item[{int}]{prot }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ len()}, and \textbf{ u}.



Referenced by \textbf{ gsm0503\+\_\+tch\+\_\+afs\+\_\+decode\+\_\+dtx()}, and \textbf{ gsm0503\+\_\+tch\+\_\+ahs\+\_\+decode\+\_\+dtx()}.

\mbox{\label{group__coding_ga0aaae17afd41a7d182ad9a63bd0586f5}} 
\index{Coding@{Coding}!tch\_efr\_d\_to\_w@{tch\_efr\_d\_to\_w}}
\index{tch\_efr\_d\_to\_w@{tch\_efr\_d\_to\_w}!Coding@{Coding}}
\doxysubsubsection{tch\_efr\_d\_to\_w()}
{\footnotesize\ttfamily static void tch\+\_\+efr\+\_\+d\+\_\+to\+\_\+w (\begin{DoxyParamCaption}\item[{\textbf{ ubit\+\_\+t} $\ast$}]{b\+\_\+bits,  }\item[{const \textbf{ ubit\+\_\+t} $\ast$}]{d\+\_\+bits }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ gsm660\+\_\+bitorder}.



Referenced by \textbf{ gsm0503\+\_\+tch\+\_\+fr\+\_\+decode()}.

\mbox{\label{group__coding_ga985c39b66bcf8791a98f7b703f29bf90}} 
\index{Coding@{Coding}!tch\_efr\_disassemble@{tch\_efr\_disassemble}}
\index{tch\_efr\_disassemble@{tch\_efr\_disassemble}!Coding@{Coding}}
\doxysubsubsection{tch\_efr\_disassemble()}
{\footnotesize\ttfamily static void tch\+\_\+efr\+\_\+disassemble (\begin{DoxyParamCaption}\item[{\textbf{ ubit\+\_\+t} $\ast$}]{b\+\_\+bits,  }\item[{const uint8\+\_\+t $\ast$}]{tch\+\_\+data }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



Referenced by \textbf{ gsm0503\+\_\+tch\+\_\+fr\+\_\+encode()}.

\mbox{\label{group__coding_gad77737c8d49d8a6e52d819bad7926b77}} 
\index{Coding@{Coding}!tch\_efr\_protected@{tch\_efr\_protected}}
\index{tch\_efr\_protected@{tch\_efr\_protected}!Coding@{Coding}}
\doxysubsubsection{tch\_efr\_protected()}
{\footnotesize\ttfamily static void tch\+\_\+efr\+\_\+protected (\begin{DoxyParamCaption}\item[{const \textbf{ ubit\+\_\+t} $\ast$}]{s\+\_\+bits,  }\item[{\textbf{ ubit\+\_\+t} $\ast$}]{b\+\_\+bits }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ gsm0503\+\_\+gsm\+\_\+efr\+\_\+protected\+\_\+bits}.



Referenced by \textbf{ gsm0503\+\_\+tch\+\_\+fr\+\_\+decode()}, and \textbf{ gsm0503\+\_\+tch\+\_\+fr\+\_\+encode()}.

\mbox{\label{group__coding_ga3874a27aa343e35de1475285faa650b8}} 
\index{Coding@{Coding}!tch\_efr\_reassemble@{tch\_efr\_reassemble}}
\index{tch\_efr\_reassemble@{tch\_efr\_reassemble}!Coding@{Coding}}
\doxysubsubsection{tch\_efr\_reassemble()}
{\footnotesize\ttfamily static void tch\+\_\+efr\+\_\+reassemble (\begin{DoxyParamCaption}\item[{uint8\+\_\+t $\ast$}]{tch\+\_\+data,  }\item[{const \textbf{ ubit\+\_\+t} $\ast$}]{b\+\_\+bits }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



Referenced by \textbf{ gsm0503\+\_\+tch\+\_\+fr\+\_\+decode()}.

\mbox{\label{group__coding_ga2bf521ad8d5f0a60cabcd388e271d3d3}} 
\index{Coding@{Coding}!tch\_efr\_reorder@{tch\_efr\_reorder}}
\index{tch\_efr\_reorder@{tch\_efr\_reorder}!Coding@{Coding}}
\doxysubsubsection{tch\_efr\_reorder()}
{\footnotesize\ttfamily static void tch\+\_\+efr\+\_\+reorder (\begin{DoxyParamCaption}\item[{\textbf{ ubit\+\_\+t} $\ast$}]{w,  }\item[{const \textbf{ ubit\+\_\+t} $\ast$}]{s,  }\item[{const \textbf{ ubit\+\_\+t} $\ast$}]{p }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



Referenced by \textbf{ gsm0503\+\_\+tch\+\_\+fr\+\_\+encode()}.

\mbox{\label{group__coding_ga3c803a607335e382b3b6249b527b3087}} 
\index{Coding@{Coding}!tch\_efr\_unreorder@{tch\_efr\_unreorder}}
\index{tch\_efr\_unreorder@{tch\_efr\_unreorder}!Coding@{Coding}}
\doxysubsubsection{tch\_efr\_unreorder()}
{\footnotesize\ttfamily static void tch\+\_\+efr\+\_\+unreorder (\begin{DoxyParamCaption}\item[{\textbf{ ubit\+\_\+t} $\ast$}]{s,  }\item[{\textbf{ ubit\+\_\+t} $\ast$}]{p,  }\item[{const \textbf{ ubit\+\_\+t} $\ast$}]{w }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



Referenced by \textbf{ gsm0503\+\_\+tch\+\_\+fr\+\_\+decode()}.

\mbox{\label{group__coding_ga2cbe3f469542f6309cc3b6c5348c9c59}} 
\index{Coding@{Coding}!tch\_efr\_w\_to\_d@{tch\_efr\_w\_to\_d}}
\index{tch\_efr\_w\_to\_d@{tch\_efr\_w\_to\_d}!Coding@{Coding}}
\doxysubsubsection{tch\_efr\_w\_to\_d()}
{\footnotesize\ttfamily static void tch\+\_\+efr\+\_\+w\+\_\+to\+\_\+d (\begin{DoxyParamCaption}\item[{\textbf{ ubit\+\_\+t} $\ast$}]{d\+\_\+bits,  }\item[{const \textbf{ ubit\+\_\+t} $\ast$}]{b\+\_\+bits }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ gsm660\+\_\+bitorder}.



Referenced by \textbf{ gsm0503\+\_\+tch\+\_\+fr\+\_\+encode()}.

\mbox{\label{group__coding_ga0480c19033232a949f391b9c1d169e7e}} 
\index{Coding@{Coding}!tch\_fr\_b\_to\_d@{tch\_fr\_b\_to\_d}}
\index{tch\_fr\_b\_to\_d@{tch\_fr\_b\_to\_d}!Coding@{Coding}}
\doxysubsubsection{tch\_fr\_b\_to\_d()}
{\footnotesize\ttfamily static void tch\+\_\+fr\+\_\+b\+\_\+to\+\_\+d (\begin{DoxyParamCaption}\item[{\textbf{ ubit\+\_\+t} $\ast$}]{d\+\_\+bits,  }\item[{const \textbf{ ubit\+\_\+t} $\ast$}]{b\+\_\+bits }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ gsm610\+\_\+bitorder}.



Referenced by \textbf{ gsm0503\+\_\+tch\+\_\+fr\+\_\+encode()}.

\mbox{\label{group__coding_ga7cfeaf61947817826f6d42c3cf6936f4}} 
\index{Coding@{Coding}!tch\_fr\_d\_to\_b@{tch\_fr\_d\_to\_b}}
\index{tch\_fr\_d\_to\_b@{tch\_fr\_d\_to\_b}!Coding@{Coding}}
\doxysubsubsection{tch\_fr\_d\_to\_b()}
{\footnotesize\ttfamily static void tch\+\_\+fr\+\_\+d\+\_\+to\+\_\+b (\begin{DoxyParamCaption}\item[{\textbf{ ubit\+\_\+t} $\ast$}]{b\+\_\+bits,  }\item[{const \textbf{ ubit\+\_\+t} $\ast$}]{d\+\_\+bits }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ gsm610\+\_\+bitorder}.



Referenced by \textbf{ gsm0503\+\_\+tch\+\_\+fr\+\_\+decode()}.

\mbox{\label{group__coding_ga070e55708904919ed170588bb4e461b6}} 
\index{Coding@{Coding}!tch\_fr\_disassemble@{tch\_fr\_disassemble}}
\index{tch\_fr\_disassemble@{tch\_fr\_disassemble}!Coding@{Coding}}
\doxysubsubsection{tch\_fr\_disassemble()}
{\footnotesize\ttfamily static void tch\+\_\+fr\+\_\+disassemble (\begin{DoxyParamCaption}\item[{\textbf{ ubit\+\_\+t} $\ast$}]{b\+\_\+bits,  }\item[{const uint8\+\_\+t $\ast$}]{tch\+\_\+data,  }\item[{int}]{net\+\_\+order }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ gsm0503\+\_\+gsm\+\_\+fr\+\_\+map}, \textbf{ k}, and \textbf{ l}.



Referenced by \textbf{ gsm0503\+\_\+tch\+\_\+fr\+\_\+encode()}.

\mbox{\label{group__coding_gae5c7bd071f9ac031d02f707932bb1f56}} 
\index{Coding@{Coding}!tch\_fr\_reassemble@{tch\_fr\_reassemble}}
\index{tch\_fr\_reassemble@{tch\_fr\_reassemble}!Coding@{Coding}}
\doxysubsubsection{tch\_fr\_reassemble()}
{\footnotesize\ttfamily static void tch\+\_\+fr\+\_\+reassemble (\begin{DoxyParamCaption}\item[{uint8\+\_\+t $\ast$}]{tch\+\_\+data,  }\item[{const \textbf{ ubit\+\_\+t} $\ast$}]{b\+\_\+bits,  }\item[{int}]{net\+\_\+order }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



assemble a FR codec frame in format as used inside RTP 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ out}}  & {\em tch\+\_\+data} & Codec frame in RTP format \\
\hline
\mbox{\texttt{ in}}  & {\em b\+\_\+bits} & Codec frame in \textquotesingle{}native\textquotesingle{} format \\
\hline
\mbox{\texttt{ in}}  & {\em net\+\_\+order} & FIXME \\
\hline
\end{DoxyParams}


References \textbf{ gsm0503\+\_\+gsm\+\_\+fr\+\_\+map}, \textbf{ k}, and \textbf{ l}.



Referenced by \textbf{ gsm0503\+\_\+tch\+\_\+fr\+\_\+decode()}.

\mbox{\label{group__coding_ga399229613c3085f2cee15494a24f8caf}} 
\index{Coding@{Coding}!tch\_fr\_reorder@{tch\_fr\_reorder}}
\index{tch\_fr\_reorder@{tch\_fr\_reorder}!Coding@{Coding}}
\doxysubsubsection{tch\_fr\_reorder()}
{\footnotesize\ttfamily static void tch\+\_\+fr\+\_\+reorder (\begin{DoxyParamCaption}\item[{\textbf{ ubit\+\_\+t} $\ast$}]{u,  }\item[{const \textbf{ ubit\+\_\+t} $\ast$}]{d,  }\item[{const \textbf{ ubit\+\_\+t} $\ast$}]{p }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ u}.



Referenced by \textbf{ gsm0503\+\_\+tch\+\_\+fr\+\_\+encode()}.

\mbox{\label{group__coding_ga321e9c9d65756b0ced4cd59c4563fdd0}} 
\index{Coding@{Coding}!tch\_fr\_unreorder@{tch\_fr\_unreorder}}
\index{tch\_fr\_unreorder@{tch\_fr\_unreorder}!Coding@{Coding}}
\doxysubsubsection{tch\_fr\_unreorder()}
{\footnotesize\ttfamily static void tch\+\_\+fr\+\_\+unreorder (\begin{DoxyParamCaption}\item[{\textbf{ ubit\+\_\+t} $\ast$}]{d,  }\item[{\textbf{ ubit\+\_\+t} $\ast$}]{p,  }\item[{const \textbf{ ubit\+\_\+t} $\ast$}]{u }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ u}.



Referenced by \textbf{ gsm0503\+\_\+tch\+\_\+fr\+\_\+decode()}.

\mbox{\label{group__coding_ga61cc9ad08347f5787a5d195d8a5ee2b5}} 
\index{Coding@{Coding}!tch\_hr\_b\_to\_d@{tch\_hr\_b\_to\_d}}
\index{tch\_hr\_b\_to\_d@{tch\_hr\_b\_to\_d}!Coding@{Coding}}
\doxysubsubsection{tch\_hr\_b\_to\_d()}
{\footnotesize\ttfamily static void tch\+\_\+hr\+\_\+b\+\_\+to\+\_\+d (\begin{DoxyParamCaption}\item[{\textbf{ ubit\+\_\+t} $\ast$}]{d\+\_\+bits,  }\item[{const \textbf{ ubit\+\_\+t} $\ast$}]{b\+\_\+bits }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ gsm620\+\_\+unvoiced\+\_\+bitorder}, and \textbf{ gsm620\+\_\+voiced\+\_\+bitorder}.



Referenced by \textbf{ gsm0503\+\_\+tch\+\_\+hr\+\_\+encode()}.

\mbox{\label{group__coding_gaa2fd33a4a9b70bb20bc671b6e03522be}} 
\index{Coding@{Coding}!tch\_hr\_d\_to\_b@{tch\_hr\_d\_to\_b}}
\index{tch\_hr\_d\_to\_b@{tch\_hr\_d\_to\_b}!Coding@{Coding}}
\doxysubsubsection{tch\_hr\_d\_to\_b()}
{\footnotesize\ttfamily static void tch\+\_\+hr\+\_\+d\+\_\+to\+\_\+b (\begin{DoxyParamCaption}\item[{\textbf{ ubit\+\_\+t} $\ast$}]{b\+\_\+bits,  }\item[{const \textbf{ ubit\+\_\+t} $\ast$}]{d\+\_\+bits }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ gsm620\+\_\+unvoiced\+\_\+bitorder}, and \textbf{ gsm620\+\_\+voiced\+\_\+bitorder}.



Referenced by \textbf{ gsm0503\+\_\+tch\+\_\+hr\+\_\+decode2()}.

\mbox{\label{group__coding_ga48d8593cf5cf9ab4c0089f005f7f1f54}} 
\index{Coding@{Coding}!tch\_hr\_disassemble@{tch\_hr\_disassemble}}
\index{tch\_hr\_disassemble@{tch\_hr\_disassemble}!Coding@{Coding}}
\doxysubsubsection{tch\_hr\_disassemble()}
{\footnotesize\ttfamily static void tch\+\_\+hr\+\_\+disassemble (\begin{DoxyParamCaption}\item[{\textbf{ ubit\+\_\+t} $\ast$}]{b\+\_\+bits,  }\item[{const uint8\+\_\+t $\ast$}]{tch\+\_\+data }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



Referenced by \textbf{ gsm0503\+\_\+tch\+\_\+hr\+\_\+encode()}.

\mbox{\label{group__coding_gae053d5869f5f0bfb43b53086118647fe}} 
\index{Coding@{Coding}!tch\_hr\_reassemble@{tch\_hr\_reassemble}}
\index{tch\_hr\_reassemble@{tch\_hr\_reassemble}!Coding@{Coding}}
\doxysubsubsection{tch\_hr\_reassemble()}
{\footnotesize\ttfamily static void tch\+\_\+hr\+\_\+reassemble (\begin{DoxyParamCaption}\item[{uint8\+\_\+t $\ast$}]{tch\+\_\+data,  }\item[{const \textbf{ ubit\+\_\+t} $\ast$}]{b\+\_\+bits }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ GSM\+\_\+\+HR\+\_\+\+BYTES}.



Referenced by \textbf{ gsm0503\+\_\+tch\+\_\+hr\+\_\+decode2()}.

\mbox{\label{group__coding_gacf24d82ab397ebdc9e97652eb330938b}} 
\index{Coding@{Coding}!tch\_hr\_reorder@{tch\_hr\_reorder}}
\index{tch\_hr\_reorder@{tch\_hr\_reorder}!Coding@{Coding}}
\doxysubsubsection{tch\_hr\_reorder()}
{\footnotesize\ttfamily static void tch\+\_\+hr\+\_\+reorder (\begin{DoxyParamCaption}\item[{\textbf{ ubit\+\_\+t} $\ast$}]{u,  }\item[{const \textbf{ ubit\+\_\+t} $\ast$}]{d,  }\item[{const \textbf{ ubit\+\_\+t} $\ast$}]{p }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ u}.



Referenced by \textbf{ gsm0503\+\_\+tch\+\_\+hr\+\_\+encode()}.

\mbox{\label{group__coding_ga03e41400babffd213f851c468ed86c48}} 
\index{Coding@{Coding}!tch\_hr\_unreorder@{tch\_hr\_unreorder}}
\index{tch\_hr\_unreorder@{tch\_hr\_unreorder}!Coding@{Coding}}
\doxysubsubsection{tch\_hr\_unreorder()}
{\footnotesize\ttfamily static void tch\+\_\+hr\+\_\+unreorder (\begin{DoxyParamCaption}\item[{\textbf{ ubit\+\_\+t} $\ast$}]{d,  }\item[{\textbf{ ubit\+\_\+t} $\ast$}]{p,  }\item[{const \textbf{ ubit\+\_\+t} $\ast$}]{u }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ u}.



Referenced by \textbf{ gsm0503\+\_\+tch\+\_\+hr\+\_\+decode2()}.



\doxysubsection{Variable Documentation}
\mbox{\label{group__coding_gac6374b677079e92e9c5503daed4c3f0f}} 
\index{Coding@{Coding}!gsm0503\_amr\_dtx\_frame\_names@{gsm0503\_amr\_dtx\_frame\_names}}
\index{gsm0503\_amr\_dtx\_frame\_names@{gsm0503\_amr\_dtx\_frame\_names}!Coding@{Coding}}
\doxysubsubsection{gsm0503\_amr\_dtx\_frame\_names}
{\footnotesize\ttfamily const struct \textbf{ value\+\_\+string} gsm0503\+\_\+amr\+\_\+dtx\+\_\+frame\+\_\+names[$\,$]\hspace{0.3cm}{\ttfamily [extern]}}



Referenced by \textbf{ gsm0503\+\_\+amr\+\_\+dtx\+\_\+frame\+\_\+name()}.

\mbox{\label{group__coding_gad9357b19e18fa56b098015336d24914d}} 
\index{Coding@{Coding}!gsm0503\_mcs\_dl\_codes@{gsm0503\_mcs\_dl\_codes}}
\index{gsm0503\_mcs\_dl\_codes@{gsm0503\_mcs\_dl\_codes}!Coding@{Coding}}
\doxysubsubsection{gsm0503\_mcs\_dl\_codes}
{\footnotesize\ttfamily const struct \textbf{ gsm0503\+\_\+mcs\+\_\+code} gsm0503\+\_\+mcs\+\_\+dl\+\_\+codes[\textbf{ EGPRS\+\_\+\+NUM\+\_\+\+MCS}]}



Referenced by \textbf{ egprs\+\_\+encode\+\_\+data()}, and \textbf{ egprs\+\_\+encode\+\_\+hdr()}.

\mbox{\label{group__coding_ga316e84051ae5ae8b512632cf2b821747}} 
\index{Coding@{Coding}!gsm0503\_mcs\_ul\_codes@{gsm0503\_mcs\_ul\_codes}}
\index{gsm0503\_mcs\_ul\_codes@{gsm0503\_mcs\_ul\_codes}!Coding@{Coding}}
\doxysubsubsection{gsm0503\_mcs\_ul\_codes}
{\footnotesize\ttfamily const struct \textbf{ gsm0503\+\_\+mcs\+\_\+code} gsm0503\+\_\+mcs\+\_\+ul\+\_\+codes[\textbf{ EGPRS\+\_\+\+NUM\+\_\+\+MCS}]}



Referenced by \textbf{ \+\_\+egprs\+\_\+decode\+\_\+hdr()}, and \textbf{ egprs\+\_\+decode\+\_\+data()}.

