\doxysection{src/gsm/iuup.c File Reference}
\label{iuup_8c}\index{src/gsm/iuup.c@{src/gsm/iuup.c}}
{\ttfamily \#include $<$errno.\+h$>$}\newline
{\ttfamily \#include $<$inttypes.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/core/crc8gen.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/core/crc16gen.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/core/fsm.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/core/prim.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/core/timer.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/core/logging.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/gsm/prim.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/gsm/protocol/gsm\+\_\+25\+\_\+415.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/gsm/iuup.\+h$>$}\newline
\doxysubsection*{Data Structures}
\begin{DoxyCompactItemize}
\item 
struct \textbf{ osmo\+\_\+timer\+\_\+nt}
\item 
struct \textbf{ osmo\+\_\+iuup\+\_\+instance}
\end{DoxyCompactItemize}
\doxysubsection*{Macros}
\begin{DoxyCompactItemize}
\item 
\#define \textbf{ S}(\textbf{ x})~(1 $<$$<$ (\textbf{ x}))
\item 
\#define \textbf{ IUUP\+\_\+\+TIMER\+\_\+\+INIT}~1
\item 
\#define \textbf{ IUUP\+\_\+\+TIMER\+\_\+\+TA}~2
\item 
\#define \textbf{ IUUP\+\_\+\+TIMER\+\_\+\+RC}~3
\item 
\#define \textbf{ IUUP\+\_\+\+MSGB\+\_\+\+SIZE}~4096
\item 
\#define \textbf{ PTR\+\_\+\+ALIGNMENT\+\_\+\+BYTES}~8
\item 
\#define \textbf{ IUUP\+\_\+\+MSGB\+\_\+\+HEADROOM\+\_\+\+MIN\+\_\+\+REQUIRED}~(\textbf{ OSMO\+\_\+\+MAX}(sizeof(struct \textbf{ osmo\+\_\+iuup\+\_\+tnl\+\_\+prim}), sizeof(struct \textbf{ osmo\+\_\+iuup\+\_\+rnl\+\_\+prim})) + (\textbf{ PTR\+\_\+\+ALIGNMENT\+\_\+\+BYTES} -\/ 1))
\end{DoxyCompactItemize}
\doxysubsection*{Enumerations}
\begin{DoxyCompactItemize}
\item 
enum \textbf{ iuup\+\_\+fsm\+\_\+state} \{ \newline
\textbf{ IUUP\+\_\+\+FSM\+\_\+\+ST\+\_\+\+NULL}
, \newline
\textbf{ IUUP\+\_\+\+FSM\+\_\+\+ST\+\_\+\+INIT}
, \newline
\textbf{ IUUP\+\_\+\+FSM\+\_\+\+ST\+\_\+\+Tr\+M\+\_\+\+DATA\+\_\+\+XFER\+\_\+\+READY}
, \newline
\textbf{ IUUP\+\_\+\+FSM\+\_\+\+ST\+\_\+\+SMp\+SDU\+\_\+\+DATA\+\_\+\+XFER\+\_\+\+READY}
 \}
\item 
enum \textbf{ iuup\+\_\+fsm\+\_\+event} \{ \newline
\textbf{ IUUP\+\_\+\+FSM\+\_\+\+EVT\+\_\+\+IUUP\+\_\+\+CONFIG\+\_\+\+REQ}
, \newline
\textbf{ IUUP\+\_\+\+FSM\+\_\+\+EVT\+\_\+\+IUUP\+\_\+\+DATA\+\_\+\+REQ}
, \newline
\textbf{ IUUP\+\_\+\+FSM\+\_\+\+EVT\+\_\+\+IUUP\+\_\+\+DATA\+\_\+\+IND}
, \newline
\textbf{ IUUP\+\_\+\+FSM\+\_\+\+EVT\+\_\+\+IUUP\+\_\+\+STATUS\+\_\+\+REQ}
, \newline
\textbf{ IUUP\+\_\+\+FSM\+\_\+\+EVT\+\_\+\+IUUP\+\_\+\+STATUS\+\_\+\+IND}
, \newline
\textbf{ IUUP\+\_\+\+FSM\+\_\+\+EVT\+\_\+\+SSASAR\+\_\+\+UNITDATA\+\_\+\+REQ}
, \newline
\textbf{ IUUP\+\_\+\+FSM\+\_\+\+EVT\+\_\+\+SSASAR\+\_\+\+UNITDATA\+\_\+\+IND}
, \newline
\textbf{ IUUP\+\_\+\+FSM\+\_\+\+EVT\+\_\+\+IUUP\+\_\+\+UNITDATA\+\_\+\+REQ}
, \newline
\textbf{ IUUP\+\_\+\+FSM\+\_\+\+EVT\+\_\+\+IUUP\+\_\+\+UNITDATA\+\_\+\+IND}
, \newline
\textbf{ IUUP\+\_\+\+FSM\+\_\+\+EVT\+\_\+\+INIT}
, \newline
\textbf{ IUUP\+\_\+\+FSM\+\_\+\+EVT\+\_\+\+LAST\+\_\+\+INIT\+\_\+\+ACK}
, \newline
\textbf{ IUUP\+\_\+\+FSM\+\_\+\+EVT\+\_\+\+INIT\+\_\+\+NACK}
 \}
\end{DoxyCompactItemize}
\doxysubsection*{Functions}
\begin{DoxyCompactItemize}
\item 
static int \textbf{ iuup\+\_\+get\+\_\+payload\+\_\+offset} (const uint8\+\_\+t $\ast$iuup\+\_\+pdu)
\item 
int \textbf{ osmo\+\_\+iuup\+\_\+compute\+\_\+payload\+\_\+crc} (const uint8\+\_\+t $\ast$iuup\+\_\+pdu, unsigned int pdu\+\_\+len)
\item 
int \textbf{ osmo\+\_\+iuup\+\_\+compute\+\_\+header\+\_\+crc} (const uint8\+\_\+t $\ast$iuup\+\_\+pdu, unsigned int pdu\+\_\+len)
\item 
static uint8\+\_\+t \textbf{ iuup\+\_\+get\+\_\+pdu\+\_\+type} (const uint8\+\_\+t $\ast$\textbf{ data})
\item 
static uint8\+\_\+t \textbf{ iuup\+\_\+get\+\_\+hdr\+\_\+crc} (const uint8\+\_\+t $\ast$\textbf{ data})
\item 
static struct \textbf{ msgb} $\ast$ \textbf{ osmo\+\_\+iuup\+\_\+msgb\+\_\+alloc\+\_\+c} (void $\ast$ctx, size\+\_\+t size)
\item 
static \textbf{ \+\_\+\+\_\+attribute\+\_\+\+\_\+} ((assume\+\_\+aligned(\textbf{ PTR\+\_\+\+ALIGNMENT\+\_\+\+BYTES})))
\item 
struct \textbf{ osmo\+\_\+iuup\+\_\+rnl\+\_\+prim} $\ast$ \textbf{ osmo\+\_\+iuup\+\_\+rnl\+\_\+prim\+\_\+alloc} (void $\ast$ctx, unsigned int primitive, unsigned int operation, unsigned int size)
\item 
struct \textbf{ osmo\+\_\+iuup\+\_\+tnl\+\_\+prim} $\ast$ \textbf{ osmo\+\_\+iuup\+\_\+tnl\+\_\+prim\+\_\+alloc} (void $\ast$ctx, unsigned int primitive, unsigned int operation, unsigned int size)
\item 
static struct \textbf{ osmo\+\_\+iuup\+\_\+tnl\+\_\+prim} $\ast$ \textbf{ itp\+\_\+ctrl\+\_\+ack\+\_\+alloc} (struct \textbf{ osmo\+\_\+iuup\+\_\+instance} $\ast$iui, enum \textbf{ iuup\+\_\+procedure} proc\+\_\+ind, uint8\+\_\+t fn)
\item 
static struct \textbf{ osmo\+\_\+iuup\+\_\+tnl\+\_\+prim} $\ast$ \textbf{ tnp\+\_\+ctrl\+\_\+nack\+\_\+alloc} (struct \textbf{ osmo\+\_\+iuup\+\_\+instance} $\ast$iui, enum \textbf{ iuup\+\_\+procedure} proc\+\_\+ind, enum \textbf{ iuup\+\_\+error\+\_\+cause} error\+\_\+cause, uint8\+\_\+t fn)
\item 
static struct \textbf{ osmo\+\_\+iuup\+\_\+tnl\+\_\+prim} $\ast$ \textbf{ tnp\+\_\+ctrl\+\_\+init\+\_\+alloc} (struct \textbf{ osmo\+\_\+iuup\+\_\+instance} $\ast$iui)
\item 
static struct \textbf{ osmo\+\_\+iuup\+\_\+rnl\+\_\+prim} $\ast$ \textbf{ irp\+\_\+init\+\_\+ind\+\_\+alloc} (struct \textbf{ osmo\+\_\+iuup\+\_\+instance} $\ast$iui)
\item 
static struct \textbf{ osmo\+\_\+iuup\+\_\+tnl\+\_\+prim} $\ast$ \textbf{ rnl\+\_\+to\+\_\+tnl\+\_\+data} (struct \textbf{ osmo\+\_\+iuup\+\_\+instance} $\ast$iui, struct \textbf{ osmo\+\_\+iuup\+\_\+rnl\+\_\+prim} $\ast$irp)
\item 
static struct \textbf{ osmo\+\_\+iuup\+\_\+rnl\+\_\+prim} $\ast$ \textbf{ tnl\+\_\+to\+\_\+rnl\+\_\+data} (struct \textbf{ osmo\+\_\+iuup\+\_\+tnl\+\_\+prim} $\ast$itp)
\item 
static struct \textbf{ osmo\+\_\+iuup\+\_\+rnl\+\_\+prim} $\ast$ \textbf{ irp\+\_\+error\+\_\+event\+\_\+alloc\+\_\+c} (void $\ast$ctx, enum \textbf{ iuup\+\_\+error\+\_\+cause} \textbf{ cause}, enum \textbf{ iuup\+\_\+error\+\_\+distance} distance)
\item 
static struct \textbf{ osmo\+\_\+iuup\+\_\+tnl\+\_\+prim} $\ast$ \textbf{ itp\+\_\+copy\+\_\+c} (void $\ast$ctx, const struct \textbf{ osmo\+\_\+iuup\+\_\+tnl\+\_\+prim} $\ast$src\+\_\+itp)
\item 
static void \textbf{ retransmit\+\_\+initialization} (struct \textbf{ osmo\+\_\+iuup\+\_\+instance} $\ast$iui)
\item 
static bool \textbf{ iuup\+\_\+rx\+\_\+initialization} (struct \textbf{ osmo\+\_\+iuup\+\_\+instance} $\ast$iui, struct \textbf{ osmo\+\_\+iuup\+\_\+tnl\+\_\+prim} $\ast$itp)
\item 
static void \textbf{ iuup\+\_\+fsm\+\_\+null} (struct \textbf{ osmo\+\_\+fsm\+\_\+inst} $\ast$fi, uint32\+\_\+t \textbf{ event}, void $\ast$\textbf{ data})
\item 
static void \textbf{ iuup\+\_\+fsm\+\_\+trm\+\_\+data} (struct \textbf{ osmo\+\_\+fsm\+\_\+inst} $\ast$fi, uint32\+\_\+t \textbf{ event}, void $\ast$\textbf{ data})
\item 
static void \textbf{ iuup\+\_\+fsm\+\_\+init\+\_\+on\+\_\+enter} (struct \textbf{ osmo\+\_\+fsm\+\_\+inst} $\ast$fi, uint32\+\_\+t prev\+\_\+state)
\item 
static void \textbf{ iuup\+\_\+fsm\+\_\+init} (struct \textbf{ osmo\+\_\+fsm\+\_\+inst} $\ast$fi, uint32\+\_\+t \textbf{ event}, void $\ast$\textbf{ data})
\item 
static void \textbf{ iuup\+\_\+fsm\+\_\+smpsdu\+\_\+data} (struct \textbf{ osmo\+\_\+fsm\+\_\+inst} $\ast$fi, uint32\+\_\+t \textbf{ event}, void $\ast$\textbf{ data})
\item 
static int \textbf{ iuup\+\_\+fsm\+\_\+timer\+\_\+cb} (struct \textbf{ osmo\+\_\+fsm\+\_\+inst} $\ast$fi)
\item 
static int \textbf{ iuup\+\_\+verify\+\_\+pdu} (const uint8\+\_\+t $\ast$\textbf{ data}, unsigned int \textbf{ len})
\item 
int \textbf{ osmo\+\_\+iuup\+\_\+tnl\+\_\+prim\+\_\+up} (struct \textbf{ osmo\+\_\+iuup\+\_\+instance} $\ast$inst, struct \textbf{ osmo\+\_\+iuup\+\_\+tnl\+\_\+prim} $\ast$itp)
\item 
int \textbf{ osmo\+\_\+iuup\+\_\+rnl\+\_\+prim\+\_\+down} (struct \textbf{ osmo\+\_\+iuup\+\_\+instance} $\ast$inst, struct \textbf{ osmo\+\_\+iuup\+\_\+rnl\+\_\+prim} $\ast$irp)
\item 
struct \textbf{ osmo\+\_\+iuup\+\_\+instance} $\ast$ \textbf{ osmo\+\_\+iuup\+\_\+instance\+\_\+alloc} (void $\ast$ctx, const char $\ast$id)
\item 
void \textbf{ osmo\+\_\+iuup\+\_\+instance\+\_\+free} (struct \textbf{ osmo\+\_\+iuup\+\_\+instance} $\ast$iui)
\item 
void \textbf{ osmo\+\_\+iuup\+\_\+instance\+\_\+set\+\_\+user\+\_\+prim\+\_\+cb} (struct \textbf{ osmo\+\_\+iuup\+\_\+instance} $\ast$iui, \textbf{ osmo\+\_\+prim\+\_\+cb} func, void $\ast$priv)
\item 
void \textbf{ osmo\+\_\+iuup\+\_\+instance\+\_\+set\+\_\+transport\+\_\+prim\+\_\+cb} (struct \textbf{ osmo\+\_\+iuup\+\_\+instance} $\ast$iui, \textbf{ osmo\+\_\+prim\+\_\+cb} func, void $\ast$priv)
\item 
static \textbf{ \+\_\+\+\_\+attribute\+\_\+\+\_\+} ((constructor))
\end{DoxyCompactItemize}
\doxysubsection*{Variables}
\begin{DoxyCompactItemize}
\item 
const struct \textbf{ osmo\+\_\+crc8gen\+\_\+code} \textbf{ iuup\+\_\+hdr\+\_\+crc\+\_\+code}
\item 
const struct \textbf{ osmo\+\_\+crc16gen\+\_\+code} \textbf{ iuup\+\_\+data\+\_\+crc\+\_\+code}
\item 
static const struct \textbf{ value\+\_\+string} \textbf{ iuup\+\_\+fsm\+\_\+event\+\_\+names} [$\,$]
\item 
static const struct \textbf{ osmo\+\_\+fsm\+\_\+state} \textbf{ iuup\+\_\+fsm\+\_\+states} [$\,$]
\item 
static struct \textbf{ osmo\+\_\+fsm} \textbf{ iuup\+\_\+fsm}
\end{DoxyCompactItemize}


\doxysubsection{Macro Definition Documentation}
\mbox{\label{iuup_8c_ab4cedc10536ae5c608f2ab9e3df84859}} 
\index{iuup.c@{iuup.c}!IUUP\_MSGB\_HEADROOM\_MIN\_REQUIRED@{IUUP\_MSGB\_HEADROOM\_MIN\_REQUIRED}}
\index{IUUP\_MSGB\_HEADROOM\_MIN\_REQUIRED@{IUUP\_MSGB\_HEADROOM\_MIN\_REQUIRED}!iuup.c@{iuup.c}}
\doxysubsubsection{IUUP\_MSGB\_HEADROOM\_MIN\_REQUIRED}
{\footnotesize\ttfamily \#define IUUP\+\_\+\+MSGB\+\_\+\+HEADROOM\+\_\+\+MIN\+\_\+\+REQUIRED~(\textbf{ OSMO\+\_\+\+MAX}(sizeof(struct \textbf{ osmo\+\_\+iuup\+\_\+tnl\+\_\+prim}), sizeof(struct \textbf{ osmo\+\_\+iuup\+\_\+rnl\+\_\+prim})) + (\textbf{ PTR\+\_\+\+ALIGNMENT\+\_\+\+BYTES} -\/ 1))}

\mbox{\label{iuup_8c_a8ac930033f2c19cdde402e4c9cecead6}} 
\index{iuup.c@{iuup.c}!IUUP\_MSGB\_SIZE@{IUUP\_MSGB\_SIZE}}
\index{IUUP\_MSGB\_SIZE@{IUUP\_MSGB\_SIZE}!iuup.c@{iuup.c}}
\doxysubsubsection{IUUP\_MSGB\_SIZE}
{\footnotesize\ttfamily \#define IUUP\+\_\+\+MSGB\+\_\+\+SIZE~4096}

\mbox{\label{iuup_8c_afaa9ddc4bf13ca73854a0694f956a2f2}} 
\index{iuup.c@{iuup.c}!IUUP\_TIMER\_INIT@{IUUP\_TIMER\_INIT}}
\index{IUUP\_TIMER\_INIT@{IUUP\_TIMER\_INIT}!iuup.c@{iuup.c}}
\doxysubsubsection{IUUP\_TIMER\_INIT}
{\footnotesize\ttfamily \#define IUUP\+\_\+\+TIMER\+\_\+\+INIT~1}

\mbox{\label{iuup_8c_af0acfe563e06a2c5f3dd7b000b915425}} 
\index{iuup.c@{iuup.c}!IUUP\_TIMER\_RC@{IUUP\_TIMER\_RC}}
\index{IUUP\_TIMER\_RC@{IUUP\_TIMER\_RC}!iuup.c@{iuup.c}}
\doxysubsubsection{IUUP\_TIMER\_RC}
{\footnotesize\ttfamily \#define IUUP\+\_\+\+TIMER\+\_\+\+RC~3}

\mbox{\label{iuup_8c_a85d9b4644c096c1a7f86f7352c956c39}} 
\index{iuup.c@{iuup.c}!IUUP\_TIMER\_TA@{IUUP\_TIMER\_TA}}
\index{IUUP\_TIMER\_TA@{IUUP\_TIMER\_TA}!iuup.c@{iuup.c}}
\doxysubsubsection{IUUP\_TIMER\_TA}
{\footnotesize\ttfamily \#define IUUP\+\_\+\+TIMER\+\_\+\+TA~2}

\mbox{\label{iuup_8c_a1a16b93b24c0c50826944df6aceb8ed5}} 
\index{iuup.c@{iuup.c}!PTR\_ALIGNMENT\_BYTES@{PTR\_ALIGNMENT\_BYTES}}
\index{PTR\_ALIGNMENT\_BYTES@{PTR\_ALIGNMENT\_BYTES}!iuup.c@{iuup.c}}
\doxysubsubsection{PTR\_ALIGNMENT\_BYTES}
{\footnotesize\ttfamily \#define PTR\+\_\+\+ALIGNMENT\+\_\+\+BYTES~8}

\mbox{\label{iuup_8c_ac4a3ed3432929804c708f7760fb79e28}} 
\index{iuup.c@{iuup.c}!S@{S}}
\index{S@{S}!iuup.c@{iuup.c}}
\doxysubsubsection{S}
{\footnotesize\ttfamily \#define S(\begin{DoxyParamCaption}\item[{}]{\textbf{ x} }\end{DoxyParamCaption})~(1 $<$$<$ (\textbf{ x}))}



\doxysubsection{Enumeration Type Documentation}
\mbox{\label{iuup_8c_a470ddd4b14fdf55a90d95141a547e427}} 
\index{iuup.c@{iuup.c}!iuup\_fsm\_event@{iuup\_fsm\_event}}
\index{iuup\_fsm\_event@{iuup\_fsm\_event}!iuup.c@{iuup.c}}
\doxysubsubsection{iuup\_fsm\_event}
{\footnotesize\ttfamily enum \textbf{ iuup\+\_\+fsm\+\_\+event}}

\begin{DoxyEnumFields}{Enumerator}
\raisebox{\heightof{T}}[0pt][0pt]{\index{IUUP\_FSM\_EVT\_IUUP\_CONFIG\_REQ@{IUUP\_FSM\_EVT\_IUUP\_CONFIG\_REQ}!iuup.c@{iuup.c}}\index{iuup.c@{iuup.c}!IUUP\_FSM\_EVT\_IUUP\_CONFIG\_REQ@{IUUP\_FSM\_EVT\_IUUP\_CONFIG\_REQ}}}\mbox{\label{iuup_8c_a470ddd4b14fdf55a90d95141a547e427ad4acba5f2850917d164c1e839eb75b2d}} 
IUUP\+\_\+\+FSM\+\_\+\+EVT\+\_\+\+IUUP\+\_\+\+CONFIG\+\_\+\+REQ&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{IUUP\_FSM\_EVT\_IUUP\_DATA\_REQ@{IUUP\_FSM\_EVT\_IUUP\_DATA\_REQ}!iuup.c@{iuup.c}}\index{iuup.c@{iuup.c}!IUUP\_FSM\_EVT\_IUUP\_DATA\_REQ@{IUUP\_FSM\_EVT\_IUUP\_DATA\_REQ}}}\mbox{\label{iuup_8c_a470ddd4b14fdf55a90d95141a547e427ac51919d328b32af53ae84ce79bdaa041}} 
IUUP\+\_\+\+FSM\+\_\+\+EVT\+\_\+\+IUUP\+\_\+\+DATA\+\_\+\+REQ&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{IUUP\_FSM\_EVT\_IUUP\_DATA\_IND@{IUUP\_FSM\_EVT\_IUUP\_DATA\_IND}!iuup.c@{iuup.c}}\index{iuup.c@{iuup.c}!IUUP\_FSM\_EVT\_IUUP\_DATA\_IND@{IUUP\_FSM\_EVT\_IUUP\_DATA\_IND}}}\mbox{\label{iuup_8c_a470ddd4b14fdf55a90d95141a547e427a21d7867569e2ed1f709d83637f16bacd}} 
IUUP\+\_\+\+FSM\+\_\+\+EVT\+\_\+\+IUUP\+\_\+\+DATA\+\_\+\+IND&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{IUUP\_FSM\_EVT\_IUUP\_STATUS\_REQ@{IUUP\_FSM\_EVT\_IUUP\_STATUS\_REQ}!iuup.c@{iuup.c}}\index{iuup.c@{iuup.c}!IUUP\_FSM\_EVT\_IUUP\_STATUS\_REQ@{IUUP\_FSM\_EVT\_IUUP\_STATUS\_REQ}}}\mbox{\label{iuup_8c_a470ddd4b14fdf55a90d95141a547e427a0815e1051700611b02a86a0dc4ca4381}} 
IUUP\+\_\+\+FSM\+\_\+\+EVT\+\_\+\+IUUP\+\_\+\+STATUS\+\_\+\+REQ&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{IUUP\_FSM\_EVT\_IUUP\_STATUS\_IND@{IUUP\_FSM\_EVT\_IUUP\_STATUS\_IND}!iuup.c@{iuup.c}}\index{iuup.c@{iuup.c}!IUUP\_FSM\_EVT\_IUUP\_STATUS\_IND@{IUUP\_FSM\_EVT\_IUUP\_STATUS\_IND}}}\mbox{\label{iuup_8c_a470ddd4b14fdf55a90d95141a547e427af98f6a98907bb2d9fad515f770517731}} 
IUUP\+\_\+\+FSM\+\_\+\+EVT\+\_\+\+IUUP\+\_\+\+STATUS\+\_\+\+IND&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{IUUP\_FSM\_EVT\_SSASAR\_UNITDATA\_REQ@{IUUP\_FSM\_EVT\_SSASAR\_UNITDATA\_REQ}!iuup.c@{iuup.c}}\index{iuup.c@{iuup.c}!IUUP\_FSM\_EVT\_SSASAR\_UNITDATA\_REQ@{IUUP\_FSM\_EVT\_SSASAR\_UNITDATA\_REQ}}}\mbox{\label{iuup_8c_a470ddd4b14fdf55a90d95141a547e427a97c450af5f0bfa143c96642380a36a79}} 
IUUP\+\_\+\+FSM\+\_\+\+EVT\+\_\+\+SSASAR\+\_\+\+UNITDATA\+\_\+\+REQ&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{IUUP\_FSM\_EVT\_SSASAR\_UNITDATA\_IND@{IUUP\_FSM\_EVT\_SSASAR\_UNITDATA\_IND}!iuup.c@{iuup.c}}\index{iuup.c@{iuup.c}!IUUP\_FSM\_EVT\_SSASAR\_UNITDATA\_IND@{IUUP\_FSM\_EVT\_SSASAR\_UNITDATA\_IND}}}\mbox{\label{iuup_8c_a470ddd4b14fdf55a90d95141a547e427ab4f97a26b22c796bd4aa63e89e220494}} 
IUUP\+\_\+\+FSM\+\_\+\+EVT\+\_\+\+SSASAR\+\_\+\+UNITDATA\+\_\+\+IND&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{IUUP\_FSM\_EVT\_IUUP\_UNITDATA\_REQ@{IUUP\_FSM\_EVT\_IUUP\_UNITDATA\_REQ}!iuup.c@{iuup.c}}\index{iuup.c@{iuup.c}!IUUP\_FSM\_EVT\_IUUP\_UNITDATA\_REQ@{IUUP\_FSM\_EVT\_IUUP\_UNITDATA\_REQ}}}\mbox{\label{iuup_8c_a470ddd4b14fdf55a90d95141a547e427a45ecf2da46593048dfc6b01bbcdb25d5}} 
IUUP\+\_\+\+FSM\+\_\+\+EVT\+\_\+\+IUUP\+\_\+\+UNITDATA\+\_\+\+REQ&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{IUUP\_FSM\_EVT\_IUUP\_UNITDATA\_IND@{IUUP\_FSM\_EVT\_IUUP\_UNITDATA\_IND}!iuup.c@{iuup.c}}\index{iuup.c@{iuup.c}!IUUP\_FSM\_EVT\_IUUP\_UNITDATA\_IND@{IUUP\_FSM\_EVT\_IUUP\_UNITDATA\_IND}}}\mbox{\label{iuup_8c_a470ddd4b14fdf55a90d95141a547e427a4489d311f9f56b0d19f777c08d428211}} 
IUUP\+\_\+\+FSM\+\_\+\+EVT\+\_\+\+IUUP\+\_\+\+UNITDATA\+\_\+\+IND&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{IUUP\_FSM\_EVT\_INIT@{IUUP\_FSM\_EVT\_INIT}!iuup.c@{iuup.c}}\index{iuup.c@{iuup.c}!IUUP\_FSM\_EVT\_INIT@{IUUP\_FSM\_EVT\_INIT}}}\mbox{\label{iuup_8c_a470ddd4b14fdf55a90d95141a547e427a44ec26302d2654e5c6912b954f0df648}} 
IUUP\+\_\+\+FSM\+\_\+\+EVT\+\_\+\+INIT&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{IUUP\_FSM\_EVT\_LAST\_INIT\_ACK@{IUUP\_FSM\_EVT\_LAST\_INIT\_ACK}!iuup.c@{iuup.c}}\index{iuup.c@{iuup.c}!IUUP\_FSM\_EVT\_LAST\_INIT\_ACK@{IUUP\_FSM\_EVT\_LAST\_INIT\_ACK}}}\mbox{\label{iuup_8c_a470ddd4b14fdf55a90d95141a547e427a679992a689229c6724796c9582a02ab6}} 
IUUP\+\_\+\+FSM\+\_\+\+EVT\+\_\+\+LAST\+\_\+\+INIT\+\_\+\+ACK&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{IUUP\_FSM\_EVT\_INIT\_NACK@{IUUP\_FSM\_EVT\_INIT\_NACK}!iuup.c@{iuup.c}}\index{iuup.c@{iuup.c}!IUUP\_FSM\_EVT\_INIT\_NACK@{IUUP\_FSM\_EVT\_INIT\_NACK}}}\mbox{\label{iuup_8c_a470ddd4b14fdf55a90d95141a547e427a651e4a86ad9a6355a822a8e303bbcbd5}} 
IUUP\+\_\+\+FSM\+\_\+\+EVT\+\_\+\+INIT\+\_\+\+NACK&\\
\hline

