\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 ss7\+\_\+as\+\_\+alloc(). \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]}}