\section{src/xua\+\_\+as\+\_\+fsm.c File Reference}
\label{xua__as__fsm_8c}\index{src/xua\+\_\+as\+\_\+fsm.\+c@{src/xua\+\_\+as\+\_\+fsm.\+c}}
{\ttfamily \#include $<$string.\+h$>$}\newline
{\ttfamily \#include $<$arpa/inet.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/core/fsm.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/core/utils.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/core/timer.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/core/prim.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/core/logging.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/sigtran/osmo\+\_\+ss7.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/sigtran/sigtran\+\_\+sap.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/sigtran/xua\+\_\+msg.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/sigtran/protocol/sua.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/sigtran/protocol/m3ua.\+h$>$}\newline
{\ttfamily \#include \char`\"{}xua\+\_\+asp\+\_\+fsm.\+h\char`\"{}}\newline
{\ttfamily \#include \char`\"{}xua\+\_\+as\+\_\+fsm.\+h\char`\"{}}\newline
{\ttfamily \#include \char`\"{}xua\+\_\+internal.\+h\char`\"{}}\newline
\subsection*{Data Structures}
\begin{DoxyCompactItemize}
\item 
struct \textbf{ xua\+\_\+as\+\_\+fsm\+\_\+priv}
\end{DoxyCompactItemize}
\subsection*{Macros}
\begin{DoxyCompactItemize}
\item 
\#define \textbf{ S}(x)~(1 $<$$<$ (x))
\item 
\#define \textbf{ M\+S\+E\+C\+\_\+\+T\+O\+\_\+\+S\+\_\+\+US}(x)~(x/1000), ((x\%1000)$\ast$10)
\end{DoxyCompactItemize}
\subsection*{Functions}
\begin{DoxyCompactItemize}
\item 
static struct msgb $\ast$ \textbf{ encode\+\_\+notify} (const struct \textbf{ osmo\+\_\+xlm\+\_\+prim\+\_\+notify} $\ast$npar)
\item 
static int \textbf{ as\+\_\+notify\+\_\+all\+\_\+asp} (struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$as, struct \textbf{ osmo\+\_\+xlm\+\_\+prim\+\_\+notify} $\ast$npar)
\item 
static int \textbf{ get\+\_\+local\+\_\+role} (struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$as)
\item 
static struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$ \textbf{ xua\+\_\+as\+\_\+select\+\_\+asp\+\_\+override} (struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$as)
\item 
static struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$ \textbf{ xua\+\_\+as\+\_\+select\+\_\+asp\+\_\+roundrobin} (struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$as)
\item 
int \textbf{ xua\+\_\+as\+\_\+transmit\+\_\+msg\+\_\+broadcast} (struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$as, struct msgb $\ast$msg)
\item 
int \textbf{ xua\+\_\+as\+\_\+transmit\+\_\+msg} (struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$as, struct msgb $\ast$msg)
\item 
static bool \textbf{ is\+\_\+single\+\_\+ipa\+\_\+asp} (struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$as)
\item 
static void \textbf{ ipa\+\_\+add\+\_\+route} (struct osmo\+\_\+fsm\+\_\+inst $\ast$fi)
\item 
static void \textbf{ ipa\+\_\+del\+\_\+route} (struct osmo\+\_\+fsm\+\_\+inst $\ast$fi)
\item 
static bool \textbf{ check\+\_\+any\+\_\+other\+\_\+asp\+\_\+not\+\_\+down} (struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$as, struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$asp\+\_\+cmp)
\item 
static bool \textbf{ check\+\_\+any\+\_\+other\+\_\+asp\+\_\+in\+\_\+active} (struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$as, struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$asp\+\_\+cmp)
\item 
static void \textbf{ notify\+\_\+any\+\_\+other\+\_\+active\+\_\+asp\+\_\+as\+\_\+inactive} (struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$as, struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$asp\+\_\+cmp)
\item 
static void \textbf{ t\+\_\+r\+\_\+callback} (void $\ast$\+\_\+fi)
\item 
static void \textbf{ xua\+\_\+as\+\_\+fsm\+\_\+down} (struct osmo\+\_\+fsm\+\_\+inst $\ast$fi, uint32\+\_\+t event, void $\ast$\textbf{ data})
\item 
static void \textbf{ xua\+\_\+as\+\_\+fsm\+\_\+onenter} (struct osmo\+\_\+fsm\+\_\+inst $\ast$fi, uint32\+\_\+t old\+\_\+state)
\item 
static void \textbf{ xua\+\_\+as\+\_\+fsm\+\_\+inactive} (struct osmo\+\_\+fsm\+\_\+inst $\ast$fi, uint32\+\_\+t event, void $\ast$\textbf{ data})
\item 
static void \textbf{ xua\+\_\+as\+\_\+fsm\+\_\+active} (struct osmo\+\_\+fsm\+\_\+inst $\ast$fi, uint32\+\_\+t event, void $\ast$\textbf{ data})
\item 
static void \textbf{ xua\+\_\+as\+\_\+fsm\+\_\+pending} (struct osmo\+\_\+fsm\+\_\+inst $\ast$fi, uint32\+\_\+t event, void $\ast$\textbf{ data})
\item 
static void \textbf{ xua\+\_\+as\+\_\+fsm\+\_\+cleanup} (struct osmo\+\_\+fsm\+\_\+inst $\ast$fi, enum osmo\+\_\+fsm\+\_\+term\+\_\+cause cause)
\item 
struct osmo\+\_\+fsm\+\_\+inst $\ast$ \textbf{ xua\+\_\+as\+\_\+fsm\+\_\+start} (struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$as, int log\+\_\+level)
\begin{DoxyCompactList}\small\item\em Start an AS F\+SM for a given Application Server. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Variables}
\begin{DoxyCompactItemize}
\item 
static const struct value\+\_\+string \textbf{ xua\+\_\+as\+\_\+event\+\_\+names} [$\,$]
\item 
static const struct osmo\+\_\+fsm\+\_\+state \textbf{ xua\+\_\+as\+\_\+fsm\+\_\+states} [$\,$]
\item 
struct osmo\+\_\+fsm \textbf{ xua\+\_\+as\+\_\+fsm}
\end{DoxyCompactItemize}


\subsection{Macro Definition Documentation}
\mbox{\label{xua__as__fsm_8c_a5f423b301845bef33386d5f889e279ba}} 
\index{xua\+\_\+as\+\_\+fsm.\+c@{xua\+\_\+as\+\_\+fsm.\+c}!M\+S\+E\+C\+\_\+\+T\+O\+\_\+\+S\+\_\+\+US@{M\+S\+E\+C\+\_\+\+T\+O\+\_\+\+S\+\_\+\+US}}
\index{M\+S\+E\+C\+\_\+\+T\+O\+\_\+\+S\+\_\+\+US@{M\+S\+E\+C\+\_\+\+T\+O\+\_\+\+S\+\_\+\+US}!xua\+\_\+as\+\_\+fsm.\+c@{xua\+\_\+as\+\_\+fsm.\+c}}
\subsubsection{M\+S\+E\+C\+\_\+\+T\+O\+\_\+\+S\+\_\+\+US}
{\footnotesize\ttfamily \#define M\+S\+E\+C\+\_\+\+T\+O\+\_\+\+S\+\_\+\+US(\begin{DoxyParamCaption}\item[{}]{x }\end{DoxyParamCaption})~(x/1000), ((x\%1000)$\ast$10)}



Referenced by xua\+\_\+as\+\_\+fsm\+\_\+active().

\mbox{\label{xua__as__fsm_8c_ac4a3ed3432929804c708f7760fb79e28}} 
\index{xua\+\_\+as\+\_\+fsm.\+c@{xua\+\_\+as\+\_\+fsm.\+c}!S@{S}}
\index{S@{S}!xua\+\_\+as\+\_\+fsm.\+c@{xua\+\_\+as\+\_\+fsm.\+c}}
\subsubsection{S}
{\footnotesize\ttfamily \#define S(\begin{DoxyParamCaption}\item[{}]{x }\end{DoxyParamCaption})~(1 $<$$<$ (x))}



\subsection{Function Documentation}
\mbox{\label{xua__as__fsm_8c_a97104403abbba1543c90e718dd59bd69}} 
\index{xua\+\_\+as\+\_\+fsm.\+c@{xua\+\_\+as\+\_\+fsm.\+c}!as\+\_\+notify\+\_\+all\+\_\+asp@{as\+\_\+notify\+\_\+all\+\_\+asp}}
\index{as\+\_\+notify\+\_\+all\+\_\+asp@{as\+\_\+notify\+\_\+all\+\_\+asp}!xua\+\_\+as\+\_\+fsm.\+c@{xua\+\_\+as\+\_\+fsm.\+c}}
\subsubsection{as\+\_\+notify\+\_\+all\+\_\+asp()}
{\footnotesize\ttfamily static int as\+\_\+notify\+\_\+all\+\_\+asp (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$}]{as,  }\item[{struct \textbf{ osmo\+\_\+xlm\+\_\+prim\+\_\+notify} $\ast$}]{npar }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References osmo\+\_\+xlm\+\_\+prim\+\_\+notify\+::asp\+\_\+id, osmo\+\_\+ss7\+\_\+asp\+::asp\+\_\+id, osmo\+\_\+ss7\+\_\+asp\+::asp\+\_\+id\+\_\+present, osmo\+\_\+ss7\+\_\+as\+::asps, osmo\+\_\+ss7\+\_\+as\+::cfg, osmo\+\_\+ss7\+\_\+asp\+::cfg, encode\+\_\+notify(), osmo\+\_\+ss7\+\_\+asp\+::fi, N\+O\+T\+I\+F\+Y\+\_\+\+P\+A\+R\+\_\+\+P\+\_\+\+A\+S\+P\+\_\+\+ID, O\+S\+M\+O\+\_\+\+S\+S7\+\_\+\+A\+S\+P\+\_\+\+P\+R\+O\+T\+\_\+\+I\+PA, O\+S\+M\+O\+\_\+\+S\+S7\+\_\+\+A\+S\+P\+\_\+\+R\+O\+L\+E\+\_\+\+A\+SP, osmo\+\_\+ss7\+\_\+asp\+\_\+send(), osmo\+\_\+xlm\+\_\+prim\+\_\+notify\+::presence, osmo\+\_\+ss7\+\_\+as\+::proto, osmo\+\_\+ss7\+\_\+asp\+::role, and X\+U\+A\+\_\+\+A\+S\+P\+\_\+\+S\+\_\+\+D\+O\+WN.

\mbox{\label{xua__as__fsm_8c_a54316903eb0af8cb93fb8f7d1e380d6b}} 
\index{xua\+\_\+as\+\_\+fsm.\+c@{xua\+\_\+as\+\_\+fsm.\+c}!check\+\_\+any\+\_\+other\+\_\+asp\+\_\+in\+\_\+active@{check\+\_\+any\+\_\+other\+\_\+asp\+\_\+in\+\_\+active}}
\index{check\+\_\+any\+\_\+other\+\_\+asp\+\_\+in\+\_\+active@{check\+\_\+any\+\_\+other\+\_\+asp\+\_\+in\+\_\+active}!xua\+\_\+as\+\_\+fsm.\+c@{xua\+\_\+as\+\_\+fsm.\+c}}
\subsubsection{check\+\_\+any\+\_\+other\+\_\+asp\+\_\+in\+\_\+active()}
{\footnotesize\ttfamily static bool check\+\_\+any\+\_\+other\+\_\+asp\+\_\+in\+\_\+active (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$}]{as,  }\item[{struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$}]{asp\+\_\+cmp }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References osmo\+\_\+ss7\+\_\+as\+::asps, osmo\+\_\+ss7\+\_\+as\+::cfg, osmo\+\_\+ss7\+\_\+asp\+::fi, and X\+U\+A\+\_\+\+A\+S\+P\+\_\+\+S\+\_\+\+A\+C\+T\+I\+VE.



Referenced by xua\+\_\+as\+\_\+fsm\+\_\+active().

\mbox{\label{xua__as__fsm_8c_a07a8376c2bacba0552b59ac979960412}} 
\index{xua\+\_\+as\+\_\+fsm.\+c@{xua\+\_\+as\+\_\+fsm.\+c}!check\+\_\+any\+\_\+other\+\_\+asp\+\_\+not\+\_\+down@{check\+\_\+any\+\_\+other\+\_\+asp\+\_\+not\+\_\+down}}
\index{check\+\_\+any\+\_\+other\+\_\+asp\+\_\+not\+\_\+down@{check\+\_\+any\+\_\+other\+\_\+asp\+\_\+not\+\_\+down}!xua\+\_\+as\+\_\+fsm.\+c@{xua\+\_\+as\+\_\+fsm.\+c}}
\subsubsection{check\+\_\+any\+\_\+other\+\_\+asp\+\_\+not\+\_\+down()}
{\footnotesize\ttfamily static bool check\+\_\+any\+\_\+other\+\_\+asp\+\_\+not\+\_\+down (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$}]{as,  }\item[{struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$}]{asp\+\_\+cmp }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References osmo\+\_\+ss7\+\_\+as\+::asps, osmo\+\_\+ss7\+\_\+as\+::cfg, osmo\+\_\+ss7\+\_\+asp\+::fi, and X\+U\+A\+\_\+\+A\+S\+P\+\_\+\+S\+\_\+\+D\+O\+WN.



Referenced by xua\+\_\+as\+\_\+fsm\+\_\+inactive(), and xua\+\_\+as\+\_\+fsm\+\_\+pending().

\mbox{\label{xua__as__fsm_8c_a4f7fad6ec129562a34ec77e114b71c31}} 
\index{xua\+\_\+as\+\_\+fsm.\+c@{xua\+\_\+as\+\_\+fsm.\+c}!encode\+\_\+notify@{encode\+\_\+notify}}
\index{encode\+\_\+notify@{encode\+\_\+notify}!xua\+\_\+as\+\_\+fsm.\+c@{xua\+\_\+as\+\_\+fsm.\+c}}
\subsubsection{encode\+\_\+notify()}
{\footnotesize\ttfamily static struct msgb$\ast$ encode\+\_\+notify (\begin{DoxyParamCaption}\item[{const struct \textbf{ osmo\+\_\+xlm\+\_\+prim\+\_\+notify} $\ast$}]{npar }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References m3ua\+\_\+encode\+\_\+notify(), M3\+U\+A\+\_\+\+V\+E\+R\+S\+I\+ON, xua\+\_\+msg\+\_\+free(), and xua\+\_\+to\+\_\+msg().



Referenced by as\+\_\+notify\+\_\+all\+\_\+asp(), and notify\+\_\+any\+\_\+other\+\_\+active\+\_\+asp\+\_\+as\+\_\+inactive().

\mbox{\label{xua__as__fsm_8c_acec6571ac41737c2f0b15a981e15e9a0}} 
\index{xua\+\_\+as\+\_\+fsm.\+c@{xua\+\_\+as\+\_\+fsm.\+c}!get\+\_\+local\+\_\+role@{get\+\_\+local\+\_\+role}}
\index{get\+\_\+local\+\_\+role@{get\+\_\+local\+\_\+role}!xua\+\_\+as\+\_\+fsm.\+c@{xua\+\_\+as\+\_\+fsm.\+c}}
\subsubsection{get\+\_\+local\+\_\+role()}
{\footnotesize\ttfamily static int get\+\_\+local\+\_\+role (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$}]{as }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References osmo\+\_\+ss7\+\_\+as\+::asps, osmo\+\_\+ss7\+\_\+as\+::cfg, osmo\+\_\+ss7\+\_\+asp\+::cfg, and osmo\+\_\+ss7\+\_\+asp\+::role.

\mbox{\label{xua__as__fsm_8c_a5969c8ebe41934d7da0297fedbccfe4e}} 
\index{xua\+\_\+as\+\_\+fsm.\+c@{xua\+\_\+as\+\_\+fsm.\+c}!ipa\+\_\+add\+\_\+route@{ipa\+\_\+add\+\_\+route}}
\index{ipa\+\_\+add\+\_\+route@{ipa\+\_\+add\+\_\+route}!xua\+\_\+as\+\_\+fsm.\+c@{xua\+\_\+as\+\_\+fsm.\+c}}
\subsubsection{ipa\+\_\+add\+\_\+route()}
{\footnotesize\ttfamily static void ipa\+\_\+add\+\_\+route (\begin{DoxyParamCaption}\item[{struct osmo\+\_\+fsm\+\_\+inst $\ast$}]{fi }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References xua\+\_\+as\+\_\+fsm\+\_\+priv\+::as, osmo\+\_\+ss7\+\_\+as\+::cfg, osmo\+\_\+ss7\+\_\+as\+::inst, xua\+\_\+as\+\_\+fsm\+\_\+priv\+::ipa\+\_\+route\+\_\+created, osmo\+\_\+ss7\+\_\+as\+::name, osmo\+\_\+ss7\+\_\+route\+\_\+create(), osmo\+\_\+ss7\+\_\+route\+\_\+find\+\_\+dpc\+\_\+mask(), osmo\+\_\+ss7\+\_\+routing\+\_\+key\+::pc, and osmo\+\_\+ss7\+\_\+as\+::routing\+\_\+key.

\mbox{\label{xua__as__fsm_8c_a9ad84983bf8cd04680f38cc539633165}} 
\index{xua\+\_\+as\+\_\+fsm.\+c@{xua\+\_\+as\+\_\+fsm.\+c}!ipa\+\_\+del\+\_\+route@{ipa\+\_\+del\+\_\+route}}
\index{ipa\+\_\+del\+\_\+route@{ipa\+\_\+del\+\_\+route}!xua\+\_\+as\+\_\+fsm.\+c@{xua\+\_\+as\+\_\+fsm.\+c}}
\subsubsection{ipa\+\_\+del\+\_\+route()}
{\footnotesize\ttfamily static void ipa\+\_\+del\+\_\+route (\begin{DoxyParamCaption}\item[{struct osmo\+\_\+fsm\+\_\+inst $\ast$}]{fi }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References xua\+\_\+as\+\_\+fsm\+\_\+priv\+::as, osmo\+\_\+ss7\+\_\+as\+::cfg, osmo\+\_\+ss7\+\_\+as\+::inst, xua\+\_\+as\+\_\+fsm\+\_\+priv\+::ipa\+\_\+route\+\_\+created, osmo\+\_\+ss7\+\_\+pointcode\+\_\+print(), osmo\+\_\+ss7\+\_\+route\+\_\+destroy(), osmo\+\_\+ss7\+\_\+route\+\_\+find\+\_\+dpc\+\_\+mask(), osmo\+\_\+ss7\+\_\+routing\+\_\+key\+::pc, and osmo\+\_\+ss7\+\_\+as\+::routing\+\_\+key.

\mbox{\label{xua__as__fsm_8c_ac4576b53e0a669d76ec6117fcff95805}} 
\index{xua\+\_\+as\+\_\+fsm.\+c@{xua\+\_\+as\+\_\+fsm.\+c}!is\+\_\+single\+\_\+ipa\+\_\+asp@{is\+\_\+single\+\_\+ipa\+\_\+asp}}
\index{is\+\_\+single\+\_\+ipa\+\_\+asp@{is\+\_\+single\+\_\+ipa\+\_\+asp}!xua\+\_\+as\+\_\+fsm.\+c@{xua\+\_\+as\+\_\+fsm.\+c}}
\subsubsection{is\+\_\+single\+\_\+ipa\+\_\+asp()}
{\footnotesize\ttfamily static bool is\+\_\+single\+\_\+ipa\+\_\+asp (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$}]{as }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References osmo\+\_\+ss7\+\_\+as\+::asps, osmo\+\_\+ss7\+\_\+as\+::cfg, osmo\+\_\+ss7\+\_\+asp\+::cfg, O\+S\+M\+O\+\_\+\+S\+S7\+\_\+\+A\+S\+P\+\_\+\+P\+R\+O\+T\+\_\+\+I\+PA, and osmo\+\_\+ss7\+\_\+asp\+::proto.

\mbox{\label{xua__as__fsm_8c_a5b8baeaee767042fc6e5248032950355}} 
\index{xua\+\_\+as\+\_\+fsm.\+c@{xua\+\_\+as\+\_\+fsm.\+c}!notify\+\_\+any\+\_\+other\+\_\+active\+\_\+asp\+\_\+as\+\_\+inactive@{notify\+\_\+any\+\_\+other\+\_\+active\+\_\+asp\+\_\+as\+\_\+inactive}}
\index{notify\+\_\+any\+\_\+other\+\_\+active\+\_\+asp\+\_\+as\+\_\+inactive@{notify\+\_\+any\+\_\+other\+\_\+active\+\_\+asp\+\_\+as\+\_\+inactive}!xua\+\_\+as\+\_\+fsm.\+c@{xua\+\_\+as\+\_\+fsm.\+c}}
\subsubsection{notify\+\_\+any\+\_\+other\+\_\+active\+\_\+asp\+\_\+as\+\_\+inactive()}
{\footnotesize\ttfamily static void notify\+\_\+any\+\_\+other\+\_\+active\+\_\+asp\+\_\+as\+\_\+inactive (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$}]{as,  }\item[{struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$}]{asp\+\_\+cmp }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References osmo\+\_\+xlm\+\_\+prim\+\_\+notify\+::asp\+\_\+id, osmo\+\_\+ss7\+\_\+asp\+::asp\+\_\+id, osmo\+\_\+ss7\+\_\+asp\+::asp\+\_\+id\+\_\+present, osmo\+\_\+ss7\+\_\+as\+::asps, osmo\+\_\+ss7\+\_\+as\+::cfg, osmo\+\_\+ss7\+\_\+asp\+::cfg, encode\+\_\+notify(), osmo\+\_\+ss7\+\_\+asp\+::fi, M3\+U\+A\+\_\+\+N\+O\+T\+I\+F\+Y\+\_\+\+I\+\_\+\+O\+T\+\_\+\+A\+L\+T\+\_\+\+A\+S\+P\+\_\+\+A\+CT, M3\+U\+A\+\_\+\+N\+O\+T\+I\+F\+Y\+\_\+\+T\+\_\+\+O\+T\+H\+ER, osmo\+\_\+ss7\+\_\+asp\+\_\+active(), O\+S\+M\+O\+\_\+\+S\+S7\+\_\+\+A\+S\+P\+\_\+\+P\+R\+O\+T\+\_\+\+I\+PA, osmo\+\_\+ss7\+\_\+asp\+\_\+send(), osmo\+\_\+ss7\+\_\+asp\+::proto, osmo\+\_\+xlm\+\_\+prim\+\_\+notify\+::status\+\_\+type, and X\+U\+A\+\_\+\+A\+S\+P\+\_\+\+S\+\_\+\+I\+N\+A\+C\+T\+I\+VE.



Referenced by xua\+\_\+as\+\_\+fsm\+\_\+active().

\mbox{\label{xua__as__fsm_8c_adf70a84b85d00e2b36a7e12adcffa235}} 
\index{xua\+\_\+as\+\_\+fsm.\+c@{xua\+\_\+as\+\_\+fsm.\+c}!t\+\_\+r\+\_\+callback@{t\+\_\+r\+\_\+callback}}
\index{t\+\_\+r\+\_\+callback@{t\+\_\+r\+\_\+callback}!xua\+\_\+as\+\_\+fsm.\+c@{xua\+\_\+as\+\_\+fsm.\+c}}
\subsubsection{t\+\_\+r\+\_\+callback()}
{\footnotesize\ttfamily static void t\+\_\+r\+\_\+callback (\begin{DoxyParamCaption}\item[{void $\ast$}]{\+\_\+fi }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References X\+U\+A\+\_\+\+A\+S\+\_\+\+E\+\_\+\+R\+E\+C\+O\+V\+E\+R\+Y\+\_\+\+E\+X\+PD.



Referenced by xua\+\_\+as\+\_\+fsm\+\_\+start().

\mbox{\label{xua__as__fsm_8c_ab3c12f9923a54ef33c0f44c0c28f7a7c}} 
\index{xua\+\_\+as\+\_\+fsm.\+c@{xua\+\_\+as\+\_\+fsm.\+c}!xua\+\_\+as\+\_\+fsm\+\_\+active@{xua\+\_\+as\+\_\+fsm\+\_\+active}}
\index{xua\+\_\+as\+\_\+fsm\+\_\+active@{xua\+\_\+as\+\_\+fsm\+\_\+active}!xua\+\_\+as\+\_\+fsm.\+c@{xua\+\_\+as\+\_\+fsm.\+c}}
\subsubsection{xua\+\_\+as\+\_\+fsm\+\_\+active()}
{\footnotesize\ttfamily static void xua\+\_\+as\+\_\+fsm\+\_\+active (\begin{DoxyParamCaption}\item[{struct osmo\+\_\+fsm\+\_\+inst $\ast$}]{fi,  }\item[{uint32\+\_\+t}]{event,  }\item[{void $\ast$}]{data }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References xua\+\_\+as\+\_\+fsm\+\_\+priv\+::as, osmo\+\_\+ss7\+\_\+as\+::cfg, check\+\_\+any\+\_\+other\+\_\+asp\+\_\+in\+\_\+active(), data, osmo\+\_\+ss7\+\_\+as\+::mode, M\+S\+E\+C\+\_\+\+T\+O\+\_\+\+S\+\_\+\+US, notify\+\_\+any\+\_\+other\+\_\+active\+\_\+asp\+\_\+as\+\_\+inactive(), O\+S\+M\+O\+\_\+\+S\+S7\+\_\+\+A\+S\+\_\+\+T\+M\+O\+D\+\_\+\+O\+V\+E\+R\+R\+I\+DE, xua\+\_\+as\+\_\+fsm\+\_\+priv\+::recovery, osmo\+\_\+ss7\+\_\+as\+::recovery\+\_\+timeout\+\_\+msec, xua\+\_\+as\+\_\+fsm\+\_\+priv\+::t\+\_\+r, X\+U\+A\+\_\+\+A\+S\+\_\+\+E\+\_\+\+T\+R\+A\+N\+S\+F\+E\+R\+\_\+\+R\+EQ, X\+U\+A\+\_\+\+A\+S\+\_\+\+S\+\_\+\+P\+E\+N\+D\+I\+NG, xua\+\_\+as\+\_\+transmit\+\_\+msg(), X\+U\+A\+\_\+\+A\+S\+P\+A\+S\+\_\+\+A\+S\+P\+\_\+\+A\+C\+T\+I\+V\+E\+\_\+\+I\+ND, X\+U\+A\+\_\+\+A\+S\+P\+A\+S\+\_\+\+A\+S\+P\+\_\+\+D\+O\+W\+N\+\_\+\+I\+ND, and X\+U\+A\+\_\+\+A\+S\+P\+A\+S\+\_\+\+A\+S\+P\+\_\+\+I\+N\+A\+C\+T\+I\+V\+E\+\_\+\+I\+ND.

\mbox{\label{xua__as__fsm_8c_a1e9a4dc4b1fb0e295c0063ff3d970fe5}} 
\index{xua\+\_\+as\+\_\+fsm.\+c@{xua\+\_\+as\+\_\+fsm.\+c}!xua\+\_\+as\+\_\+fsm\+\_\+cleanup@{xua\+\_\+as\+\_\+fsm\+\_\+cleanup}}
\index{xua\+\_\+as\+\_\+fsm\+\_\+cleanup@{xua\+\_\+as\+\_\+fsm\+\_\+cleanup}!xua\+\_\+as\+\_\+fsm.\+c@{xua\+\_\+as\+\_\+fsm.\+c}}
\subsubsection{xua\+\_\+as\+\_\+fsm\+\_\+cleanup()}
{\footnotesize\ttfamily static void xua\+\_\+as\+\_\+fsm\+\_\+cleanup (\begin{DoxyParamCaption}\item[{struct osmo\+\_\+fsm\+\_\+inst $\ast$}]{fi,  }\item[{enum osmo\+\_\+fsm\+\_\+term\+\_\+cause}]{cause }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References xua\+\_\+as\+\_\+fsm\+\_\+priv\+::recovery, and xua\+\_\+as\+\_\+fsm\+\_\+priv\+::t\+\_\+r.

\mbox{\label{xua__as__fsm_8c_a6d1cf31b1ae7406db45fa44cabe7c848}} 
\index{xua\+\_\+as\+\_\+fsm.\+c@{xua\+\_\+as\+\_\+fsm.\+c}!xua\+\_\+as\+\_\+fsm\+\_\+down@{xua\+\_\+as\+\_\+fsm\+\_\+down}}
\index{xua\+\_\+as\+\_\+fsm\+\_\+down@{xua\+\_\+as\+\_\+fsm\+\_\+down}!xua\+\_\+as\+\_\+fsm.\+c@{xua\+\_\+as\+\_\+fsm.\+c}}
\subsubsection{xua\+\_\+as\+\_\+fsm\+\_\+down()}
{\footnotesize\ttfamily static void xua\+\_\+as\+\_\+fsm\+\_\+down (\begin{DoxyParamCaption}\item[{struct osmo\+\_\+fsm\+\_\+inst $\ast$}]{fi,  }\item[{uint32\+\_\+t}]{event,  }\item[{void $\ast$}]{data }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References X\+U\+A\+\_\+\+A\+S\+\_\+\+S\+\_\+\+I\+N\+A\+C\+T\+I\+VE, X\+U\+A\+\_\+\+A\+S\+P\+A\+S\+\_\+\+A\+S\+P\+\_\+\+D\+O\+W\+N\+\_\+\+I\+ND, and X\+U\+A\+\_\+\+A\+S\+P\+A\+S\+\_\+\+A\+S\+P\+\_\+\+I\+N\+A\+C\+T\+I\+V\+E\+\_\+\+I\+ND.

\mbox{\label{xua__as__fsm_8c_ab8a4beaf8bffacb63e6a06ed6aa3e578}} 
\index{xua\+\_\+as\+\_\+fsm.\+c@{xua\+\_\+as\+\_\+fsm.\+c}!xua\+\_\+as\+\_\+fsm\+\_\+inactive@{xua\+\_\+as\+\_\+fsm\+\_\+inactive}}
\index{xua\+\_\+as\+\_\+fsm\+\_\+inactive@{xua\+\_\+as\+\_\+fsm\+\_\+inactive}!xua\+\_\+as\+\_\+fsm.\+c@{xua\+\_\+as\+\_\+fsm.\+c}}
\subsubsection{xua\+\_\+as\+\_\+fsm\+\_\+inactive()}
{\footnotesize\ttfamily static void xua\+\_\+as\+\_\+fsm\+\_\+inactive (\begin{DoxyParamCaption}\item[{struct osmo\+\_\+fsm\+\_\+inst $\ast$}]{fi,  }\item[{uint32\+\_\+t}]{event,  }\item[{void $\ast$}]{data }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References xua\+\_\+as\+\_\+fsm\+\_\+priv\+::as, check\+\_\+any\+\_\+other\+\_\+asp\+\_\+not\+\_\+down(), X\+U\+A\+\_\+\+A\+S\+\_\+\+S\+\_\+\+A\+C\+T\+I\+VE, X\+U\+A\+\_\+\+A\+S\+\_\+\+S\+\_\+\+D\+O\+WN, X\+U\+A\+\_\+\+A\+S\+P\+A\+S\+\_\+\+A\+S\+P\+\_\+\+A\+C\+T\+I\+V\+E\+\_\+\+I\+ND, X\+U\+A\+\_\+\+A\+S\+P\+A\+S\+\_\+\+A\+S\+P\+\_\+\+D\+O\+W\+N\+\_\+\+I\+ND, and X\+U\+A\+\_\+\+A\+S\+P\+A\+S\+\_\+\+A\+S\+P\+\_\+\+I\+N\+A\+C\+T\+I\+V\+E\+\_\+\+I\+ND.

\mbox{\label{xua__as__fsm_8c_a7906db4fee58fca749e45fa687ba750a}} 
\index{xua\+\_\+as\+\_\+fsm.\+c@{xua\+\_\+as\+\_\+fsm.\+c}!xua\+\_\+as\+\_\+fsm\+\_\+onenter@{xua\+\_\+as\+\_\+fsm\+\_\+onenter}}
\index{xua\+\_\+as\+\_\+fsm\+\_\+onenter@{xua\+\_\+as\+\_\+fsm\+\_\+onenter}!xua\+\_\+as\+\_\+fsm.\+c@{xua\+\_\+as\+\_\+fsm.\+c}}
\subsubsection{xua\+\_\+as\+\_\+fsm\+\_\+onenter()}
{\footnotesize\ttfamily static void xua\+\_\+as\+\_\+fsm\+\_\+onenter (\begin{DoxyParamCaption}\item[{struct osmo\+\_\+fsm\+\_\+inst $\ast$}]{fi,  }\item[{uint32\+\_\+t}]{old\+\_\+state }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References xua\+\_\+as\+\_\+fsm\+\_\+priv\+::as, M3\+U\+A\+\_\+\+N\+O\+T\+I\+F\+Y\+\_\+\+T\+\_\+\+S\+T\+A\+T\+C\+HG, and osmo\+\_\+xlm\+\_\+prim\+\_\+notify\+::status\+\_\+type.

\mbox{\label{xua__as__fsm_8c_a20344c0f2735db91f2aca9522e9f0762}} 
\index{xua\+\_\+as\+\_\+fsm.\+c@{xua\+\_\+as\+\_\+fsm.\+c}!xua\+\_\+as\+\_\+fsm\+\_\+pending@{xua\+\_\+as\+\_\+fsm\+\_\+pending}}
\index{xua\+\_\+as\+\_\+fsm\+\_\+pending@{xua\+\_\+as\+\_\+fsm\+\_\+pending}!xua\+\_\+as\+\_\+fsm.\+c@{xua\+\_\+as\+\_\+fsm.\+c}}
\subsubsection{xua\+\_\+as\+\_\+fsm\+\_\+pending()}
{\footnotesize\ttfamily static void xua\+\_\+as\+\_\+fsm\+\_\+pending (\begin{DoxyParamCaption}\item[{struct osmo\+\_\+fsm\+\_\+inst $\ast$}]{fi,  }\item[{uint32\+\_\+t}]{event,  }\item[{void $\ast$}]{data }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References xua\+\_\+as\+\_\+fsm\+\_\+priv\+::as, check\+\_\+any\+\_\+other\+\_\+asp\+\_\+not\+\_\+down(), data, xua\+\_\+as\+\_\+fsm\+\_\+priv\+::queued\+\_\+msgs, xua\+\_\+as\+\_\+fsm\+\_\+priv\+::recovery, xua\+\_\+as\+\_\+fsm\+\_\+priv\+::t\+\_\+r, X\+U\+A\+\_\+\+A\+S\+\_\+\+E\+\_\+\+R\+E\+C\+O\+V\+E\+R\+Y\+\_\+\+E\+X\+PD, X\+U\+A\+\_\+\+A\+S\+\_\+\+E\+\_\+\+T\+R\+A\+N\+S\+F\+E\+R\+\_\+\+R\+EQ, X\+U\+A\+\_\+\+A\+S\+\_\+\+S\+\_\+\+A\+C\+T\+I\+VE, X\+U\+A\+\_\+\+A\+S\+\_\+\+S\+\_\+\+D\+O\+WN, X\+U\+A\+\_\+\+A\+S\+\_\+\+S\+\_\+\+I\+N\+A\+C\+T\+I\+VE, xua\+\_\+as\+\_\+transmit\+\_\+msg(), X\+U\+A\+\_\+\+A\+S\+P\+A\+S\+\_\+\+A\+S\+P\+\_\+\+A\+C\+T\+I\+V\+E\+\_\+\+I\+ND, X\+U\+A\+\_\+\+A\+S\+P\+A\+S\+\_\+\+A\+S\+P\+\_\+\+D\+O\+W\+N\+\_\+\+I\+ND, and X\+U\+A\+\_\+\+A\+S\+P\+A\+S\+\_\+\+A\+S\+P\+\_\+\+I\+N\+A\+C\+T\+I\+V\+E\+\_\+\+I\+ND.

\mbox{\label{xua__as__fsm_8c_a5331e952e5ace61c7a1c3e5d36b00c85}} 
\index{xua\+\_\+as\+\_\+fsm.\+c@{xua\+\_\+as\+\_\+fsm.\+c}!xua\+\_\+as\+\_\+fsm\+\_\+start@{xua\+\_\+as\+\_\+fsm\+\_\+start}}
\index{xua\+\_\+as\+\_\+fsm\+\_\+start@{xua\+\_\+as\+\_\+fsm\+\_\+start}!xua\+\_\+as\+\_\+fsm.\+c@{xua\+\_\+as\+\_\+fsm.\+c}}
\subsubsection{xua\+\_\+as\+\_\+fsm\+\_\+start()}
{\footnotesize\ttfamily struct osmo\+\_\+fsm\+\_\+inst$\ast$ xua\+\_\+as\+\_\+fsm\+\_\+start (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$}]{as,  }\item[{int}]{log\+\_\+level }\end{DoxyParamCaption})}



Start an AS F\+SM for a given Application Server. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em as} & Application Server for which to start the AS F\+SM \\
\hline
\mbox{\tt in}  & {\em log\+\_\+level} & Logging level for logging of this F\+SM \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
F\+SM instance in case of success; N\+U\+LL in case of error 
\end{DoxyReturn}


References xua\+\_\+as\+\_\+fsm\+\_\+priv\+::as, osmo\+\_\+ss7\+\_\+as\+::cfg, osmo\+\_\+ss7\+\_\+as\+::name, xua\+\_\+as\+\_\+fsm\+\_\+priv\+::queued\+\_\+msgs, xua\+\_\+as\+\_\+fsm\+\_\+priv\+::recovery, xua\+\_\+as\+\_\+fsm\+\_\+priv\+::t\+\_\+r, and t\+\_\+r\+\_\+callback().



Referenced by osmo\+\_\+ss7\+\_\+as\+\_\+find\+\_\+or\+\_\+create().

\mbox{\label{xua__as__fsm_8c_ad9f11476c0eb787ddd37b1d9ff462448}} 
\index{xua\+\_\+as\+\_\+fsm.\+c@{xua\+\_\+as\+\_\+fsm.\+c}!xua\+\_\+as\+\_\+select\+\_\+asp\+\_\+override@{xua\+\_\+as\+\_\+select\+\_\+asp\+\_\+override}}
\index{xua\+\_\+as\+\_\+select\+\_\+asp\+\_\+override@{xua\+\_\+as\+\_\+select\+\_\+asp\+\_\+override}!xua\+\_\+as\+\_\+fsm.\+c@{xua\+\_\+as\+\_\+fsm.\+c}}
\subsubsection{xua\+\_\+as\+\_\+select\+\_\+asp\+\_\+override()}
{\footnotesize\ttfamily static struct \textbf{ osmo\+\_\+ss7\+\_\+asp}$\ast$ xua\+\_\+as\+\_\+select\+\_\+asp\+\_\+override (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$}]{as }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References osmo\+\_\+ss7\+\_\+as\+::asps, osmo\+\_\+ss7\+\_\+as\+::cfg, and osmo\+\_\+ss7\+\_\+asp\+\_\+active().



Referenced by xua\+\_\+as\+\_\+transmit\+\_\+msg().

\mbox{\label{xua__as__fsm_8c_aac47155b18150d4b155689b27871d61f}} 
\index{xua\+\_\+as\+\_\+fsm.\+c@{xua\+\_\+as\+\_\+fsm.\+c}!xua\+\_\+as\+\_\+select\+\_\+asp\+\_\+roundrobin@{xua\+\_\+as\+\_\+select\+\_\+asp\+\_\+roundrobin}}
\index{xua\+\_\+as\+\_\+select\+\_\+asp\+\_\+roundrobin@{xua\+\_\+as\+\_\+select\+\_\+asp\+\_\+roundrobin}!xua\+\_\+as\+\_\+fsm.\+c@{xua\+\_\+as\+\_\+fsm.\+c}}
\subsubsection{xua\+\_\+as\+\_\+select\+\_\+asp\+\_\+roundrobin()}
{\footnotesize\ttfamily static struct \textbf{ osmo\+\_\+ss7\+\_\+asp}$\ast$ xua\+\_\+as\+\_\+select\+\_\+asp\+\_\+roundrobin (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$}]{as }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References osmo\+\_\+ss7\+\_\+as\+::asps, osmo\+\_\+ss7\+\_\+as\+::cfg, osmo\+\_\+ss7\+\_\+as\+::last\+\_\+asp\+\_\+idx\+\_\+sent, and osmo\+\_\+ss7\+\_\+asp\+\_\+active().



Referenced by xua\+\_\+as\+\_\+transmit\+\_\+msg().

\mbox{\label{xua__as__fsm_8c_af79f59cb9478eaa7ef5b9801c5be2ef9}} 
\index{xua\+\_\+as\+\_\+fsm.\+c@{xua\+\_\+as\+\_\+fsm.\+c}!xua\+\_\+as\+\_\+transmit\+\_\+msg@{xua\+\_\+as\+\_\+transmit\+\_\+msg}}
\index{xua\+\_\+as\+\_\+transmit\+\_\+msg@{xua\+\_\+as\+\_\+transmit\+\_\+msg}!xua\+\_\+as\+\_\+fsm.\+c@{xua\+\_\+as\+\_\+fsm.\+c}}
\subsubsection{xua\+\_\+as\+\_\+transmit\+\_\+msg()}
{\footnotesize\ttfamily int xua\+\_\+as\+\_\+transmit\+\_\+msg (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$}]{as,  }\item[{struct msgb $\ast$}]{msg }\end{DoxyParamCaption})}



References \+\_\+\+N\+U\+M\+\_\+\+O\+S\+M\+O\+\_\+\+S\+S7\+\_\+\+A\+S\+P\+\_\+\+T\+M\+OD, osmo\+\_\+ss7\+\_\+as\+::cfg, osmo\+\_\+ss7\+\_\+as\+::fi, osmo\+\_\+ss7\+\_\+as\+::mode, O\+S\+M\+O\+\_\+\+S\+S7\+\_\+\+A\+S\+\_\+\+T\+M\+O\+D\+\_\+\+B\+C\+A\+ST, O\+S\+M\+O\+\_\+\+S\+S7\+\_\+\+A\+S\+\_\+\+T\+M\+O\+D\+\_\+\+L\+O\+A\+D\+S\+H\+A\+RE, O\+S\+M\+O\+\_\+\+S\+S7\+\_\+\+A\+S\+\_\+\+T\+M\+O\+D\+\_\+\+O\+V\+E\+R\+R\+I\+DE, O\+S\+M\+O\+\_\+\+S\+S7\+\_\+\+A\+S\+\_\+\+T\+M\+O\+D\+\_\+\+R\+O\+U\+N\+D\+R\+O\+B\+IN, osmo\+\_\+ss7\+\_\+asp\+\_\+send(), xua\+\_\+as\+\_\+select\+\_\+asp\+\_\+override(), xua\+\_\+as\+\_\+select\+\_\+asp\+\_\+roundrobin(), and xua\+\_\+as\+\_\+transmit\+\_\+msg\+\_\+broadcast().



Referenced by ipa\+\_\+tx\+\_\+xua\+\_\+as(), xua\+\_\+as\+\_\+fsm\+\_\+active(), and xua\+\_\+as\+\_\+fsm\+\_\+pending().

\mbox{\label{xua__as__fsm_8c_a77a6ca916ab14687da18757eaebb636d}} 
\index{xua\+\_\+as\+\_\+fsm.\+c@{xua\+\_\+as\+\_\+fsm.\+c}!xua\+\_\+as\+\_\+transmit\+\_\+msg\+\_\+broadcast@{xua\+\_\+as\+\_\+transmit\+\_\+msg\+\_\+broadcast}}
\index{xua\+\_\+as\+\_\+transmit\+\_\+msg\+\_\+broadcast@{xua\+\_\+as\+\_\+transmit\+\_\+msg\+\_\+broadcast}!xua\+\_\+as\+\_\+fsm.\+c@{xua\+\_\+as\+\_\+fsm.\+c}}
\subsubsection{xua\+\_\+as\+\_\+transmit\+\_\+msg\+\_\+broadcast()}
{\footnotesize\ttfamily int xua\+\_\+as\+\_\+transmit\+\_\+msg\+\_\+broadcast (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+ss7\+\_\+as} $\ast$}]{as,  }\item[{struct msgb $\ast$}]{msg }\end{DoxyParamCaption})}



References osmo\+\_\+ss7\+\_\+as\+::asps, osmo\+\_\+ss7\+\_\+as\+::cfg, osmo\+\_\+ss7\+\_\+asp\+\_\+active(), and osmo\+\_\+ss7\+\_\+asp\+\_\+send().



Referenced by xua\+\_\+as\+\_\+transmit\+\_\+msg().



\subsection{Variable Documentation}
\mbox{\label{xua__as__fsm_8c_a307e97238e981dbc91bf5f16aa4398c5}} 
\index{xua\+\_\+as\+\_\+fsm.\+c@{xua\+\_\+as\+\_\+fsm.\+c}!xua\+\_\+as\+\_\+event\+\_\+names@{xua\+\_\+as\+\_\+event\+\_\+names}}
\index{xua\+\_\+as\+\_\+event\+\_\+names@{xua\+\_\+as\+\_\+event\+\_\+names}!xua\+\_\+as\+\_\+fsm.\+c@{xua\+\_\+as\+\_\+fsm.\+c}}
\subsubsection{xua\+\_\+as\+\_\+event\+\_\+names}
{\footnotesize\ttfamily const struct value\+\_\+string xua\+\_\+as\+\_\+event\+\_\+names[$\,$]\hspace{0.3cm}{\ttfamily [static]}}

{\bfseries Initial value\+:}
\begin{DoxyCode}
= \{
        \{ XUA_ASPAS_ASP_INACTIVE_IND,   \textcolor{stringliteral}{"ASPAS-ASP\_INACTIVE.ind"} \},
        \{ XUA_ASPAS_ASP_DOWN_IND,       \textcolor{stringliteral}{"ASPAS-ASP\_DOWN.ind"} \},
        \{ XUA_ASPAS_ASP_ACTIVE_IND,     \textcolor{stringliteral}{"ASPAS-ASP\_ACTIVE.ind"} \},
        \{ XUA_AS_E_RECOVERY_EXPD,       \textcolor{stringliteral}{"AS-T\_REC\_EXPD.ind"} \},
        \{ XUA_AS_E_TRANSFER_REQ,        \textcolor{stringliteral}{"AS-TRANSFER.req"} \},
        \{ 0, NULL \}
\}
\end{DoxyCode}
\mbox{\label{xua__as__fsm_8c_a4dda03cd65066f53f8b4b31af8fb24b6}} 
\index{xua\+\_\+as\+\_\+fsm.\+c@{xua\+\_\+as\+\_\+fsm.\+c}!xua\+\_\+as\+\_\+fsm@{xua\+\_\+as\+\_\+fsm}}
\index{xua\+\_\+as\+\_\+fsm@{xua\+\_\+as\+\_\+fsm}!xua\+\_\+as\+\_\+fsm.\+c@{xua\+\_\+as\+\_\+fsm.\+c}}
\subsubsection{xua\+\_\+as\+\_\+fsm}
{\footnotesize\ttfamily struct osmo\+\_\+fsm xua\+\_\+as\+\_\+fsm}

{\bfseries Initial value\+:}
\begin{DoxyCode}
= \{
        .name = \textcolor{stringliteral}{"XUA\_AS"},
        .states = xua_as_fsm_states,
        .num\_states = ARRAY\_SIZE(xua_as_fsm_states),
        .log\_subsys = DLSS7,
        .event\_names = xua_as_event_names,
        .cleanup = xua_as_fsm_cleanup,
\}
\end{DoxyCode}


Referenced by osmo\+\_\+ss7\+\_\+init().

\mbox{\label{xua__as__fsm_8c_abb8a55676973be3e55228de3069f0e80}} 
\index{xua\+\_\+as\+\_\+fsm.\+c@{xua\+\_\+as\+\_\+fsm.\+c}!xua\+\_\+as\+\_\+fsm\+\_\+states@{xua\+\_\+as\+\_\+fsm\+\_\+states}}
\index{xua\+\_\+as\+\_\+fsm\+\_\+states@{xua\+\_\+as\+\_\+fsm\+\_\+states}!xua\+\_\+as\+\_\+fsm.\+c@{xua\+\_\+as\+\_\+fsm.\+c}}
\subsubsection{xua\+\_\+as\+\_\+fsm\+\_\+states}
{\footnotesize\ttfamily const struct osmo\+\_\+fsm\+\_\+state xua\+\_\+as\+\_\+fsm\+\_\+states[$\,$]\hspace{0.3cm}{\ttfamily [static]}}