\end{DoxyEnumFields}
\mbox{\label{iuup_8c_a8497f30f9360630b58cdc6896209f645}} 
\index{iuup.c@{iuup.c}!iuup\_fsm\_state@{iuup\_fsm\_state}}
\index{iuup\_fsm\_state@{iuup\_fsm\_state}!iuup.c@{iuup.c}}
\doxysubsubsection{iuup\_fsm\_state}
{\footnotesize\ttfamily enum \textbf{ iuup\+\_\+fsm\+\_\+state}}

\begin{DoxyEnumFields}{Enumerator}
\raisebox{\heightof{T}}[0pt][0pt]{\index{IUUP\_FSM\_ST\_NULL@{IUUP\_FSM\_ST\_NULL}!iuup.c@{iuup.c}}\index{iuup.c@{iuup.c}!IUUP\_FSM\_ST\_NULL@{IUUP\_FSM\_ST\_NULL}}}\mbox{\label{iuup_8c_a8497f30f9360630b58cdc6896209f645abddcfba37f8852f3ff9d6efaa8ff2118}} 
IUUP\+\_\+\+FSM\+\_\+\+ST\+\_\+\+NULL&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{IUUP\_FSM\_ST\_INIT@{IUUP\_FSM\_ST\_INIT}!iuup.c@{iuup.c}}\index{iuup.c@{iuup.c}!IUUP\_FSM\_ST\_INIT@{IUUP\_FSM\_ST\_INIT}}}\mbox{\label{iuup_8c_a8497f30f9360630b58cdc6896209f645aaeb79ed3407ec5e009394a504ea2aa84}} 
IUUP\+\_\+\+FSM\+\_\+\+ST\+\_\+\+INIT&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{IUUP\_FSM\_ST\_TrM\_DATA\_XFER\_READY@{IUUP\_FSM\_ST\_TrM\_DATA\_XFER\_READY}!iuup.c@{iuup.c}}\index{iuup.c@{iuup.c}!IUUP\_FSM\_ST\_TrM\_DATA\_XFER\_READY@{IUUP\_FSM\_ST\_TrM\_DATA\_XFER\_READY}}}\mbox{\label{iuup_8c_a8497f30f9360630b58cdc6896209f645a77429885267adedb1e8d54e098649a47}} 
IUUP\+\_\+\+FSM\+\_\+\+ST\+\_\+\+Tr\+M\+\_\+\+DATA\+\_\+\+XFER\+\_\+\+READY&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{IUUP\_FSM\_ST\_SMpSDU\_DATA\_XFER\_READY@{IUUP\_FSM\_ST\_SMpSDU\_DATA\_XFER\_READY}!iuup.c@{iuup.c}}\index{iuup.c@{iuup.c}!IUUP\_FSM\_ST\_SMpSDU\_DATA\_XFER\_READY@{IUUP\_FSM\_ST\_SMpSDU\_DATA\_XFER\_READY}}}\mbox{\label{iuup_8c_a8497f30f9360630b58cdc6896209f645a7784cd600d5dde8d085fa60f95616291}} 
IUUP\+\_\+\+FSM\+\_\+\+ST\+\_\+\+SMp\+SDU\+\_\+\+DATA\+\_\+\+XFER\+\_\+\+READY&\\
\hline

