\doxysection{TCH3 channel coding}
\label{group__tch3}\index{TCH3 channel coding@{TCH3 channel coding}}
\doxysubsection*{Files}
\begin{DoxyCompactItemize}
\item 
file \textbf{ tch3.\+h}
\begin{DoxyCompactList}\small\item\em Osmocom GMR-\/1 TCH3 channel coding header. \end{DoxyCompactList}\item 
file \textbf{ tch3.\+c}
\begin{DoxyCompactList}\small\item\em Osmocom GMR-\/1 TCH3 channel coding implementation. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection*{Functions}
\begin{DoxyCompactItemize}
\item 
void \textbf{ gmr1\+\_\+tch3\+\_\+encode} (\textbf{ ubit\+\_\+t} $\ast$bits\+\_\+e, const uint8\+\_\+t $\ast$frame0, const uint8\+\_\+t $\ast$frame1, const \textbf{ ubit\+\_\+t} $\ast$bits\+\_\+s, const \textbf{ ubit\+\_\+t} $\ast$ciph, int m)
\begin{DoxyCompactList}\small\item\em Stateless GMR-\/1 TCH3 channel coder. \end{DoxyCompactList}\item 
void \textbf{ gmr1\+\_\+tch3\+\_\+decode} (uint8\+\_\+t $\ast$frame0, uint8\+\_\+t $\ast$frame1, \textbf{ ubit\+\_\+t} $\ast$bits\+\_\+s, const \textbf{ sbit\+\_\+t} $\ast$bits\+\_\+e, const \textbf{ ubit\+\_\+t} $\ast$ciph, int m, int $\ast$conv0\+\_\+rv, int $\ast$conv1\+\_\+rv)
\begin{DoxyCompactList}\small\item\em Stateless GMR-\/1 TCH3 channel decoder. \end{DoxyCompactList}\end{DoxyCompactItemize}


\doxysubsection{Detailed Description}


\doxysubsection{Function Documentation}
\mbox{\label{group__tch3_gaab4229c82b06539cdad3d91d1bd05c32}} 
\index{TCH3 channel coding@{TCH3 channel coding}!gmr1\_tch3\_decode@{gmr1\_tch3\_decode}}
\index{gmr1\_tch3\_decode@{gmr1\_tch3\_decode}!TCH3 channel coding@{TCH3 channel coding}}
\doxysubsubsection{gmr1\_tch3\_decode()}
{\footnotesize\ttfamily void gmr1\+\_\+tch3\+\_\+decode (\begin{DoxyParamCaption}\item[{uint8\+\_\+t $\ast$}]{frame0,  }\item[{uint8\+\_\+t $\ast$}]{frame1,  }\item[{\textbf{ ubit\+\_\+t} $\ast$}]{bits\+\_\+s,  }\item[{const \textbf{ sbit\+\_\+t} $\ast$}]{bits\+\_\+e,  }\item[{const \textbf{ ubit\+\_\+t} $\ast$}]{ciph,  }\item[{int}]{m,  }\item[{int $\ast$}]{conv0\+\_\+rv,  }\item[{int $\ast$}]{conv1\+\_\+rv }\end{DoxyParamCaption})}



Stateless GMR-\/1 TCH3 channel decoder. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ out}}  & {\em frame0} & 1st speech frame (10 byte / 80 bits, msb first) \\
\hline
\mbox{\texttt{ out}}  & {\em frame1} & 2nd speech frame (10 byte / 80 bits, msb first) \\
\hline
\mbox{\texttt{ out}}  & {\em bits\+\_\+s} & 4 status bits that were demultiplexed \\
\hline
\mbox{\texttt{ in}}  & {\em bits\+\_\+e} & 212 softbits demodulated from a burst \\
\hline
\mbox{\texttt{ in}}  & {\em ciph} & 208 bits of cipher stream (can be NULL) \\
\hline
\mbox{\texttt{ in}}  & {\em m} & Multiplexing mode (0 or 1) \\
\hline
\mbox{\texttt{ out}}  & {\em conv0\+\_\+rv} & Return of the conv. decode of frame 0 (can be NULL) \\
\hline
\mbox{\texttt{ out}}  & {\em conv1\+\_\+rv} & Return of the conv. decode of frame 1 (can be NULL) \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 if CRC check pass, any other value for fail. 
\end{DoxyReturn}


References \textbf{ gmr1\+\_\+scramble\+\_\+sbit()}, and \textbf{ osmo\+\_\+conv\+\_\+decode()}.

\mbox{\label{group__tch3_ga3c7e3f769459eff23c1308eefb565ab9}} 
\index{TCH3 channel coding@{TCH3 channel coding}!gmr1\_tch3\_encode@{gmr1\_tch3\_encode}}
\index{gmr1\_tch3\_encode@{gmr1\_tch3\_encode}!TCH3 channel coding@{TCH3 channel coding}}
\doxysubsubsection{gmr1\_tch3\_encode()}
{\footnotesize\ttfamily void gmr1\+\_\+tch3\+\_\+encode (\begin{DoxyParamCaption}\item[{\textbf{ ubit\+\_\+t} $\ast$}]{bits\+\_\+e,  }\item[{const uint8\+\_\+t $\ast$}]{frame0,  }\item[{const uint8\+\_\+t $\ast$}]{frame1,  }\item[{const \textbf{ ubit\+\_\+t} $\ast$}]{bits\+\_\+s,  }\item[{const \textbf{ ubit\+\_\+t} $\ast$}]{ciph,  }\item[{int}]{m }\end{DoxyParamCaption})}



Stateless GMR-\/1 TCH3 channel coder. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ out}}  & {\em bits\+\_\+e} & 212 encoded bits to be mapped on a burst \\
\hline
\mbox{\texttt{ in}}  & {\em frame0} & 1st speech frame (10 byte / 80 bits, msb first) \\
\hline
\mbox{\texttt{ in}}  & {\em frame1} & 2nd speech frame (10 byte / 80 bits, msb first) \\
\hline
\mbox{\texttt{ in}}  & {\em bits\+\_\+s} & 4 status bits to be multiplexed \\
\hline
\mbox{\texttt{ in}}  & {\em ciph} & 208 bits of cipher stream (can be NULL) \\
\hline
\mbox{\texttt{ in}}  & {\em m} & Multiplexing mode (0 or 1) \\
\hline
\end{DoxyParams}


References \textbf{ osmo\+\_\+conv\+\_\+encode()}, and \textbf{ osmo\+\_\+pbit2ubit()}.

