\doxysection{src/l1/punct.c File Reference}
\label{punct_8c}\index{src/l1/punct.c@{src/l1/punct.c}}


Osmocom GMR-\/1 puncturing implementation.  


{\ttfamily \#include $<$osmocom/core/conv.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/gmr1/l1/punct.\+h$>$}\newline
{\ttfamily \#include $<$errno.\+h$>$}\newline
{\ttfamily \#include $<$stdlib.\+h$>$}\newline
\doxysubsection*{Functions}
\begin{DoxyCompactItemize}
\item 
int \textbf{ gmr1\+\_\+puncturer\+\_\+generate} (struct \textbf{ osmo\+\_\+conv\+\_\+code} $\ast$code, const struct \textbf{ gmr1\+\_\+puncturer} $\ast$punct\+\_\+pre, const struct \textbf{ gmr1\+\_\+puncturer} $\ast$punct\+\_\+main, const struct \textbf{ gmr1\+\_\+puncturer} $\ast$punct\+\_\+post, int repeat)
\begin{DoxyCompactList}\small\item\em Generate convolutional code puncturing array for a \textbf{ osmo\+\_\+conv\+\_\+code}. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection*{Variables}
\begin{DoxyCompactItemize}
\item 
const struct \textbf{ gmr1\+\_\+puncturer} \textbf{ gmr1\+\_\+punct\+\_\+k5\+\_\+12\+\_\+\+P23}
\begin{DoxyCompactList}\small\item\em GMR-\/1 P(2;3) puncturing code for the K=5 rate 1/2 conv coder. \end{DoxyCompactList}\item 
const struct \textbf{ gmr1\+\_\+puncturer} \textbf{ gmr1\+\_\+punct\+\_\+k5\+\_\+12\+\_\+\+P25}
\begin{DoxyCompactList}\small\item\em GMR-\/1 P(2;5) puncturing code for the K=5 rate 1/2 conv coder. \end{DoxyCompactList}\item 
const struct \textbf{ gmr1\+\_\+puncturer} \textbf{ gmr1\+\_\+punct\+\_\+k5\+\_\+12\+\_\+\+Ps25}
\begin{DoxyCompactList}\small\item\em GMR-\/1 Ps(2;5) puncturing code for the K=5 rate 1/2 conv coder. \end{DoxyCompactList}\item 
const struct \textbf{ gmr1\+\_\+puncturer} \textbf{ gmr1\+\_\+punct\+\_\+k5\+\_\+12\+\_\+\+P311}
\begin{DoxyCompactList}\small\item\em GMR-\/1 P(3;11) puncturing code for the K=5 rate 1/2 conv coder. \end{DoxyCompactList}\item 
const struct \textbf{ gmr1\+\_\+puncturer} \textbf{ gmr1\+\_\+punct\+\_\+k5\+\_\+12\+\_\+\+P412}
\begin{DoxyCompactList}\small\item\em GMR-\/1 P(4;12) puncturing code for the K=5 rate 1/2 conv coder. \end{DoxyCompactList}\item 
const struct \textbf{ gmr1\+\_\+puncturer} \textbf{ gmr1\+\_\+punct\+\_\+k5\+\_\+12\+\_\+\+Ps412}
\begin{DoxyCompactList}\small\item\em GMR-\/1 Ps(4;12) puncturing code for the K=5 rate 1/2 conv coder. \end{DoxyCompactList}\item 
const struct \textbf{ gmr1\+\_\+puncturer} \textbf{ gmr1\+\_\+punct\+\_\+k5\+\_\+12\+\_\+\+P12}
\begin{DoxyCompactList}\small\item\em GMR-\/1 P(1;2) puncturing code for the K=5 rate 1/2 conv coder. \end{DoxyCompactList}\item 
const struct \textbf{ gmr1\+\_\+puncturer} \textbf{ gmr1\+\_\+punct\+\_\+k5\+\_\+12\+\_\+\+Ps12}
\begin{DoxyCompactList}\small\item\em GMR-\/1 Ps(1;2) puncturing code for the K=5 rate 1/2 conv coder. \end{DoxyCompactList}\item 
const struct \textbf{ gmr1\+\_\+puncturer} \textbf{ gmr1\+\_\+punct\+\_\+k5\+\_\+12\+\_\+A}
\begin{DoxyCompactList}\small\item\em GMR-\/1 A puncturing code for the K=5 rate 1/2 conv coder. \end{DoxyCompactList}\item 
const struct \textbf{ gmr1\+\_\+puncturer} \textbf{ gmr1\+\_\+punct\+\_\+k5\+\_\+12\+\_\+B}
\begin{DoxyCompactList}\small\item\em GMR-\/1 B puncturing code for the K=5 rate 1/2 conv coder. \end{DoxyCompactList}\item 
const struct \textbf{ gmr1\+\_\+puncturer} \textbf{ gmr1\+\_\+punct\+\_\+k5\+\_\+12\+\_\+C}
\begin{DoxyCompactList}\small\item\em GMR-\/1 C puncturing code for the K=5 rate 1/2 conv coder. \end{DoxyCompactList}\item 
const struct \textbf{ gmr1\+\_\+puncturer} \textbf{ gmr1\+\_\+punct\+\_\+k5\+\_\+12\+\_\+D}
\begin{DoxyCompactList}\small\item\em GMR-\/1 D puncturing code for the K=5 rate 1/2 conv coder. \end{DoxyCompactList}\item 
const struct \textbf{ gmr1\+\_\+puncturer} \textbf{ gmr1\+\_\+punct\+\_\+k5\+\_\+12\+\_\+E}
\begin{DoxyCompactList}\small\item\em GMR-\/1 E puncturing code for the K=5 rate 1/2 conv coder. \end{DoxyCompactList}\item 
const struct \textbf{ gmr1\+\_\+puncturer} \textbf{ gmr1\+\_\+punct\+\_\+k5\+\_\+12\+\_\+\+P38}
\begin{DoxyCompactList}\small\item\em GMR-\/1 P(3;8) puncturing code for the K=5 rate 1/2 conv coder. \end{DoxyCompactList}\item 
const struct \textbf{ gmr1\+\_\+puncturer} \textbf{ gmr1\+\_\+punct\+\_\+k5\+\_\+12\+\_\+\+P26}
\begin{DoxyCompactList}\small\item\em GMR-\/1 P(2;6) puncturing code for the K=5 rate 1/2 conv coder. \end{DoxyCompactList}\item 
const struct \textbf{ gmr1\+\_\+puncturer} \textbf{ gmr1\+\_\+punct\+\_\+k5\+\_\+12\+\_\+\+P37}
\begin{DoxyCompactList}\small\item\em GMR-\/1 P(3;7) puncturing code for the K=5 rate 1/2 conv coder. \end{DoxyCompactList}\item 
const struct \textbf{ gmr1\+\_\+puncturer} \textbf{ gmr1\+\_\+punct\+\_\+k5\+\_\+13\+\_\+\+P16}
\begin{DoxyCompactList}\small\item\em GMR-\/1 P(1;6) puncturing code for the K=5 rate 1/3 conv coder. \end{DoxyCompactList}\item 
const struct \textbf{ gmr1\+\_\+puncturer} \textbf{ gmr1\+\_\+punct\+\_\+k5\+\_\+13\+\_\+\+P25}
\begin{DoxyCompactList}\small\item\em GMR-\/1 P(2;5) puncturing code for the K=5 rate 1/3 conv coder. \end{DoxyCompactList}\item 
const struct \textbf{ gmr1\+\_\+puncturer} \textbf{ gmr1\+\_\+punct\+\_\+k5\+\_\+13\+\_\+\+P15}
\begin{DoxyCompactList}\small\item\em GMR-\/1 P(1;5) puncturing code for the K=5 rate 1/3 conv coder. \end{DoxyCompactList}\item 
const struct \textbf{ gmr1\+\_\+puncturer} \textbf{ gmr1\+\_\+punct\+\_\+k5\+\_\+13\+\_\+\+Ps15}
\begin{DoxyCompactList}\small\item\em GMR-\/1 Ps(1;5) puncturing code for the K=5 rate 1/3 conv coder. \end{DoxyCompactList}\item 
const struct \textbf{ gmr1\+\_\+puncturer} \textbf{ gmr1\+\_\+punct\+\_\+k5\+\_\+13\+\_\+\+P78}
\begin{DoxyCompactList}\small\item\em GMR-\/1 P(7;8) puncturing code for the K=5 rate 1/3 conv coder. \end{DoxyCompactList}\item 
const struct \textbf{ gmr1\+\_\+puncturer} \textbf{ gmr1\+\_\+punct\+\_\+k5\+\_\+15\+\_\+\+P23}
\begin{DoxyCompactList}\small\item\em GMR-\/1 P(2;3) puncturing code for the K=5 rate 1/5 conv coder. \end{DoxyCompactList}\item 
const struct \textbf{ gmr1\+\_\+puncturer} \textbf{ gmr1\+\_\+punct\+\_\+k5\+\_\+15\+\_\+\+P53}
\begin{DoxyCompactList}\small\item\em GMR-\/1 P(5;3) puncturing code for the K=5 rate 1/5 conv coder. \end{DoxyCompactList}\item 
const struct \textbf{ gmr1\+\_\+puncturer} \textbf{ gmr1\+\_\+punct\+\_\+k5\+\_\+15\+\_\+\+Ps53}
\begin{DoxyCompactList}\small\item\em GMR-\/1 Ps(5;3) puncturing code for the K=5 rate 1/5 conv coder. \end{DoxyCompactList}\item 
const struct \textbf{ gmr1\+\_\+puncturer} \textbf{ gmr1\+\_\+punct\+\_\+k7\+\_\+12\+\_\+\+P23}
\begin{DoxyCompactList}\small\item\em GMR-\/1 P(2;3) puncturing code for the K=7 rate 1/2 conv coder. \end{DoxyCompactList}\item 
const struct \textbf{ gmr1\+\_\+puncturer} \textbf{ gmr1\+\_\+punct\+\_\+k7\+\_\+12\+\_\+\+P410}
\begin{DoxyCompactList}\small\item\em GMR-\/1 P(4;10) puncturing code for the K=7 rate 1/2 conv coder. \end{DoxyCompactList}\item 
const struct \textbf{ gmr1\+\_\+puncturer} \textbf{ gmr1\+\_\+punct\+\_\+k7\+\_\+12\+\_\+\+P512}
\begin{DoxyCompactList}\small\item\em GMR-\/1 P(5;12) puncturing code for the K=7 rate 1/2 conv coder. \end{DoxyCompactList}\item 
const struct \textbf{ gmr1\+\_\+puncturer} \textbf{ gmr1\+\_\+punct\+\_\+k7\+\_\+12\+\_\+\+P116}
\begin{DoxyCompactList}\small\item\em GMR-\/1 P(1;16) puncturing code for the K=7 rate 1/2 conv coder. \end{DoxyCompactList}\item 
const struct \textbf{ gmr1\+\_\+puncturer} {\bfseries gmr1\+\_\+punct\+\_\+k7\+\_\+12\+\_\+\+P148}
\begin{DoxyCompactList}\small\item\em GMR-\/1 P(1;48) puncturing code for the K=7 rate 1/2 conv coder. \end{DoxyCompactList}\item 
const struct \textbf{ gmr1\+\_\+puncturer} {\bfseries gmr1\+\_\+punct\+\_\+k7\+\_\+12\+\_\+\+P184}
\begin{DoxyCompactList}\small\item\em GMR-\/1 P(1;84) puncturing code for the K=7 rate 1/2 conv coder. \end{DoxyCompactList}\item 
const struct \textbf{ gmr1\+\_\+puncturer} {\bfseries gmr1\+\_\+punct\+\_\+k7\+\_\+12\+\_\+\+P1152}
\begin{DoxyCompactList}\small\item\em GMR-\/1 P(1;152) puncturing code for the K=7 rate 1/2 conv coder. \end{DoxyCompactList}\item 
const struct \textbf{ gmr1\+\_\+puncturer} \textbf{ gmr1\+\_\+punct\+\_\+k7\+\_\+12\+\_\+\+P45}
\begin{DoxyCompactList}\small\item\em GMR-\/1 P(4;5) puncturing code for the K=7 rate 1/2 conv coder. \end{DoxyCompactList}\item 
const struct \textbf{ gmr1\+\_\+puncturer} \textbf{ gmr1\+\_\+punct\+\_\+k7\+\_\+12\+\_\+\+P245}
\begin{DoxyCompactList}\small\item\em GMR-\/1 P2(4;5) puncturing code for the K=7 rate 1/2 conv coder. \end{DoxyCompactList}\item 
const struct \textbf{ gmr1\+\_\+puncturer} \textbf{ gmr1\+\_\+punct\+\_\+k9\+\_\+12\+\_\+\+P13}
\begin{DoxyCompactList}\small\item\em GMR-\/1 P(1;3) puncturing code for the K=9 rate 1/2 conv coder. \end{DoxyCompactList}\item 
const struct \textbf{ gmr1\+\_\+puncturer} \textbf{ gmr1\+\_\+punct\+\_\+k9\+\_\+12\+\_\+\+P47}
\begin{DoxyCompactList}\small\item\em GMR-\/1 P(4;7) puncturing code for the K=9 rate 1/2 conv coder. \end{DoxyCompactList}\item 
const struct \textbf{ gmr1\+\_\+puncturer} \textbf{ gmr1\+\_\+punct\+\_\+k9\+\_\+12\+\_\+\+P34}
\begin{DoxyCompactList}\small\item\em GMR-\/1 P(3;4) puncturing code for the K=9 rate 1/2 conv coder. \end{DoxyCompactList}\item 
const struct \textbf{ gmr1\+\_\+puncturer} \textbf{ gmr1\+\_\+punct\+\_\+k9\+\_\+12\+\_\+\+P17}
\begin{DoxyCompactList}\small\item\em GMR-\/1 P(1;7) puncturing code for the K=9 rate 1/2 conv coder. \end{DoxyCompactList}\item 
const struct \textbf{ gmr1\+\_\+puncturer} \textbf{ gmr1\+\_\+punct\+\_\+k9\+\_\+12\+\_\+\+P19}
\begin{DoxyCompactList}\small\item\em GMR-\/1 P(1;9) puncturing code for the K=9 rate 1/2 conv coder. \end{DoxyCompactList}\item 
const struct \textbf{ gmr1\+\_\+puncturer} \textbf{ gmr1\+\_\+punct\+\_\+k9\+\_\+12\+\_\+\+P26}
\begin{DoxyCompactList}\small\item\em GMR-\/1 P(2;6) puncturing code for the K=9 rate 1/2 conv coder. \end{DoxyCompactList}\item 
const struct \textbf{ gmr1\+\_\+puncturer} \textbf{ gmr1\+\_\+punct\+\_\+k9\+\_\+12\+\_\+\+P110}
\begin{DoxyCompactList}\small\item\em GMR-\/1 P(1;10) puncturing code for the K=9 rate 1/2 conv coder. \end{DoxyCompactList}\item 
const struct \textbf{ gmr1\+\_\+puncturer} \textbf{ gmr1\+\_\+punct\+\_\+k9\+\_\+12\+\_\+\+P14}
\begin{DoxyCompactList}\small\item\em GMR-\/1 P(1;4) puncturing code for the K=9 rate 1/2 conv coder. \end{DoxyCompactList}\item 
const struct \textbf{ gmr1\+\_\+puncturer} \textbf{ gmr1\+\_\+punct\+\_\+k9\+\_\+12\+\_\+\+P45}
\begin{DoxyCompactList}\small\item\em GMR-\/1 P(4;5) puncturing code for the K=9 rate 1/2 conv coder. \end{DoxyCompactList}\item 
const struct \textbf{ gmr1\+\_\+puncturer} \textbf{ gmr1\+\_\+punct\+\_\+k9\+\_\+12\+\_\+\+P234}
\begin{DoxyCompactList}\small\item\em GMR-\/1 P2(3;4) puncturing code for the K=9 rate 1/2 conv coder. \end{DoxyCompactList}\item 
const struct \textbf{ gmr1\+\_\+puncturer} \textbf{ gmr1\+\_\+punct\+\_\+k6\+\_\+14\+\_\+\+P45}
\begin{DoxyCompactList}\small\item\em GMR-\/1 P(4;5) puncturing code for the K=6 rate 1/4 conv coder. \end{DoxyCompactList}\item 
const struct \textbf{ gmr1\+\_\+puncturer} \textbf{ gmr1\+\_\+punct\+\_\+k9\+\_\+14\+\_\+\+P148}
\begin{DoxyCompactList}\small\item\em GMR-\/1 P(14;8) puncturing code for the K=9 rate 1/4 conv coder. \end{DoxyCompactList}\item 
const struct \textbf{ gmr1\+\_\+puncturer} \textbf{ gmr1\+\_\+punct\+\_\+k9\+\_\+14\+\_\+\+P65}
\begin{DoxyCompactList}\small\item\em GMR-\/1 P(6;5) puncturing code for the K=9 rate 1/4 conv coder. \end{DoxyCompactList}\item 
const struct \textbf{ gmr1\+\_\+puncturer} \textbf{ gmr1\+\_\+punct\+\_\+k9\+\_\+13\+\_\+\+P12}
\begin{DoxyCompactList}\small\item\em GMR-\/1 P(1;2) puncturing code for the K=9 rate 1/3 conv coder. \end{DoxyCompactList}\item 
const struct \textbf{ gmr1\+\_\+puncturer} \textbf{ gmr1\+\_\+punct\+\_\+k9\+\_\+13\+\_\+\+P1213}
\begin{DoxyCompactList}\small\item\em GMR-\/1 P(12;13) puncturing code for the K=9 rate 1/3 conv coder. \end{DoxyCompactList}\item 
const struct \textbf{ gmr1\+\_\+puncturer} \textbf{ gmr1\+\_\+punct\+\_\+k9\+\_\+13\+\_\+\+P44}
\begin{DoxyCompactList}\small\item\em GMR-\/1 P(4;4) puncturing code for the K=9 rate 1/3 conv coder. \end{DoxyCompactList}\item 
const struct \textbf{ gmr1\+\_\+puncturer} \textbf{ gmr1\+\_\+punct\+\_\+k9\+\_\+13\+\_\+\+P33}
\begin{DoxyCompactList}\small\item\em GMR-\/1 P(3;3) puncturing code for the K=9 rate 1/3 conv coder. \end{DoxyCompactList}\item 
const struct \textbf{ gmr1\+\_\+puncturer} \textbf{ gmr1\+\_\+punct\+\_\+k9\+\_\+13\+\_\+\+P65}
\begin{DoxyCompactList}\small\item\em GMR-\/1 P(6;5) puncturing code for the K=9 rate 1/3 conv coder. \end{DoxyCompactList}\end{DoxyCompactItemize}


\doxysubsection{Detailed Description}
Osmocom GMR-\/1 puncturing implementation. 