\end{DoxyEnumFields}


\doxysubsection{Function Documentation}
\mbox{\label{iuup_8c_a2396f45ced64f19fb4190b8b5ee434a6}} 
\index{iuup.c@{iuup.c}!\_\_attribute\_\_@{\_\_attribute\_\_}}
\index{\_\_attribute\_\_@{\_\_attribute\_\_}!iuup.c@{iuup.c}}
\doxysubsubsection{\_\_attribute\_\_()\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily static \+\_\+\+\_\+attribute\+\_\+\+\_\+ (\begin{DoxyParamCaption}\item[{(assume\+\_\+aligned(\textbf{ PTR\+\_\+\+ALIGNMENT\+\_\+\+BYTES}))}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}



References \textbf{ len}, \textbf{ msg}, \textbf{ msgb\+\_\+data()}, \textbf{ msgb\+\_\+push()}, and \textbf{ PTR\+\_\+\+ALIGNMENT\+\_\+\+BYTES}.

\mbox{\label{iuup_8c_a9ed16867a9394d9ccf1132194edae298}} 
\index{iuup.c@{iuup.c}!\_\_attribute\_\_@{\_\_attribute\_\_}}
\index{\_\_attribute\_\_@{\_\_attribute\_\_}!iuup.c@{iuup.c}}
\doxysubsubsection{\_\_attribute\_\_()\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily static \+\_\+\+\_\+attribute\+\_\+\+\_\+ (\begin{DoxyParamCaption}\item[{(constructor)}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ iuup\+\_\+fsm}, \textbf{ OSMO\+\_\+\+ASSERT}, and \textbf{ osmo\+\_\+fsm\+\_\+register()}.

\mbox{\label{iuup_8c_a2a2aba95d0b1ec8acb110dd57515dbc8}} 
\index{iuup.c@{iuup.c}!irp\_error\_event\_alloc\_c@{irp\_error\_event\_alloc\_c}}
\index{irp\_error\_event\_alloc\_c@{irp\_error\_event\_alloc\_c}!iuup.c@{iuup.c}}
\doxysubsubsection{irp\_error\_event\_alloc\_c()}
{\footnotesize\ttfamily static struct \textbf{ osmo\+\_\+iuup\+\_\+rnl\+\_\+prim} $\ast$ irp\+\_\+error\+\_\+event\+\_\+alloc\+\_\+c (\begin{DoxyParamCaption}\item[{void $\ast$}]{ctx,  }\item[{enum \textbf{ iuup\+\_\+error\+\_\+cause}}]{cause,  }\item[{enum \textbf{ iuup\+\_\+error\+\_\+distance}}]{distance }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ osmo\+\_\+iuup\+\_\+rnl\+\_\+status\+::cause}, \textbf{ cause}, \textbf{ osmo\+\_\+iuup\+\_\+rnl\+\_\+status\+::distance}, \textbf{ osmo\+\_\+iuup\+\_\+rnl\+\_\+status\+::error\+\_\+event}, \textbf{ IUUP\+\_\+\+PROC\+\_\+\+ERR\+\_\+\+EVENT}, \textbf{ msg}, \textbf{ msgb\+\_\+alloc\+\_\+c()}, \textbf{ msgb\+\_\+put()}, \textbf{ osmo\+\_\+iuup\+\_\+rnl\+\_\+prim\+::oph}, \textbf{ OSMO\+\_\+\+IUUP\+\_\+\+RNL\+\_\+\+STATUS}, \textbf{ osmo\+\_\+prim\+\_\+init()}, \textbf{ PRIM\+\_\+\+OP\+\_\+\+INDICATION}, \textbf{ osmo\+\_\+iuup\+\_\+rnl\+\_\+status\+::procedure}, \textbf{ SAP\+\_\+\+IUUP\+\_\+\+RNL}, \textbf{ osmo\+\_\+iuup\+\_\+rnl\+\_\+prim\+::status}, \textbf{ osmo\+\_\+iuup\+\_\+rnl\+\_\+status\+::u}, and \textbf{ osmo\+\_\+iuup\+\_\+rnl\+\_\+prim\+::u}.



Referenced by \textbf{ iuup\+\_\+fsm\+\_\+init()}, and \textbf{ iuup\+\_\+fsm\+\_\+timer\+\_\+cb()}.

\mbox{\label{iuup_8c_afba92d7c6c0098c69a7544c3a6f27784}} 
\index{iuup.c@{iuup.c}!irp\_init\_ind\_alloc@{irp\_init\_ind\_alloc}}
\index{irp\_init\_ind\_alloc@{irp\_init\_ind\_alloc}!iuup.c@{iuup.c}}
\doxysubsubsection{irp\_init\_ind\_alloc()}
{\footnotesize\ttfamily static struct \textbf{ osmo\+\_\+iuup\+\_\+rnl\+\_\+prim} $\ast$ irp\+\_\+init\+\_\+ind\+\_\+alloc (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+iuup\+\_\+instance} $\ast$}]{iui }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ osmo\+\_\+iuup\+\_\+instance\+::config}, \textbf{ osmo\+\_\+iuup\+\_\+rnl\+\_\+config\+::data\+\_\+pdu\+\_\+type}, \textbf{ osmo\+\_\+iuup\+\_\+rnl\+\_\+status\+::data\+\_\+pdu\+\_\+type}, \textbf{ osmo\+\_\+iuup\+\_\+rnl\+\_\+status\+::initialization}, \textbf{ osmo\+\_\+iuup\+\_\+rnl\+\_\+config\+::\+IPTIs\+\_\+present}, \textbf{ osmo\+\_\+iuup\+\_\+rnl\+\_\+status\+::\+IPTIs\+\_\+present}, \textbf{ IUUP\+\_\+\+MSGB\+\_\+\+SIZE}, \textbf{ IUUP\+\_\+\+PROC\+\_\+\+INIT}, \textbf{ osmo\+\_\+iuup\+\_\+rnl\+\_\+status\+::mode\+\_\+version}, \textbf{ osmo\+\_\+iuup\+\_\+instance\+::mode\+\_\+version}, \textbf{ osmo\+\_\+iuup\+\_\+rnl\+\_\+config\+::num\+\_\+rfci}, \textbf{ osmo\+\_\+iuup\+\_\+rnl\+\_\+status\+::num\+\_\+rfci}, \textbf{ osmo\+\_\+iuup\+\_\+rnl\+\_\+config\+::num\+\_\+subflows}, \textbf{ osmo\+\_\+iuup\+\_\+rnl\+\_\+status\+::num\+\_\+subflows}, \textbf{ osmo\+\_\+iuup\+\_\+rnl\+\_\+prim\+\_\+alloc()}, \textbf{ OSMO\+\_\+\+IUUP\+\_\+\+RNL\+\_\+\+STATUS}, \textbf{ PRIM\+\_\+\+OP\+\_\+\+INDICATION}, \textbf{ osmo\+\_\+iuup\+\_\+rnl\+\_\+status\+::procedure}, \textbf{ osmo\+\_\+iuup\+\_\+rnl\+\_\+config\+::rfci}, \textbf{ osmo\+\_\+iuup\+\_\+rnl\+\_\+status\+::rfci}, \textbf{ osmo\+\_\+iuup\+\_\+rnl\+\_\+prim\+::status}, \textbf{ osmo\+\_\+iuup\+\_\+rnl\+\_\+status\+::u}, and \textbf{ osmo\+\_\+iuup\+\_\+rnl\+\_\+prim\+::u}.

\mbox{\label{iuup_8c_a8fc780334f517115578e98e915e718b5}} 
\index{iuup.c@{iuup.c}!itp\_copy\_c@{itp\_copy\_c}}
\index{itp\_copy\_c@{itp\_copy\_c}!iuup.c@{iuup.c}}
\doxysubsubsection{itp\_copy\_c()}
{\footnotesize\ttfamily static struct \textbf{ osmo\+\_\+iuup\+\_\+tnl\+\_\+prim} $\ast$ itp\+\_\+copy\+\_\+c (\begin{DoxyParamCaption}\item[{void $\ast$}]{ctx,  }\item[{const struct \textbf{ osmo\+\_\+iuup\+\_\+tnl\+\_\+prim} $\ast$}]{src\+\_\+itp }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ osmo\+\_\+prim\+\_\+hdr\+::msg}, \textbf{ msg}, \textbf{ msgb\+\_\+copy\+\_\+c()}, \textbf{ msgb\+\_\+data()}, and \textbf{ osmo\+\_\+iuup\+\_\+tnl\+\_\+prim\+::oph}.



Referenced by \textbf{ retransmit\+\_\+initialization()}.

\mbox{\label{iuup_8c_ae73a6b1babdc7bda7fe42dc56f8ffab4}} 
\index{iuup.c@{iuup.c}!itp\_ctrl\_ack\_alloc@{itp\_ctrl\_ack\_alloc}}
\index{itp\_ctrl\_ack\_alloc@{itp\_ctrl\_ack\_alloc}!iuup.c@{iuup.c}}
\doxysubsubsection{itp\_ctrl\_ack\_alloc()}
{\footnotesize\ttfamily static struct \textbf{ osmo\+\_\+iuup\+\_\+tnl\+\_\+prim} $\ast$ itp\+\_\+ctrl\+\_\+ack\+\_\+alloc (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+iuup\+\_\+instance} $\ast$}]{iui,  }\item[{enum \textbf{ iuup\+\_\+procedure}}]{proc\+\_\+ind,  }\item[{uint8\+\_\+t}]{fn }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ iuup\+\_\+ctrl\+\_\+ack\+::hdr}, \textbf{ IUUP\+\_\+\+AN\+\_\+\+ACK}, \textbf{ IUUP\+\_\+\+MSGB\+\_\+\+SIZE}, \textbf{ IUUP\+\_\+\+PDU\+\_\+\+T\+\_\+\+CONTROL}, \textbf{ msgb\+::l2h}, \textbf{ osmo\+\_\+iuup\+\_\+instance\+::mode\+\_\+version}, \textbf{ osmo\+\_\+prim\+\_\+hdr\+::msg}, \textbf{ msgb\+\_\+l2}, \textbf{ msgb\+\_\+l2len()}, \textbf{ msgb\+\_\+put()}, \textbf{ osmo\+\_\+iuup\+\_\+tnl\+\_\+prim\+::oph}, \textbf{ osmo\+\_\+iuup\+\_\+compute\+\_\+header\+\_\+crc()}, \textbf{ osmo\+\_\+iuup\+\_\+tnl\+\_\+prim\+\_\+alloc()}, \textbf{ OSMO\+\_\+\+IUUP\+\_\+\+TNL\+\_\+\+UNITDATA}, and \textbf{ PRIM\+\_\+\+OP\+\_\+\+REQUEST}.

\mbox{\label{iuup_8c_ac4ac477b1b3b77a7d375cd971e44b982}} 
\index{iuup.c@{iuup.c}!iuup\_fsm\_init@{iuup\_fsm\_init}}
\index{iuup\_fsm\_init@{iuup\_fsm\_init}!iuup.c@{iuup.c}}
\doxysubsubsection{iuup\_fsm\_init()}
{\footnotesize\ttfamily static void iuup\+\_\+fsm\+\_\+init (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+fsm\+\_\+inst} $\ast$}]{fi,  }\item[{uint32\+\_\+t}]{event,  }\item[{void $\ast$}]{data }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ osmo\+\_\+iuup\+\_\+instance\+::config}, \textbf{ data}, \textbf{ osmo\+\_\+iuup\+\_\+instance\+::fi}, \textbf{ osmo\+\_\+iuup\+\_\+instance\+::init}, \textbf{ irp\+\_\+error\+\_\+event\+\_\+alloc\+\_\+c()}, \textbf{ IUUP\+\_\+\+ERR\+\_\+\+CAUSE\+\_\+\+INIT\+\_\+\+FAILURE\+\_\+\+REP\+\_\+\+NACK}, \textbf{ IUUP\+\_\+\+ERR\+\_\+\+DIST\+\_\+\+SECOND\+\_\+\+FWD}, \textbf{ IUUP\+\_\+\+FSM\+\_\+\+EVT\+\_\+\+INIT}, \textbf{ IUUP\+\_\+\+FSM\+\_\+\+EVT\+\_\+\+INIT\+\_\+\+NACK}, \textbf{ IUUP\+\_\+\+FSM\+\_\+\+EVT\+\_\+\+IUUP\+\_\+\+CONFIG\+\_\+\+REQ}, \textbf{ IUUP\+\_\+\+FSM\+\_\+\+EVT\+\_\+\+IUUP\+\_\+\+DATA\+\_\+\+REQ}, \textbf{ IUUP\+\_\+\+FSM\+\_\+\+EVT\+\_\+\+LAST\+\_\+\+INIT\+\_\+\+ACK}, \textbf{ IUUP\+\_\+\+FSM\+\_\+\+ST\+\_\+\+NULL}, \textbf{ IUUP\+\_\+\+FSM\+\_\+\+ST\+\_\+\+SMp\+SDU\+\_\+\+DATA\+\_\+\+XFER\+\_\+\+READY}, \textbf{ iuup\+\_\+rx\+\_\+initialization()}, \textbf{ LOGL\+\_\+\+INFO}, \textbf{ LOGL\+\_\+\+NOTICE}, \textbf{ LOGPFSML}, \textbf{ osmo\+\_\+prim\+\_\+hdr\+::msg}, \textbf{ msgb\+\_\+free()}, \textbf{ osmo\+\_\+timer\+\_\+nt\+::n}, \textbf{ osmo\+\_\+iuup\+\_\+rnl\+\_\+config\+\_\+timer\+::n\+\_\+max}, \textbf{ osmo\+\_\+iuup\+\_\+rnl\+\_\+prim\+::oph}, \textbf{ OSMO\+\_\+\+ASSERT}, \textbf{ osmo\+\_\+fsm\+\_\+inst\+\_\+state\+\_\+chg}, \textbf{ osmo\+\_\+timer\+\_\+del()}, \textbf{ osmo\+\_\+fsm\+\_\+inst\+::priv}, \textbf{ retransmit\+\_\+initialization()}, \textbf{ osmo\+\_\+iuup\+\_\+rnl\+\_\+config\+::t\+\_\+init}, \textbf{ osmo\+\_\+fsm\+\_\+inst\+::timer}, \textbf{ osmo\+\_\+iuup\+\_\+instance\+::timer}, \textbf{ osmo\+\_\+iuup\+\_\+instance\+::user\+\_\+prim\+\_\+cb}, and \textbf{ osmo\+\_\+iuup\+\_\+instance\+::user\+\_\+prim\+\_\+priv}.

