\section{src/xua\+\_\+asp\+\_\+fsm.c File Reference} \label{xua__asp__fsm_8c}\index{src/xua\+\_\+asp\+\_\+fsm.\+c@{src/xua\+\_\+asp\+\_\+fsm.\+c}} {\ttfamily \#include $<$errno.\+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/core/select.\+h$>$}\newline {\ttfamily \#include $<$osmocom/gsm/ipa.\+h$>$}\newline {\ttfamily \#include $<$osmocom/netif/stream.\+h$>$}\newline {\ttfamily \#include $<$osmocom/netif/ipa.\+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 \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\+\_\+asp\+\_\+fsm\+\_\+priv} \item struct \textbf{ ipa\+\_\+asp\+\_\+fsm\+\_\+priv} \end{DoxyCompactItemize} \subsection*{Macros} \begin{DoxyCompactItemize} \item \#define \textbf{ S}(x)~(1 $<$$<$ (x)) \item \#define \textbf{ X\+U\+A\+\_\+\+T\+\_\+\+A\+C\+K\+\_\+\+S\+EC}~2 \item \#define \textbf{ E\+N\+S\+U\+R\+E\+\_\+\+A\+S\+P\+\_\+\+O\+R\+\_\+\+I\+P\+SP}(fi, event) \item \#define \textbf{ E\+N\+S\+U\+R\+E\+\_\+\+S\+G\+\_\+\+O\+R\+\_\+\+I\+P\+SP}(fi, event) \end{DoxyCompactItemize} \subsection*{Enumerations} \begin{DoxyCompactItemize} \item enum \textbf{ ipa\+\_\+asp\+\_\+state} \{ \newline \textbf{ I\+P\+A\+\_\+\+A\+S\+P\+\_\+\+S\+\_\+\+D\+O\+WN} = X\+U\+A\+\_\+\+A\+S\+P\+\_\+\+S\+\_\+\+D\+O\+WN, \textbf{ I\+P\+A\+\_\+\+A\+S\+P\+\_\+\+S\+\_\+\+I\+N\+A\+C\+T\+I\+VE} = X\+U\+A\+\_\+\+A\+S\+P\+\_\+\+S\+\_\+\+I\+N\+A\+C\+T\+I\+VE, \textbf{ I\+P\+A\+\_\+\+A\+S\+P\+\_\+\+S\+\_\+\+A\+C\+T\+I\+VE} = X\+U\+A\+\_\+\+A\+S\+P\+\_\+\+S\+\_\+\+A\+C\+T\+I\+VE, \textbf{ I\+P\+A\+\_\+\+A\+S\+P\+\_\+\+S\+\_\+\+W\+A\+I\+T\+\_\+\+I\+D\+\_\+\+R\+E\+SP}, \newline \textbf{ I\+P\+A\+\_\+\+A\+S\+P\+\_\+\+S\+\_\+\+W\+A\+I\+T\+\_\+\+I\+D\+\_\+\+G\+ET}, \textbf{ I\+P\+A\+\_\+\+A\+S\+P\+\_\+\+S\+\_\+\+W\+A\+I\+T\+\_\+\+I\+D\+\_\+\+A\+CK}, \textbf{ I\+P\+A\+\_\+\+A\+S\+P\+\_\+\+S\+\_\+\+W\+A\+I\+T\+\_\+\+I\+D\+\_\+\+A\+C\+K2} \} \item enum \textbf{ ipa\+\_\+asp\+\_\+fsm\+\_\+t} \{ \textbf{ T\+\_\+\+W\+A\+I\+T\+\_\+\+I\+D\+\_\+\+R\+E\+SP} = 1, \textbf{ T\+\_\+\+W\+A\+I\+T\+\_\+\+I\+D\+\_\+\+A\+CK}, \textbf{ T\+\_\+\+W\+A\+I\+T\+\_\+\+I\+D\+\_\+\+G\+ET} \} \end{DoxyCompactItemize} \subsection*{Functions} \begin{DoxyCompactItemize} \item struct \textbf{ osmo\+\_\+xlm\+\_\+prim} $\ast$ \textbf{ xua\+\_\+xlm\+\_\+prim\+\_\+alloc} (enum \textbf{ osmo\+\_\+xlm\+\_\+prim\+\_\+type} prim\+\_\+type, enum osmo\+\_\+prim\+\_\+operation op) \item void \textbf{ xua\+\_\+asp\+\_\+send\+\_\+xlm\+\_\+prim} (struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$asp, struct \textbf{ osmo\+\_\+xlm\+\_\+prim} $\ast$prim) \item void \textbf{ xua\+\_\+asp\+\_\+send\+\_\+xlm\+\_\+prim\+\_\+simple} (struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$asp, enum \textbf{ osmo\+\_\+xlm\+\_\+prim\+\_\+type} prim\+\_\+type, enum osmo\+\_\+prim\+\_\+operation op) \item static void \textbf{ send\+\_\+xlm\+\_\+prim\+\_\+simple} (struct osmo\+\_\+fsm\+\_\+inst $\ast$fi, enum \textbf{ osmo\+\_\+xlm\+\_\+prim\+\_\+type} prim\+\_\+type, enum osmo\+\_\+prim\+\_\+operation op) \item static int \textbf{ determine\+\_\+traf\+\_\+mode} (struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$asp) \item static int \textbf{ xua\+\_\+msg\+\_\+add\+\_\+asp\+\_\+rctx} (struct \textbf{ xua\+\_\+msg} $\ast$xua, struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$asp) \item static int \textbf{ peer\+\_\+send} (struct osmo\+\_\+fsm\+\_\+inst $\ast$fi, int out\+\_\+event, struct \textbf{ xua\+\_\+msg} $\ast$in) \item static int \textbf{ peer\+\_\+send\+\_\+error} (struct osmo\+\_\+fsm\+\_\+inst $\ast$fi, uint32\+\_\+t err\+\_\+code) \item static void \textbf{ xua\+\_\+t\+\_\+ack\+\_\+cb} (void $\ast$\textbf{ data}) \item static int \textbf{ peer\+\_\+send\+\_\+and\+\_\+start\+\_\+t\+\_\+ack} (struct osmo\+\_\+fsm\+\_\+inst $\ast$fi, int out\+\_\+event) \item static void \textbf{ dispatch\+\_\+to\+\_\+all\+\_\+as} (struct osmo\+\_\+fsm\+\_\+inst $\ast$fi, uint32\+\_\+t event) \item static void \textbf{ check\+\_\+stop\+\_\+t\+\_\+ack} (struct osmo\+\_\+fsm\+\_\+inst $\ast$fi, uint32\+\_\+t event) \item static void \textbf{ xua\+\_\+asp\+\_\+fsm\+\_\+down\+\_\+onenter} (struct osmo\+\_\+fsm\+\_\+inst $\ast$fi, uint32\+\_\+t prev\+\_\+state) \item static void \textbf{ xua\+\_\+asp\+\_\+fsm\+\_\+down} (struct osmo\+\_\+fsm\+\_\+inst $\ast$fi, uint32\+\_\+t event, void $\ast$\textbf{ data}) \item static void \textbf{ xua\+\_\+asp\+\_\+fsm\+\_\+inactive\+\_\+onenter} (struct osmo\+\_\+fsm\+\_\+inst $\ast$fi, uint32\+\_\+t prev\+\_\+state) \item static void \textbf{ xua\+\_\+asp\+\_\+fsm\+\_\+inactive} (struct osmo\+\_\+fsm\+\_\+inst $\ast$fi, uint32\+\_\+t event, void $\ast$\textbf{ data}) \item static void \textbf{ xua\+\_\+asp\+\_\+fsm\+\_\+active\+\_\+onenter} (struct osmo\+\_\+fsm\+\_\+inst $\ast$fi, uint32\+\_\+t prev\+\_\+state) \item static void \textbf{ xua\+\_\+asp\+\_\+fsm\+\_\+active} (struct osmo\+\_\+fsm\+\_\+inst $\ast$fi, uint32\+\_\+t event, void $\ast$\textbf{ data}) \item static void \textbf{ xua\+\_\+asp\+\_\+allstate} (struct osmo\+\_\+fsm\+\_\+inst $\ast$fi, uint32\+\_\+t event, void $\ast$\textbf{ data}) \item static int \textbf{ xua\+\_\+asp\+\_\+fsm\+\_\+timer\+\_\+cb} (struct osmo\+\_\+fsm\+\_\+inst $\ast$fi) \item static void \textbf{ xua\+\_\+asp\+\_\+fsm\+\_\+cleanup} (struct osmo\+\_\+fsm\+\_\+inst $\ast$fi, enum osmo\+\_\+fsm\+\_\+term\+\_\+cause cause) \item static struct osmo\+\_\+fsm\+\_\+inst $\ast$ \textbf{ ipa\+\_\+asp\+\_\+fsm\+\_\+start} (struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$asp, enum \textbf{ osmo\+\_\+ss7\+\_\+asp\+\_\+role} role, int log\+\_\+level) \begin{DoxyCompactList}\small\item\em Start a new A\+SP finite state machine for given A\+SP. \end{DoxyCompactList}\item struct osmo\+\_\+fsm\+\_\+inst $\ast$ \textbf{ xua\+\_\+asp\+\_\+fsm\+\_\+start} (struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$asp, enum \textbf{ osmo\+\_\+ss7\+\_\+asp\+\_\+role} role, int log\+\_\+level) \begin{DoxyCompactList}\small\item\em Start a new A\+SP finite stae machine for given A\+SP. \end{DoxyCompactList}\item static int \textbf{ get\+\_\+fd\+\_\+from\+\_\+iafp} (struct \textbf{ ipa\+\_\+asp\+\_\+fsm\+\_\+priv} $\ast$iafp) \item static void \textbf{ ipa\+\_\+asp\+\_\+fsm\+\_\+down} (struct osmo\+\_\+fsm\+\_\+inst $\ast$fi, uint32\+\_\+t event, void $\ast$\textbf{ data}) \item static void \textbf{ ipa\+\_\+asp\+\_\+fsm\+\_\+wait\+\_\+id\+\_\+resp} (struct osmo\+\_\+fsm\+\_\+inst $\ast$fi, uint32\+\_\+t event, void $\ast$\textbf{ data}) \item static void \textbf{ ipa\+\_\+asp\+\_\+fsm\+\_\+wait\+\_\+id\+\_\+ack2} (struct osmo\+\_\+fsm\+\_\+inst $\ast$fi, uint32\+\_\+t event, void $\ast$\textbf{ data}) \item static void \textbf{ ipa\+\_\+asp\+\_\+fsm\+\_\+wait\+\_\+id\+\_\+get} (struct osmo\+\_\+fsm\+\_\+inst $\ast$fi, uint32\+\_\+t event, void $\ast$\textbf{ data}) \item static void \textbf{ ipa\+\_\+asp\+\_\+fsm\+\_\+wait\+\_\+id\+\_\+ack} (struct osmo\+\_\+fsm\+\_\+inst $\ast$fi, uint32\+\_\+t event, void $\ast$\textbf{ data}) \item static void \textbf{ ipa\+\_\+asp\+\_\+fsm\+\_\+active\+\_\+onenter} (struct osmo\+\_\+fsm\+\_\+inst $\ast$fi, uint32\+\_\+t prev\+\_\+state) \item static void \textbf{ ipa\+\_\+asp\+\_\+fsm\+\_\+active} (struct osmo\+\_\+fsm\+\_\+inst $\ast$fi, uint32\+\_\+t event, void $\ast$\textbf{ data}) \item static void \textbf{ ipa\+\_\+asp\+\_\+fsm\+\_\+inactive\+\_\+onenter} (struct osmo\+\_\+fsm\+\_\+inst $\ast$fi, uint32\+\_\+t prev\+\_\+state) \item static void \textbf{ ipa\+\_\+asp\+\_\+fsm\+\_\+inactive} (struct osmo\+\_\+fsm\+\_\+inst $\ast$fi, uint32\+\_\+t event, void $\ast$\textbf{ data}) \item static void \textbf{ ipa\+\_\+asp\+\_\+allstate} (struct osmo\+\_\+fsm\+\_\+inst $\ast$fi, uint32\+\_\+t event, void $\ast$\textbf{ data}) \item static void \textbf{ ipa\+\_\+pong\+\_\+timer\+\_\+cb} (void $\ast$\+\_\+fi) \item static int \textbf{ ipa\+\_\+asp\+\_\+fsm\+\_\+timer\+\_\+cb} (struct osmo\+\_\+fsm\+\_\+inst $\ast$fi) \end{DoxyCompactItemize} \subsection*{Variables} \begin{DoxyCompactItemize} \item static const struct value\+\_\+string \textbf{ xua\+\_\+asp\+\_\+event\+\_\+names} [$\,$] \item static const uint32\+\_\+t \textbf{ evt\+\_\+ack\+\_\+map} [\textbf{ \+\_\+\+N\+U\+M\+\_\+\+X\+U\+A\+\_\+\+A\+S\+P\+\_\+E}] \item static const struct osmo\+\_\+fsm\+\_\+state \textbf{ xua\+\_\+asp\+\_\+states} [$\,$] \item struct osmo\+\_\+fsm \textbf{ xua\+\_\+asp\+\_\+fsm} \item static const struct osmo\+\_\+fsm\+\_\+state \textbf{ ipa\+\_\+asp\+\_\+states} [$\,$] \item struct osmo\+\_\+fsm \textbf{ ipa\+\_\+asp\+\_\+fsm} \end{DoxyCompactItemize} \subsection{Macro Definition Documentation} \mbox{\label{xua__asp__fsm_8c_a6f0bea36823d7b9199d1ec06798ffd5a}} \index{xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}!E\+N\+S\+U\+R\+E\+\_\+\+A\+S\+P\+\_\+\+O\+R\+\_\+\+I\+P\+SP@{E\+N\+S\+U\+R\+E\+\_\+\+A\+S\+P\+\_\+\+O\+R\+\_\+\+I\+P\+SP}} \index{E\+N\+S\+U\+R\+E\+\_\+\+A\+S\+P\+\_\+\+O\+R\+\_\+\+I\+P\+SP@{E\+N\+S\+U\+R\+E\+\_\+\+A\+S\+P\+\_\+\+O\+R\+\_\+\+I\+P\+SP}!xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}} \subsubsection{E\+N\+S\+U\+R\+E\+\_\+\+A\+S\+P\+\_\+\+O\+R\+\_\+\+I\+P\+SP} {\footnotesize\ttfamily \#define E\+N\+S\+U\+R\+E\+\_\+\+A\+S\+P\+\_\+\+O\+R\+\_\+\+I\+P\+SP(\begin{DoxyParamCaption}\item[{}]{fi, }\item[{}]{event }\end{DoxyParamCaption})} {\bfseries Value\+:} \begin{DoxyCode} \textcolor{keywordflow}{do} \{ \(\backslash\) struct xua_asp_fsm_priv *\_xafp = fi->priv; \(\backslash\) if (\_xafp->role != OSMO_SS7_ASP_ROLE_ASP && \(\backslash\) \_xafp->role != OSMO_SS7_ASP_ROLE_IPSP) \{ \(\backslash\) LOGPFSML(fi, LOGL\_ERROR, \textcolor{stringliteral}{"event %s not permitted "} \(\backslash\) \textcolor{stringliteral}{"in role %s\(\backslash\)n"}, \(\backslash\) osmo\_fsm\_event\_name(fi->fsm, event), \(\backslash\) get\_value\_string(osmo_ss7_asp_role_names, \_xafp->role));\(\backslash\) return; \(\backslash\) \} \(\backslash\) \} \textcolor{keywordflow}{while}(0) \end{DoxyCode} Referenced by xua\+\_\+asp\+\_\+fsm\+\_\+active(), xua\+\_\+asp\+\_\+fsm\+\_\+down(), and xua\+\_\+asp\+\_\+fsm\+\_\+inactive(). \mbox{\label{xua__asp__fsm_8c_ade512cf6f73ff0227729e90437daa8f3}} \index{xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}!E\+N\+S\+U\+R\+E\+\_\+\+S\+G\+\_\+\+O\+R\+\_\+\+I\+P\+SP@{E\+N\+S\+U\+R\+E\+\_\+\+S\+G\+\_\+\+O\+R\+\_\+\+I\+P\+SP}} \index{E\+N\+S\+U\+R\+E\+\_\+\+S\+G\+\_\+\+O\+R\+\_\+\+I\+P\+SP@{E\+N\+S\+U\+R\+E\+\_\+\+S\+G\+\_\+\+O\+R\+\_\+\+I\+P\+SP}!xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}} \subsubsection{E\+N\+S\+U\+R\+E\+\_\+\+S\+G\+\_\+\+O\+R\+\_\+\+I\+P\+SP} {\footnotesize\ttfamily \#define E\+N\+S\+U\+R\+E\+\_\+\+S\+G\+\_\+\+O\+R\+\_\+\+I\+P\+SP(\begin{DoxyParamCaption}\item[{}]{fi, }\item[{}]{event }\end{DoxyParamCaption})} {\bfseries Value\+:} \begin{DoxyCode} \textcolor{keywordflow}{do} \{ \(\backslash\) struct xua_asp_fsm_priv *\_xafp = fi->priv; \(\backslash\) if (\_xafp->role != OSMO_SS7_ASP_ROLE_SG && \(\backslash\) \_xafp->role != OSMO_SS7_ASP_ROLE_IPSP) \{ \(\backslash\) LOGPFSML(fi, LOGL\_ERROR, \textcolor{stringliteral}{"event %s not permitted "} \(\backslash\) \textcolor{stringliteral}{"in role %s\(\backslash\)n"}, \(\backslash\) osmo\_fsm\_event\_name(fi->fsm, event), \(\backslash\) get\_value\_string(osmo_ss7_asp_role_names, \_xafp->role));\(\backslash\) return; \(\backslash\) \} \(\backslash\) \} \textcolor{keywordflow}{while}(0) \end{DoxyCode} Referenced by xua\+\_\+asp\+\_\+fsm\+\_\+active(), xua\+\_\+asp\+\_\+fsm\+\_\+down(), and xua\+\_\+asp\+\_\+fsm\+\_\+inactive(). \mbox{\label{xua__asp__fsm_8c_ac4a3ed3432929804c708f7760fb79e28}} \index{xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}!S@{S}} \index{S@{S}!xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}} \subsubsection{S} {\footnotesize\ttfamily \#define S(\begin{DoxyParamCaption}\item[{}]{x }\end{DoxyParamCaption})~(1 $<$$<$ (x))} \mbox{\label{xua__asp__fsm_8c_a3a33f192c03bfbec4ea3e32d1549d10d}} \index{xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}!X\+U\+A\+\_\+\+T\+\_\+\+A\+C\+K\+\_\+\+S\+EC@{X\+U\+A\+\_\+\+T\+\_\+\+A\+C\+K\+\_\+\+S\+EC}} \index{X\+U\+A\+\_\+\+T\+\_\+\+A\+C\+K\+\_\+\+S\+EC@{X\+U\+A\+\_\+\+T\+\_\+\+A\+C\+K\+\_\+\+S\+EC}!xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}} \subsubsection{X\+U\+A\+\_\+\+T\+\_\+\+A\+C\+K\+\_\+\+S\+EC} {\footnotesize\ttfamily \#define X\+U\+A\+\_\+\+T\+\_\+\+A\+C\+K\+\_\+\+S\+EC~2} Referenced by peer\+\_\+send\+\_\+and\+\_\+start\+\_\+t\+\_\+ack(), and xua\+\_\+t\+\_\+ack\+\_\+cb(). \subsection{Enumeration Type Documentation} \mbox{\label{xua__asp__fsm_8c_ab92bbea17db61b0045468f4d0deb64db}} \index{xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}!ipa\+\_\+asp\+\_\+fsm\+\_\+t@{ipa\+\_\+asp\+\_\+fsm\+\_\+t}} \index{ipa\+\_\+asp\+\_\+fsm\+\_\+t@{ipa\+\_\+asp\+\_\+fsm\+\_\+t}!xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}} \subsubsection{ipa\+\_\+asp\+\_\+fsm\+\_\+t} {\footnotesize\ttfamily enum \textbf{ ipa\+\_\+asp\+\_\+fsm\+\_\+t}} \begin{DoxyEnumFields}{Enumerator} \raisebox{\heightof{T}}[0pt][0pt]{\index{T\+\_\+\+W\+A\+I\+T\+\_\+\+I\+D\+\_\+\+R\+E\+SP@{T\+\_\+\+W\+A\+I\+T\+\_\+\+I\+D\+\_\+\+R\+E\+SP}!xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}}\index{xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}!T\+\_\+\+W\+A\+I\+T\+\_\+\+I\+D\+\_\+\+R\+E\+SP@{T\+\_\+\+W\+A\+I\+T\+\_\+\+I\+D\+\_\+\+R\+E\+SP}}}\mbox{\label{xua__asp__fsm_8c_ab92bbea17db61b0045468f4d0deb64dba29c024648f3cc7364de8f0997dfa3c92}} T\+\_\+\+W\+A\+I\+T\+\_\+\+I\+D\+\_\+\+R\+E\+SP&\\ \hline \raisebox{\heightof{T}}[0pt][0pt]{\index{T\+\_\+\+W\+A\+I\+T\+\_\+\+I\+D\+\_\+\+A\+CK@{T\+\_\+\+W\+A\+I\+T\+\_\+\+I\+D\+\_\+\+A\+CK}!xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}}\index{xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}!T\+\_\+\+W\+A\+I\+T\+\_\+\+I\+D\+\_\+\+A\+CK@{T\+\_\+\+W\+A\+I\+T\+\_\+\+I\+D\+\_\+\+A\+CK}}}\mbox{\label{xua__asp__fsm_8c_ab92bbea17db61b0045468f4d0deb64dba1978f36ad9d62c623305bc51590a534c}} T\+\_\+\+W\+A\+I\+T\+\_\+\+I\+D\+\_\+\+A\+CK&\\ \hline \raisebox{\heightof{T}}[0pt][0pt]{\index{T\+\_\+\+W\+A\+I\+T\+\_\+\+I\+D\+\_\+\+G\+ET@{T\+\_\+\+W\+A\+I\+T\+\_\+\+I\+D\+\_\+\+G\+ET}!xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}}\index{xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}!T\+\_\+\+W\+A\+I\+T\+\_\+\+I\+D\+\_\+\+G\+ET@{T\+\_\+\+W\+A\+I\+T\+\_\+\+I\+D\+\_\+\+G\+ET}}}\mbox{\label{xua__asp__fsm_8c_ab92bbea17db61b0045468f4d0deb64dba2b8856dc98cbb9b47e0005fecbf5df88}} T\+\_\+\+W\+A\+I\+T\+\_\+\+I\+D\+\_\+\+G\+ET&\\ \hline \end{DoxyEnumFields} \mbox{\label{xua__asp__fsm_8c_a89a06e4b8bc3cfd2a7c48520e55db924}} \index{xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}!ipa\+\_\+asp\+\_\+state@{ipa\+\_\+asp\+\_\+state}} \index{ipa\+\_\+asp\+\_\+state@{ipa\+\_\+asp\+\_\+state}!xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}} \subsubsection{ipa\+\_\+asp\+\_\+state} {\footnotesize\ttfamily enum \textbf{ ipa\+\_\+asp\+\_\+state}} \begin{DoxyEnumFields}{Enumerator} \raisebox{\heightof{T}}[0pt][0pt]{\index{I\+P\+A\+\_\+\+A\+S\+P\+\_\+\+S\+\_\+\+D\+O\+WN@{I\+P\+A\+\_\+\+A\+S\+P\+\_\+\+S\+\_\+\+D\+O\+WN}!xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}}\index{xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}!I\+P\+A\+\_\+\+A\+S\+P\+\_\+\+S\+\_\+\+D\+O\+WN@{I\+P\+A\+\_\+\+A\+S\+P\+\_\+\+S\+\_\+\+D\+O\+WN}}}\mbox{\label{xua__asp__fsm_8c_a89a06e4b8bc3cfd2a7c48520e55db924a5c0501f7db40cfa2912f1507e26c7777}} I\+P\+A\+\_\+\+A\+S\+P\+\_\+\+S\+\_\+\+D\+O\+WN&\\ \hline \raisebox{\heightof{T}}[0pt][0pt]{\index{I\+P\+A\+\_\+\+A\+S\+P\+\_\+\+S\+\_\+\+I\+N\+A\+C\+T\+I\+VE@{I\+P\+A\+\_\+\+A\+S\+P\+\_\+\+S\+\_\+\+I\+N\+A\+C\+T\+I\+VE}!xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}}\index{xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}!I\+P\+A\+\_\+\+A\+S\+P\+\_\+\+S\+\_\+\+I\+N\+A\+C\+T\+I\+VE@{I\+P\+A\+\_\+\+A\+S\+P\+\_\+\+S\+\_\+\+I\+N\+A\+C\+T\+I\+VE}}}\mbox{\label{xua__asp__fsm_8c_a89a06e4b8bc3cfd2a7c48520e55db924a32dee80d08964ccfbc056e25139e28a4}} I\+P\+A\+\_\+\+A\+S\+P\+\_\+\+S\+\_\+\+I\+N\+A\+C\+T\+I\+VE&\\ \hline \raisebox{\heightof{T}}[0pt][0pt]{\index{I\+P\+A\+\_\+\+A\+S\+P\+\_\+\+S\+\_\+\+A\+C\+T\+I\+VE@{I\+P\+A\+\_\+\+A\+S\+P\+\_\+\+S\+\_\+\+A\+C\+T\+I\+VE}!xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}}\index{xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}!I\+P\+A\+\_\+\+A\+S\+P\+\_\+\+S\+\_\+\+A\+C\+T\+I\+VE@{I\+P\+A\+\_\+\+A\+S\+P\+\_\+\+S\+\_\+\+A\+C\+T\+I\+VE}}}\mbox{\label{xua__asp__fsm_8c_a89a06e4b8bc3cfd2a7c48520e55db924a60d7c4e2a52482b4805512eb543ea8e9}} I\+P\+A\+\_\+\+A\+S\+P\+\_\+\+S\+\_\+\+A\+C\+T\+I\+VE&\\ \hline \raisebox{\heightof{T}}[0pt][0pt]{\index{I\+P\+A\+\_\+\+A\+S\+P\+\_\+\+S\+\_\+\+W\+A\+I\+T\+\_\+\+I\+D\+\_\+\+R\+E\+SP@{I\+P\+A\+\_\+\+A\+S\+P\+\_\+\+S\+\_\+\+W\+A\+I\+T\+\_\+\+I\+D\+\_\+\+R\+E\+SP}!xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}}\index{xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}!I\+P\+A\+\_\+\+A\+S\+P\+\_\+\+S\+\_\+\+W\+A\+I\+T\+\_\+\+I\+D\+\_\+\+R\+E\+SP@{I\+P\+A\+\_\+\+A\+S\+P\+\_\+\+S\+\_\+\+W\+A\+I\+T\+\_\+\+I\+D\+\_\+\+R\+E\+SP}}}\mbox{\label{xua__asp__fsm_8c_a89a06e4b8bc3cfd2a7c48520e55db924a76e19b993886f0a79cd2883fc2447195}} I\+P\+A\+\_\+\+A\+S\+P\+\_\+\+S\+\_\+\+W\+A\+I\+T\+\_\+\+I\+D\+\_\+\+R\+E\+SP&\\ \hline \raisebox{\heightof{T}}[0pt][0pt]{\index{I\+P\+A\+\_\+\+A\+S\+P\+\_\+\+S\+\_\+\+W\+A\+I\+T\+\_\+\+I\+D\+\_\+\+G\+ET@{I\+P\+A\+\_\+\+A\+S\+P\+\_\+\+S\+\_\+\+W\+A\+I\+T\+\_\+\+I\+D\+\_\+\+G\+ET}!xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}}\index{xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}!I\+P\+A\+\_\+\+A\+S\+P\+\_\+\+S\+\_\+\+W\+A\+I\+T\+\_\+\+I\+D\+\_\+\+G\+ET@{I\+P\+A\+\_\+\+A\+S\+P\+\_\+\+S\+\_\+\+W\+A\+I\+T\+\_\+\+I\+D\+\_\+\+G\+ET}}}\mbox{\label{xua__asp__fsm_8c_a89a06e4b8bc3cfd2a7c48520e55db924a628747e4a354e5aecca2de83c8d77fbc}} I\+P\+A\+\_\+\+A\+S\+P\+\_\+\+S\+\_\+\+W\+A\+I\+T\+\_\+\+I\+D\+\_\+\+G\+ET&\\ \hline \raisebox{\heightof{T}}[0pt][0pt]{\index{I\+P\+A\+\_\+\+A\+S\+P\+\_\+\+S\+\_\+\+W\+A\+I\+T\+\_\+\+I\+D\+\_\+\+A\+CK@{I\+P\+A\+\_\+\+A\+S\+P\+\_\+\+S\+\_\+\+W\+A\+I\+T\+\_\+\+I\+D\+\_\+\+A\+CK}!xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}}\index{xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}!I\+P\+A\+\_\+\+A\+S\+P\+\_\+\+S\+\_\+\+W\+A\+I\+T\+\_\+\+I\+D\+\_\+\+A\+CK@{I\+P\+A\+\_\+\+A\+S\+P\+\_\+\+S\+\_\+\+W\+A\+I\+T\+\_\+\+I\+D\+\_\+\+A\+CK}}}\mbox{\label{xua__asp__fsm_8c_a89a06e4b8bc3cfd2a7c48520e55db924aa82bfa254fd7a9a1d583cb4877c0037d}} I\+P\+A\+\_\+\+A\+S\+P\+\_\+\+S\+\_\+\+W\+A\+I\+T\+\_\+\+I\+D\+\_\+\+A\+CK&\\ \hline \raisebox{\heightof{T}}[0pt][0pt]{\index{I\+P\+A\+\_\+\+A\+S\+P\+\_\+\+S\+\_\+\+W\+A\+I\+T\+\_\+\+I\+D\+\_\+\+A\+C\+K2@{I\+P\+A\+\_\+\+A\+S\+P\+\_\+\+S\+\_\+\+W\+A\+I\+T\+\_\+\+I\+D\+\_\+\+A\+C\+K2}!xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}}\index{xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}!I\+P\+A\+\_\+\+A\+S\+P\+\_\+\+S\+\_\+\+W\+A\+I\+T\+\_\+\+I\+D\+\_\+\+A\+C\+K2@{I\+P\+A\+\_\+\+A\+S\+P\+\_\+\+S\+\_\+\+W\+A\+I\+T\+\_\+\+I\+D\+\_\+\+A\+C\+K2}}}\mbox{\label{xua__asp__fsm_8c_a89a06e4b8bc3cfd2a7c48520e55db924a6203a404bd2dfa790947903fed1f17d4}} I\+P\+A\+\_\+\+A\+S\+P\+\_\+\+S\+\_\+\+W\+A\+I\+T\+\_\+\+I\+D\+\_\+\+A\+C\+K2&\\ \hline \end{DoxyEnumFields} \subsection{Function Documentation} \mbox{\label{xua__asp__fsm_8c_ab6db634aa1be05caf59623fd99d72e97}} \index{xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}!check\+\_\+stop\+\_\+t\+\_\+ack@{check\+\_\+stop\+\_\+t\+\_\+ack}} \index{check\+\_\+stop\+\_\+t\+\_\+ack@{check\+\_\+stop\+\_\+t\+\_\+ack}!xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}} \subsubsection{check\+\_\+stop\+\_\+t\+\_\+ack()} {\footnotesize\ttfamily static void check\+\_\+stop\+\_\+t\+\_\+ack (\begin{DoxyParamCaption}\item[{struct osmo\+\_\+fsm\+\_\+inst $\ast$}]{fi, }\item[{uint32\+\_\+t}]{event }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} References evt\+\_\+ack\+\_\+map, xua\+\_\+asp\+\_\+fsm\+\_\+priv\+::out\+\_\+event, xua\+\_\+asp\+\_\+fsm\+\_\+priv\+::t\+\_\+ack, and xua\+\_\+asp\+\_\+fsm\+\_\+priv\+::timer. Referenced by xua\+\_\+asp\+\_\+fsm\+\_\+active(), xua\+\_\+asp\+\_\+fsm\+\_\+down(), and xua\+\_\+asp\+\_\+fsm\+\_\+inactive(). \mbox{\label{xua__asp__fsm_8c_ab8787dfdfd8f5e677def561608ac739d}} \index{xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}!determine\+\_\+traf\+\_\+mode@{determine\+\_\+traf\+\_\+mode}} \index{determine\+\_\+traf\+\_\+mode@{determine\+\_\+traf\+\_\+mode}!xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}} \subsubsection{determine\+\_\+traf\+\_\+mode()} {\footnotesize\ttfamily static int determine\+\_\+traf\+\_\+mode (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$}]{asp }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} References osmo\+\_\+ss7\+\_\+instance\+::as\+\_\+list, osmo\+\_\+ss7\+\_\+as\+::cfg, osmo\+\_\+ss7\+\_\+asp\+::inst, osmo\+\_\+ss7\+\_\+as\+::list, osmo\+\_\+ss7\+\_\+as\+::mode, osmo\+\_\+ss7\+\_\+as\+::mode\+\_\+set\+\_\+by\+\_\+vty, and osmo\+\_\+ss7\+\_\+as\+\_\+has\+\_\+asp(). Referenced by peer\+\_\+send(). \mbox{\label{xua__asp__fsm_8c_a97a8823eba209caf2b123b82f0e5b85e}} \index{xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}!dispatch\+\_\+to\+\_\+all\+\_\+as@{dispatch\+\_\+to\+\_\+all\+\_\+as}} \index{dispatch\+\_\+to\+\_\+all\+\_\+as@{dispatch\+\_\+to\+\_\+all\+\_\+as}!xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}} \subsubsection{dispatch\+\_\+to\+\_\+all\+\_\+as()} {\footnotesize\ttfamily static void dispatch\+\_\+to\+\_\+all\+\_\+as (\begin{DoxyParamCaption}\item[{struct osmo\+\_\+fsm\+\_\+inst $\ast$}]{fi, }\item[{uint32\+\_\+t}]{event }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} References osmo\+\_\+ss7\+\_\+instance\+::as\+\_\+list, xua\+\_\+asp\+\_\+fsm\+\_\+priv\+::asp, osmo\+\_\+ss7\+\_\+as\+::fi, osmo\+\_\+ss7\+\_\+asp\+::inst, osmo\+\_\+ss7\+\_\+as\+::list, and osmo\+\_\+ss7\+\_\+as\+\_\+has\+\_\+asp(). Referenced by ipa\+\_\+asp\+\_\+fsm\+\_\+active\+\_\+onenter(), ipa\+\_\+asp\+\_\+fsm\+\_\+inactive\+\_\+onenter(), xua\+\_\+asp\+\_\+fsm\+\_\+active\+\_\+onenter(), xua\+\_\+asp\+\_\+fsm\+\_\+down\+\_\+onenter(), and xua\+\_\+asp\+\_\+fsm\+\_\+inactive\+\_\+onenter(). \mbox{\label{xua__asp__fsm_8c_af444752508bfdb04bf012ba62b7faaa7}} \index{xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}!get\+\_\+fd\+\_\+from\+\_\+iafp@{get\+\_\+fd\+\_\+from\+\_\+iafp}} \index{get\+\_\+fd\+\_\+from\+\_\+iafp@{get\+\_\+fd\+\_\+from\+\_\+iafp}!xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}} \subsubsection{get\+\_\+fd\+\_\+from\+\_\+iafp()} {\footnotesize\ttfamily static int get\+\_\+fd\+\_\+from\+\_\+iafp (\begin{DoxyParamCaption}\item[{struct \textbf{ ipa\+\_\+asp\+\_\+fsm\+\_\+priv} $\ast$}]{iafp }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} References ipa\+\_\+asp\+\_\+fsm\+\_\+priv\+::asp, osmo\+\_\+ss7\+\_\+asp\+::client, and osmo\+\_\+ss7\+\_\+asp\+::server. Referenced by ipa\+\_\+asp\+\_\+allstate(), ipa\+\_\+asp\+\_\+fsm\+\_\+down(), ipa\+\_\+asp\+\_\+fsm\+\_\+wait\+\_\+id\+\_\+ack(), ipa\+\_\+asp\+\_\+fsm\+\_\+wait\+\_\+id\+\_\+get(), and ipa\+\_\+asp\+\_\+fsm\+\_\+wait\+\_\+id\+\_\+resp(). \mbox{\label{xua__asp__fsm_8c_a7ba5ff56028325c04717ba9f1bf26d6c}} \index{xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}!ipa\+\_\+asp\+\_\+allstate@{ipa\+\_\+asp\+\_\+allstate}} \index{ipa\+\_\+asp\+\_\+allstate@{ipa\+\_\+asp\+\_\+allstate}!xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}} \subsubsection{ipa\+\_\+asp\+\_\+allstate()} {\footnotesize\ttfamily static void ipa\+\_\+asp\+\_\+allstate (\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 osmo\+\_\+ss7\+\_\+as\+::cfg, data, get\+\_\+fd\+\_\+from\+\_\+iafp(), I\+P\+A\+\_\+\+A\+S\+P\+\_\+\+S\+\_\+\+D\+O\+WN, ipa\+\_\+asp\+\_\+fsm\+\_\+priv\+::ipa\+\_\+unit, osmo\+\_\+ss7\+\_\+as\+::name, O\+S\+M\+O\+\_\+\+S\+S7\+\_\+\+A\+S\+P\+\_\+\+R\+O\+L\+E\+\_\+\+A\+SP, O\+S\+M\+O\+\_\+\+X\+L\+M\+\_\+\+P\+R\+I\+M\+\_\+\+M\+\_\+\+A\+S\+P\+\_\+\+D\+O\+WN, ipa\+\_\+asp\+\_\+fsm\+\_\+priv\+::pong\+\_\+timer, ipa\+\_\+asp\+\_\+fsm\+\_\+priv\+::role, send\+\_\+xlm\+\_\+prim\+\_\+simple(), X\+U\+A\+\_\+\+A\+S\+P\+\_\+\+E\+\_\+\+A\+S\+\_\+\+A\+S\+S\+I\+G\+N\+ED, X\+U\+A\+\_\+\+A\+S\+P\+\_\+\+E\+\_\+\+A\+S\+P\+S\+M\+\_\+\+B\+E\+AT, X\+U\+A\+\_\+\+A\+S\+P\+\_\+\+E\+\_\+\+A\+S\+P\+S\+M\+\_\+\+B\+E\+A\+T\+\_\+\+A\+CK, X\+U\+A\+\_\+\+A\+S\+P\+\_\+\+E\+\_\+\+M\+\_\+\+A\+S\+P\+\_\+\+U\+P\+\_\+\+R\+EQ, X\+U\+A\+\_\+\+A\+S\+P\+\_\+\+E\+\_\+\+S\+C\+T\+P\+\_\+\+C\+O\+M\+M\+\_\+\+D\+O\+W\+N\+\_\+\+I\+ND, and X\+U\+A\+\_\+\+A\+S\+P\+\_\+\+E\+\_\+\+S\+C\+T\+P\+\_\+\+R\+E\+S\+T\+A\+R\+T\+\_\+\+I\+ND. \mbox{\label{xua__asp__fsm_8c_a5aa5de6b1ee15cd960ecd9034624217a}} \index{xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}!ipa\+\_\+asp\+\_\+fsm\+\_\+active@{ipa\+\_\+asp\+\_\+fsm\+\_\+active}} \index{ipa\+\_\+asp\+\_\+fsm\+\_\+active@{ipa\+\_\+asp\+\_\+fsm\+\_\+active}!xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}} \subsubsection{ipa\+\_\+asp\+\_\+fsm\+\_\+active()} {\footnotesize\ttfamily static void ipa\+\_\+asp\+\_\+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 I\+P\+A\+\_\+\+A\+S\+P\+\_\+\+S\+\_\+\+D\+O\+WN, X\+U\+A\+\_\+\+A\+S\+P\+\_\+\+E\+\_\+\+M\+\_\+\+A\+S\+P\+\_\+\+D\+O\+W\+N\+\_\+\+R\+EQ, and X\+U\+A\+\_\+\+A\+S\+P\+\_\+\+E\+\_\+\+M\+\_\+\+A\+S\+P\+\_\+\+I\+N\+A\+C\+T\+I\+V\+E\+\_\+\+R\+EQ. \mbox{\label{xua__asp__fsm_8c_a3493aa83ed00543b4d634c34667e9e65}} \index{xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}!ipa\+\_\+asp\+\_\+fsm\+\_\+active\+\_\+onenter@{ipa\+\_\+asp\+\_\+fsm\+\_\+active\+\_\+onenter}} \index{ipa\+\_\+asp\+\_\+fsm\+\_\+active\+\_\+onenter@{ipa\+\_\+asp\+\_\+fsm\+\_\+active\+\_\+onenter}!xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}} \subsubsection{ipa\+\_\+asp\+\_\+fsm\+\_\+active\+\_\+onenter()} {\footnotesize\ttfamily static void ipa\+\_\+asp\+\_\+fsm\+\_\+active\+\_\+onenter (\begin{DoxyParamCaption}\item[{struct osmo\+\_\+fsm\+\_\+inst $\ast$}]{fi, }\item[{uint32\+\_\+t}]{prev\+\_\+state }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} References dispatch\+\_\+to\+\_\+all\+\_\+as(), X\+U\+A\+\_\+\+A\+S\+P\+A\+S\+\_\+\+A\+S\+P\+\_\+\+A\+C\+T\+I\+V\+E\+\_\+\+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__asp__fsm_8c_a7f2eb9dcdf561afbd99e1e7606e7f1f4}} \index{xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}!ipa\+\_\+asp\+\_\+fsm\+\_\+down@{ipa\+\_\+asp\+\_\+fsm\+\_\+down}} \index{ipa\+\_\+asp\+\_\+fsm\+\_\+down@{ipa\+\_\+asp\+\_\+fsm\+\_\+down}!xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}} \subsubsection{ipa\+\_\+asp\+\_\+fsm\+\_\+down()} {\footnotesize\ttfamily static void ipa\+\_\+asp\+\_\+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 get\+\_\+fd\+\_\+from\+\_\+iafp(), I\+P\+A\+\_\+\+A\+S\+P\+\_\+\+S\+\_\+\+W\+A\+I\+T\+\_\+\+I\+D\+\_\+\+G\+ET, I\+P\+A\+\_\+\+A\+S\+P\+\_\+\+S\+\_\+\+W\+A\+I\+T\+\_\+\+I\+D\+\_\+\+R\+E\+SP, O\+S\+M\+O\+\_\+\+S\+S7\+\_\+\+A\+S\+P\+\_\+\+R\+O\+L\+E\+\_\+\+SG, ipa\+\_\+asp\+\_\+fsm\+\_\+priv\+::role, T\+\_\+\+W\+A\+I\+T\+\_\+\+I\+D\+\_\+\+G\+ET, T\+\_\+\+W\+A\+I\+T\+\_\+\+I\+D\+\_\+\+R\+E\+SP, X\+U\+A\+\_\+\+A\+S\+P\+\_\+\+E\+\_\+\+M\+\_\+\+A\+S\+P\+\_\+\+U\+P\+\_\+\+R\+EQ, and X\+U\+A\+\_\+\+A\+S\+P\+\_\+\+E\+\_\+\+S\+C\+T\+P\+\_\+\+E\+S\+T\+\_\+\+I\+ND. \mbox{\label{xua__asp__fsm_8c_a5e9b73af709418cfa5b15c1ff4dc3d55}} \index{xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}!ipa\+\_\+asp\+\_\+fsm\+\_\+inactive@{ipa\+\_\+asp\+\_\+fsm\+\_\+inactive}} \index{ipa\+\_\+asp\+\_\+fsm\+\_\+inactive@{ipa\+\_\+asp\+\_\+fsm\+\_\+inactive}!xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}} \subsubsection{ipa\+\_\+asp\+\_\+fsm\+\_\+inactive()} {\footnotesize\ttfamily static void ipa\+\_\+asp\+\_\+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 I\+P\+A\+\_\+\+A\+S\+P\+\_\+\+S\+\_\+\+D\+O\+WN, and X\+U\+A\+\_\+\+A\+S\+P\+\_\+\+E\+\_\+\+M\+\_\+\+A\+S\+P\+\_\+\+D\+O\+W\+N\+\_\+\+R\+EQ. \mbox{\label{xua__asp__fsm_8c_a5f4d807252c91cb5ea2b92f365d7b31f}} \index{xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}!ipa\+\_\+asp\+\_\+fsm\+\_\+inactive\+\_\+onenter@{ipa\+\_\+asp\+\_\+fsm\+\_\+inactive\+\_\+onenter}} \index{ipa\+\_\+asp\+\_\+fsm\+\_\+inactive\+\_\+onenter@{ipa\+\_\+asp\+\_\+fsm\+\_\+inactive\+\_\+onenter}!xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}} \subsubsection{ipa\+\_\+asp\+\_\+fsm\+\_\+inactive\+\_\+onenter()} {\footnotesize\ttfamily static void ipa\+\_\+asp\+\_\+fsm\+\_\+inactive\+\_\+onenter (\begin{DoxyParamCaption}\item[{struct osmo\+\_\+fsm\+\_\+inst $\ast$}]{fi, }\item[{uint32\+\_\+t}]{prev\+\_\+state }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} References dispatch\+\_\+to\+\_\+all\+\_\+as(), 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__asp__fsm_8c_a203a0afaa7c406b38c3ee52ca27bbcc2}} \index{xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}!ipa\+\_\+asp\+\_\+fsm\+\_\+start@{ipa\+\_\+asp\+\_\+fsm\+\_\+start}} \index{ipa\+\_\+asp\+\_\+fsm\+\_\+start@{ipa\+\_\+asp\+\_\+fsm\+\_\+start}!xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}} \subsubsection{ipa\+\_\+asp\+\_\+fsm\+\_\+start()} {\footnotesize\ttfamily static struct osmo\+\_\+fsm\+\_\+inst $\ast$ ipa\+\_\+asp\+\_\+fsm\+\_\+start (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$}]{asp, }\item[{enum \textbf{ osmo\+\_\+ss7\+\_\+asp\+\_\+role}}]{role, }\item[{int}]{log\+\_\+level }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} Start a new A\+SP finite state machine for given A\+SP. \begin{DoxyParams}[1]{Parameters} \mbox{\tt in} & {\em asp} & Application Server Process for which to start F\+SM \\ \hline \mbox{\tt in} & {\em role} & Role (A\+SP, SG, I\+P\+SP) of this F\+SM \\ \hline \mbox{\tt in} & {\em log\+\_\+level} & Logging Level for A\+SP F\+SM logging \\ \hline \end{DoxyParams} \begin{DoxyReturn}{Returns} F\+SM instance on success; N\+U\+LL on error \end{DoxyReturn} References xua\+\_\+asp\+\_\+fsm\+\_\+priv\+::asp, ipa\+\_\+asp\+\_\+fsm\+\_\+priv\+::asp, osmo\+\_\+ss7\+\_\+as\+::cfg, osmo\+\_\+ss7\+\_\+asp\+::cfg, osmo\+\_\+ss7\+\_\+asp\+::dyn\+\_\+allocated, osmo\+\_\+ss7\+\_\+as\+::fi, ipa\+\_\+asp\+\_\+fsm, ipa\+\_\+find\+\_\+as\+\_\+for\+\_\+asp(), ipa\+\_\+pong\+\_\+timer\+\_\+cb(), ipa\+\_\+asp\+\_\+fsm\+\_\+priv\+::ipa\+\_\+unit, osmo\+\_\+ss7\+\_\+as\+::name, osmo\+\_\+ss7\+\_\+asp\+::name, O\+S\+M\+O\+\_\+\+S\+S7\+\_\+\+A\+S\+P\+\_\+\+R\+O\+L\+E\+\_\+\+A\+SP, ipa\+\_\+asp\+\_\+fsm\+\_\+priv\+::pong\+\_\+timer, xua\+\_\+asp\+\_\+fsm\+\_\+priv\+::role, ipa\+\_\+asp\+\_\+fsm\+\_\+priv\+::role, and X\+U\+A\+\_\+\+A\+S\+P\+\_\+\+E\+\_\+\+M\+\_\+\+A\+S\+P\+\_\+\+U\+P\+\_\+\+R\+EQ. Referenced by xua\+\_\+asp\+\_\+fsm\+\_\+start(). \mbox{\label{xua__asp__fsm_8c_ac02a60ab319840f331b83658bddbe3b6}} \index{xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}!ipa\+\_\+asp\+\_\+fsm\+\_\+timer\+\_\+cb@{ipa\+\_\+asp\+\_\+fsm\+\_\+timer\+\_\+cb}} \index{ipa\+\_\+asp\+\_\+fsm\+\_\+timer\+\_\+cb@{ipa\+\_\+asp\+\_\+fsm\+\_\+timer\+\_\+cb}!xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}} \subsubsection{ipa\+\_\+asp\+\_\+fsm\+\_\+timer\+\_\+cb()} {\footnotesize\ttfamily static int ipa\+\_\+asp\+\_\+fsm\+\_\+timer\+\_\+cb (\begin{DoxyParamCaption}\item[{struct osmo\+\_\+fsm\+\_\+inst $\ast$}]{fi }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} References ipa\+\_\+asp\+\_\+fsm\+\_\+priv\+::asp, and osmo\+\_\+ss7\+\_\+asp\+\_\+disconnect(). \mbox{\label{xua__asp__fsm_8c_a6b8808a7e827b2eaac2bc6dabf1a04f0}} \index{xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}!ipa\+\_\+asp\+\_\+fsm\+\_\+wait\+\_\+id\+\_\+ack@{ipa\+\_\+asp\+\_\+fsm\+\_\+wait\+\_\+id\+\_\+ack}} \index{ipa\+\_\+asp\+\_\+fsm\+\_\+wait\+\_\+id\+\_\+ack@{ipa\+\_\+asp\+\_\+fsm\+\_\+wait\+\_\+id\+\_\+ack}!xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}} \subsubsection{ipa\+\_\+asp\+\_\+fsm\+\_\+wait\+\_\+id\+\_\+ack()} {\footnotesize\ttfamily static void ipa\+\_\+asp\+\_\+fsm\+\_\+wait\+\_\+id\+\_\+ack (\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 get\+\_\+fd\+\_\+from\+\_\+iafp(), I\+P\+A\+\_\+\+A\+S\+P\+\_\+\+E\+\_\+\+I\+D\+\_\+\+A\+CK, and I\+P\+A\+\_\+\+A\+S\+P\+\_\+\+S\+\_\+\+A\+C\+T\+I\+VE. \mbox{\label{xua__asp__fsm_8c_ad20858fae065ad7990193de7943ef852}} \index{xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}!ipa\+\_\+asp\+\_\+fsm\+\_\+wait\+\_\+id\+\_\+ack2@{ipa\+\_\+asp\+\_\+fsm\+\_\+wait\+\_\+id\+\_\+ack2}} \index{ipa\+\_\+asp\+\_\+fsm\+\_\+wait\+\_\+id\+\_\+ack2@{ipa\+\_\+asp\+\_\+fsm\+\_\+wait\+\_\+id\+\_\+ack2}!xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}} \subsubsection{ipa\+\_\+asp\+\_\+fsm\+\_\+wait\+\_\+id\+\_\+ack2()} {\footnotesize\ttfamily static void ipa\+\_\+asp\+\_\+fsm\+\_\+wait\+\_\+id\+\_\+ack2 (\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 I\+P\+A\+\_\+\+A\+S\+P\+\_\+\+E\+\_\+\+I\+D\+\_\+\+A\+CK, and I\+P\+A\+\_\+\+A\+S\+P\+\_\+\+S\+\_\+\+A\+C\+T\+I\+VE. \mbox{\label{xua__asp__fsm_8c_aec91e2dc9b479f444abb3dc2d44fd546}} \index{xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}!ipa\+\_\+asp\+\_\+fsm\+\_\+wait\+\_\+id\+\_\+get@{ipa\+\_\+asp\+\_\+fsm\+\_\+wait\+\_\+id\+\_\+get}} \index{ipa\+\_\+asp\+\_\+fsm\+\_\+wait\+\_\+id\+\_\+get@{ipa\+\_\+asp\+\_\+fsm\+\_\+wait\+\_\+id\+\_\+get}!xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}} \subsubsection{ipa\+\_\+asp\+\_\+fsm\+\_\+wait\+\_\+id\+\_\+get()} {\footnotesize\ttfamily static void ipa\+\_\+asp\+\_\+fsm\+\_\+wait\+\_\+id\+\_\+get (\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 ipa\+\_\+asp\+\_\+fsm\+\_\+priv\+::asp, data, get\+\_\+fd\+\_\+from\+\_\+iafp(), I\+P\+A\+\_\+\+A\+S\+P\+\_\+\+E\+\_\+\+I\+D\+\_\+\+A\+CK, I\+P\+A\+\_\+\+A\+S\+P\+\_\+\+E\+\_\+\+I\+D\+\_\+\+G\+ET, I\+P\+A\+\_\+\+A\+S\+P\+\_\+\+S\+\_\+\+A\+C\+T\+I\+VE, I\+P\+A\+\_\+\+A\+S\+P\+\_\+\+S\+\_\+\+W\+A\+I\+T\+\_\+\+I\+D\+\_\+\+A\+CK, ipa\+\_\+asp\+\_\+fsm\+\_\+priv\+::ipa\+\_\+unit, osmo\+\_\+ss7\+\_\+asp\+\_\+send(), and T\+\_\+\+W\+A\+I\+T\+\_\+\+I\+D\+\_\+\+A\+CK. \mbox{\label{xua__asp__fsm_8c_a4e109acdce110b7c471ad8eafc0a42b9}} \index{xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}!ipa\+\_\+asp\+\_\+fsm\+\_\+wait\+\_\+id\+\_\+resp@{ipa\+\_\+asp\+\_\+fsm\+\_\+wait\+\_\+id\+\_\+resp}} \index{ipa\+\_\+asp\+\_\+fsm\+\_\+wait\+\_\+id\+\_\+resp@{ipa\+\_\+asp\+\_\+fsm\+\_\+wait\+\_\+id\+\_\+resp}!xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}} \subsubsection{ipa\+\_\+asp\+\_\+fsm\+\_\+wait\+\_\+id\+\_\+resp()} {\footnotesize\ttfamily static void ipa\+\_\+asp\+\_\+fsm\+\_\+wait\+\_\+id\+\_\+resp (\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 ipa\+\_\+asp\+\_\+fsm\+\_\+priv\+::asp, osmo\+\_\+ss7\+\_\+asp\+::cfg, data, get\+\_\+fd\+\_\+from\+\_\+iafp(), osmo\+\_\+ss7\+\_\+asp\+::inst, I\+P\+A\+\_\+\+A\+S\+P\+\_\+\+E\+\_\+\+I\+D\+\_\+\+A\+CK, I\+P\+A\+\_\+\+A\+S\+P\+\_\+\+E\+\_\+\+I\+D\+\_\+\+R\+E\+SP, I\+P\+A\+\_\+\+A\+S\+P\+\_\+\+S\+\_\+\+W\+A\+I\+T\+\_\+\+I\+D\+\_\+\+A\+C\+K2, ipa\+\_\+asp\+\_\+fsm\+\_\+priv\+::ipa\+\_\+id\+\_\+ack\+\_\+rcvd, ipa\+\_\+asp\+\_\+fsm\+\_\+priv\+::ipa\+\_\+unit, osmo\+\_\+ss7\+\_\+asp\+::name, osmo\+\_\+ss7\+\_\+as\+\_\+add\+\_\+asp(), osmo\+\_\+ss7\+\_\+as\+\_\+find\+\_\+by\+\_\+name(), osmo\+\_\+ss7\+\_\+asp\+\_\+disconnect(), and T\+\_\+\+W\+A\+I\+T\+\_\+\+I\+D\+\_\+\+A\+CK. \mbox{\label{xua__asp__fsm_8c_a493826453c5aae6b51e6d4ceda8c93bb}} \index{xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}!ipa\+\_\+pong\+\_\+timer\+\_\+cb@{ipa\+\_\+pong\+\_\+timer\+\_\+cb}} \index{ipa\+\_\+pong\+\_\+timer\+\_\+cb@{ipa\+\_\+pong\+\_\+timer\+\_\+cb}!xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}} \subsubsection{ipa\+\_\+pong\+\_\+timer\+\_\+cb()} {\footnotesize\ttfamily static void ipa\+\_\+pong\+\_\+timer\+\_\+cb (\begin{DoxyParamCaption}\item[{void $\ast$}]{\+\_\+fi }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} References ipa\+\_\+asp\+\_\+fsm\+\_\+priv\+::asp, and osmo\+\_\+ss7\+\_\+asp\+\_\+disconnect(). Referenced by ipa\+\_\+asp\+\_\+fsm\+\_\+start(). \mbox{\label{xua__asp__fsm_8c_a8cc4230ac64b40f6a4010c3403ab3725}} \index{xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}!peer\+\_\+send@{peer\+\_\+send}} \index{peer\+\_\+send@{peer\+\_\+send}!xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}} \subsubsection{peer\+\_\+send()} {\footnotesize\ttfamily static int peer\+\_\+send (\begin{DoxyParamCaption}\item[{struct osmo\+\_\+fsm\+\_\+inst $\ast$}]{fi, }\item[{int}]{out\+\_\+event, }\item[{struct \textbf{ xua\+\_\+msg} $\ast$}]{in }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} References xua\+\_\+asp\+\_\+fsm\+\_\+priv\+::asp, osmo\+\_\+ss7\+\_\+asp\+::asp\+\_\+id, osmo\+\_\+ss7\+\_\+asp\+::asp\+\_\+id\+\_\+present, determine\+\_\+traf\+\_\+mode(), xua\+\_\+msg\+::hdr, M3\+U\+A\+\_\+\+I\+E\+I\+\_\+\+H\+E\+A\+R\+D\+B\+T\+\_\+\+D\+A\+TA, M3\+U\+A\+\_\+\+I\+E\+I\+\_\+\+R\+O\+U\+T\+E\+\_\+\+C\+TX, M3\+U\+A\+\_\+\+I\+E\+I\+\_\+\+T\+R\+A\+F\+\_\+\+M\+O\+D\+E\+\_\+\+T\+YP, osmo\+\_\+ss7\+\_\+asp\+\_\+send(), osmo\+\_\+ss7\+\_\+tmode\+\_\+to\+\_\+xua(), S\+U\+A\+\_\+\+A\+S\+P\+S\+M\+\_\+\+B\+E\+AT, S\+U\+A\+\_\+\+A\+S\+P\+S\+M\+\_\+\+B\+E\+A\+T\+\_\+\+A\+CK, S\+U\+A\+\_\+\+A\+S\+P\+S\+M\+\_\+\+D\+O\+WN, S\+U\+A\+\_\+\+A\+S\+P\+S\+M\+\_\+\+D\+O\+W\+N\+\_\+\+A\+CK, S\+U\+A\+\_\+\+A\+S\+P\+S\+M\+\_\+\+UP, S\+U\+A\+\_\+\+A\+S\+P\+S\+M\+\_\+\+U\+P\+\_\+\+A\+CK, S\+U\+A\+\_\+\+A\+S\+P\+T\+M\+\_\+\+A\+C\+T\+I\+VE, S\+U\+A\+\_\+\+A\+S\+P\+T\+M\+\_\+\+A\+C\+T\+I\+V\+E\+\_\+\+A\+CK, S\+U\+A\+\_\+\+A\+S\+P\+T\+M\+\_\+\+I\+N\+A\+C\+T\+I\+VE, S\+U\+A\+\_\+\+A\+S\+P\+T\+M\+\_\+\+I\+N\+A\+C\+T\+I\+V\+E\+\_\+\+A\+CK, S\+U\+A\+\_\+\+I\+E\+I\+\_\+\+A\+S\+P\+\_\+\+ID, S\+U\+A\+\_\+\+M\+S\+G\+C\+\_\+\+A\+S\+P\+SM, S\+U\+A\+\_\+\+M\+S\+G\+C\+\_\+\+A\+S\+P\+TM, S\+U\+A\+\_\+\+V\+E\+R\+S\+I\+ON, X\+U\+A\+\_\+\+A\+S\+P\+\_\+\+E\+\_\+\+A\+S\+P\+S\+M\+\_\+\+A\+S\+P\+DN, X\+U\+A\+\_\+\+A\+S\+P\+\_\+\+E\+\_\+\+A\+S\+P\+S\+M\+\_\+\+A\+S\+P\+D\+N\+\_\+\+A\+CK, X\+U\+A\+\_\+\+A\+S\+P\+\_\+\+E\+\_\+\+A\+S\+P\+S\+M\+\_\+\+A\+S\+P\+UP, X\+U\+A\+\_\+\+A\+S\+P\+\_\+\+E\+\_\+\+A\+S\+P\+S\+M\+\_\+\+A\+S\+P\+U\+P\+\_\+\+A\+CK, X\+U\+A\+\_\+\+A\+S\+P\+\_\+\+E\+\_\+\+A\+S\+P\+S\+M\+\_\+\+B\+E\+AT, X\+U\+A\+\_\+\+A\+S\+P\+\_\+\+E\+\_\+\+A\+S\+P\+S\+M\+\_\+\+B\+E\+A\+T\+\_\+\+A\+CK, X\+U\+A\+\_\+\+A\+S\+P\+\_\+\+E\+\_\+\+A\+S\+P\+T\+M\+\_\+\+A\+S\+P\+AC, X\+U\+A\+\_\+\+A\+S\+P\+\_\+\+E\+\_\+\+A\+S\+P\+T\+M\+\_\+\+A\+S\+P\+A\+C\+\_\+\+A\+CK, X\+U\+A\+\_\+\+A\+S\+P\+\_\+\+E\+\_\+\+A\+S\+P\+T\+M\+\_\+\+A\+S\+P\+IA, X\+U\+A\+\_\+\+A\+S\+P\+\_\+\+E\+\_\+\+A\+S\+P\+T\+M\+\_\+\+A\+S\+P\+I\+A\+\_\+\+A\+CK, X\+U\+A\+\_\+\+H\+DR, xua\+\_\+msg\+\_\+add\+\_\+asp\+\_\+rctx(), xua\+\_\+msg\+\_\+add\+\_\+u32(), xua\+\_\+msg\+\_\+alloc(), xua\+\_\+msg\+\_\+copy\+\_\+part(), xua\+\_\+msg\+\_\+free(), and xua\+\_\+to\+\_\+msg(). Referenced by peer\+\_\+send\+\_\+and\+\_\+start\+\_\+t\+\_\+ack(), xua\+\_\+asp\+\_\+allstate(), xua\+\_\+asp\+\_\+fsm\+\_\+active(), xua\+\_\+asp\+\_\+fsm\+\_\+down(), xua\+\_\+asp\+\_\+fsm\+\_\+inactive(), and xua\+\_\+t\+\_\+ack\+\_\+cb(). \mbox{\label{xua__asp__fsm_8c_a2c31298d7f7f97a543b3c9bc0d864133}} \index{xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}!peer\+\_\+send\+\_\+and\+\_\+start\+\_\+t\+\_\+ack@{peer\+\_\+send\+\_\+and\+\_\+start\+\_\+t\+\_\+ack}} \index{peer\+\_\+send\+\_\+and\+\_\+start\+\_\+t\+\_\+ack@{peer\+\_\+send\+\_\+and\+\_\+start\+\_\+t\+\_\+ack}!xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}} \subsubsection{peer\+\_\+send\+\_\+and\+\_\+start\+\_\+t\+\_\+ack()} {\footnotesize\ttfamily static int peer\+\_\+send\+\_\+and\+\_\+start\+\_\+t\+\_\+ack (\begin{DoxyParamCaption}\item[{struct osmo\+\_\+fsm\+\_\+inst $\ast$}]{fi, }\item[{int}]{out\+\_\+event }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} References xua\+\_\+asp\+\_\+fsm\+\_\+priv\+::out\+\_\+event, peer\+\_\+send(), xua\+\_\+asp\+\_\+fsm\+\_\+priv\+::t\+\_\+ack, xua\+\_\+asp\+\_\+fsm\+\_\+priv\+::timer, xua\+\_\+t\+\_\+ack\+\_\+cb(), and X\+U\+A\+\_\+\+T\+\_\+\+A\+C\+K\+\_\+\+S\+EC. Referenced by xua\+\_\+asp\+\_\+fsm\+\_\+active(), xua\+\_\+asp\+\_\+fsm\+\_\+down(), and xua\+\_\+asp\+\_\+fsm\+\_\+inactive(). \mbox{\label{xua__asp__fsm_8c_ab6b18767fb476d09a98a92aa449d9bfe}} \index{xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}!peer\+\_\+send\+\_\+error@{peer\+\_\+send\+\_\+error}} \index{peer\+\_\+send\+\_\+error@{peer\+\_\+send\+\_\+error}!xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}} \subsubsection{peer\+\_\+send\+\_\+error()} {\footnotesize\ttfamily static int peer\+\_\+send\+\_\+error (\begin{DoxyParamCaption}\item[{struct osmo\+\_\+fsm\+\_\+inst $\ast$}]{fi, }\item[{uint32\+\_\+t}]{err\+\_\+code }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} References xua\+\_\+asp\+\_\+fsm\+\_\+priv\+::asp, xua\+\_\+msg\+::hdr, m3ua\+\_\+err\+\_\+names, osmo\+\_\+ss7\+\_\+asp\+\_\+send(), S\+U\+A\+\_\+\+I\+E\+I\+\_\+\+E\+R\+R\+\_\+\+C\+O\+DE, S\+U\+A\+\_\+\+M\+G\+M\+T\+\_\+\+E\+RR, S\+U\+A\+\_\+\+M\+S\+G\+C\+\_\+\+M\+G\+MT, S\+U\+A\+\_\+\+V\+E\+R\+S\+I\+ON, xua\+\_\+common\+\_\+hdr\+::version, X\+U\+A\+\_\+\+H\+DR, xua\+\_\+msg\+\_\+add\+\_\+u32(), xua\+\_\+msg\+\_\+alloc(), xua\+\_\+msg\+\_\+free(), and xua\+\_\+to\+\_\+msg(). Referenced by xua\+\_\+asp\+\_\+fsm\+\_\+active(), and xua\+\_\+asp\+\_\+fsm\+\_\+inactive(). \mbox{\label{xua__asp__fsm_8c_a5a296eb3bb0dd036c640ae26384b52e1}} \index{xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}!send\+\_\+xlm\+\_\+prim\+\_\+simple@{send\+\_\+xlm\+\_\+prim\+\_\+simple}} \index{send\+\_\+xlm\+\_\+prim\+\_\+simple@{send\+\_\+xlm\+\_\+prim\+\_\+simple}!xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}} \subsubsection{send\+\_\+xlm\+\_\+prim\+\_\+simple()} {\footnotesize\ttfamily static void send\+\_\+xlm\+\_\+prim\+\_\+simple (\begin{DoxyParamCaption}\item[{struct osmo\+\_\+fsm\+\_\+inst $\ast$}]{fi, }\item[{enum \textbf{ osmo\+\_\+xlm\+\_\+prim\+\_\+type}}]{prim\+\_\+type, }\item[{enum osmo\+\_\+prim\+\_\+operation}]{op }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} References xua\+\_\+asp\+\_\+fsm\+\_\+priv\+::asp, and xua\+\_\+asp\+\_\+send\+\_\+xlm\+\_\+prim\+\_\+simple(). Referenced by ipa\+\_\+asp\+\_\+allstate(), xua\+\_\+asp\+\_\+allstate(), xua\+\_\+asp\+\_\+fsm\+\_\+active(), xua\+\_\+asp\+\_\+fsm\+\_\+down(), and xua\+\_\+asp\+\_\+fsm\+\_\+inactive(). \mbox{\label{xua__asp__fsm_8c_a557d143b3528af6ed3e63cfe4740e13f}} \index{xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}!xua\+\_\+asp\+\_\+allstate@{xua\+\_\+asp\+\_\+allstate}} \index{xua\+\_\+asp\+\_\+allstate@{xua\+\_\+asp\+\_\+allstate}!xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}} \subsubsection{xua\+\_\+asp\+\_\+allstate()} {\footnotesize\ttfamily static void xua\+\_\+asp\+\_\+allstate (\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 data, O\+S\+M\+O\+\_\+\+X\+L\+M\+\_\+\+P\+R\+I\+M\+\_\+\+M\+\_\+\+A\+S\+P\+\_\+\+D\+O\+WN, peer\+\_\+send(), send\+\_\+xlm\+\_\+prim\+\_\+simple(), xua\+\_\+asp\+\_\+fsm\+\_\+priv\+::t\+\_\+ack, xua\+\_\+asp\+\_\+fsm\+\_\+priv\+::timer, X\+U\+A\+\_\+\+A\+S\+P\+\_\+\+E\+\_\+\+A\+S\+\_\+\+A\+S\+S\+I\+G\+N\+ED, X\+U\+A\+\_\+\+A\+S\+P\+\_\+\+E\+\_\+\+A\+S\+P\+S\+M\+\_\+\+B\+E\+AT, X\+U\+A\+\_\+\+A\+S\+P\+\_\+\+E\+\_\+\+A\+S\+P\+S\+M\+\_\+\+B\+E\+A\+T\+\_\+\+A\+CK, X\+U\+A\+\_\+\+A\+S\+P\+\_\+\+E\+\_\+\+S\+C\+T\+P\+\_\+\+C\+O\+M\+M\+\_\+\+D\+O\+W\+N\+\_\+\+I\+ND, X\+U\+A\+\_\+\+A\+S\+P\+\_\+\+E\+\_\+\+S\+C\+T\+P\+\_\+\+R\+E\+S\+T\+A\+R\+T\+\_\+\+I\+ND, and X\+U\+A\+\_\+\+A\+S\+P\+\_\+\+S\+\_\+\+D\+O\+WN. \mbox{\label{xua__asp__fsm_8c_aae60da3d9e5488d86440d8573c656923}} \index{xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}!xua\+\_\+asp\+\_\+fsm\+\_\+active@{xua\+\_\+asp\+\_\+fsm\+\_\+active}} \index{xua\+\_\+asp\+\_\+fsm\+\_\+active@{xua\+\_\+asp\+\_\+fsm\+\_\+active}!xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}} \subsubsection{xua\+\_\+asp\+\_\+fsm\+\_\+active()} {\footnotesize\ttfamily static void xua\+\_\+asp\+\_\+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 check\+\_\+stop\+\_\+t\+\_\+ack(), data, E\+N\+S\+U\+R\+E\+\_\+\+A\+S\+P\+\_\+\+O\+R\+\_\+\+I\+P\+SP, E\+N\+S\+U\+R\+E\+\_\+\+S\+G\+\_\+\+O\+R\+\_\+\+I\+P\+SP, M3\+U\+A\+\_\+\+E\+R\+R\+\_\+\+U\+N\+E\+X\+P\+E\+C\+T\+E\+D\+\_\+\+M\+SG, O\+S\+M\+O\+\_\+\+X\+L\+M\+\_\+\+P\+R\+I\+M\+\_\+\+M\+\_\+\+A\+S\+P\+\_\+\+D\+O\+WN, O\+S\+M\+O\+\_\+\+X\+L\+M\+\_\+\+P\+R\+I\+M\+\_\+\+M\+\_\+\+A\+S\+P\+\_\+\+I\+N\+A\+C\+T\+I\+VE, peer\+\_\+send(), peer\+\_\+send\+\_\+and\+\_\+start\+\_\+t\+\_\+ack(), peer\+\_\+send\+\_\+error(), send\+\_\+xlm\+\_\+prim\+\_\+simple(), X\+U\+A\+\_\+\+A\+S\+P\+\_\+\+E\+\_\+\+A\+S\+P\+S\+M\+\_\+\+A\+S\+P\+DN, X\+U\+A\+\_\+\+A\+S\+P\+\_\+\+E\+\_\+\+A\+S\+P\+S\+M\+\_\+\+A\+S\+P\+D\+N\+\_\+\+A\+CK, X\+U\+A\+\_\+\+A\+S\+P\+\_\+\+E\+\_\+\+A\+S\+P\+S\+M\+\_\+\+A\+S\+P\+UP, X\+U\+A\+\_\+\+A\+S\+P\+\_\+\+E\+\_\+\+A\+S\+P\+S\+M\+\_\+\+A\+S\+P\+U\+P\+\_\+\+A\+CK, X\+U\+A\+\_\+\+A\+S\+P\+\_\+\+E\+\_\+\+A\+S\+P\+T\+M\+\_\+\+A\+S\+P\+AC, X\+U\+A\+\_\+\+A\+S\+P\+\_\+\+E\+\_\+\+A\+S\+P\+T\+M\+\_\+\+A\+S\+P\+A\+C\+\_\+\+A\+CK, X\+U\+A\+\_\+\+A\+S\+P\+\_\+\+E\+\_\+\+A\+S\+P\+T\+M\+\_\+\+A\+S\+P\+IA, X\+U\+A\+\_\+\+A\+S\+P\+\_\+\+E\+\_\+\+A\+S\+P\+T\+M\+\_\+\+A\+S\+P\+I\+A\+\_\+\+A\+CK, X\+U\+A\+\_\+\+A\+S\+P\+\_\+\+E\+\_\+\+M\+\_\+\+A\+S\+P\+\_\+\+D\+O\+W\+N\+\_\+\+R\+EQ, X\+U\+A\+\_\+\+A\+S\+P\+\_\+\+E\+\_\+\+M\+\_\+\+A\+S\+P\+\_\+\+I\+N\+A\+C\+T\+I\+V\+E\+\_\+\+R\+EQ, X\+U\+A\+\_\+\+A\+S\+P\+\_\+\+S\+\_\+\+D\+O\+WN, and X\+U\+A\+\_\+\+A\+S\+P\+\_\+\+S\+\_\+\+I\+N\+A\+C\+T\+I\+VE. \mbox{\label{xua__asp__fsm_8c_abcc71c602d7421510057486011382d06}} \index{xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}!xua\+\_\+asp\+\_\+fsm\+\_\+active\+\_\+onenter@{xua\+\_\+asp\+\_\+fsm\+\_\+active\+\_\+onenter}} \index{xua\+\_\+asp\+\_\+fsm\+\_\+active\+\_\+onenter@{xua\+\_\+asp\+\_\+fsm\+\_\+active\+\_\+onenter}!xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}} \subsubsection{xua\+\_\+asp\+\_\+fsm\+\_\+active\+\_\+onenter()} {\footnotesize\ttfamily static void xua\+\_\+asp\+\_\+fsm\+\_\+active\+\_\+onenter (\begin{DoxyParamCaption}\item[{struct osmo\+\_\+fsm\+\_\+inst $\ast$}]{fi, }\item[{uint32\+\_\+t}]{prev\+\_\+state }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} References dispatch\+\_\+to\+\_\+all\+\_\+as(), and X\+U\+A\+\_\+\+A\+S\+P\+A\+S\+\_\+\+A\+S\+P\+\_\+\+A\+C\+T\+I\+V\+E\+\_\+\+I\+ND. \mbox{\label{xua__asp__fsm_8c_a840521b95422bc2ad709fabcb646e7c0}} \index{xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}!xua\+\_\+asp\+\_\+fsm\+\_\+cleanup@{xua\+\_\+asp\+\_\+fsm\+\_\+cleanup}} \index{xua\+\_\+asp\+\_\+fsm\+\_\+cleanup@{xua\+\_\+asp\+\_\+fsm\+\_\+cleanup}!xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}} \subsubsection{xua\+\_\+asp\+\_\+fsm\+\_\+cleanup()} {\footnotesize\ttfamily static void xua\+\_\+asp\+\_\+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\+\_\+asp\+\_\+fsm\+\_\+priv\+::t\+\_\+ack, and xua\+\_\+asp\+\_\+fsm\+\_\+priv\+::timer. \mbox{\label{xua__asp__fsm_8c_ac39e7772fbda3ae74d35eed1543da980}} \index{xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}!xua\+\_\+asp\+\_\+fsm\+\_\+down@{xua\+\_\+asp\+\_\+fsm\+\_\+down}} \index{xua\+\_\+asp\+\_\+fsm\+\_\+down@{xua\+\_\+asp\+\_\+fsm\+\_\+down}!xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}} \subsubsection{xua\+\_\+asp\+\_\+fsm\+\_\+down()} {\footnotesize\ttfamily static void xua\+\_\+asp\+\_\+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 xua\+\_\+asp\+\_\+fsm\+\_\+priv\+::asp, osmo\+\_\+ss7\+\_\+asp\+::asp\+\_\+id, osmo\+\_\+ss7\+\_\+asp\+::asp\+\_\+id\+\_\+present, check\+\_\+stop\+\_\+t\+\_\+ack(), E\+N\+S\+U\+R\+E\+\_\+\+A\+S\+P\+\_\+\+O\+R\+\_\+\+I\+P\+SP, E\+N\+S\+U\+R\+E\+\_\+\+S\+G\+\_\+\+O\+R\+\_\+\+I\+P\+SP, osmo\+\_\+ss7\+\_\+asp\+::lm, O\+S\+M\+O\+\_\+\+X\+L\+M\+\_\+\+P\+R\+I\+M\+\_\+\+M\+\_\+\+A\+S\+P\+\_\+\+UP, peer\+\_\+send(), peer\+\_\+send\+\_\+and\+\_\+start\+\_\+t\+\_\+ack(), send\+\_\+xlm\+\_\+prim\+\_\+simple(), S\+U\+A\+\_\+\+I\+E\+I\+\_\+\+A\+S\+P\+\_\+\+ID, X\+U\+A\+\_\+\+A\+S\+P\+\_\+\+E\+\_\+\+A\+S\+P\+S\+M\+\_\+\+A\+S\+P\+DN, X\+U\+A\+\_\+\+A\+S\+P\+\_\+\+E\+\_\+\+A\+S\+P\+S\+M\+\_\+\+A\+S\+P\+D\+N\+\_\+\+A\+CK, X\+U\+A\+\_\+\+A\+S\+P\+\_\+\+E\+\_\+\+A\+S\+P\+S\+M\+\_\+\+A\+S\+P\+UP, X\+U\+A\+\_\+\+A\+S\+P\+\_\+\+E\+\_\+\+A\+S\+P\+S\+M\+\_\+\+A\+S\+P\+U\+P\+\_\+\+A\+CK, X\+U\+A\+\_\+\+A\+S\+P\+\_\+\+E\+\_\+\+M\+\_\+\+A\+S\+P\+\_\+\+A\+C\+T\+I\+V\+E\+\_\+\+R\+EQ, X\+U\+A\+\_\+\+A\+S\+P\+\_\+\+E\+\_\+\+M\+\_\+\+A\+S\+P\+\_\+\+U\+P\+\_\+\+R\+EQ, X\+U\+A\+\_\+\+A\+S\+P\+\_\+\+E\+\_\+\+S\+C\+T\+P\+\_\+\+E\+S\+T\+\_\+\+I\+ND, X\+U\+A\+\_\+\+A\+S\+P\+\_\+\+S\+\_\+\+I\+N\+A\+C\+T\+I\+VE, xua\+\_\+msg\+\_\+find\+\_\+tag(), and xua\+\_\+msg\+\_\+part\+\_\+get\+\_\+u32(). \mbox{\label{xua__asp__fsm_8c_a205fa0b07787a9aa47b1e884cfc4ce92}} \index{xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}!xua\+\_\+asp\+\_\+fsm\+\_\+down\+\_\+onenter@{xua\+\_\+asp\+\_\+fsm\+\_\+down\+\_\+onenter}} \index{xua\+\_\+asp\+\_\+fsm\+\_\+down\+\_\+onenter@{xua\+\_\+asp\+\_\+fsm\+\_\+down\+\_\+onenter}!xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}} \subsubsection{xua\+\_\+asp\+\_\+fsm\+\_\+down\+\_\+onenter()} {\footnotesize\ttfamily static void xua\+\_\+asp\+\_\+fsm\+\_\+down\+\_\+onenter (\begin{DoxyParamCaption}\item[{struct osmo\+\_\+fsm\+\_\+inst $\ast$}]{fi, }\item[{uint32\+\_\+t}]{prev\+\_\+state }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} References dispatch\+\_\+to\+\_\+all\+\_\+as(), and X\+U\+A\+\_\+\+A\+S\+P\+A\+S\+\_\+\+A\+S\+P\+\_\+\+D\+O\+W\+N\+\_\+\+I\+ND. \mbox{\label{xua__asp__fsm_8c_aaaff6da426fc0389544a02926e430f55}} \index{xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}!xua\+\_\+asp\+\_\+fsm\+\_\+inactive@{xua\+\_\+asp\+\_\+fsm\+\_\+inactive}} \index{xua\+\_\+asp\+\_\+fsm\+\_\+inactive@{xua\+\_\+asp\+\_\+fsm\+\_\+inactive}!xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}} \subsubsection{xua\+\_\+asp\+\_\+fsm\+\_\+inactive()} {\footnotesize\ttfamily static void xua\+\_\+asp\+\_\+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 osmo\+\_\+ss7\+\_\+instance\+::as\+\_\+list, xua\+\_\+asp\+\_\+fsm\+\_\+priv\+::asp, osmo\+\_\+ss7\+\_\+as\+::cfg, check\+\_\+stop\+\_\+t\+\_\+ack(), xua\+\_\+msg\+\_\+part\+::dat, data, E\+N\+S\+U\+R\+E\+\_\+\+A\+S\+P\+\_\+\+O\+R\+\_\+\+I\+P\+SP, E\+N\+S\+U\+R\+E\+\_\+\+S\+G\+\_\+\+O\+R\+\_\+\+I\+P\+SP, osmo\+\_\+ss7\+\_\+asp\+::inst, xua\+\_\+msg\+\_\+part\+::len, L\+O\+G\+P\+AS, M3\+U\+A\+\_\+\+E\+R\+R\+\_\+\+I\+N\+V\+A\+L\+\_\+\+R\+O\+U\+T\+\_\+\+C\+TX, M3\+U\+A\+\_\+\+E\+R\+R\+\_\+\+U\+N\+S\+U\+P\+P\+\_\+\+T\+R\+A\+F\+\_\+\+M\+O\+D\+\_\+\+T\+YP, M3\+U\+A\+\_\+\+I\+E\+I\+\_\+\+R\+O\+U\+T\+E\+\_\+\+C\+TX, M3\+U\+A\+\_\+\+I\+E\+I\+\_\+\+T\+R\+A\+F\+\_\+\+M\+O\+D\+E\+\_\+\+T\+YP, M3\+U\+A\+\_\+\+T\+M\+O\+D\+\_\+\+B\+C\+A\+ST, M3\+U\+A\+\_\+\+T\+M\+O\+D\+\_\+\+L\+O\+A\+D\+S\+H\+A\+RE, M3\+U\+A\+\_\+\+T\+M\+O\+D\+\_\+\+O\+V\+E\+R\+R\+I\+DE, osmo\+\_\+ss7\+\_\+as\+::mode, osmo\+\_\+ss7\+\_\+as\+::mode\+\_\+set\+\_\+by\+\_\+peer, osmo\+\_\+ss7\+\_\+as\+::mode\+\_\+set\+\_\+by\+\_\+vty, osmo\+\_\+ss7\+\_\+as\+\_\+find\+\_\+by\+\_\+rctx(), osmo\+\_\+ss7\+\_\+as\+\_\+has\+\_\+asp(), osmo\+\_\+ss7\+\_\+as\+\_\+tmode\+\_\+compatible\+\_\+xua(), osmo\+\_\+ss7\+\_\+as\+\_\+traffic\+\_\+mode\+\_\+name(), osmo\+\_\+ss7\+\_\+tmode\+\_\+from\+\_\+xua(), O\+S\+M\+O\+\_\+\+X\+L\+M\+\_\+\+P\+R\+I\+M\+\_\+\+M\+\_\+\+A\+S\+P\+\_\+\+A\+C\+T\+I\+VE, O\+S\+M\+O\+\_\+\+X\+L\+M\+\_\+\+P\+R\+I\+M\+\_\+\+M\+\_\+\+A\+S\+P\+\_\+\+D\+O\+WN, peer\+\_\+send(), peer\+\_\+send\+\_\+and\+\_\+start\+\_\+t\+\_\+ack(), peer\+\_\+send\+\_\+error(), send\+\_\+xlm\+\_\+prim\+\_\+simple(), X\+U\+A\+\_\+\+A\+S\+P\+\_\+\+E\+\_\+\+A\+S\+P\+S\+M\+\_\+\+A\+S\+P\+DN, X\+U\+A\+\_\+\+A\+S\+P\+\_\+\+E\+\_\+\+A\+S\+P\+S\+M\+\_\+\+A\+S\+P\+D\+N\+\_\+\+A\+CK, X\+U\+A\+\_\+\+A\+S\+P\+\_\+\+E\+\_\+\+A\+S\+P\+S\+M\+\_\+\+A\+S\+P\+UP, X\+U\+A\+\_\+\+A\+S\+P\+\_\+\+E\+\_\+\+A\+S\+P\+S\+M\+\_\+\+A\+S\+P\+U\+P\+\_\+\+A\+CK, X\+U\+A\+\_\+\+A\+S\+P\+\_\+\+E\+\_\+\+A\+S\+P\+T\+M\+\_\+\+A\+S\+P\+AC, X\+U\+A\+\_\+\+A\+S\+P\+\_\+\+E\+\_\+\+A\+S\+P\+T\+M\+\_\+\+A\+S\+P\+A\+C\+\_\+\+A\+CK, X\+U\+A\+\_\+\+A\+S\+P\+\_\+\+E\+\_\+\+A\+S\+P\+T\+M\+\_\+\+A\+S\+P\+IA, X\+U\+A\+\_\+\+A\+S\+P\+\_\+\+E\+\_\+\+A\+S\+P\+T\+M\+\_\+\+A\+S\+P\+I\+A\+\_\+\+A\+CK, X\+U\+A\+\_\+\+A\+S\+P\+\_\+\+E\+\_\+\+M\+\_\+\+A\+S\+P\+\_\+\+A\+C\+T\+I\+V\+E\+\_\+\+R\+EQ, X\+U\+A\+\_\+\+A\+S\+P\+\_\+\+E\+\_\+\+M\+\_\+\+A\+S\+P\+\_\+\+D\+O\+W\+N\+\_\+\+R\+EQ, X\+U\+A\+\_\+\+A\+S\+P\+\_\+\+S\+\_\+\+A\+C\+T\+I\+VE, X\+U\+A\+\_\+\+A\+S\+P\+\_\+\+S\+\_\+\+D\+O\+WN, xua\+\_\+msg\+\_\+find\+\_\+tag(), and xua\+\_\+msg\+\_\+get\+\_\+u32(). \mbox{\label{xua__asp__fsm_8c_a430de9931db0dbb76d57b56482a552dd}} \index{xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}!xua\+\_\+asp\+\_\+fsm\+\_\+inactive\+\_\+onenter@{xua\+\_\+asp\+\_\+fsm\+\_\+inactive\+\_\+onenter}} \index{xua\+\_\+asp\+\_\+fsm\+\_\+inactive\+\_\+onenter@{xua\+\_\+asp\+\_\+fsm\+\_\+inactive\+\_\+onenter}!xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}} \subsubsection{xua\+\_\+asp\+\_\+fsm\+\_\+inactive\+\_\+onenter()} {\footnotesize\ttfamily static void xua\+\_\+asp\+\_\+fsm\+\_\+inactive\+\_\+onenter (\begin{DoxyParamCaption}\item[{struct osmo\+\_\+fsm\+\_\+inst $\ast$}]{fi, }\item[{uint32\+\_\+t}]{prev\+\_\+state }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} References dispatch\+\_\+to\+\_\+all\+\_\+as(), 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__asp__fsm_8c_aa88aaec7a0ccb0802b071db2e80a0a92}} \index{xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}!xua\+\_\+asp\+\_\+fsm\+\_\+start@{xua\+\_\+asp\+\_\+fsm\+\_\+start}} \index{xua\+\_\+asp\+\_\+fsm\+\_\+start@{xua\+\_\+asp\+\_\+fsm\+\_\+start}!xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}} \subsubsection{xua\+\_\+asp\+\_\+fsm\+\_\+start()} {\footnotesize\ttfamily struct osmo\+\_\+fsm\+\_\+inst$\ast$ xua\+\_\+asp\+\_\+fsm\+\_\+start (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$}]{asp, }\item[{enum \textbf{ osmo\+\_\+ss7\+\_\+asp\+\_\+role}}]{role, }\item[{int}]{log\+\_\+level }\end{DoxyParamCaption})} Start a new A\+SP finite stae machine for given A\+SP. \begin{DoxyParams}[1]{Parameters} \mbox{\tt in} & {\em asp} & Application Server Process for which to start F\+SM \\ \hline \mbox{\tt in} & {\em role} & Role (A\+SP, SG, I\+P\+SP) of this F\+SM \\ \hline \mbox{\tt in} & {\em log\+\_\+level} & Logging Level for A\+SP F\+SM logging \\ \hline \end{DoxyParams} \begin{DoxyReturn}{Returns} F\+SM instance on success; N\+U\+LL on error \end{DoxyReturn} References xua\+\_\+asp\+\_\+fsm\+\_\+priv\+::asp, osmo\+\_\+ss7\+\_\+asp\+::cfg, ipa\+\_\+asp\+\_\+fsm\+\_\+start(), osmo\+\_\+ss7\+\_\+asp\+::name, O\+S\+M\+O\+\_\+\+S\+S7\+\_\+\+A\+S\+P\+\_\+\+P\+R\+O\+T\+\_\+\+I\+PA, osmo\+\_\+ss7\+\_\+asp\+::proto, xua\+\_\+asp\+\_\+fsm\+\_\+priv\+::role, and xua\+\_\+asp\+\_\+fsm. Referenced by osmo\+\_\+ss7\+\_\+asp\+\_\+restart(). \mbox{\label{xua__asp__fsm_8c_a4a6754d2c135137e5b782786129c8f82}} \index{xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}!xua\+\_\+asp\+\_\+fsm\+\_\+timer\+\_\+cb@{xua\+\_\+asp\+\_\+fsm\+\_\+timer\+\_\+cb}} \index{xua\+\_\+asp\+\_\+fsm\+\_\+timer\+\_\+cb@{xua\+\_\+asp\+\_\+fsm\+\_\+timer\+\_\+cb}!xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}} \subsubsection{xua\+\_\+asp\+\_\+fsm\+\_\+timer\+\_\+cb()} {\footnotesize\ttfamily static int xua\+\_\+asp\+\_\+fsm\+\_\+timer\+\_\+cb (\begin{DoxyParamCaption}\item[{struct osmo\+\_\+fsm\+\_\+inst $\ast$}]{fi }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} \mbox{\label{xua__asp__fsm_8c_a65ed2433ab5f6146c201c56823b96509}} \index{xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}!xua\+\_\+asp\+\_\+send\+\_\+xlm\+\_\+prim@{xua\+\_\+asp\+\_\+send\+\_\+xlm\+\_\+prim}} \index{xua\+\_\+asp\+\_\+send\+\_\+xlm\+\_\+prim@{xua\+\_\+asp\+\_\+send\+\_\+xlm\+\_\+prim}!xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}} \subsubsection{xua\+\_\+asp\+\_\+send\+\_\+xlm\+\_\+prim()} {\footnotesize\ttfamily void xua\+\_\+asp\+\_\+send\+\_\+xlm\+\_\+prim (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$}]{asp, }\item[{struct \textbf{ osmo\+\_\+xlm\+\_\+prim} $\ast$}]{prim }\end{DoxyParamCaption})} References osmo\+\_\+ss7\+\_\+asp\+::fi, osmo\+\_\+ss7\+\_\+asp\+::lm, osmo\+\_\+xlm\+\_\+prim\+::oph, osmo\+\_\+xlm\+\_\+prim\+\_\+name(), and osmo\+\_\+xua\+\_\+layer\+\_\+manager\+::prim\+\_\+cb. Referenced by handle\+\_\+rkey\+\_\+dereg\+\_\+resp(), handle\+\_\+rkey\+\_\+reg\+\_\+resp(), m3ua\+\_\+rx\+\_\+mgmt\+\_\+err(), m3ua\+\_\+rx\+\_\+mgmt\+\_\+ntfy(), and xua\+\_\+asp\+\_\+send\+\_\+xlm\+\_\+prim\+\_\+simple(). \mbox{\label{xua__asp__fsm_8c_ae2c4024524aae252f01907024a2560c0}} \index{xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}!xua\+\_\+asp\+\_\+send\+\_\+xlm\+\_\+prim\+\_\+simple@{xua\+\_\+asp\+\_\+send\+\_\+xlm\+\_\+prim\+\_\+simple}} \index{xua\+\_\+asp\+\_\+send\+\_\+xlm\+\_\+prim\+\_\+simple@{xua\+\_\+asp\+\_\+send\+\_\+xlm\+\_\+prim\+\_\+simple}!xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}} \subsubsection{xua\+\_\+asp\+\_\+send\+\_\+xlm\+\_\+prim\+\_\+simple()} {\footnotesize\ttfamily void xua\+\_\+asp\+\_\+send\+\_\+xlm\+\_\+prim\+\_\+simple (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$}]{asp, }\item[{enum \textbf{ osmo\+\_\+xlm\+\_\+prim\+\_\+type}}]{prim\+\_\+type, }\item[{enum osmo\+\_\+prim\+\_\+operation}]{op }\end{DoxyParamCaption})} References xua\+\_\+asp\+\_\+send\+\_\+xlm\+\_\+prim(), and xua\+\_\+xlm\+\_\+prim\+\_\+alloc(). Referenced by send\+\_\+xlm\+\_\+prim\+\_\+simple(), ss7\+\_\+asp\+\_\+xua\+\_\+srv\+\_\+conn\+\_\+closed\+\_\+cb(), ss7\+\_\+asp\+\_\+xua\+\_\+srv\+\_\+conn\+\_\+rx\+\_\+cb(), xua\+\_\+accept\+\_\+cb(), xua\+\_\+cli\+\_\+close(), xua\+\_\+cli\+\_\+connect\+\_\+cb(), and xua\+\_\+cli\+\_\+read\+\_\+cb(). \mbox{\label{xua__asp__fsm_8c_aa56c62169f5d9cb0836bbd96027306a2}} \index{xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}!xua\+\_\+msg\+\_\+add\+\_\+asp\+\_\+rctx@{xua\+\_\+msg\+\_\+add\+\_\+asp\+\_\+rctx}} \index{xua\+\_\+msg\+\_\+add\+\_\+asp\+\_\+rctx@{xua\+\_\+msg\+\_\+add\+\_\+asp\+\_\+rctx}!xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}} \subsubsection{xua\+\_\+msg\+\_\+add\+\_\+asp\+\_\+rctx()} {\footnotesize\ttfamily static int xua\+\_\+msg\+\_\+add\+\_\+asp\+\_\+rctx (\begin{DoxyParamCaption}\item[{struct \textbf{ xua\+\_\+msg} $\ast$}]{xua, }\item[{struct \textbf{ osmo\+\_\+ss7\+\_\+asp} $\ast$}]{asp }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} References osmo\+\_\+ss7\+\_\+instance\+::as\+\_\+list, osmo\+\_\+ss7\+\_\+as\+::cfg, osmo\+\_\+ss7\+\_\+routing\+\_\+key\+::context, osmo\+\_\+ss7\+\_\+asp\+::inst, osmo\+\_\+ss7\+\_\+as\+::list, M3\+U\+A\+\_\+\+I\+E\+I\+\_\+\+R\+O\+U\+T\+E\+\_\+\+C\+TX, osmo\+\_\+ss7\+\_\+as\+\_\+has\+\_\+asp(), osmo\+\_\+ss7\+\_\+as\+::routing\+\_\+key, and xua\+\_\+msg\+\_\+add\+\_\+data(). Referenced by peer\+\_\+send(). \mbox{\label{xua__asp__fsm_8c_aca6739a78491b1fd6be14693d6bdfb15}} \index{xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}!xua\+\_\+t\+\_\+ack\+\_\+cb@{xua\+\_\+t\+\_\+ack\+\_\+cb}} \index{xua\+\_\+t\+\_\+ack\+\_\+cb@{xua\+\_\+t\+\_\+ack\+\_\+cb}!xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}} \subsubsection{xua\+\_\+t\+\_\+ack\+\_\+cb()} {\footnotesize\ttfamily static void xua\+\_\+t\+\_\+ack\+\_\+cb (\begin{DoxyParamCaption}\item[{void $\ast$}]{data }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} References data, xua\+\_\+asp\+\_\+fsm\+\_\+priv\+::out\+\_\+event, peer\+\_\+send(), xua\+\_\+asp\+\_\+fsm\+\_\+priv\+::t\+\_\+ack, xua\+\_\+asp\+\_\+fsm\+\_\+priv\+::timer, and X\+U\+A\+\_\+\+T\+\_\+\+A\+C\+K\+\_\+\+S\+EC. Referenced by peer\+\_\+send\+\_\+and\+\_\+start\+\_\+t\+\_\+ack(). \mbox{\label{xua__asp__fsm_8c_ace6e25728de8614e14ce258e2dfe8bc4}} \index{xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}!xua\+\_\+xlm\+\_\+prim\+\_\+alloc@{xua\+\_\+xlm\+\_\+prim\+\_\+alloc}} \index{xua\+\_\+xlm\+\_\+prim\+\_\+alloc@{xua\+\_\+xlm\+\_\+prim\+\_\+alloc}!xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}} \subsubsection{xua\+\_\+xlm\+\_\+prim\+\_\+alloc()} {\footnotesize\ttfamily struct \textbf{ osmo\+\_\+xlm\+\_\+prim}$\ast$ xua\+\_\+xlm\+\_\+prim\+\_\+alloc (\begin{DoxyParamCaption}\item[{enum \textbf{ osmo\+\_\+xlm\+\_\+prim\+\_\+type}}]{prim\+\_\+type, }\item[{enum osmo\+\_\+prim\+\_\+operation}]{op }\end{DoxyParamCaption})} References osmo\+\_\+xlm\+\_\+prim\+::oph, and X\+U\+A\+\_\+\+S\+A\+P\+\_\+\+LM. Referenced by handle\+\_\+rkey\+\_\+dereg\+\_\+resp(), handle\+\_\+rkey\+\_\+reg\+\_\+resp(), lm\+\_\+timer\+\_\+cb(), m3ua\+\_\+rx\+\_\+mgmt\+\_\+err(), m3ua\+\_\+rx\+\_\+mgmt\+\_\+ntfy(), and xua\+\_\+asp\+\_\+send\+\_\+xlm\+\_\+prim\+\_\+simple(). \subsection{Variable Documentation} \mbox{\label{xua__asp__fsm_8c_a34912c3b074c85d6db88aad66fbd499f}} \index{xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}!evt\+\_\+ack\+\_\+map@{evt\+\_\+ack\+\_\+map}} \index{evt\+\_\+ack\+\_\+map@{evt\+\_\+ack\+\_\+map}!xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}} \subsubsection{evt\+\_\+ack\+\_\+map} {\footnotesize\ttfamily const uint32\+\_\+t evt\+\_\+ack\+\_\+map[\textbf{ \+\_\+\+N\+U\+M\+\_\+\+X\+U\+A\+\_\+\+A\+S\+P\+\_\+E}]\hspace{0.3cm}{\ttfamily [static]}} {\bfseries Initial value\+:} \begin{DoxyCode} = \{ [XUA_ASP_E_ASPSM_ASPUP] = XUA_ASP_E_ASPSM_ASPUP_ACK, [XUA_ASP_E_ASPTM_ASPAC] = XUA_ASP_E_ASPTM_ASPAC_ACK, [XUA_ASP_E_ASPSM_ASPDN] = XUA_ASP_E_ASPSM_ASPDN_ACK, [XUA_ASP_E_ASPTM_ASPIA] = XUA_ASP_E_ASPTM_ASPIA_ACK, [XUA_ASP_E_ASPSM_BEAT] = XUA_ASP_E_ASPSM_BEAT_ACK, \} \end{DoxyCode} Referenced by check\+\_\+stop\+\_\+t\+\_\+ack(). \mbox{\label{xua__asp__fsm_8c_a43e75ddbe7932fe493cb59d8248e0c98}} \index{xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}!ipa\+\_\+asp\+\_\+fsm@{ipa\+\_\+asp\+\_\+fsm}} \index{ipa\+\_\+asp\+\_\+fsm@{ipa\+\_\+asp\+\_\+fsm}!xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}} \subsubsection{ipa\+\_\+asp\+\_\+fsm} {\footnotesize\ttfamily struct osmo\+\_\+fsm ipa\+\_\+asp\+\_\+fsm} {\bfseries Initial value\+:} \begin{DoxyCode} = \{ .name = \textcolor{stringliteral}{"IPA\_ASP"}, .states = ipa_asp_states, .num\_states = ARRAY\_SIZE(ipa_asp_states), .timer\_cb = ipa_asp_fsm_timer_cb, .log\_subsys = DLSS7, .event\_names = xua_asp_event_names, .allstate\_event\_mask = S(XUA_ASP_E_SCTP_COMM_DOWN_IND) | S(XUA_ASP_E_SCTP_RESTART_IND) | S(XUA_ASP_E_ASPSM_BEAT) | S(XUA_ASP_E_ASPSM_BEAT_ACK) | S(XUA_ASP_E_AS_ASSIGNED), .allstate\_action = ipa_asp_allstate, \} \end{DoxyCode} Referenced by ipa\+\_\+asp\+\_\+fsm\+\_\+start(), and osmo\+\_\+ss7\+\_\+init(). \mbox{\label{xua__asp__fsm_8c_ab5bd360ec117ebf15b8e5514e268fcab}} \index{xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}!ipa\+\_\+asp\+\_\+states@{ipa\+\_\+asp\+\_\+states}} \index{ipa\+\_\+asp\+\_\+states@{ipa\+\_\+asp\+\_\+states}!xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}} \subsubsection{ipa\+\_\+asp\+\_\+states} {\footnotesize\ttfamily const struct osmo\+\_\+fsm\+\_\+state ipa\+\_\+asp\+\_\+states[$\,$]\hspace{0.3cm}{\ttfamily [static]}} \mbox{\label{xua__asp__fsm_8c_af176eecc69f63bb969d9dc136cd45559}} \index{xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}!xua\+\_\+asp\+\_\+event\+\_\+names@{xua\+\_\+asp\+\_\+event\+\_\+names}} \index{xua\+\_\+asp\+\_\+event\+\_\+names@{xua\+\_\+asp\+\_\+event\+\_\+names}!xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}} \subsubsection{xua\+\_\+asp\+\_\+event\+\_\+names} {\footnotesize\ttfamily const struct value\+\_\+string xua\+\_\+asp\+\_\+event\+\_\+names[$\,$]\hspace{0.3cm}{\ttfamily [static]}} {\bfseries Initial value\+:} \begin{DoxyCode} = \{ \{ XUA_ASP_E_M_ASP_UP_REQ, \textcolor{stringliteral}{"M-ASP\_UP.req"} \}, \{ XUA_ASP_E_M_ASP_ACTIVE_REQ, \textcolor{stringliteral}{"M-ASP\_ACTIVE.req"} \}, \{ XUA_ASP_E_M_ASP_DOWN_REQ, \textcolor{stringliteral}{"M-ASP\_DOWN.req"} \}, \{ XUA_ASP_E_M_ASP_INACTIVE_REQ, \textcolor{stringliteral}{"M-ASP\_INACTIVE.req"} \}, \{ XUA_ASP_E_SCTP_COMM_DOWN_IND, \textcolor{stringliteral}{"SCTP-COMM\_DOWN.ind"} \}, \{ XUA_ASP_E_SCTP_RESTART_IND, \textcolor{stringliteral}{"SCTP-RESTART.ind"} \}, \{ XUA_ASP_E_SCTP_EST_IND, \textcolor{stringliteral}{"SCTP-EST.ind"} \}, \{ XUA_ASP_E_ASPSM_ASPUP, \textcolor{stringliteral}{"ASPSM-ASP\_UP"} \}, \{ XUA_ASP_E_ASPSM_ASPUP_ACK, \textcolor{stringliteral}{"ASPSM-ASP\_UP\_ACK"} \}, \{ XUA_ASP_E_ASPTM_ASPAC, \textcolor{stringliteral}{"ASPTM-ASP\_AC"} \}, \{ XUA_ASP_E_ASPTM_ASPAC_ACK, \textcolor{stringliteral}{"ASPTM-ASP\_AC\_ACK"} \}, \{ XUA_ASP_E_ASPSM_ASPDN, \textcolor{stringliteral}{"ASPSM-ASP\_DN"} \}, \{ XUA_ASP_E_ASPSM_ASPDN_ACK, \textcolor{stringliteral}{"ASPSM-ASP\_DN\_ACK"} \}, \{ XUA_ASP_E_ASPTM_ASPIA, \textcolor{stringliteral}{"ASPTM-ASP\_IA"} \}, \{ XUA_ASP_E_ASPTM_ASPIA_ACK, \textcolor{stringliteral}{"ASPTM\_ASP\_IA\_ACK"} \}, \{ XUA_ASP_E_ASPSM_BEAT, \textcolor{stringliteral}{"ASPSM\_BEAT"} \}, \{ XUA_ASP_E_ASPSM_BEAT_ACK, \textcolor{stringliteral}{"ASPSM\_BEAT\_ACK"} \}, \{ XUA_ASP_E_AS_ASSIGNED, \textcolor{stringliteral}{"AS\_ASSIGNED"} \}, \{ IPA_ASP_E_ID_RESP, \textcolor{stringliteral}{"IPA\_CCM\_ID\_RESP"} \}, \{ IPA_ASP_E_ID_GET, \textcolor{stringliteral}{"IPA\_CCM\_ID\_GET"} \}, \{ IPA_ASP_E_ID_ACK, \textcolor{stringliteral}{"IPA\_CCM\_ID\_ACK"} \}, \{ 0, NULL \} \} \end{DoxyCode} \mbox{\label{xua__asp__fsm_8c_a14fb53dcfac1cdad274b0c88192517dd}} \index{xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}!xua\+\_\+asp\+\_\+fsm@{xua\+\_\+asp\+\_\+fsm}} \index{xua\+\_\+asp\+\_\+fsm@{xua\+\_\+asp\+\_\+fsm}!xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}} \subsubsection{xua\+\_\+asp\+\_\+fsm} {\footnotesize\ttfamily struct osmo\+\_\+fsm xua\+\_\+asp\+\_\+fsm} {\bfseries Initial value\+:} \begin{DoxyCode} = \{ .name = \textcolor{stringliteral}{"XUA\_ASP"}, .states = xua_asp_states, .num\_states = ARRAY\_SIZE(xua_asp_states), .timer\_cb = xua_asp_fsm_timer_cb, .log\_subsys = DLSS7, .event\_names = xua_asp_event_names, .allstate\_event\_mask = S(XUA_ASP_E_SCTP_COMM_DOWN_IND) | S(XUA_ASP_E_SCTP_RESTART_IND) | S(XUA_ASP_E_ASPSM_BEAT) | S(XUA_ASP_E_ASPSM_BEAT_ACK) | S(XUA_ASP_E_AS_ASSIGNED), .allstate\_action = xua_asp_allstate, .cleanup = xua_asp_fsm_cleanup, \} \end{DoxyCode} Referenced by osmo\+\_\+ss7\+\_\+init(), and xua\+\_\+asp\+\_\+fsm\+\_\+start(). \mbox{\label{xua__asp__fsm_8c_ad09082ebb4ac6dff6ec2e7cf8e418437}} \index{xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}!xua\+\_\+asp\+\_\+states@{xua\+\_\+asp\+\_\+states}} \index{xua\+\_\+asp\+\_\+states@{xua\+\_\+asp\+\_\+states}!xua\+\_\+asp\+\_\+fsm.\+c@{xua\+\_\+asp\+\_\+fsm.\+c}} \subsubsection{xua\+\_\+asp\+\_\+states} {\footnotesize\ttfamily const struct osmo\+\_\+fsm\+\_\+state xua\+\_\+asp\+\_\+states[$\,$]\hspace{0.3cm}{\ttfamily [static]}}