\doxysection{src/gsm/gsm0411\+\_\+smr.c File Reference}
\label{gsm0411__smr_8c}\index{src/gsm/gsm0411\_smr.c@{src/gsm/gsm0411\_smr.c}}
{\ttfamily \#include $<$sys/types.\+h$>$}\newline
{\ttfamily \#include $<$inttypes.\+h$>$}\newline
{\ttfamily \#include $<$string.\+h$>$}\newline
{\ttfamily \#include $<$errno.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/core/msgb.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/core/logging.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/core/timer.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/gsm/tlv.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/gsm/gsm0411\+\_\+utils.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/gsm/gsm0411\+\_\+smc.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/gsm/gsm0411\+\_\+smr.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/gsm/protocol/gsm\+\_\+04\+\_\+08.\+h$>$}\newline
\doxysubsection*{Data Structures}
\begin{DoxyCompactItemize}
\item 
struct \textbf{ smrdownstate}
\item 
struct \textbf{ smrdatastate}
\end{DoxyCompactItemize}
\doxysubsection*{Macros}
\begin{DoxyCompactItemize}
\item 
\#define \textbf{ SMR\+\_\+\+LOG\+\_\+\+STR}~\char`\"{}SMR(\%\char`\"{} PRIu64 \char`\"{}) \char`\"{}
\item 
\#define \textbf{ SMRDOWNSLLEN}~ (sizeof(\textbf{ smrdownstatelist}) / sizeof(struct \textbf{ smrdownstate}))
\item 
\#define \textbf{ SMRDATASLLEN}~ (sizeof(\textbf{ smrdatastatelist}) / sizeof(struct \textbf{ smrdatastate}))
\end{DoxyCompactItemize}
\doxysubsection*{Functions}
\begin{DoxyCompactItemize}
\item 
static void \textbf{ rp\+\_\+timer\+\_\+expired} (void $\ast$\textbf{ data})
\item 
void \textbf{ gsm411\+\_\+smr\+\_\+init} (struct \textbf{ gsm411\+\_\+smr\+\_\+inst} $\ast$inst, uint64\+\_\+t id, int \textbf{ network}, int($\ast$rl\+\_\+recv)(struct \textbf{ gsm411\+\_\+smr\+\_\+inst} $\ast$inst, int \textbf{ msg\+\_\+type}, struct \textbf{ msgb} $\ast$\textbf{ msg}), int($\ast$mn\+\_\+send)(struct \textbf{ gsm411\+\_\+smr\+\_\+inst} $\ast$inst, int \textbf{ msg\+\_\+type}, struct \textbf{ msgb} $\ast$\textbf{ msg}))
\item 
void \textbf{ gsm411\+\_\+smr\+\_\+clear} (struct \textbf{ gsm411\+\_\+smr\+\_\+inst} $\ast$inst)
\item 
static void \textbf{ new\+\_\+rp\+\_\+state} (struct \textbf{ gsm411\+\_\+smr\+\_\+inst} $\ast$inst, enum \textbf{ gsm411\+\_\+rp\+\_\+state} state)
\item 
static int \textbf{ gsm411\+\_\+rp\+\_\+sendmsg} (struct \textbf{ gsm411\+\_\+smr\+\_\+inst} $\ast$inst, struct \textbf{ msgb} $\ast$\textbf{ msg}, uint8\+\_\+t rp\+\_\+msg\+\_\+type, uint8\+\_\+t rp\+\_\+msg\+\_\+ref, int mnsms\+\_\+msg\+\_\+type)
\item 
static int \textbf{ gsm411\+\_\+send\+\_\+rp\+\_\+error} (struct \textbf{ gsm411\+\_\+smr\+\_\+inst} $\ast$inst, uint8\+\_\+t \textbf{ msg\+\_\+ref}, uint8\+\_\+t \textbf{ cause})
\item 
static int \textbf{ gsm411\+\_\+send\+\_\+release} (struct \textbf{ gsm411\+\_\+smr\+\_\+inst} $\ast$inst)
\item 
static int \textbf{ gsm411\+\_\+send\+\_\+abort} (struct \textbf{ gsm411\+\_\+smr\+\_\+inst} $\ast$inst)
\item 
static int \textbf{ gsm411\+\_\+send\+\_\+report} (struct \textbf{ gsm411\+\_\+smr\+\_\+inst} $\ast$inst)
\item 
static int \textbf{ gsm411\+\_\+rl\+\_\+data\+\_\+req} (struct \textbf{ gsm411\+\_\+smr\+\_\+inst} $\ast$inst, struct \textbf{ msgb} $\ast$\textbf{ msg})
\item 
static int \textbf{ gsm411\+\_\+rl\+\_\+report\+\_\+req} (struct \textbf{ gsm411\+\_\+smr\+\_\+inst} $\ast$inst, struct \textbf{ msgb} $\ast$\textbf{ msg})
\item 
static int \textbf{ gsm411\+\_\+mnsms\+\_\+est\+\_\+ind} (struct \textbf{ gsm411\+\_\+smr\+\_\+inst} $\ast$inst, struct \textbf{ msgb} $\ast$\textbf{ msg})
\item 
static int \textbf{ gsm411\+\_\+mnsms\+\_\+data\+\_\+ind\+\_\+tx} (struct \textbf{ gsm411\+\_\+smr\+\_\+inst} $\ast$inst, struct \textbf{ msgb} $\ast$\textbf{ msg})
\item 
static int \textbf{ gsm411\+\_\+mnsms\+\_\+error\+\_\+ind\+\_\+tx} (struct \textbf{ gsm411\+\_\+smr\+\_\+inst} $\ast$inst, struct \textbf{ msgb} $\ast$\textbf{ msg})
\item 
static int \textbf{ gsm411\+\_\+mnsms\+\_\+error\+\_\+ind\+\_\+rx} (struct \textbf{ gsm411\+\_\+smr\+\_\+inst} $\ast$inst, struct \textbf{ msgb} $\ast$\textbf{ msg})
\item 
int \textbf{ gsm411\+\_\+smr\+\_\+send} (struct \textbf{ gsm411\+\_\+smr\+\_\+inst} $\ast$inst, int \textbf{ msg\+\_\+type}, struct \textbf{ msgb} $\ast$\textbf{ msg})
\item 
int \textbf{ gsm411\+\_\+smr\+\_\+recv} (struct \textbf{ gsm411\+\_\+smr\+\_\+inst} $\ast$inst, int \textbf{ msg\+\_\+type}, struct \textbf{ msgb} $\ast$\textbf{ msg})
\end{DoxyCompactItemize}
\doxysubsection*{Variables}
\begin{DoxyCompactItemize}
\item 
static const char $\ast$ \textbf{ smr\+\_\+state\+\_\+names} [$\,$]
\item 
const struct \textbf{ value\+\_\+string} \textbf{ gsm411\+\_\+rp\+\_\+cause\+\_\+strs} [$\,$]
\item 
static const struct \textbf{ smrdownstate} \textbf{ smrdownstatelist} [$\,$]
\item 
static const struct \textbf{ smrdatastate} \textbf{ smrdatastatelist} [$\,$]
\item 
const struct \textbf{ value\+\_\+string} \textbf{ gsm411\+\_\+rp\+\_\+state\+\_\+names} [$\,$]
\end{DoxyCompactItemize}


\doxysubsection{Macro Definition Documentation}
\mbox{\label{gsm0411__smr_8c_a3162520443fa0aa9a096807b847015d5}} 
\index{gsm0411\_smr.c@{gsm0411\_smr.c}!SMR\_LOG\_STR@{SMR\_LOG\_STR}}
\index{SMR\_LOG\_STR@{SMR\_LOG\_STR}!gsm0411\_smr.c@{gsm0411\_smr.c}}
\doxysubsubsection{SMR\_LOG\_STR}
{\footnotesize\ttfamily \#define SMR\+\_\+\+LOG\+\_\+\+STR~\char`\"{}SMR(\%\char`\"{} PRIu64 \char`\"{}) \char`\"{}}