\mbox{\label{iuup_8c_a8f17804e5c1eea339039aea805fef5ae}} 
\index{iuup.c@{iuup.c}!iuup\_fsm\_init\_on\_enter@{iuup\_fsm\_init\_on\_enter}}
\index{iuup\_fsm\_init\_on\_enter@{iuup\_fsm\_init\_on\_enter}!iuup.c@{iuup.c}}
\doxysubsubsection{iuup\_fsm\_init\_on\_enter()}
{\footnotesize\ttfamily static void iuup\+\_\+fsm\+\_\+init\+\_\+on\+\_\+enter (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+fsm\+\_\+inst} $\ast$}]{fi,  }\item[{uint32\+\_\+t}]{prev\+\_\+state }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ osmo\+\_\+iuup\+\_\+rnl\+\_\+config\+::active}, \textbf{ osmo\+\_\+iuup\+\_\+instance\+::config}, \textbf{ osmo\+\_\+iuup\+\_\+instance\+::fi}, \textbf{ osmo\+\_\+iuup\+\_\+instance\+::init}, \textbf{ osmo\+\_\+timer\+\_\+nt\+::n}, \textbf{ osmo\+\_\+fsm\+\_\+inst\+::priv}, \textbf{ osmo\+\_\+timer\+\_\+nt\+::retrans\+\_\+itp}, \textbf{ retransmit\+\_\+initialization()}, \textbf{ osmo\+\_\+iuup\+\_\+instance\+::timer}, \textbf{ tnp\+\_\+ctrl\+\_\+init\+\_\+alloc()}, and \textbf{ osmo\+\_\+iuup\+\_\+instance\+::type14\+\_\+fn}.

\mbox{\label{iuup_8c_a27fb3f8994de42021d392321147c39a8}} 
\index{iuup.c@{iuup.c}!iuup\_fsm\_null@{iuup\_fsm\_null}}
\index{iuup\_fsm\_null@{iuup\_fsm\_null}!iuup.c@{iuup.c}}
\doxysubsubsection{iuup\_fsm\_null()}
{\footnotesize\ttfamily static void iuup\+\_\+fsm\+\_\+null (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+fsm\+\_\+inst} $\ast$}]{fi,  }\item[{uint32\+\_\+t}]{event,  }\item[{void $\ast$}]{data }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ osmo\+\_\+iuup\+\_\+rnl\+\_\+prim\+::config}, \textbf{ osmo\+\_\+iuup\+\_\+instance\+::config}, \textbf{ data}, \textbf{ osmo\+\_\+iuup\+\_\+instance\+::fi}, \textbf{ IUUP\+\_\+\+FSM\+\_\+\+EVT\+\_\+\+IUUP\+\_\+\+CONFIG\+\_\+\+REQ}, \textbf{ IUUP\+\_\+\+FSM\+\_\+\+ST\+\_\+\+INIT}, \textbf{ IUUP\+\_\+\+FSM\+\_\+\+ST\+\_\+\+Tr\+M\+\_\+\+DATA\+\_\+\+XFER\+\_\+\+READY}, \textbf{ osmo\+\_\+fsm\+\_\+inst\+\_\+state\+\_\+chg}, \textbf{ osmo\+\_\+fsm\+\_\+inst\+::priv}, \textbf{ osmo\+\_\+iuup\+\_\+rnl\+\_\+config\+::supported\+\_\+versions\+\_\+mask}, \textbf{ osmo\+\_\+iuup\+\_\+rnl\+\_\+config\+::transparent}, and \textbf{ osmo\+\_\+iuup\+\_\+rnl\+\_\+prim\+::u}.

\mbox{\label{iuup_8c_ae71ba9ab9843f6290f040ba63dce6536}} 
\index{iuup.c@{iuup.c}!iuup\_fsm\_smpsdu\_data@{iuup\_fsm\_smpsdu\_data}}
\index{iuup\_fsm\_smpsdu\_data@{iuup\_fsm\_smpsdu\_data}!iuup.c@{iuup.c}}
\doxysubsubsection{iuup\_fsm\_smpsdu\_data()}
{\footnotesize\ttfamily static void iuup\+\_\+fsm\+\_\+smpsdu\+\_\+data (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+fsm\+\_\+inst} $\ast$}]{fi,  }\item[{uint32\+\_\+t}]{event,  }\item[{void $\ast$}]{data }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ data}, \textbf{ osmo\+\_\+iuup\+\_\+instance\+::fi}, \textbf{ IUUP\+\_\+\+FSM\+\_\+\+EVT\+\_\+\+INIT}, \textbf{ IUUP\+\_\+\+FSM\+\_\+\+EVT\+\_\+\+IUUP\+\_\+\+CONFIG\+\_\+\+REQ}, \textbf{ IUUP\+\_\+\+FSM\+\_\+\+EVT\+\_\+\+IUUP\+\_\+\+DATA\+\_\+\+IND}, \textbf{ IUUP\+\_\+\+FSM\+\_\+\+EVT\+\_\+\+IUUP\+\_\+\+DATA\+\_\+\+REQ}, \textbf{ IUUP\+\_\+\+FSM\+\_\+\+ST\+\_\+\+INIT}, \textbf{ IUUP\+\_\+\+FSM\+\_\+\+ST\+\_\+\+NULL}, \textbf{ iuup\+\_\+rx\+\_\+initialization()}, \textbf{ osmo\+\_\+iuup\+\_\+tnl\+\_\+prim\+::oph}, \textbf{ osmo\+\_\+iuup\+\_\+rnl\+\_\+prim\+::oph}, \textbf{ osmo\+\_\+fsm\+\_\+inst\+\_\+state\+\_\+chg}, \textbf{ osmo\+\_\+fsm\+\_\+inst\+::priv}, \textbf{ rnl\+\_\+to\+\_\+tnl\+\_\+data()}, \textbf{ tnl\+\_\+to\+\_\+rnl\+\_\+data()}, \textbf{ osmo\+\_\+iuup\+\_\+instance\+::transport\+\_\+prim\+\_\+cb}, \textbf{ osmo\+\_\+iuup\+\_\+instance\+::transport\+\_\+prim\+\_\+priv}, \textbf{ osmo\+\_\+iuup\+\_\+instance\+::user\+\_\+prim\+\_\+cb}, and \textbf{ osmo\+\_\+iuup\+\_\+instance\+::user\+\_\+prim\+\_\+priv}.

