\doxysection{src/trxc.c File Reference}
\label{trxc_8c}\index{src/trxc.c@{src/trxc.c}}


TRXC (control) protocol and clock indications\+: I/\+O-\/free message codec.  


{\ttfamily \#include $<$errno.\+h$>$}\newline
{\ttfamily \#include $<$stdio.\+h$>$}\newline
{\ttfamily \#include $<$string.\+h$>$}\newline
{\ttfamily \#include $<$stdarg.\+h$>$}\newline
{\ttfamily \#include $<$stdlib.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/core/utils.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/gsm/gsm0502.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/trx/trxc.\+h$>$}\newline
\doxysubsection*{Functions}
\begin{DoxyCompactItemize}
\item 
int \textbf{ osmo\+\_\+trxc\+\_\+msg\+\_\+parse} (struct \textbf{ osmo\+\_\+trxc\+\_\+msg} $\ast$msg, const char $\ast$buf, size\+\_\+t len)
\begin{DoxyCompactList}\small\item\em Parse a TRXC message (\char`\"{}\+CMD $<$verb$>$ [$<$params$>$]\char`\"{}, \char`\"{}\+RSP $<$verb$>$ $<$status$>$ [$<$params$>$]\char`\"{} or \char`\"{}\+IND $<$verb$>$ $<$params$>$\char`\"{}) from a zero-\/terminated buffer. \end{DoxyCompactList}\item 
int \textbf{ osmo\+\_\+trxc\+\_\+msg\+\_\+build} (char $\ast$buf, size\+\_\+t buf\+\_\+size, const struct \textbf{ osmo\+\_\+trxc\+\_\+msg} $\ast$msg)
\begin{DoxyCompactList}\small\item\em Serialize a TRXC message into the given buffer (zero-\/terminated). \end{DoxyCompactList}\item 
int \textbf{ osmo\+\_\+trxc\+\_\+msg\+\_\+params\+\_\+scan} (const struct \textbf{ osmo\+\_\+trxc\+\_\+msg} $\ast$msg, const char $\ast$fmt,...)
\begin{DoxyCompactList}\small\item\em Parse the parameters string of a TRXC message, sscanf() style. \end{DoxyCompactList}\item 
const char $\ast$ \textbf{ osmo\+\_\+trxc\+\_\+msg\+\_\+name} (const struct \textbf{ osmo\+\_\+trxc\+\_\+msg} $\ast$msg)
\begin{DoxyCompactList}\small\item\em Compose a human-\/readable representation of the given message (for logging), store into a thread-\/local static buffer. \end{DoxyCompactList}\item 
char $\ast$ \textbf{ osmo\+\_\+trxc\+\_\+msg\+\_\+name\+\_\+buf} (char $\ast$buf, size\+\_\+t buf\+\_\+size, const struct \textbf{ osmo\+\_\+trxc\+\_\+msg} $\ast$msg)
\begin{DoxyCompactList}\small\item\em Compose a human-\/readable representation of the given message (for logging), store into the given buffer. \end{DoxyCompactList}\item 
int \textbf{ osmo\+\_\+trxc\+\_\+setslot\+\_\+parse} (struct \textbf{ osmo\+\_\+trxc\+\_\+setslot} $\ast$ss, const struct \textbf{ osmo\+\_\+trxc\+\_\+msg} $\ast$msg)
\begin{DoxyCompactList}\small\item\em Parse SETSLOT parameters (\char`\"{}$<$tn$>$ $<$chan\+\_\+comb$>$ [\+C$<$tsc$>$/\+S$<$tsc\+\_\+set$>$ ...]\char`\"{}) from an already-\/parsed TRXC message\textquotesingle{}s msg-\/$>$params. \end{DoxyCompactList}\item 
int \textbf{ osmo\+\_\+trxc\+\_\+setslot\+\_\+build} (char $\ast$buf, size\+\_\+t buf\+\_\+size, const struct \textbf{ osmo\+\_\+trxc\+\_\+setslot} $\ast$ss)
\begin{DoxyCompactList}\small\item\em Serialize SETSLOT parameters (\char`\"{}$<$tn$>$ $<$chan\+\_\+comb$>$ [\+C$<$tsc$>$/\+S$<$tsc\+\_\+set$>$ ...]\char`\"{}) into the given buffer (zero-\/terminated), for use as msg-\/$>$params. \end{DoxyCompactList}\item 
int \textbf{ osmo\+\_\+trxc\+\_\+clock\+\_\+ind\+\_\+parse} (uint32\+\_\+t $\ast$fn, const char $\ast$buf, size\+\_\+t len)
\begin{DoxyCompactList}\small\item\em Parse a clock indication (\char`\"{}\+IND CLOCK $<$fn$>$\char`\"{}). \end{DoxyCompactList}\item 
int \textbf{ osmo\+\_\+trxc\+\_\+clock\+\_\+ind\+\_\+build} (char $\ast$buf, size\+\_\+t buf\+\_\+size, uint32\+\_\+t fn)
\begin{DoxyCompactList}\small\item\em Serialize a clock indication (\char`\"{}\+IND CLOCK $<$fn$>$\char`\"{}) into the given buffer. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection*{Variables}
\begin{DoxyCompactItemize}
\item 
static const struct value\+\_\+string \textbf{ trxc\+\_\+msg\+\_\+type\+\_\+names} [$\,$]
\item 
const struct value\+\_\+string \textbf{ osmo\+\_\+trxc\+\_\+chan\+\_\+comb\+\_\+names} [$\,$]
\item 
const struct value\+\_\+string \textbf{ osmo\+\_\+trxc\+\_\+vamos\+\_\+comb\+\_\+names} [$\,$]
\end{DoxyCompactItemize}


\doxysubsection{Detailed Description}
TRXC (control) protocol and clock indications\+: I/\+O-\/free message codec. 

Based on the TRXC implementation in osmo-\/bts-\/trx and osmo-\/trx. 

\doxysubsection{Function Documentation}
\mbox{\label{trxc_8c_ab2b78df335a1816da41cc49fd2bcee2f}} 
\index{trxc.c@{trxc.c}!osmo\_trxc\_clock\_ind\_build@{osmo\_trxc\_clock\_ind\_build}}
\index{osmo\_trxc\_clock\_ind\_build@{osmo\_trxc\_clock\_ind\_build}!trxc.c@{trxc.c}}
\doxysubsubsection{osmo\_trxc\_clock\_ind\_build()}
{\footnotesize\ttfamily int osmo\+\_\+trxc\+\_\+clock\+\_\+ind\+\_\+build (\begin{DoxyParamCaption}\item[{char $\ast$}]{buf,  }\item[{size\+\_\+t}]{buf\+\_\+size,  }\item[{uint32\+\_\+t}]{fn }\end{DoxyParamCaption})}



Serialize a clock indication (\char`\"{}\+IND CLOCK $<$fn$>$\char`\"{}) into the given buffer. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ out}}  & {\em buf} & message buffer to store the result \\
\hline
\mbox{\texttt{ in}}  & {\em buf\+\_\+size} & size of the message buffer \\
\hline
\mbox{\texttt{ in}}  & {\em fn} & TDMA frame number (validated to be $<$ GSM\+\_\+\+TDMA\+\_\+\+HYPERFRAME) \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
length of the message (excl. \textquotesingle{}\textbackslash{}0\textquotesingle{}) on success; negative on error 
\end{DoxyReturn}


Referenced by \textbf{ osmo\+\_\+trx\+\_\+ep\+\_\+send\+\_\+clck\+\_\+ind()}.

\mbox{\label{trxc_8c_a20c78e09170212ca79c29e55e3a03686}} 
\index{trxc.c@{trxc.c}!osmo\_trxc\_clock\_ind\_parse@{osmo\_trxc\_clock\_ind\_parse}}
\index{osmo\_trxc\_clock\_ind\_parse@{osmo\_trxc\_clock\_ind\_parse}!trxc.c@{trxc.c}}
\doxysubsubsection{osmo\_trxc\_clock\_ind\_parse()}
{\footnotesize\ttfamily int osmo\+\_\+trxc\+\_\+clock\+\_\+ind\+\_\+parse (\begin{DoxyParamCaption}\item[{uint32\+\_\+t $\ast$}]{fn,  }\item[{const char $\ast$}]{buf,  }\item[{size\+\_\+t}]{len }\end{DoxyParamCaption})}



Parse a clock indication (\char`\"{}\+IND CLOCK $<$fn$>$\char`\"{}). 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ out}}  & {\em fn} & TDMA frame number (validated to be $<$ GSM\+\_\+\+TDMA\+\_\+\+HYPERFRAME) \\
\hline
\mbox{\texttt{ in}}  & {\em buf} & message buffer (not necessarily zero-\/terminated) \\
\hline
\mbox{\texttt{ in}}  & {\em len} & length of the message in the buffer \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 on success; negative on error 
\end{DoxyReturn}


References \textbf{ osmo\+\_\+trxc\+\_\+msg\+::cmd}, \textbf{ osmo\+\_\+trxc\+\_\+msg\+\_\+params\+\_\+scan()}, \textbf{ osmo\+\_\+trxc\+\_\+msg\+\_\+parse()}, \textbf{ OSMO\+\_\+\+TRXC\+\_\+\+MT\+\_\+\+IND}, and \textbf{ osmo\+\_\+trxc\+\_\+msg\+::type}.



Referenced by \textbf{ trx\+\_\+ep\+\_\+clck\+\_\+read\+\_\+cb()}.

\mbox{\label{trxc_8c_a342dad8454176839c10696e7fdba5c1a}} 
\index{trxc.c@{trxc.c}!osmo\_trxc\_msg\_build@{osmo\_trxc\_msg\_build}}
\index{osmo\_trxc\_msg\_build@{osmo\_trxc\_msg\_build}!trxc.c@{trxc.c}}
\doxysubsubsection{osmo\_trxc\_msg\_build()}
{\footnotesize\ttfamily int osmo\+\_\+trxc\+\_\+msg\+\_\+build (\begin{DoxyParamCaption}\item[{char $\ast$}]{buf,  }\item[{size\+\_\+t}]{buf\+\_\+size,  }\item[{const struct \textbf{ osmo\+\_\+trxc\+\_\+msg} $\ast$}]{msg }\end{DoxyParamCaption})}



Serialize a TRXC message into the given buffer (zero-\/terminated). 

\begin{DoxyReturn}{Returns}
length of the message (excl. \textquotesingle{}\textbackslash{}0\textquotesingle{}) on success; negative on error 
\end{DoxyReturn}


References \textbf{ osmo\+\_\+trxc\+\_\+msg\+::cmd}, \textbf{ OSMO\+\_\+\+TRXC\+\_\+\+MT\+\_\+\+CMD}, \textbf{ OSMO\+\_\+\+TRXC\+\_\+\+MT\+\_\+\+IND}, \textbf{ OSMO\+\_\+\+TRXC\+\_\+\+MT\+\_\+\+RSP}, \textbf{ osmo\+\_\+trxc\+\_\+msg\+::params}, \textbf{ osmo\+\_\+trxc\+\_\+msg\+::status}, \textbf{ trxc\+\_\+msg\+\_\+type\+\_\+names}, and \textbf{ osmo\+\_\+trxc\+\_\+msg\+::type}.



Referenced by \textbf{ osmo\+\_\+trx\+\_\+ep\+\_\+send\+\_\+ctrl\+\_\+msg()}, and \textbf{ osmo\+\_\+trxc\+\_\+msg\+\_\+name\+\_\+buf()}.

\mbox{\label{trxc_8c_ae9883862e555b73abe5a2af73feef045}} 
\index{trxc.c@{trxc.c}!osmo\_trxc\_msg\_name@{osmo\_trxc\_msg\_name}}
\index{osmo\_trxc\_msg\_name@{osmo\_trxc\_msg\_name}!trxc.c@{trxc.c}}
\doxysubsubsection{osmo\_trxc\_msg\_name()}
{\footnotesize\ttfamily const char $\ast$ osmo\+\_\+trxc\+\_\+msg\+\_\+name (\begin{DoxyParamCaption}\item[{const struct \textbf{ osmo\+\_\+trxc\+\_\+msg} $\ast$}]{msg }\end{DoxyParamCaption})}



Compose a human-\/readable representation of the given message (for logging), store into a thread-\/local static buffer. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em msg} & parsed TRXC message to get a human-\/readable representation of \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
pointer to a thread-\/local static buffer; NULL on error 
\end{DoxyReturn}


References \textbf{ OSMO\+\_\+\+TRXC\+\_\+\+MSG\+\_\+\+BUF\+\_\+\+SIZE}, and \textbf{ osmo\+\_\+trxc\+\_\+msg\+\_\+name\+\_\+buf()}.



Referenced by \textbf{ osmo\+\_\+trxc\+\_\+client\+\_\+rx\+\_\+msg()}, \textbf{ trxc\+\_\+client\+\_\+default\+\_\+rsp\+\_\+cb()}, \textbf{ trxc\+\_\+client\+\_\+fatal()}, and \textbf{ trxc\+\_\+client\+\_\+send\+\_\+next()}.

\mbox{\label{trxc_8c_a1230febcdc6035e7b7ebeb5cd39d64dd}} 
\index{trxc.c@{trxc.c}!osmo\_trxc\_msg\_name\_buf@{osmo\_trxc\_msg\_name\_buf}}
\index{osmo\_trxc\_msg\_name\_buf@{osmo\_trxc\_msg\_name\_buf}!trxc.c@{trxc.c}}
\doxysubsubsection{osmo\_trxc\_msg\_name\_buf()}
{\footnotesize\ttfamily char $\ast$ osmo\+\_\+trxc\+\_\+msg\+\_\+name\+\_\+buf (\begin{DoxyParamCaption}\item[{char $\ast$}]{buf,  }\item[{size\+\_\+t}]{buf\+\_\+size,  }\item[{const struct \textbf{ osmo\+\_\+trxc\+\_\+msg} $\ast$}]{msg }\end{DoxyParamCaption})}



Compose a human-\/readable representation of the given message (for logging), store into the given buffer. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ out}}  & {\em buf} & output buffer to store the result \\
\hline
\mbox{\texttt{ in}}  & {\em buf\+\_\+size} & size of the output buffer \\
\hline
\mbox{\texttt{ in}}  & {\em msg} & parsed TRXC message to get a human-\/readable representation of \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
pointer to the given buffer; NULL on error 
\end{DoxyReturn}


References \textbf{ osmo\+\_\+trxc\+\_\+msg\+\_\+build()}.



Referenced by \textbf{ osmo\+\_\+trxc\+\_\+msg\+\_\+name()}.

\mbox{\label{trxc_8c_a347c9ddab9ba96b958db9884a5008603}} 
\index{trxc.c@{trxc.c}!osmo\_trxc\_msg\_params\_scan@{osmo\_trxc\_msg\_params\_scan}}
\index{osmo\_trxc\_msg\_params\_scan@{osmo\_trxc\_msg\_params\_scan}!trxc.c@{trxc.c}}
\doxysubsubsection{osmo\_trxc\_msg\_params\_scan()}
{\footnotesize\ttfamily int osmo\+\_\+trxc\+\_\+msg\+\_\+params\+\_\+scan (\begin{DoxyParamCaption}\item[{const struct \textbf{ osmo\+\_\+trxc\+\_\+msg} $\ast$}]{msg,  }\item[{const char $\ast$}]{fmt,  }\item[{}]{... }\end{DoxyParamCaption})}



Parse the parameters string of a TRXC message, sscanf() style. 

\begin{DoxyReturn}{Returns}
number of successfully matched items (see sscanf) 
\end{DoxyReturn}


References \textbf{ osmo\+\_\+trxc\+\_\+msg\+::params}.



Referenced by \textbf{ osmo\+\_\+trxc\+\_\+clock\+\_\+ind\+\_\+parse()}.

\mbox{\label{trxc_8c_a51e4fd628a745ec95dcf84cfce525ff9}} 
\index{trxc.c@{trxc.c}!osmo\_trxc\_msg\_parse@{osmo\_trxc\_msg\_parse}}
\index{osmo\_trxc\_msg\_parse@{osmo\_trxc\_msg\_parse}!trxc.c@{trxc.c}}
\doxysubsubsection{osmo\_trxc\_msg\_parse()}
{\footnotesize\ttfamily int osmo\+\_\+trxc\+\_\+msg\+\_\+parse (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+trxc\+\_\+msg} $\ast$}]{msg,  }\item[{const char $\ast$}]{buf,  }\item[{size\+\_\+t}]{len }\end{DoxyParamCaption})}



Parse a TRXC message (\char`\"{}\+CMD $<$verb$>$ [$<$params$>$]\char`\"{}, \char`\"{}\+RSP $<$verb$>$ $<$status$>$ [$<$params$>$]\char`\"{} or \char`\"{}\+IND $<$verb$>$ $<$params$>$\char`\"{}) from a zero-\/terminated buffer. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ out}}  & {\em msg} & parsed message \\
\hline
\mbox{\texttt{ in}}  & {\em buf} & message buffer (not necessarily zero-\/terminated) \\
\hline
\mbox{\texttt{ in}}  & {\em len} & length of the message in the buffer \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 on success; negative on error 
\end{DoxyReturn}


References \textbf{ osmo\+\_\+trxc\+\_\+msg\+::cmd}, \textbf{ OSMO\+\_\+\+TRXC\+\_\+\+MSG\+\_\+\+BUF\+\_\+\+SIZE}, \textbf{ OSMO\+\_\+\+TRXC\+\_\+\+MT\+\_\+\+CMD}, \textbf{ OSMO\+\_\+\+TRXC\+\_\+\+MT\+\_\+\+IND}, \textbf{ OSMO\+\_\+\+TRXC\+\_\+\+MT\+\_\+\+RSP}, \textbf{ osmo\+\_\+trxc\+\_\+msg\+::params}, \textbf{ osmo\+\_\+trxc\+\_\+msg\+::status}, and \textbf{ osmo\+\_\+trxc\+\_\+msg\+::type}.



Referenced by \textbf{ osmo\+\_\+trxc\+\_\+client\+\_\+rx()}, \textbf{ osmo\+\_\+trxc\+\_\+clock\+\_\+ind\+\_\+parse()}, and \textbf{ trx\+\_\+ep\+\_\+ctrl\+\_\+recvfrom\+\_\+cb()}.

\mbox{\label{trxc_8c_a44885d33ba4400ab53d44265eb790b5f}} 
\index{trxc.c@{trxc.c}!osmo\_trxc\_setslot\_build@{osmo\_trxc\_setslot\_build}}
\index{osmo\_trxc\_setslot\_build@{osmo\_trxc\_setslot\_build}!trxc.c@{trxc.c}}
\doxysubsubsection{osmo\_trxc\_setslot\_build()}
{\footnotesize\ttfamily int osmo\+\_\+trxc\+\_\+setslot\+\_\+build (\begin{DoxyParamCaption}\item[{char $\ast$}]{buf,  }\item[{size\+\_\+t}]{buf\+\_\+size,  }\item[{const struct \textbf{ osmo\+\_\+trxc\+\_\+setslot} $\ast$}]{ss }\end{DoxyParamCaption})}



Serialize SETSLOT parameters (\char`\"{}$<$tn$>$ $<$chan\+\_\+comb$>$ [\+C$<$tsc$>$/\+S$<$tsc\+\_\+set$>$ ...]\char`\"{}) into the given buffer (zero-\/terminated), for use as msg-\/$>$params. 

\begin{DoxyReturn}{Returns}
length of the string (excl. \textquotesingle{}\textbackslash{}0\textquotesingle{}) on success; negative on error 
\end{DoxyReturn}


References \textbf{ osmo\+\_\+trxc\+\_\+setslot\+::chan\+\_\+comb}, \textbf{ osmo\+\_\+trxc\+\_\+setslot\+::num\+\_\+tsc}, \textbf{ osmo\+\_\+trxc\+\_\+vamos\+\_\+comb\+\_\+name()}, \textbf{ osmo\+\_\+trxc\+\_\+setslot\+::tn}, \textbf{ osmo\+\_\+trxc\+\_\+setslot\+\_\+tsc\+::tsc}, \textbf{ osmo\+\_\+trxc\+\_\+setslot\+::tsc}, \textbf{ osmo\+\_\+trxc\+\_\+setslot\+\_\+tsc\+::tsc\+\_\+set}, \textbf{ osmo\+\_\+trxc\+\_\+setslot\+::vamos}, and \textbf{ osmo\+\_\+trxc\+\_\+setslot\+::vamos\+\_\+comb}.

\mbox{\label{trxc_8c_a98e096247ecef4a30cd3788936d9add2}} 
\index{trxc.c@{trxc.c}!osmo\_trxc\_setslot\_parse@{osmo\_trxc\_setslot\_parse}}
\index{osmo\_trxc\_setslot\_parse@{osmo\_trxc\_setslot\_parse}!trxc.c@{trxc.c}}
\doxysubsubsection{osmo\_trxc\_setslot\_parse()}
{\footnotesize\ttfamily int osmo\+\_\+trxc\+\_\+setslot\+\_\+parse (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+trxc\+\_\+setslot} $\ast$}]{ss,  }\item[{const struct \textbf{ osmo\+\_\+trxc\+\_\+msg} $\ast$}]{msg }\end{DoxyParamCaption})}



Parse SETSLOT parameters (\char`\"{}$<$tn$>$ $<$chan\+\_\+comb$>$ [\+C$<$tsc$>$/\+S$<$tsc\+\_\+set$>$ ...]\char`\"{}) from an already-\/parsed TRXC message\textquotesingle{}s msg-\/$>$params. 

\begin{DoxyReturn}{Returns}
0 on success; negative on error 
\end{DoxyReturn}


References \textbf{ osmo\+\_\+trxc\+\_\+setslot\+::chan\+\_\+comb}, \textbf{ osmo\+\_\+trxc\+\_\+setslot\+::num\+\_\+tsc}, \textbf{ OSMO\+\_\+\+TRXC\+\_\+\+CHAN\+\_\+\+COMB\+\_\+\+PDTCH}, \textbf{ OSMO\+\_\+\+TRXC\+\_\+\+PARAMS\+\_\+\+LEN\+\_\+\+MAX}, \textbf{ OSMO\+\_\+\+TRXC\+\_\+\+SETSLOT\+\_\+\+TSC\+\_\+\+MAX}, \textbf{ osmo\+\_\+trxc\+\_\+vamos\+\_\+comb\+\_\+names}, \textbf{ osmo\+\_\+trxc\+\_\+msg\+::params}, \textbf{ osmo\+\_\+trxc\+\_\+setslot\+::tn}, \textbf{ osmo\+\_\+trxc\+\_\+setslot\+\_\+tsc\+::tsc}, \textbf{ osmo\+\_\+trxc\+\_\+setslot\+::tsc}, \textbf{ osmo\+\_\+trxc\+\_\+setslot\+\_\+tsc\+::tsc\+\_\+set}, \textbf{ osmo\+\_\+trxc\+\_\+setslot\+::vamos}, and \textbf{ osmo\+\_\+trxc\+\_\+setslot\+::vamos\+\_\+comb}.



\doxysubsection{Variable Documentation}
\mbox{\label{trxc_8c_ac97387c7110d10184867579427e0af27}} 
\index{trxc.c@{trxc.c}!osmo\_trxc\_chan\_comb\_names@{osmo\_trxc\_chan\_comb\_names}}
\index{osmo\_trxc\_chan\_comb\_names@{osmo\_trxc\_chan\_comb\_names}!trxc.c@{trxc.c}}
\doxysubsubsection{osmo\_trxc\_chan\_comb\_names}
{\footnotesize\ttfamily const struct value\+\_\+string osmo\+\_\+trxc\+\_\+chan\+\_\+comb\+\_\+names[$\,$]}

{\bfseries Initial value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{= \{}
\DoxyCodeLine{        \{ OSMO\_TRXC\_CHAN\_COMB\_UNUSED,          \textcolor{stringliteral}{"{}UNUSED"{}} \},}
\DoxyCodeLine{        \{ OSMO\_TRXC\_CHAN\_COMB\_TCHF,              \textcolor{stringliteral}{"{}TCH/F"{}} \},}
\DoxyCodeLine{        \{ OSMO\_TRXC\_CHAN\_COMB\_TCHH\_IDLE,    \textcolor{stringliteral}{"{}TCH/H (sub-\/ch 1 idle)"{}} \},}
\DoxyCodeLine{        \{ OSMO\_TRXC\_CHAN\_COMB\_TCHH,              \textcolor{stringliteral}{"{}TCH/H"{}} \},}
\DoxyCodeLine{        \{ OSMO\_TRXC\_CHAN\_COMB\_BCCH,              \textcolor{stringliteral}{"{}BCCH"{}} \},}
\DoxyCodeLine{        \{ OSMO\_TRXC\_CHAN\_COMB\_BCCH\_SDCCH4,        \textcolor{stringliteral}{"{}BCCH+SDCCH/4"{}} \},}
\DoxyCodeLine{        \{ OSMO\_TRXC\_CHAN\_COMB\_CCCH,              \textcolor{stringliteral}{"{}CCCH"{}} \},}
\DoxyCodeLine{        \{ OSMO\_TRXC\_CHAN\_COMB\_SDCCH8,          \textcolor{stringliteral}{"{}SDCCH/8"{}} \},}
\DoxyCodeLine{        \{ OSMO\_TRXC\_CHAN\_COMB\_TCHF\_FACCH\_SACCHM, \textcolor{stringliteral}{"{}TCH/F+FACCH+SACCH/M"{}} \},}
\DoxyCodeLine{        \{ OSMO\_TRXC\_CHAN\_COMB\_TCHF\_SACCHM,        \textcolor{stringliteral}{"{}TCH/F+SACCH/M"{}} \},}
\DoxyCodeLine{        \{ OSMO\_TRXC\_CHAN\_COMB\_TCHFD\_SACCHMD,    \textcolor{stringliteral}{"{}TCH/FD+SACCH/MD"{}} \},}
\DoxyCodeLine{        \{ OSMO\_TRXC\_CHAN\_COMB\_PBCCH,            \textcolor{stringliteral}{"{}PBCCH"{}} \},}
\DoxyCodeLine{        \{ OSMO\_TRXC\_CHAN\_COMB\_PCCCH,            \textcolor{stringliteral}{"{}PCCCH"{}} \},}
\DoxyCodeLine{        \{ OSMO\_TRXC\_CHAN\_COMB\_PDTCH,            \textcolor{stringliteral}{"{}PDTCH"{}} \},}
\DoxyCodeLine{        \{ 0, NULL \}}
\DoxyCodeLine{\}}

\end{DoxyCode}


Referenced by \textbf{ osmo\+\_\+trxc\+\_\+chan\+\_\+comb\+\_\+name()}.

\mbox{\label{trxc_8c_a31201fe720c726ae9b6a30b2b7555214}} 
\index{trxc.c@{trxc.c}!osmo\_trxc\_vamos\_comb\_names@{osmo\_trxc\_vamos\_comb\_names}}
\index{osmo\_trxc\_vamos\_comb\_names@{osmo\_trxc\_vamos\_comb\_names}!trxc.c@{trxc.c}}
\doxysubsubsection{osmo\_trxc\_vamos\_comb\_names}
{\footnotesize\ttfamily const struct value\+\_\+string osmo\+\_\+trxc\+\_\+vamos\+\_\+comb\+\_\+names[$\,$]}

{\bfseries Initial value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{= \{}
\DoxyCodeLine{        \{ OSMO\_TRXC\_VAMOS\_COMB\_VFF,  \textcolor{stringliteral}{"{}VFF"{}} \},}
\DoxyCodeLine{        \{ OSMO\_TRXC\_VAMOS\_COMB\_VHH,  \textcolor{stringliteral}{"{}VHH"{}} \},}
\DoxyCodeLine{        \{ OSMO\_TRXC\_VAMOS\_COMB\_VFH,  \textcolor{stringliteral}{"{}VFH"{}} \},}
\DoxyCodeLine{        \{ OSMO\_TRXC\_VAMOS\_COMB\_HVHH, \textcolor{stringliteral}{"{}HVHH"{}} \},}
\DoxyCodeLine{        \{ 0, NULL \}}
\DoxyCodeLine{\}}

\end{DoxyCode}


Referenced by \textbf{ osmo\+\_\+trxc\+\_\+setslot\+\_\+parse()}, and \textbf{ osmo\+\_\+trxc\+\_\+vamos\+\_\+comb\+\_\+name()}.

\mbox{\label{trxc_8c_acf60907df691ac6f33323b1b9fdb25e4}} 
\index{trxc.c@{trxc.c}!trxc\_msg\_type\_names@{trxc\_msg\_type\_names}}
\index{trxc\_msg\_type\_names@{trxc\_msg\_type\_names}!trxc.c@{trxc.c}}
\doxysubsubsection{trxc\_msg\_type\_names}
{\footnotesize\ttfamily const struct value\+\_\+string trxc\+\_\+msg\+\_\+type\+\_\+names[$\,$]\hspace{0.3cm}{\ttfamily [static]}}

{\bfseries Initial value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{= \{}
\DoxyCodeLine{        \{ OSMO\_TRXC\_MT\_CMD, \textcolor{stringliteral}{"{}CMD"{}} \},}
\DoxyCodeLine{        \{ OSMO\_TRXC\_MT\_RSP, \textcolor{stringliteral}{"{}RSP"{}} \},}
\DoxyCodeLine{        \{ OSMO\_TRXC\_MT\_IND, \textcolor{stringliteral}{"{}IND"{}} \},}
\DoxyCodeLine{        \{ 0, NULL \}}
\DoxyCodeLine{\}}

\end{DoxyCode}


Referenced by \textbf{ osmo\+\_\+trxc\+\_\+msg\+\_\+build()}.