\mbox{\label{iuup_8c_ada8c3fbd2301a9ca17d154d0198c6036}} 
\index{iuup.c@{iuup.c}!iuup\_fsm\_timer\_cb@{iuup\_fsm\_timer\_cb}}
\index{iuup\_fsm\_timer\_cb@{iuup\_fsm\_timer\_cb}!iuup.c@{iuup.c}}
\doxysubsubsection{iuup\_fsm\_timer\_cb()}
{\footnotesize\ttfamily static int iuup\+\_\+fsm\+\_\+timer\+\_\+cb (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+fsm\+\_\+inst} $\ast$}]{fi }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ osmo\+\_\+iuup\+\_\+instance\+::config}, \textbf{ osmo\+\_\+iuup\+\_\+instance\+::fi}, \textbf{ osmo\+\_\+iuup\+\_\+instance\+::init}, \textbf{ irp\+\_\+error\+\_\+event\+\_\+alloc\+\_\+c()}, \textbf{ IUUP\+\_\+\+ERR\+\_\+\+CAUSE\+\_\+\+INIT\+\_\+\+FAILURE\+\_\+\+NET\+\_\+\+TMR}, \textbf{ IUUP\+\_\+\+ERR\+\_\+\+DIST\+\_\+\+LOCAL}, \textbf{ IUUP\+\_\+\+FSM\+\_\+\+ST\+\_\+\+INIT}, \textbf{ IUUP\+\_\+\+TIMER\+\_\+\+INIT}, \textbf{ IUUP\+\_\+\+TIMER\+\_\+\+RC}, \textbf{ IUUP\+\_\+\+TIMER\+\_\+\+TA}, \textbf{ osmo\+\_\+timer\+\_\+nt\+::n}, \textbf{ osmo\+\_\+iuup\+\_\+rnl\+\_\+config\+\_\+timer\+::n\+\_\+max}, \textbf{ osmo\+\_\+iuup\+\_\+rnl\+\_\+prim\+::oph}, \textbf{ OSMO\+\_\+\+ASSERT}, \textbf{ osmo\+\_\+fsm\+\_\+inst\+::priv}, \textbf{ retransmit\+\_\+initialization()}, \textbf{ osmo\+\_\+fsm\+\_\+inst\+::state}, \textbf{ osmo\+\_\+fsm\+\_\+inst\+::T}, \textbf{ osmo\+\_\+iuup\+\_\+rnl\+\_\+config\+::t\+\_\+init}, \textbf{ osmo\+\_\+iuup\+\_\+instance\+::timer}, \textbf{ osmo\+\_\+iuup\+\_\+instance\+::user\+\_\+prim\+\_\+cb}, and \textbf{ osmo\+\_\+iuup\+\_\+instance\+::user\+\_\+prim\+\_\+priv}.

\mbox{\label{iuup_8c_aab4ae1b949f2a3da5a4cdc4820fa3e6c}} 
\index{iuup.c@{iuup.c}!iuup\_fsm\_trm\_data@{iuup\_fsm\_trm\_data}}
\index{iuup\_fsm\_trm\_data@{iuup\_fsm\_trm\_data}!iuup.c@{iuup.c}}
\doxysubsubsection{iuup\_fsm\_trm\_data()}
{\footnotesize\ttfamily static void iuup\+\_\+fsm\+\_\+trm\+\_\+data (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+fsm\+\_\+inst} $\ast$}]{fi,  }\item[{uint32\+\_\+t}]{event,  }\item[{void $\ast$}]{data }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ IUUP\+\_\+\+FSM\+\_\+\+EVT\+\_\+\+IUUP\+\_\+\+CONFIG\+\_\+\+REQ}, \textbf{ IUUP\+\_\+\+FSM\+\_\+\+EVT\+\_\+\+IUUP\+\_\+\+DATA\+\_\+\+IND}, \textbf{ IUUP\+\_\+\+FSM\+\_\+\+EVT\+\_\+\+IUUP\+\_\+\+DATA\+\_\+\+REQ}, \textbf{ IUUP\+\_\+\+FSM\+\_\+\+EVT\+\_\+\+IUUP\+\_\+\+UNITDATA\+\_\+\+IND}, \textbf{ IUUP\+\_\+\+FSM\+\_\+\+EVT\+\_\+\+IUUP\+\_\+\+UNITDATA\+\_\+\+REQ}, \textbf{ IUUP\+\_\+\+FSM\+\_\+\+EVT\+\_\+\+SSASAR\+\_\+\+UNITDATA\+\_\+\+IND}, \textbf{ IUUP\+\_\+\+FSM\+\_\+\+EVT\+\_\+\+SSASAR\+\_\+\+UNITDATA\+\_\+\+REQ}, \textbf{ IUUP\+\_\+\+FSM\+\_\+\+ST\+\_\+\+NULL}, and \textbf{ osmo\+\_\+fsm\+\_\+inst\+\_\+state\+\_\+chg}.

\mbox{\label{iuup_8c_a78795541396e6c6c1afcb173e7842019}} 
\index{iuup.c@{iuup.c}!iuup\_get\_hdr\_crc@{iuup\_get\_hdr\_crc}}
\index{iuup\_get\_hdr\_crc@{iuup\_get\_hdr\_crc}!iuup.c@{iuup.c}}
\doxysubsubsection{iuup\_get\_hdr\_crc()}
{\footnotesize\ttfamily static uint8\+\_\+t iuup\+\_\+get\+\_\+hdr\+\_\+crc (\begin{DoxyParamCaption}\item[{const uint8\+\_\+t $\ast$}]{data }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}



References \textbf{ data}.



Referenced by \textbf{ iuup\+\_\+verify\+\_\+pdu()}.

\mbox{\label{iuup_8c_a0b83afc77db30bce95b2cefb6595c272}} 
\index{iuup.c@{iuup.c}!iuup\_get\_payload\_offset@{iuup\_get\_payload\_offset}}
\index{iuup\_get\_payload\_offset@{iuup\_get\_payload\_offset}!iuup.c@{iuup.c}}
\doxysubsubsection{iuup\_get\_payload\_offset()}
{\footnotesize\ttfamily static int iuup\+\_\+get\+\_\+payload\+\_\+offset (\begin{DoxyParamCaption}\item[{const uint8\+\_\+t $\ast$}]{iuup\+\_\+pdu }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ pdu\+\_\+type}.



Referenced by \textbf{ osmo\+\_\+iuup\+\_\+compute\+\_\+payload\+\_\+crc()}.

\mbox{\label{iuup_8c_a2115185620d4eb4807cab4436ab34ea0}} 
\index{iuup.c@{iuup.c}!iuup\_get\_pdu\_type@{iuup\_get\_pdu\_type}}
\index{iuup\_get\_pdu\_type@{iuup\_get\_pdu\_type}!iuup.c@{iuup.c}}
\doxysubsubsection{iuup\_get\_pdu\_type()}
{\footnotesize\ttfamily static uint8\+\_\+t iuup\+\_\+get\+\_\+pdu\+\_\+type (\begin{DoxyParamCaption}\item[{const uint8\+\_\+t $\ast$}]{data }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}



References \textbf{ data}.



Referenced by \textbf{ iuup\+\_\+verify\+\_\+pdu()}, \textbf{ osmo\+\_\+iuup\+\_\+tnl\+\_\+prim\+\_\+up()}, and \textbf{ tnl\+\_\+to\+\_\+rnl\+\_\+data()}.

\mbox{\label{iuup_8c_ab8209246f16ae4daab56da1d08771611}} 
\index{iuup.c@{iuup.c}!iuup\_rx\_initialization@{iuup\_rx\_initialization}}
\index{iuup\_rx\_initialization@{iuup\_rx\_initialization}!iuup.c@{iuup.c}}
\doxysubsubsection{iuup\_rx\_initialization()}
{\footnotesize\ttfamily static bool iuup\+\_\+rx\+\_\+initialization (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+iuup\+\_\+instance} $\ast$}]{iui,  }\item[{struct \textbf{ osmo\+\_\+iuup\+\_\+tnl\+\_\+prim} $\ast$}]{itp }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ osmo\+\_\+iuup\+\_\+instance\+::config}, \textbf{ osmo\+\_\+iuup\+\_\+instance\+::fi}, \textbf{ for()}, \textbf{ hdr}, \textbf{ if()}, \textbf{ IUUP\+\_\+\+ERR\+\_\+\+CAUSE\+\_\+\+UNEXPECTED\+\_\+\+RFCI}, \textbf{ IUUP\+\_\+\+ERR\+\_\+\+CAUSE\+\_\+\+UNEXPECTED\+\_\+\+VALUE}, \textbf{ IUUP\+\_\+\+MAX\+\_\+\+RFCIS}, \textbf{ LOGL\+\_\+\+NOTICE}, \textbf{ LOGPFSML}, \textbf{ osmo\+\_\+prim\+\_\+hdr\+::msg}, \textbf{ msgb\+\_\+l2}, \textbf{ osmo\+\_\+iuup\+\_\+tnl\+\_\+prim\+::oph}, and \textbf{ osmo\+\_\+iuup\+\_\+rnl\+\_\+config\+::rfci}.



Referenced by \textbf{ iuup\+\_\+fsm\+\_\+init()}, and \textbf{ iuup\+\_\+fsm\+\_\+smpsdu\+\_\+data()}.

\mbox{\label{iuup_8c_a17a3c27faf977d420f7e2fa15625ea64}} 
\index{iuup.c@{iuup.c}!iuup\_verify\_pdu@{iuup\_verify\_pdu}}
\index{iuup\_verify\_pdu@{iuup\_verify\_pdu}!iuup.c@{iuup.c}}
\doxysubsubsection{iuup\_verify\_pdu()}
{\footnotesize\ttfamily static int iuup\+\_\+verify\+\_\+pdu (\begin{DoxyParamCaption}\item[{const uint8\+\_\+t $\ast$}]{data,  }\item[{unsigned int}]{len }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ data}, \textbf{ DLIUUP}, \textbf{ IUUP\+\_\+\+AN\+\_\+\+PROCEDURE}, \textbf{ iuup\+\_\+get\+\_\+hdr\+\_\+crc()}, \textbf{ iuup\+\_\+get\+\_\+pdu\+\_\+type()}, \textbf{ IUUP\+\_\+\+PDU\+\_\+\+T\+\_\+\+CONTROL}, \textbf{ IUUP\+\_\+\+PDU\+\_\+\+T\+\_\+\+DATA\+\_\+\+CRC}, \textbf{ IUUP\+\_\+\+PDU\+\_\+\+T\+\_\+\+DATA\+\_\+\+NOCRC}, \textbf{ len}, \textbf{ LOGL\+\_\+\+NOTICE}, \textbf{ LOGP}, \textbf{ osmo\+\_\+iuup\+\_\+compute\+\_\+header\+\_\+crc()}, \textbf{ osmo\+\_\+iuup\+\_\+compute\+\_\+payload\+\_\+crc()}, and \textbf{ pdu\+\_\+type}.



Referenced by \textbf{ osmo\+\_\+iuup\+\_\+tnl\+\_\+prim\+\_\+up()}.

\mbox{\label{iuup_8c_a536b163eb2b8572c42a8feb31670f7c2}} 
\index{iuup.c@{iuup.c}!osmo\_iuup\_compute\_header\_crc@{osmo\_iuup\_compute\_header\_crc}}
\index{osmo\_iuup\_compute\_header\_crc@{osmo\_iuup\_compute\_header\_crc}!iuup.c@{iuup.c}}
\doxysubsubsection{osmo\_iuup\_compute\_header\_crc()}
{\footnotesize\ttfamily int osmo\+\_\+iuup\+\_\+compute\+\_\+header\+\_\+crc (\begin{DoxyParamCaption}\item[{const uint8\+\_\+t $\ast$}]{iuup\+\_\+pdu,  }\item[{unsigned int}]{pdu\+\_\+len }\end{DoxyParamCaption})}



References \textbf{ iuup\+\_\+hdr\+\_\+crc\+\_\+code}, \textbf{ osmo\+\_\+crc8gen\+\_\+compute\+\_\+bits()}, and \textbf{ osmo\+\_\+pbit2ubit()}.



Referenced by \textbf{ itp\+\_\+ctrl\+\_\+ack\+\_\+alloc()}, \textbf{ iuup\+\_\+verify\+\_\+pdu()}, \textbf{ rnl\+\_\+to\+\_\+tnl\+\_\+data()}, \textbf{ tnp\+\_\+ctrl\+\_\+init\+\_\+alloc()}, and \textbf{ tnp\+\_\+ctrl\+\_\+nack\+\_\+alloc()}.

\mbox{\label{iuup_8c_a2916354946ac10eb982aa4102cbc9536}} 
\index{iuup.c@{iuup.c}!osmo\_iuup\_compute\_payload\_crc@{osmo\_iuup\_compute\_payload\_crc}}
\index{osmo\_iuup\_compute\_payload\_crc@{osmo\_iuup\_compute\_payload\_crc}!iuup.c@{iuup.c}}
\doxysubsubsection{osmo\_iuup\_compute\_payload\_crc()}
{\footnotesize\ttfamily int osmo\+\_\+iuup\+\_\+compute\+\_\+payload\+\_\+crc (\begin{DoxyParamCaption}\item[{const uint8\+\_\+t $\ast$}]{iuup\+\_\+pdu,  }\item[{unsigned int}]{pdu\+\_\+len }\end{DoxyParamCaption})}



References \textbf{ iuup\+\_\+data\+\_\+crc\+\_\+code}, \textbf{ iuup\+\_\+get\+\_\+payload\+\_\+offset()}, \textbf{ osmo\+\_\+crc16gen\+\_\+compute\+\_\+bits()}, \textbf{ osmo\+\_\+pbit2ubit()}, and \textbf{ pdu\+\_\+type}.



Referenced by \textbf{ iuup\+\_\+verify\+\_\+pdu()}, \textbf{ rnl\+\_\+to\+\_\+tnl\+\_\+data()}, and \textbf{ tnp\+\_\+ctrl\+\_\+init\+\_\+alloc()}.

\mbox{\label{iuup_8c_a5209d2e809c9cdff6d03b9748aec8853}} 
\index{iuup.c@{iuup.c}!osmo\_iuup\_instance\_alloc@{osmo\_iuup\_instance\_alloc}}
\index{osmo\_iuup\_instance\_alloc@{osmo\_iuup\_instance\_alloc}!iuup.c@{iuup.c}}
\doxysubsubsection{osmo\_iuup\_instance\_alloc()}
{\footnotesize\ttfamily struct \textbf{ osmo\+\_\+iuup\+\_\+instance} $\ast$ osmo\+\_\+iuup\+\_\+instance\+\_\+alloc (\begin{DoxyParamCaption}\item[{void $\ast$}]{ctx,  }\item[{const char $\ast$}]{id }\end{DoxyParamCaption})}



References \textbf{ osmo\+\_\+iuup\+\_\+instance\+::fi}, \textbf{ iuup\+\_\+fsm}, \textbf{ LOGL\+\_\+\+DEBUG}, and \textbf{ osmo\+\_\+fsm\+\_\+inst\+\_\+alloc()}.

\mbox{\label{iuup_8c_a924d36e14e9d146c873314bc94ef18b0}} 
\index{iuup.c@{iuup.c}!osmo\_iuup\_instance\_free@{osmo\_iuup\_instance\_free}}
\index{osmo\_iuup\_instance\_free@{osmo\_iuup\_instance\_free}!iuup.c@{iuup.c}}
\doxysubsubsection{osmo\_iuup\_instance\_free()}
{\footnotesize\ttfamily void osmo\+\_\+iuup\+\_\+instance\+\_\+free (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+iuup\+\_\+instance} $\ast$}]{iui }\end{DoxyParamCaption})}



References \textbf{ osmo\+\_\+iuup\+\_\+instance\+::fi}, and \textbf{ osmo\+\_\+fsm\+\_\+inst\+\_\+free()}.

\mbox{\label{iuup_8c_a0773a45132df0b8549ec0d9a934594a8}} 
\index{iuup.c@{iuup.c}!osmo\_iuup\_instance\_set\_transport\_prim\_cb@{osmo\_iuup\_instance\_set\_transport\_prim\_cb}}
\index{osmo\_iuup\_instance\_set\_transport\_prim\_cb@{osmo\_iuup\_instance\_set\_transport\_prim\_cb}!iuup.c@{iuup.c}}
\doxysubsubsection{osmo\_iuup\_instance\_set\_transport\_prim\_cb()}
{\footnotesize\ttfamily void osmo\+\_\+iuup\+\_\+instance\+\_\+set\+\_\+transport\+\_\+prim\+\_\+cb (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+iuup\+\_\+instance} $\ast$}]{iui,  }\item[{\textbf{ osmo\+\_\+prim\+\_\+cb}}]{func,  }\item[{void $\ast$}]{priv }\end{DoxyParamCaption})}



References \textbf{ osmo\+\_\+iuup\+\_\+instance\+::transport\+\_\+prim\+\_\+cb}, and \textbf{ osmo\+\_\+iuup\+\_\+instance\+::transport\+\_\+prim\+\_\+priv}.

\mbox{\label{iuup_8c_a7093d1b36c1a1a64e3afe8ce7ed7f7e6}} 
\index{iuup.c@{iuup.c}!osmo\_iuup\_instance\_set\_user\_prim\_cb@{osmo\_iuup\_instance\_set\_user\_prim\_cb}}
\index{osmo\_iuup\_instance\_set\_user\_prim\_cb@{osmo\_iuup\_instance\_set\_user\_prim\_cb}!iuup.c@{iuup.c}}
\doxysubsubsection{osmo\_iuup\_instance\_set\_user\_prim\_cb()}
{\footnotesize\ttfamily void osmo\+\_\+iuup\+\_\+instance\+\_\+set\+\_\+user\+\_\+prim\+\_\+cb (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+iuup\+\_\+instance} $\ast$}]{iui,  }\item[{\textbf{ osmo\+\_\+prim\+\_\+cb}}]{func,  }\item[{void $\ast$}]{priv }\end{DoxyParamCaption})}



References \textbf{ osmo\+\_\+iuup\+\_\+instance\+::user\+\_\+prim\+\_\+cb}, and \textbf{ osmo\+\_\+iuup\+\_\+instance\+::user\+\_\+prim\+\_\+priv}.

\mbox{\label{iuup_8c_aafce5966f1b33a0b532b1a7599b268d9}} 
\index{iuup.c@{iuup.c}!osmo\_iuup\_msgb\_alloc\_c@{osmo\_iuup\_msgb\_alloc\_c}}
\index{osmo\_iuup\_msgb\_alloc\_c@{osmo\_iuup\_msgb\_alloc\_c}!iuup.c@{iuup.c}}
\doxysubsubsection{osmo\_iuup\_msgb\_alloc\_c()}
{\footnotesize\ttfamily static struct \textbf{ msgb} $\ast$ osmo\+\_\+iuup\+\_\+msgb\+\_\+alloc\+\_\+c (\begin{DoxyParamCaption}\item[{void $\ast$}]{ctx,  }\item[{size\+\_\+t}]{size }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}



References \textbf{ IUUP\+\_\+\+MSGB\+\_\+\+HEADROOM\+\_\+\+MIN\+\_\+\+REQUIRED}, \textbf{ msgb\+\_\+alloc\+\_\+headroom\+\_\+c()}, and \textbf{ OSMO\+\_\+\+ASSERT}.



Referenced by \textbf{ osmo\+\_\+iuup\+\_\+rnl\+\_\+prim\+\_\+alloc()}, and \textbf{ osmo\+\_\+iuup\+\_\+tnl\+\_\+prim\+\_\+alloc()}.

\mbox{\label{iuup_8c_a071f1db4d7deb9263633935dd82dd282}} 
\index{iuup.c@{iuup.c}!osmo\_iuup\_rnl\_prim\_alloc@{osmo\_iuup\_rnl\_prim\_alloc}}
\index{osmo\_iuup\_rnl\_prim\_alloc@{osmo\_iuup\_rnl\_prim\_alloc}!iuup.c@{iuup.c}}
\doxysubsubsection{osmo\_iuup\_rnl\_prim\_alloc()}
{\footnotesize\ttfamily struct \textbf{ osmo\+\_\+iuup\+\_\+rnl\+\_\+prim} $\ast$ osmo\+\_\+iuup\+\_\+rnl\+\_\+prim\+\_\+alloc (\begin{DoxyParamCaption}\item[{void $\ast$}]{ctx,  }\item[{unsigned int}]{primitive,  }\item[{unsigned int}]{operation,  }\item[{unsigned int}]{size }\end{DoxyParamCaption})}



References \textbf{ msg}, \textbf{ osmo\+\_\+iuup\+\_\+rnl\+\_\+prim\+::oph}, \textbf{ osmo\+\_\+iuup\+\_\+msgb\+\_\+alloc\+\_\+c()}, \textbf{ osmo\+\_\+prim\+\_\+init()}, and \textbf{ SAP\+\_\+\+IUUP\+\_\+\+RNL}.



Referenced by \textbf{ irp\+\_\+init\+\_\+ind\+\_\+alloc()}.

\mbox{\label{iuup_8c_acbe8cfa08b5395de7df26fa14bcc7fa6}} 
\index{iuup.c@{iuup.c}!osmo\_iuup\_rnl\_prim\_down@{osmo\_iuup\_rnl\_prim\_down}}
\index{osmo\_iuup\_rnl\_prim\_down@{osmo\_iuup\_rnl\_prim\_down}!iuup.c@{iuup.c}}
\doxysubsubsection{osmo\_iuup\_rnl\_prim\_down()}
{\footnotesize\ttfamily int osmo\+\_\+iuup\+\_\+rnl\+\_\+prim\+\_\+down (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+iuup\+\_\+instance} $\ast$}]{inst,  }\item[{struct \textbf{ osmo\+\_\+iuup\+\_\+rnl\+\_\+prim} $\ast$}]{irp }\end{DoxyParamCaption})}



References \textbf{ osmo\+\_\+iuup\+\_\+instance\+::fi}, \textbf{ IUUP\+\_\+\+FSM\+\_\+\+EVT\+\_\+\+IUUP\+\_\+\+CONFIG\+\_\+\+REQ}, \textbf{ IUUP\+\_\+\+FSM\+\_\+\+EVT\+\_\+\+IUUP\+\_\+\+DATA\+\_\+\+REQ}, \textbf{ IUUP\+\_\+\+FSM\+\_\+\+EVT\+\_\+\+IUUP\+\_\+\+STATUS\+\_\+\+REQ}, \textbf{ osmo\+\_\+prim\+\_\+hdr\+::msg}, \textbf{ msgb\+\_\+free()}, \textbf{ osmo\+\_\+iuup\+\_\+rnl\+\_\+prim\+::oph}, \textbf{ OSMO\+\_\+\+ASSERT}, \textbf{ osmo\+\_\+fsm\+\_\+inst\+\_\+dispatch}, \textbf{ OSMO\+\_\+\+IUUP\+\_\+\+RNL\+\_\+\+CONFIG}, \textbf{ OSMO\+\_\+\+IUUP\+\_\+\+RNL\+\_\+\+DATA}, \textbf{ OSMO\+\_\+\+IUUP\+\_\+\+RNL\+\_\+\+STATUS}, \textbf{ OSMO\+\_\+\+PRIM}, \textbf{ OSMO\+\_\+\+PRIM\+\_\+\+HDR}, \textbf{ PRIM\+\_\+\+OP\+\_\+\+REQUEST}, \textbf{ osmo\+\_\+prim\+\_\+hdr\+::sap}, and \textbf{ SAP\+\_\+\+IUUP\+\_\+\+RNL}.

\mbox{\label{iuup_8c_ac10fd2477383bccb7b52e09013ccaf77}} 
\index{iuup.c@{iuup.c}!osmo\_iuup\_tnl\_prim\_alloc@{osmo\_iuup\_tnl\_prim\_alloc}}
\index{osmo\_iuup\_tnl\_prim\_alloc@{osmo\_iuup\_tnl\_prim\_alloc}!iuup.c@{iuup.c}}
\doxysubsubsection{osmo\_iuup\_tnl\_prim\_alloc()}
{\footnotesize\ttfamily struct \textbf{ osmo\+\_\+iuup\+\_\+tnl\+\_\+prim} $\ast$ osmo\+\_\+iuup\+\_\+tnl\+\_\+prim\+\_\+alloc (\begin{DoxyParamCaption}\item[{void $\ast$}]{ctx,  }\item[{unsigned int}]{primitive,  }\item[{unsigned int}]{operation,  }\item[{unsigned int}]{size }\end{DoxyParamCaption})}



References \textbf{ msg}, \textbf{ osmo\+\_\+iuup\+\_\+tnl\+\_\+prim\+::oph}, \textbf{ osmo\+\_\+iuup\+\_\+msgb\+\_\+alloc\+\_\+c()}, \textbf{ osmo\+\_\+prim\+\_\+init()}, and \textbf{ SAP\+\_\+\+IUUP\+\_\+\+TNL}.



Referenced by \textbf{ itp\+\_\+ctrl\+\_\+ack\+\_\+alloc()}, \textbf{ tnp\+\_\+ctrl\+\_\+init\+\_\+alloc()}, and \textbf{ tnp\+\_\+ctrl\+\_\+nack\+\_\+alloc()}.

\mbox{\label{iuup_8c_af02ea259bc8363022e6bfd03715d5e6a}} 
\index{iuup.c@{iuup.c}!osmo\_iuup\_tnl\_prim\_up@{osmo\_iuup\_tnl\_prim\_up}}
\index{osmo\_iuup\_tnl\_prim\_up@{osmo\_iuup\_tnl\_prim\_up}!iuup.c@{iuup.c}}
\doxysubsubsection{osmo\_iuup\_tnl\_prim\_up()}
{\footnotesize\ttfamily int osmo\+\_\+iuup\+\_\+tnl\+\_\+prim\+\_\+up (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+iuup\+\_\+instance} $\ast$}]{inst,  }\item[{struct \textbf{ osmo\+\_\+iuup\+\_\+tnl\+\_\+prim} $\ast$}]{itp }\end{DoxyParamCaption})}



References \textbf{ osmo\+\_\+iuup\+\_\+instance\+::fi}, \textbf{ IUUP\+\_\+\+AN\+\_\+\+ACK}, \textbf{ IUUP\+\_\+\+AN\+\_\+\+NACK}, \textbf{ IUUP\+\_\+\+AN\+\_\+\+PROCEDURE}, \textbf{ IUUP\+\_\+\+FSM\+\_\+\+EVT\+\_\+\+INIT}, \textbf{ IUUP\+\_\+\+FSM\+\_\+\+EVT\+\_\+\+INIT\+\_\+\+NACK}, \textbf{ IUUP\+\_\+\+FSM\+\_\+\+EVT\+\_\+\+IUUP\+\_\+\+DATA\+\_\+\+IND}, \textbf{ IUUP\+\_\+\+FSM\+\_\+\+EVT\+\_\+\+LAST\+\_\+\+INIT\+\_\+\+ACK}, \textbf{ iuup\+\_\+get\+\_\+pdu\+\_\+type()}, \textbf{ IUUP\+\_\+\+PDU\+\_\+\+T\+\_\+\+CONTROL}, \textbf{ IUUP\+\_\+\+PDU\+\_\+\+T\+\_\+\+DATA\+\_\+\+CRC}, \textbf{ IUUP\+\_\+\+PDU\+\_\+\+T\+\_\+\+DATA\+\_\+\+NOCRC}, \textbf{ IUUP\+\_\+\+PROC\+\_\+\+ERR\+\_\+\+EVENT}, \textbf{ IUUP\+\_\+\+PROC\+\_\+\+INIT}, \textbf{ IUUP\+\_\+\+PROC\+\_\+\+RATE\+\_\+\+CTRL}, \textbf{ IUUP\+\_\+\+PROC\+\_\+\+TIME\+\_\+\+ALIGN}, \textbf{ iuup\+\_\+verify\+\_\+pdu()}, \textbf{ msgb\+::l3h}, \textbf{ LOGL\+\_\+\+ERROR}, \textbf{ LOGL\+\_\+\+NOTICE}, \textbf{ LOGPFSML}, \textbf{ osmo\+\_\+prim\+\_\+hdr\+::msg}, \textbf{ msgb\+\_\+l2}, \textbf{ msgb\+\_\+l2len()}, \textbf{ osmo\+\_\+iuup\+\_\+tnl\+\_\+prim\+::oph}, \textbf{ OSMO\+\_\+\+ASSERT}, \textbf{ osmo\+\_\+fsm\+\_\+inst\+\_\+dispatch}, \textbf{ osmo\+\_\+hexdump()}, \textbf{ OSMO\+\_\+\+IUUP\+\_\+\+TNL\+\_\+\+UNITDATA}, \textbf{ OSMO\+\_\+\+PRIM}, \textbf{ OSMO\+\_\+\+PRIM\+\_\+\+HDR}, \textbf{ PRIM\+\_\+\+OP\+\_\+\+INDICATION}, \textbf{ osmo\+\_\+prim\+\_\+hdr\+::sap}, and \textbf{ SAP\+\_\+\+IUUP\+\_\+\+TNL}.

\mbox{\label{iuup_8c_a591107fd9f7391fc903e3c01b1e50172}} 
\index{iuup.c@{iuup.c}!retransmit\_initialization@{retransmit\_initialization}}
\index{retransmit\_initialization@{retransmit\_initialization}!iuup.c@{iuup.c}}
\doxysubsubsection{retransmit\_initialization()}
{\footnotesize\ttfamily static void retransmit\+\_\+initialization (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+iuup\+\_\+instance} $\ast$}]{iui }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ osmo\+\_\+iuup\+\_\+instance\+::config}, \textbf{ osmo\+\_\+iuup\+\_\+instance\+::fi}, \textbf{ osmo\+\_\+iuup\+\_\+instance\+::init}, \textbf{ itp\+\_\+copy\+\_\+c()}, \textbf{ IUUP\+\_\+\+TIMER\+\_\+\+INIT}, \textbf{ osmo\+\_\+iuup\+\_\+tnl\+\_\+prim\+::oph}, \textbf{ osmo\+\_\+timer\+\_\+schedule()}, \textbf{ osmo\+\_\+timer\+\_\+nt\+::retrans\+\_\+itp}, \textbf{ osmo\+\_\+fsm\+\_\+inst\+::T}, \textbf{ osmo\+\_\+iuup\+\_\+rnl\+\_\+config\+::t\+\_\+init}, \textbf{ osmo\+\_\+iuup\+\_\+rnl\+\_\+config\+\_\+timer\+::t\+\_\+ms}, \textbf{ osmo\+\_\+fsm\+\_\+inst\+::timer}, \textbf{ osmo\+\_\+iuup\+\_\+instance\+::timer}, \textbf{ osmo\+\_\+iuup\+\_\+instance\+::transport\+\_\+prim\+\_\+cb}, and \textbf{ osmo\+\_\+iuup\+\_\+instance\+::transport\+\_\+prim\+\_\+priv}.



Referenced by \textbf{ iuup\+\_\+fsm\+\_\+init()}, \textbf{ iuup\+\_\+fsm\+\_\+init\+\_\+on\+\_\+enter()}, and \textbf{ iuup\+\_\+fsm\+\_\+timer\+\_\+cb()}.

\mbox{\label{iuup_8c_ad59e78c40fea00dd8ab29168ab863405}} 
\index{iuup.c@{iuup.c}!rnl\_to\_tnl\_data@{rnl\_to\_tnl\_data}}
\index{rnl\_to\_tnl\_data@{rnl\_to\_tnl\_data}!iuup.c@{iuup.c}}
\doxysubsubsection{rnl\_to\_tnl\_data()}
{\footnotesize\ttfamily static struct \textbf{ osmo\+\_\+iuup\+\_\+tnl\+\_\+prim} $\ast$ rnl\+\_\+to\+\_\+tnl\+\_\+data (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+iuup\+\_\+instance} $\ast$}]{iui,  }\item[{struct \textbf{ osmo\+\_\+iuup\+\_\+rnl\+\_\+prim} $\ast$}]{irp }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ osmo\+\_\+iuup\+\_\+instance\+::config}, \textbf{ osmo\+\_\+iuup\+\_\+rnl\+\_\+prim\+::data}, \textbf{ osmo\+\_\+iuup\+\_\+rnl\+\_\+config\+::data\+\_\+pdu\+\_\+type}, \textbf{ osmo\+\_\+iuup\+\_\+rnl\+\_\+data\+::fqc}, \textbf{ osmo\+\_\+iuup\+\_\+rnl\+\_\+data\+::frame\+\_\+nr}, \textbf{ IUUP\+\_\+\+PDU\+\_\+\+T\+\_\+\+DATA\+\_\+\+CRC}, \textbf{ IUUP\+\_\+\+PDU\+\_\+\+T\+\_\+\+DATA\+\_\+\+NOCRC}, \textbf{ osmo\+\_\+prim\+\_\+hdr\+::msg}, \textbf{ msg}, \textbf{ msgb\+\_\+l2}, \textbf{ msgb\+\_\+l2len()}, \textbf{ msgb\+\_\+pull\+\_\+to\+\_\+l3()}, \textbf{ msgb\+\_\+push()}, \textbf{ osmo\+\_\+iuup\+\_\+tnl\+\_\+prim\+::oph}, \textbf{ osmo\+\_\+iuup\+\_\+rnl\+\_\+prim\+::oph}, \textbf{ OSMO\+\_\+\+ASSERT}, \textbf{ osmo\+\_\+iuup\+\_\+compute\+\_\+header\+\_\+crc()}, \textbf{ osmo\+\_\+iuup\+\_\+compute\+\_\+payload\+\_\+crc()}, \textbf{ OSMO\+\_\+\+IUUP\+\_\+\+RNL\+\_\+\+DATA}, \textbf{ OSMO\+\_\+\+IUUP\+\_\+\+TNL\+\_\+\+UNITDATA}, \textbf{ OSMO\+\_\+\+PRIM}, \textbf{ OSMO\+\_\+\+PRIM\+\_\+\+HDR}, \textbf{ osmo\+\_\+prim\+\_\+init()}, \textbf{ PRIM\+\_\+\+OP\+\_\+\+REQUEST}, \textbf{ osmo\+\_\+iuup\+\_\+rnl\+\_\+data\+::rfci}, \textbf{ SAP\+\_\+\+IUUP\+\_\+\+TNL}, and \textbf{ osmo\+\_\+iuup\+\_\+rnl\+\_\+prim\+::u}.



Referenced by \textbf{ iuup\+\_\+fsm\+\_\+smpsdu\+\_\+data()}.

\mbox{\label{iuup_8c_a72979491d44d3621fd1fd91cd396c0f6}} 
\index{iuup.c@{iuup.c}!tnl\_to\_rnl\_data@{tnl\_to\_rnl\_data}}
\index{tnl\_to\_rnl\_data@{tnl\_to\_rnl\_data}!iuup.c@{iuup.c}}
\doxysubsubsection{tnl\_to\_rnl\_data()}
{\footnotesize\ttfamily static struct \textbf{ osmo\+\_\+iuup\+\_\+rnl\+\_\+prim} $\ast$ tnl\+\_\+to\+\_\+rnl\+\_\+data (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+iuup\+\_\+tnl\+\_\+prim} $\ast$}]{itp }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ osmo\+\_\+iuup\+\_\+rnl\+\_\+prim\+::data}, \textbf{ osmo\+\_\+iuup\+\_\+rnl\+\_\+data\+::fqc}, \textbf{ osmo\+\_\+iuup\+\_\+rnl\+\_\+data\+::frame\+\_\+nr}, \textbf{ iuup\+\_\+get\+\_\+pdu\+\_\+type()}, \textbf{ IUUP\+\_\+\+PDU\+\_\+\+T\+\_\+\+DATA\+\_\+\+CRC}, \textbf{ IUUP\+\_\+\+PDU\+\_\+\+T\+\_\+\+DATA\+\_\+\+NOCRC}, \textbf{ osmo\+\_\+prim\+\_\+hdr\+::msg}, \textbf{ msg}, \textbf{ msgb\+\_\+l2}, \textbf{ msgb\+\_\+pull\+\_\+to\+\_\+l3()}, \textbf{ osmo\+\_\+iuup\+\_\+tnl\+\_\+prim\+::oph}, \textbf{ osmo\+\_\+iuup\+\_\+rnl\+\_\+prim\+::oph}, \textbf{ OSMO\+\_\+\+ASSERT}, \textbf{ OSMO\+\_\+\+IUUP\+\_\+\+RNL\+\_\+\+DATA}, \textbf{ OSMO\+\_\+\+IUUP\+\_\+\+TNL\+\_\+\+UNITDATA}, \textbf{ OSMO\+\_\+\+PRIM}, \textbf{ OSMO\+\_\+\+PRIM\+\_\+\+HDR}, \textbf{ osmo\+\_\+prim\+\_\+init()}, \textbf{ PRIM\+\_\+\+OP\+\_\+\+INDICATION}, \textbf{ osmo\+\_\+iuup\+\_\+rnl\+\_\+data\+::rfci}, \textbf{ SAP\+\_\+\+IUUP\+\_\+\+RNL}, and \textbf{ osmo\+\_\+iuup\+\_\+rnl\+\_\+prim\+::u}.



Referenced by \textbf{ iuup\+\_\+fsm\+\_\+smpsdu\+\_\+data()}.

\mbox{\label{iuup_8c_a807029658aa2af066bcb59fac5ed88b2}} 
\index{iuup.c@{iuup.c}!tnp\_ctrl\_init\_alloc@{tnp\_ctrl\_init\_alloc}}
\index{tnp\_ctrl\_init\_alloc@{tnp\_ctrl\_init\_alloc}!iuup.c@{iuup.c}}
\doxysubsubsection{tnp\_ctrl\_init\_alloc()}
{\footnotesize\ttfamily static struct \textbf{ osmo\+\_\+iuup\+\_\+tnl\+\_\+prim} $\ast$ tnp\+\_\+ctrl\+\_\+init\+\_\+alloc (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+iuup\+\_\+instance} $\ast$}]{iui }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ ARRAY\+\_\+\+SIZE}, \textbf{ osmo\+\_\+iuup\+\_\+instance\+::config}, \textbf{ osmo\+\_\+iuup\+\_\+rnl\+\_\+config\+::data\+\_\+pdu\+\_\+type}, \textbf{ DLIUUP}, \textbf{ for()}, \textbf{ hdr}, \textbf{ osmo\+\_\+iuup\+\_\+rfci\+::id}, \textbf{ osmo\+\_\+iuup\+\_\+rfci\+::\+IPTI}, \textbf{ osmo\+\_\+iuup\+\_\+rnl\+\_\+config\+::\+IPTIs\+\_\+present}, \textbf{ IUUP\+\_\+\+AN\+\_\+\+PROCEDURE}, \textbf{ IUUP\+\_\+\+MSGB\+\_\+\+SIZE}, \textbf{ IUUP\+\_\+\+PDU\+\_\+\+T\+\_\+\+CONTROL}, \textbf{ IUUP\+\_\+\+PROC\+\_\+\+INIT}, \textbf{ LOGL\+\_\+\+ERROR}, \textbf{ LOGP}, \textbf{ osmo\+\_\+prim\+\_\+hdr\+::msg}, \textbf{ msg}, \textbf{ msgb\+\_\+free()}, \textbf{ msgb\+\_\+l2}, \textbf{ msgb\+\_\+l2len()}, \textbf{ msgb\+\_\+put()}, \textbf{ osmo\+\_\+iuup\+\_\+rnl\+\_\+config\+::num\+\_\+rfci}, \textbf{ osmo\+\_\+iuup\+\_\+rnl\+\_\+config\+::num\+\_\+subflows}, \textbf{ osmo\+\_\+iuup\+\_\+tnl\+\_\+prim\+::oph}, \textbf{ osmo\+\_\+iuup\+\_\+compute\+\_\+header\+\_\+crc()}, \textbf{ osmo\+\_\+iuup\+\_\+compute\+\_\+payload\+\_\+crc()}, \textbf{ osmo\+\_\+iuup\+\_\+tnl\+\_\+prim\+\_\+alloc()}, \textbf{ OSMO\+\_\+\+IUUP\+\_\+\+TNL\+\_\+\+UNITDATA}, \textbf{ PRIM\+\_\+\+OP\+\_\+\+REQUEST}, \textbf{ osmo\+\_\+iuup\+\_\+rnl\+\_\+config\+::rfci}, \textbf{ osmo\+\_\+iuup\+\_\+rfci\+::subflow\+\_\+sizes}, \textbf{ osmo\+\_\+iuup\+\_\+rnl\+\_\+config\+::supported\+\_\+versions\+\_\+mask}, \textbf{ osmo\+\_\+iuup\+\_\+instance\+::type14\+\_\+fn}, and \textbf{ osmo\+\_\+iuup\+\_\+rfci\+::used}.



Referenced by \textbf{ iuup\+\_\+fsm\+\_\+init\+\_\+on\+\_\+enter()}.

\mbox{\label{iuup_8c_af56f448b1500a2399f468dce9ddc9a81}} 
\index{iuup.c@{iuup.c}!tnp\_ctrl\_nack\_alloc@{tnp\_ctrl\_nack\_alloc}}
\index{tnp\_ctrl\_nack\_alloc@{tnp\_ctrl\_nack\_alloc}!iuup.c@{iuup.c}}
\doxysubsubsection{tnp\_ctrl\_nack\_alloc()}
{\footnotesize\ttfamily static struct \textbf{ osmo\+\_\+iuup\+\_\+tnl\+\_\+prim} $\ast$ tnp\+\_\+ctrl\+\_\+nack\+\_\+alloc (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+iuup\+\_\+instance} $\ast$}]{iui,  }\item[{enum \textbf{ iuup\+\_\+procedure}}]{proc\+\_\+ind,  }\item[{enum \textbf{ iuup\+\_\+error\+\_\+cause}}]{error\+\_\+cause,  }\item[{uint8\+\_\+t}]{fn }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ IUUP\+\_\+\+AN\+\_\+\+NACK}, \textbf{ IUUP\+\_\+\+MSGB\+\_\+\+SIZE}, \textbf{ IUUP\+\_\+\+PDU\+\_\+\+T\+\_\+\+CONTROL}, \textbf{ msgb\+::l2h}, \textbf{ osmo\+\_\+iuup\+\_\+instance\+::mode\+\_\+version}, \textbf{ osmo\+\_\+prim\+\_\+hdr\+::msg}, \textbf{ msgb\+\_\+l2}, \textbf{ msgb\+\_\+l2len()}, \textbf{ msgb\+\_\+put()}, \textbf{ osmo\+\_\+iuup\+\_\+tnl\+\_\+prim\+::oph}, \textbf{ osmo\+\_\+iuup\+\_\+compute\+\_\+header\+\_\+crc()}, \textbf{ osmo\+\_\+iuup\+\_\+tnl\+\_\+prim\+\_\+alloc()}, \textbf{ OSMO\+\_\+\+IUUP\+\_\+\+TNL\+\_\+\+UNITDATA}, and \textbf{ PRIM\+\_\+\+OP\+\_\+\+REQUEST}.



\doxysubsection{Variable Documentation}
\mbox{\label{iuup_8c_a8fd4ee80d72aea65b742696b289bf966}} 
\index{iuup.c@{iuup.c}!iuup\_data\_crc\_code@{iuup\_data\_crc\_code}}
\index{iuup\_data\_crc\_code@{iuup\_data\_crc\_code}!iuup.c@{iuup.c}}
\doxysubsubsection{iuup\_data\_crc\_code}
{\footnotesize\ttfamily const struct \textbf{ osmo\+\_\+crc16gen\+\_\+code} iuup\+\_\+data\+\_\+crc\+\_\+code}

{\bfseries Initial value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{= \{}
\DoxyCodeLine{        .bits = 10,}
\DoxyCodeLine{        .poly = 563,}
\DoxyCodeLine{        .init = 0,}
\DoxyCodeLine{        .remainder = 0,}
\DoxyCodeLine{\}}

\end{DoxyCode}


Referenced by \textbf{ osmo\+\_\+iuup\+\_\+compute\+\_\+payload\+\_\+crc()}.

\mbox{\label{iuup_8c_a76c3ae7f85b0a699e8f6c8800df8c267}} 
\index{iuup.c@{iuup.c}!iuup\_fsm@{iuup\_fsm}}
\index{iuup\_fsm@{iuup\_fsm}!iuup.c@{iuup.c}}
\doxysubsubsection{iuup\_fsm}
{\footnotesize\ttfamily struct \textbf{ osmo\+\_\+fsm} iuup\+\_\+fsm\hspace{0.3cm}{\ttfamily [static]}}

{\bfseries Initial value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{= \{}
\DoxyCodeLine{        .name = \textcolor{stringliteral}{"{}IuUP"{}},}
\DoxyCodeLine{        .states = iuup\_fsm\_states,}
\DoxyCodeLine{        .num\_states = ARRAY\_SIZE(iuup\_fsm\_states),}
\DoxyCodeLine{        .timer\_cb = iuup\_fsm\_timer\_cb,}
\DoxyCodeLine{        .log\_subsys = DLIUUP,}
\DoxyCodeLine{        .event\_names = iuup\_fsm\_event\_names,}
\DoxyCodeLine{\}}

\end{DoxyCode}


Referenced by \textbf{ \+\_\+\+\_\+attribute\+\_\+\+\_\+()}, and \textbf{ osmo\+\_\+iuup\+\_\+instance\+\_\+alloc()}.

\mbox{\label{iuup_8c_a43dbad29e6ee4e2025b6a0350aefcaaf}} 
\index{iuup.c@{iuup.c}!iuup\_fsm\_event\_names@{iuup\_fsm\_event\_names}}
\index{iuup\_fsm\_event\_names@{iuup\_fsm\_event\_names}!iuup.c@{iuup.c}}
\doxysubsubsection{iuup\_fsm\_event\_names}
{\footnotesize\ttfamily const struct \textbf{ value\+\_\+string} iuup\+\_\+fsm\+\_\+event\+\_\+names[$\,$]\hspace{0.3cm}{\ttfamily [static]}}

{\bfseries Initial value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{= \{}
\DoxyCodeLine{        \{ IUUP\_FSM\_EVT\_IUUP\_CONFIG\_REQ,             \textcolor{stringliteral}{"{}IuUP-\/CONFIG-\/req"{}} \},}
\DoxyCodeLine{        \{ IUUP\_FSM\_EVT\_IUUP\_DATA\_REQ,         \textcolor{stringliteral}{"{}IuUP-\/DATA-\/req"{}} \},}
\DoxyCodeLine{        \{ IUUP\_FSM\_EVT\_IUUP\_DATA\_IND,         \textcolor{stringliteral}{"{}IuUP-\/DATA-\/ind"{}} \},}
\DoxyCodeLine{        \{ IUUP\_FSM\_EVT\_IUUP\_STATUS\_REQ,             \textcolor{stringliteral}{"{}IuUP-\/STATUS-\/req"{}} \},}
\DoxyCodeLine{        \{ IUUP\_FSM\_EVT\_IUUP\_STATUS\_IND,             \textcolor{stringliteral}{"{}IuUP-\/STATUS-\/ind"{}} \},}
\DoxyCodeLine{        \{ IUUP\_FSM\_EVT\_SSASAR\_UNITDATA\_REQ,     \textcolor{stringliteral}{"{}SSSAR-\/UNITDATA-\/req"{}} \},}
\DoxyCodeLine{        \{ IUUP\_FSM\_EVT\_SSASAR\_UNITDATA\_IND,     \textcolor{stringliteral}{"{}SSSAR-\/UNITDATA-\/ind"{}} \},}
\DoxyCodeLine{        \{ IUUP\_FSM\_EVT\_IUUP\_UNITDATA\_REQ, \textcolor{stringliteral}{"{}IuUP-\/UNITDATA-\/req"{}} \},}
\DoxyCodeLine{        \{ IUUP\_FSM\_EVT\_IUUP\_UNITDATA\_IND, \textcolor{stringliteral}{"{}IuUP-\/UNITDATA-\/ind"{}} \},}
\DoxyCodeLine{        \{ IUUP\_FSM\_EVT\_INIT,                   \textcolor{stringliteral}{"{}INIT"{}} \},}
\DoxyCodeLine{        \{ IUUP\_FSM\_EVT\_LAST\_INIT\_ACK,         \textcolor{stringliteral}{"{}LAST\_INIT\_ACK"{}} \},}
\DoxyCodeLine{        \{ IUUP\_FSM\_EVT\_INIT\_NACK,         \textcolor{stringliteral}{"{}INIT\_NACK"{}} \},}
\DoxyCodeLine{        \{ 0, NULL \}}
\DoxyCodeLine{\}}

\end{DoxyCode}
\mbox{\label{iuup_8c_a68c2d2f3a682ec5744efc18d4ba6ffff}} 
\index{iuup.c@{iuup.c}!iuup\_fsm\_states@{iuup\_fsm\_states}}
\index{iuup\_fsm\_states@{iuup\_fsm\_states}!iuup.c@{iuup.c}}
\doxysubsubsection{iuup\_fsm\_states}
{\footnotesize\ttfamily const struct \textbf{ osmo\+\_\+fsm\+\_\+state} iuup\+\_\+fsm\+\_\+states[$\,$]\hspace{0.3cm}{\ttfamily [static]}}

\mbox{\label{iuup_8c_a1ff358e8786c3cc5b3d1512373f8e10c}} 
\index{iuup.c@{iuup.c}!iuup\_hdr\_crc\_code@{iuup\_hdr\_crc\_code}}
\index{iuup\_hdr\_crc\_code@{iuup\_hdr\_crc\_code}!iuup.c@{iuup.c}}
\doxysubsubsection{iuup\_hdr\_crc\_code}
{\footnotesize\ttfamily const struct \textbf{ osmo\+\_\+crc8gen\+\_\+code} iuup\+\_\+hdr\+\_\+crc\+\_\+code}

{\bfseries Initial value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{= \{}
\DoxyCodeLine{        .bits = 6,}
\DoxyCodeLine{        .poly = 47,}
\DoxyCodeLine{        .init = 0,}
\DoxyCodeLine{        .remainder = 0,}
\DoxyCodeLine{\}}

\end{DoxyCode}


Referenced by \textbf{ osmo\+\_\+iuup\+\_\+compute\+\_\+header\+\_\+crc()}.

