\doxysection{include/osmocom/trx/trxc.h File Reference}
\label{trxc_8h}\index{include/osmocom/trx/trxc.h@{include/osmocom/trx/trxc.h}}


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


{\ttfamily \#include $<$stdint.\+h$>$}\newline
{\ttfamily \#include $<$stddef.\+h$>$}\newline
{\ttfamily \#include $<$stdbool.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/core/utils.\+h$>$}\newline
\doxysubsection*{Data Structures}
\begin{DoxyCompactItemize}
\item 
struct \textbf{ osmo\+\_\+trxc\+\_\+msg}
\begin{DoxyCompactList}\small\item\em A single de-\//serialized TRXC message. \end{DoxyCompactList}\item 
struct \textbf{ osmo\+\_\+trxc\+\_\+setslot\+\_\+tsc}
\begin{DoxyCompactList}\small\item\em One \char`\"{}\+C$<$tsc$>$/\+S$<$tsc\+\_\+set$>$\char`\"{} override, as used by SETSLOT for (VAMOS) sub-\/channels that don\textquotesingle{}t use the endpoint-\/wide TSC (SETTSC). \end{DoxyCompactList}\item 
struct \textbf{ osmo\+\_\+trxc\+\_\+setslot}
\begin{DoxyCompactList}\small\item\em Parsed SETSLOT parameters. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection*{Macros}
\begin{DoxyCompactItemize}
\item 
\#define \textbf{ OSMO\+\_\+\+TRXC\+\_\+\+CMD\+\_\+\+LEN\+\_\+\+MAX}~32
\begin{DoxyCompactList}\small\item\em Maximum length of a command verb (incl. \end{DoxyCompactList}\item 
\#define \textbf{ OSMO\+\_\+\+TRXC\+\_\+\+MSG\+\_\+\+BUF\+\_\+\+SIZE}~1500
\begin{DoxyCompactList}\small\item\em Recommended TRXC socket read/send buffer size. \end{DoxyCompactList}\item 
\#define \textbf{ OSMO\+\_\+\+TRXC\+\_\+\+PARAMS\+\_\+\+LEN\+\_\+\+MAX}~(\textbf{ OSMO\+\_\+\+TRXC\+\_\+\+MSG\+\_\+\+BUF\+\_\+\+SIZE} -\/ \textbf{ OSMO\+\_\+\+TRXC\+\_\+\+CMD\+\_\+\+LEN\+\_\+\+MAX} -\/ 32)
\begin{DoxyCompactList}\small\item\em Maximum length of the parameters string (incl. \end{DoxyCompactList}\item 
\#define \textbf{ OSMO\+\_\+\+TRXC\+\_\+\+CMD\+\_\+\+POWERON}~\char`\"{}POWERON\char`\"{}
\item 
\#define \textbf{ OSMO\+\_\+\+TRXC\+\_\+\+CMD\+\_\+\+POWEROFF}~\char`\"{}POWEROFF\char`\"{}
\item 
\#define \textbf{ OSMO\+\_\+\+TRXC\+\_\+\+CMD\+\_\+\+RXTUNE}~\char`\"{}RXTUNE\char`\"{}
\item 
\#define \textbf{ OSMO\+\_\+\+TRXC\+\_\+\+CMD\+\_\+\+TXTUNE}~\char`\"{}TXTUNE\char`\"{}
\item 
\#define \textbf{ OSMO\+\_\+\+TRXC\+\_\+\+CMD\+\_\+\+SETSLOT}~\char`\"{}SETSLOT\char`\"{}
\item 
\#define \textbf{ OSMO\+\_\+\+TRXC\+\_\+\+CMD\+\_\+\+SETTSC}~\char`\"{}SETTSC\char`\"{}
\item 
\#define \textbf{ OSMO\+\_\+\+TRXC\+\_\+\+CMD\+\_\+\+SETBSIC}~\char`\"{}SETBSIC\char`\"{}
\item 
\#define \textbf{ OSMO\+\_\+\+TRXC\+\_\+\+CMD\+\_\+\+SETPOWER}~\char`\"{}SETPOWER\char`\"{}
\item 
\#define \textbf{ OSMO\+\_\+\+TRXC\+\_\+\+CMD\+\_\+\+ADJPOWER}~\char`\"{}ADJPOWER\char`\"{}
\item 
\#define \textbf{ OSMO\+\_\+\+TRXC\+\_\+\+CMD\+\_\+\+NOMTXPOWER}~\char`\"{}NOMTXPOWER\char`\"{}
\item 
\#define \textbf{ OSMO\+\_\+\+TRXC\+\_\+\+CMD\+\_\+\+SETRXGAIN}~\char`\"{}SETRXGAIN\char`\"{}
\item 
\#define \textbf{ OSMO\+\_\+\+TRXC\+\_\+\+CMD\+\_\+\+SETMAXDLY}~\char`\"{}SETMAXDLY\char`\"{}
\item 
\#define \textbf{ OSMO\+\_\+\+TRXC\+\_\+\+CMD\+\_\+\+SETMAXDLYNB}~\char`\"{}SETMAXDLYNB\char`\"{}
\item 
\#define \textbf{ OSMO\+\_\+\+TRXC\+\_\+\+CMD\+\_\+\+SETFORMAT}~\char`\"{}SETFORMAT\char`\"{}
\item 
\#define \textbf{ OSMO\+\_\+\+TRXC\+\_\+\+CMD\+\_\+\+HANDOVER}~\char`\"{}HANDOVER\char`\"{}
\item 
\#define \textbf{ OSMO\+\_\+\+TRXC\+\_\+\+CMD\+\_\+\+NOHANDOVER}~\char`\"{}NOHANDOVER\char`\"{}
\item 
\#define \textbf{ OSMO\+\_\+\+TRXC\+\_\+\+CMD\+\_\+\+RFMUTE}~\char`\"{}RFMUTE\char`\"{}
\item 
\#define \textbf{ OSMO\+\_\+\+TRXC\+\_\+\+CMD\+\_\+\+NOISELEV}~\char`\"{}NOISELEV\char`\"{}
\item 
\#define \textbf{ OSMO\+\_\+\+TRXC\+\_\+\+CMD\+\_\+\+SETFH}~\char`\"{}SETFH\char`\"{}
\item 
\#define \textbf{ OSMO\+\_\+\+TRXC\+\_\+\+CMD\+\_\+\+ERR}~\char`\"{}ERR\char`\"{}
\begin{DoxyCompactList}\small\item\em verb of a reject response \end{DoxyCompactList}\item 
\#define \textbf{ OSMO\+\_\+\+TRXC\+\_\+\+SETSLOT\+\_\+\+TSC\+\_\+\+MAX}~3
\begin{DoxyCompactList}\small\item\em up to 3 sub-\/channels (VAMOS \char`\"{}\+HVHH\char`\"{}) \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection*{Enumerations}
\begin{DoxyCompactItemize}
\item 
enum \textbf{ osmo\+\_\+trxc\+\_\+msg\+\_\+type} \{ \newline
\textbf{ OSMO\+\_\+\+TRXC\+\_\+\+MT\+\_\+\+CMD}
, \newline
\textbf{ OSMO\+\_\+\+TRXC\+\_\+\+MT\+\_\+\+RSP}
, \newline
\textbf{ OSMO\+\_\+\+TRXC\+\_\+\+MT\+\_\+\+IND}
 \}
\item 
enum \textbf{ osmo\+\_\+trxc\+\_\+chan\+\_\+comb} \{ \newline
\textbf{ OSMO\+\_\+\+TRXC\+\_\+\+CHAN\+\_\+\+COMB\+\_\+\+UNUSED} = 0
, \newline
\textbf{ OSMO\+\_\+\+TRXC\+\_\+\+CHAN\+\_\+\+COMB\+\_\+\+TCHF} = 1
, \newline
\textbf{ OSMO\+\_\+\+TRXC\+\_\+\+CHAN\+\_\+\+COMB\+\_\+\+TCHH\+\_\+\+IDLE} = 2
, \newline
\textbf{ OSMO\+\_\+\+TRXC\+\_\+\+CHAN\+\_\+\+COMB\+\_\+\+TCHH} = 3
, \newline
\textbf{ OSMO\+\_\+\+TRXC\+\_\+\+CHAN\+\_\+\+COMB\+\_\+\+BCCH} = 4
, \newline
\textbf{ OSMO\+\_\+\+TRXC\+\_\+\+CHAN\+\_\+\+COMB\+\_\+\+BCCH\+\_\+\+SDCCH4} = 5
, \newline
\textbf{ OSMO\+\_\+\+TRXC\+\_\+\+CHAN\+\_\+\+COMB\+\_\+\+CCCH} = 6
, \newline
\textbf{ OSMO\+\_\+\+TRXC\+\_\+\+CHAN\+\_\+\+COMB\+\_\+\+SDCCH8} = 7
, \newline
\textbf{ OSMO\+\_\+\+TRXC\+\_\+\+CHAN\+\_\+\+COMB\+\_\+\+TCHF\+\_\+\+FACCH\+\_\+\+SACCHM} = 8
, \newline
\textbf{ OSMO\+\_\+\+TRXC\+\_\+\+CHAN\+\_\+\+COMB\+\_\+\+TCHF\+\_\+\+SACCHM} = 9
, \newline
\textbf{ OSMO\+\_\+\+TRXC\+\_\+\+CHAN\+\_\+\+COMB\+\_\+\+TCHFD\+\_\+\+SACCHMD} = 10
, \newline
\textbf{ OSMO\+\_\+\+TRXC\+\_\+\+CHAN\+\_\+\+COMB\+\_\+\+PBCCH} = 11
, \newline
\textbf{ OSMO\+\_\+\+TRXC\+\_\+\+CHAN\+\_\+\+COMB\+\_\+\+PCCCH} = 12
, \newline
\textbf{ OSMO\+\_\+\+TRXC\+\_\+\+CHAN\+\_\+\+COMB\+\_\+\+PDTCH} = 13
 \}
\begin{DoxyCompactList}\small\item\em Classic (non-\/\+VAMOS) GSM TS 05.\+02 channel combinations, as used by the {\ttfamily chan\+\_\+comb} parameter of SETSLOT. \end{DoxyCompactList}\item 
enum \textbf{ osmo\+\_\+trxc\+\_\+vamos\+\_\+comb} \{ \newline
\textbf{ OSMO\+\_\+\+TRXC\+\_\+\+VAMOS\+\_\+\+COMB\+\_\+\+VFF} = 1
, \newline
\textbf{ OSMO\+\_\+\+TRXC\+\_\+\+VAMOS\+\_\+\+COMB\+\_\+\+VHH}
, \newline
\textbf{ OSMO\+\_\+\+TRXC\+\_\+\+VAMOS\+\_\+\+COMB\+\_\+\+VFH}
, \newline
\textbf{ OSMO\+\_\+\+TRXC\+\_\+\+VAMOS\+\_\+\+COMB\+\_\+\+HVHH}
 \}
\begin{DoxyCompactList}\small\item\em VAMOS-\/enabled channel combinations\+: the {\ttfamily chan\+\_\+comb} parameter of SETSLOT is symbolic (not numeric) for these. \end{DoxyCompactList}\end{DoxyCompactItemize}
\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 
static const char $\ast$ \textbf{ osmo\+\_\+trxc\+\_\+chan\+\_\+comb\+\_\+name} (enum \textbf{ osmo\+\_\+trxc\+\_\+chan\+\_\+comb} comb)
\item 
static const char $\ast$ \textbf{ osmo\+\_\+trxc\+\_\+vamos\+\_\+comb\+\_\+name} (enum \textbf{ osmo\+\_\+trxc\+\_\+vamos\+\_\+comb} comb)
\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 
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. 



\doxysubsection{Macro Definition Documentation}
\mbox{\label{trxc_8h_aa6d38fa406930aee7fa4e0f7d7ec5adb}} 
\index{trxc.h@{trxc.h}!OSMO\_TRXC\_CMD\_ADJPOWER@{OSMO\_TRXC\_CMD\_ADJPOWER}}
\index{OSMO\_TRXC\_CMD\_ADJPOWER@{OSMO\_TRXC\_CMD\_ADJPOWER}!trxc.h@{trxc.h}}
\doxysubsubsection{OSMO\_TRXC\_CMD\_ADJPOWER}
{\footnotesize\ttfamily \#define OSMO\+\_\+\+TRXC\+\_\+\+CMD\+\_\+\+ADJPOWER~\char`\"{}ADJPOWER\char`\"{}}

\mbox{\label{trxc_8h_ac8fc862bc8af79f369917862454cdacd}} 
\index{trxc.h@{trxc.h}!OSMO\_TRXC\_CMD\_ERR@{OSMO\_TRXC\_CMD\_ERR}}
\index{OSMO\_TRXC\_CMD\_ERR@{OSMO\_TRXC\_CMD\_ERR}!trxc.h@{trxc.h}}
\doxysubsubsection{OSMO\_TRXC\_CMD\_ERR}
{\footnotesize\ttfamily \#define OSMO\+\_\+\+TRXC\+\_\+\+CMD\+\_\+\+ERR~\char`\"{}ERR\char`\"{}}



verb of a reject response 

\mbox{\label{trxc_8h_aaaf4c94d644cd27301d75b64eac6c062}} 
\index{trxc.h@{trxc.h}!OSMO\_TRXC\_CMD\_HANDOVER@{OSMO\_TRXC\_CMD\_HANDOVER}}
\index{OSMO\_TRXC\_CMD\_HANDOVER@{OSMO\_TRXC\_CMD\_HANDOVER}!trxc.h@{trxc.h}}
\doxysubsubsection{OSMO\_TRXC\_CMD\_HANDOVER}
{\footnotesize\ttfamily \#define OSMO\+\_\+\+TRXC\+\_\+\+CMD\+\_\+\+HANDOVER~\char`\"{}HANDOVER\char`\"{}}

\mbox{\label{trxc_8h_a50bffa08e3e1468d8d72678bfabca940}} 
\index{trxc.h@{trxc.h}!OSMO\_TRXC\_CMD\_LEN\_MAX@{OSMO\_TRXC\_CMD\_LEN\_MAX}}
\index{OSMO\_TRXC\_CMD\_LEN\_MAX@{OSMO\_TRXC\_CMD\_LEN\_MAX}!trxc.h@{trxc.h}}
\doxysubsubsection{OSMO\_TRXC\_CMD\_LEN\_MAX}
{\footnotesize\ttfamily \#define OSMO\+\_\+\+TRXC\+\_\+\+CMD\+\_\+\+LEN\+\_\+\+MAX~32}



Maximum length of a command verb (incl. 

\textquotesingle{}\textbackslash{}0\textquotesingle{}) \mbox{\label{trxc_8h_aad102c708ce292e348d84e46181ae3df}} 
\index{trxc.h@{trxc.h}!OSMO\_TRXC\_CMD\_NOHANDOVER@{OSMO\_TRXC\_CMD\_NOHANDOVER}}
\index{OSMO\_TRXC\_CMD\_NOHANDOVER@{OSMO\_TRXC\_CMD\_NOHANDOVER}!trxc.h@{trxc.h}}
\doxysubsubsection{OSMO\_TRXC\_CMD\_NOHANDOVER}
{\footnotesize\ttfamily \#define OSMO\+\_\+\+TRXC\+\_\+\+CMD\+\_\+\+NOHANDOVER~\char`\"{}NOHANDOVER\char`\"{}}

\mbox{\label{trxc_8h_abe40cf832ec205ff2cb1c256ed6dd4b0}} 
\index{trxc.h@{trxc.h}!OSMO\_TRXC\_CMD\_NOISELEV@{OSMO\_TRXC\_CMD\_NOISELEV}}
\index{OSMO\_TRXC\_CMD\_NOISELEV@{OSMO\_TRXC\_CMD\_NOISELEV}!trxc.h@{trxc.h}}
\doxysubsubsection{OSMO\_TRXC\_CMD\_NOISELEV}
{\footnotesize\ttfamily \#define OSMO\+\_\+\+TRXC\+\_\+\+CMD\+\_\+\+NOISELEV~\char`\"{}NOISELEV\char`\"{}}

\mbox{\label{trxc_8h_ad5f9ffff2114e7bfb638bcf3afc304db}} 
\index{trxc.h@{trxc.h}!OSMO\_TRXC\_CMD\_NOMTXPOWER@{OSMO\_TRXC\_CMD\_NOMTXPOWER}}
\index{OSMO\_TRXC\_CMD\_NOMTXPOWER@{OSMO\_TRXC\_CMD\_NOMTXPOWER}!trxc.h@{trxc.h}}
\doxysubsubsection{OSMO\_TRXC\_CMD\_NOMTXPOWER}
{\footnotesize\ttfamily \#define OSMO\+\_\+\+TRXC\+\_\+\+CMD\+\_\+\+NOMTXPOWER~\char`\"{}NOMTXPOWER\char`\"{}}

\mbox{\label{trxc_8h_aa2e11501e056947bd129bdce2f44d941}} 
\index{trxc.h@{trxc.h}!OSMO\_TRXC\_CMD\_POWEROFF@{OSMO\_TRXC\_CMD\_POWEROFF}}
\index{OSMO\_TRXC\_CMD\_POWEROFF@{OSMO\_TRXC\_CMD\_POWEROFF}!trxc.h@{trxc.h}}
\doxysubsubsection{OSMO\_TRXC\_CMD\_POWEROFF}
{\footnotesize\ttfamily \#define OSMO\+\_\+\+TRXC\+\_\+\+CMD\+\_\+\+POWEROFF~\char`\"{}POWEROFF\char`\"{}}

\mbox{\label{trxc_8h_a090ceabffc1614e3a8b7aa610c30cd57}} 
\index{trxc.h@{trxc.h}!OSMO\_TRXC\_CMD\_POWERON@{OSMO\_TRXC\_CMD\_POWERON}}
\index{OSMO\_TRXC\_CMD\_POWERON@{OSMO\_TRXC\_CMD\_POWERON}!trxc.h@{trxc.h}}
\doxysubsubsection{OSMO\_TRXC\_CMD\_POWERON}
{\footnotesize\ttfamily \#define OSMO\+\_\+\+TRXC\+\_\+\+CMD\+\_\+\+POWERON~\char`\"{}POWERON\char`\"{}}

\mbox{\label{trxc_8h_acf90d2b817b73a0ac6ec2cfe3861ebc5}} 
\index{trxc.h@{trxc.h}!OSMO\_TRXC\_CMD\_RFMUTE@{OSMO\_TRXC\_CMD\_RFMUTE}}
\index{OSMO\_TRXC\_CMD\_RFMUTE@{OSMO\_TRXC\_CMD\_RFMUTE}!trxc.h@{trxc.h}}
\doxysubsubsection{OSMO\_TRXC\_CMD\_RFMUTE}
{\footnotesize\ttfamily \#define OSMO\+\_\+\+TRXC\+\_\+\+CMD\+\_\+\+RFMUTE~\char`\"{}RFMUTE\char`\"{}}

\mbox{\label{trxc_8h_ad4cb959bd440504df7dfe726be9b0d9c}} 
\index{trxc.h@{trxc.h}!OSMO\_TRXC\_CMD\_RXTUNE@{OSMO\_TRXC\_CMD\_RXTUNE}}
\index{OSMO\_TRXC\_CMD\_RXTUNE@{OSMO\_TRXC\_CMD\_RXTUNE}!trxc.h@{trxc.h}}
\doxysubsubsection{OSMO\_TRXC\_CMD\_RXTUNE}
{\footnotesize\ttfamily \#define OSMO\+\_\+\+TRXC\+\_\+\+CMD\+\_\+\+RXTUNE~\char`\"{}RXTUNE\char`\"{}}

\mbox{\label{trxc_8h_a0b545163fc8ef9c5a4b769d21c57ba9d}} 
\index{trxc.h@{trxc.h}!OSMO\_TRXC\_CMD\_SETBSIC@{OSMO\_TRXC\_CMD\_SETBSIC}}
\index{OSMO\_TRXC\_CMD\_SETBSIC@{OSMO\_TRXC\_CMD\_SETBSIC}!trxc.h@{trxc.h}}
\doxysubsubsection{OSMO\_TRXC\_CMD\_SETBSIC}
{\footnotesize\ttfamily \#define OSMO\+\_\+\+TRXC\+\_\+\+CMD\+\_\+\+SETBSIC~\char`\"{}SETBSIC\char`\"{}}

\mbox{\label{trxc_8h_a299b8a464b51fecf877ce5635377b0bf}} 
\index{trxc.h@{trxc.h}!OSMO\_TRXC\_CMD\_SETFH@{OSMO\_TRXC\_CMD\_SETFH}}
\index{OSMO\_TRXC\_CMD\_SETFH@{OSMO\_TRXC\_CMD\_SETFH}!trxc.h@{trxc.h}}
\doxysubsubsection{OSMO\_TRXC\_CMD\_SETFH}
{\footnotesize\ttfamily \#define OSMO\+\_\+\+TRXC\+\_\+\+CMD\+\_\+\+SETFH~\char`\"{}SETFH\char`\"{}}

\mbox{\label{trxc_8h_ad841eae9c1a1177818a55b310a89993d}} 
\index{trxc.h@{trxc.h}!OSMO\_TRXC\_CMD\_SETFORMAT@{OSMO\_TRXC\_CMD\_SETFORMAT}}
\index{OSMO\_TRXC\_CMD\_SETFORMAT@{OSMO\_TRXC\_CMD\_SETFORMAT}!trxc.h@{trxc.h}}
\doxysubsubsection{OSMO\_TRXC\_CMD\_SETFORMAT}
{\footnotesize\ttfamily \#define OSMO\+\_\+\+TRXC\+\_\+\+CMD\+\_\+\+SETFORMAT~\char`\"{}SETFORMAT\char`\"{}}

\mbox{\label{trxc_8h_ab422f5c452fac0e7e760fc95c45d5572}} 
\index{trxc.h@{trxc.h}!OSMO\_TRXC\_CMD\_SETMAXDLY@{OSMO\_TRXC\_CMD\_SETMAXDLY}}
\index{OSMO\_TRXC\_CMD\_SETMAXDLY@{OSMO\_TRXC\_CMD\_SETMAXDLY}!trxc.h@{trxc.h}}
\doxysubsubsection{OSMO\_TRXC\_CMD\_SETMAXDLY}
{\footnotesize\ttfamily \#define OSMO\+\_\+\+TRXC\+\_\+\+CMD\+\_\+\+SETMAXDLY~\char`\"{}SETMAXDLY\char`\"{}}

\mbox{\label{trxc_8h_a0ff84092cb47ca69c1cb58cd7c74d1a1}} 
\index{trxc.h@{trxc.h}!OSMO\_TRXC\_CMD\_SETMAXDLYNB@{OSMO\_TRXC\_CMD\_SETMAXDLYNB}}
\index{OSMO\_TRXC\_CMD\_SETMAXDLYNB@{OSMO\_TRXC\_CMD\_SETMAXDLYNB}!trxc.h@{trxc.h}}
\doxysubsubsection{OSMO\_TRXC\_CMD\_SETMAXDLYNB}
{\footnotesize\ttfamily \#define OSMO\+\_\+\+TRXC\+\_\+\+CMD\+\_\+\+SETMAXDLYNB~\char`\"{}SETMAXDLYNB\char`\"{}}

\mbox{\label{trxc_8h_a394933fe6b02a8d616f8a378c6ef53c9}} 
\index{trxc.h@{trxc.h}!OSMO\_TRXC\_CMD\_SETPOWER@{OSMO\_TRXC\_CMD\_SETPOWER}}
\index{OSMO\_TRXC\_CMD\_SETPOWER@{OSMO\_TRXC\_CMD\_SETPOWER}!trxc.h@{trxc.h}}
\doxysubsubsection{OSMO\_TRXC\_CMD\_SETPOWER}
{\footnotesize\ttfamily \#define OSMO\+\_\+\+TRXC\+\_\+\+CMD\+\_\+\+SETPOWER~\char`\"{}SETPOWER\char`\"{}}

\mbox{\label{trxc_8h_ab03a438eb79bfd4d50cd49c45beb8d9d}} 
\index{trxc.h@{trxc.h}!OSMO\_TRXC\_CMD\_SETRXGAIN@{OSMO\_TRXC\_CMD\_SETRXGAIN}}
\index{OSMO\_TRXC\_CMD\_SETRXGAIN@{OSMO\_TRXC\_CMD\_SETRXGAIN}!trxc.h@{trxc.h}}
\doxysubsubsection{OSMO\_TRXC\_CMD\_SETRXGAIN}
{\footnotesize\ttfamily \#define OSMO\+\_\+\+TRXC\+\_\+\+CMD\+\_\+\+SETRXGAIN~\char`\"{}SETRXGAIN\char`\"{}}

\mbox{\label{trxc_8h_ad1f37c75317e4a9470305197b06721aa}} 
\index{trxc.h@{trxc.h}!OSMO\_TRXC\_CMD\_SETSLOT@{OSMO\_TRXC\_CMD\_SETSLOT}}
\index{OSMO\_TRXC\_CMD\_SETSLOT@{OSMO\_TRXC\_CMD\_SETSLOT}!trxc.h@{trxc.h}}
\doxysubsubsection{OSMO\_TRXC\_CMD\_SETSLOT}
{\footnotesize\ttfamily \#define OSMO\+\_\+\+TRXC\+\_\+\+CMD\+\_\+\+SETSLOT~\char`\"{}SETSLOT\char`\"{}}

\mbox{\label{trxc_8h_a75f2bff0d5a68dea001add385f94d7ee}} 
\index{trxc.h@{trxc.h}!OSMO\_TRXC\_CMD\_SETTSC@{OSMO\_TRXC\_CMD\_SETTSC}}
\index{OSMO\_TRXC\_CMD\_SETTSC@{OSMO\_TRXC\_CMD\_SETTSC}!trxc.h@{trxc.h}}
\doxysubsubsection{OSMO\_TRXC\_CMD\_SETTSC}
{\footnotesize\ttfamily \#define OSMO\+\_\+\+TRXC\+\_\+\+CMD\+\_\+\+SETTSC~\char`\"{}SETTSC\char`\"{}}

\mbox{\label{trxc_8h_a15e371e23da38c5b08efd158f0092080}} 
\index{trxc.h@{trxc.h}!OSMO\_TRXC\_CMD\_TXTUNE@{OSMO\_TRXC\_CMD\_TXTUNE}}
\index{OSMO\_TRXC\_CMD\_TXTUNE@{OSMO\_TRXC\_CMD\_TXTUNE}!trxc.h@{trxc.h}}
\doxysubsubsection{OSMO\_TRXC\_CMD\_TXTUNE}
{\footnotesize\ttfamily \#define OSMO\+\_\+\+TRXC\+\_\+\+CMD\+\_\+\+TXTUNE~\char`\"{}TXTUNE\char`\"{}}

\mbox{\label{trxc_8h_a4c95bf655cd97d2443db7e69984a07cc}} 
\index{trxc.h@{trxc.h}!OSMO\_TRXC\_MSG\_BUF\_SIZE@{OSMO\_TRXC\_MSG\_BUF\_SIZE}}
\index{OSMO\_TRXC\_MSG\_BUF\_SIZE@{OSMO\_TRXC\_MSG\_BUF\_SIZE}!trxc.h@{trxc.h}}
\doxysubsubsection{OSMO\_TRXC\_MSG\_BUF\_SIZE}
{\footnotesize\ttfamily \#define OSMO\+\_\+\+TRXC\+\_\+\+MSG\+\_\+\+BUF\+\_\+\+SIZE~1500}



Recommended TRXC socket read/send buffer size. 

\mbox{\label{trxc_8h_accafdd91b954d4836a66c66486ba564a}} 
\index{trxc.h@{trxc.h}!OSMO\_TRXC\_PARAMS\_LEN\_MAX@{OSMO\_TRXC\_PARAMS\_LEN\_MAX}}
\index{OSMO\_TRXC\_PARAMS\_LEN\_MAX@{OSMO\_TRXC\_PARAMS\_LEN\_MAX}!trxc.h@{trxc.h}}
\doxysubsubsection{OSMO\_TRXC\_PARAMS\_LEN\_MAX}
{\footnotesize\ttfamily \#define OSMO\+\_\+\+TRXC\+\_\+\+PARAMS\+\_\+\+LEN\+\_\+\+MAX~(\textbf{ OSMO\+\_\+\+TRXC\+\_\+\+MSG\+\_\+\+BUF\+\_\+\+SIZE} -\/ \textbf{ OSMO\+\_\+\+TRXC\+\_\+\+CMD\+\_\+\+LEN\+\_\+\+MAX} -\/ 32)}



Maximum length of the parameters string (incl. 

\textquotesingle{}\textbackslash{}0\textquotesingle{}). Must be large enough for SETFH, which carries the whole Mobile Allocation as pairs of Rx/\+Tx frequencies in k\+Hz (over 1000 characters for 64 ARFCNs). Sized so that any message (\char`\"{}\+RSP \char`\"{} + verb + status) still fits the buffer above; the extra -\/32 is a rounded-\/up safety margin for that fixed overhead. \mbox{\label{trxc_8h_a31d6bb99bc2b88e10dd5003bd5d11449}} 
\index{trxc.h@{trxc.h}!OSMO\_TRXC\_SETSLOT\_TSC\_MAX@{OSMO\_TRXC\_SETSLOT\_TSC\_MAX}}
\index{OSMO\_TRXC\_SETSLOT\_TSC\_MAX@{OSMO\_TRXC\_SETSLOT\_TSC\_MAX}!trxc.h@{trxc.h}}
\doxysubsubsection{OSMO\_TRXC\_SETSLOT\_TSC\_MAX}
{\footnotesize\ttfamily \#define OSMO\+\_\+\+TRXC\+\_\+\+SETSLOT\+\_\+\+TSC\+\_\+\+MAX~3}



up to 3 sub-\/channels (VAMOS \char`\"{}\+HVHH\char`\"{}) 



\doxysubsection{Enumeration Type Documentation}
\mbox{\label{trxc_8h_aff9778450b84320cd965f936d75a7a6e}} 
\index{trxc.h@{trxc.h}!osmo\_trxc\_chan\_comb@{osmo\_trxc\_chan\_comb}}
\index{osmo\_trxc\_chan\_comb@{osmo\_trxc\_chan\_comb}!trxc.h@{trxc.h}}
\doxysubsubsection{osmo\_trxc\_chan\_comb}
{\footnotesize\ttfamily enum \textbf{ osmo\+\_\+trxc\+\_\+chan\+\_\+comb}}



Classic (non-\/\+VAMOS) GSM TS 05.\+02 channel combinations, as used by the {\ttfamily chan\+\_\+comb} parameter of SETSLOT. 

Numeric values match the wire format. \begin{DoxyEnumFields}{Enumerator}
\raisebox{\heightof{T}}[0pt][0pt]{\index{OSMO\_TRXC\_CHAN\_COMB\_UNUSED@{OSMO\_TRXC\_CHAN\_COMB\_UNUSED}!trxc.h@{trxc.h}}\index{trxc.h@{trxc.h}!OSMO\_TRXC\_CHAN\_COMB\_UNUSED@{OSMO\_TRXC\_CHAN\_COMB\_UNUSED}}}\mbox{\label{trxc_8h_aff9778450b84320cd965f936d75a7a6ea4ff735a609e05b3c89d37e410016eb7d}} 
OSMO\+\_\+\+TRXC\+\_\+\+CHAN\+\_\+\+COMB\+\_\+\+UNUSED&Channel is transmitted, but unused. \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{OSMO\_TRXC\_CHAN\_COMB\_TCHF@{OSMO\_TRXC\_CHAN\_COMB\_TCHF}!trxc.h@{trxc.h}}\index{trxc.h@{trxc.h}!OSMO\_TRXC\_CHAN\_COMB\_TCHF@{OSMO\_TRXC\_CHAN\_COMB\_TCHF}}}\mbox{\label{trxc_8h_aff9778450b84320cd965f936d75a7a6eafffe37acebbf91bf235f07537ccd3884}} 
OSMO\+\_\+\+TRXC\+\_\+\+CHAN\+\_\+\+COMB\+\_\+\+TCHF&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{OSMO\_TRXC\_CHAN\_COMB\_TCHH\_IDLE@{OSMO\_TRXC\_CHAN\_COMB\_TCHH\_IDLE}!trxc.h@{trxc.h}}\index{trxc.h@{trxc.h}!OSMO\_TRXC\_CHAN\_COMB\_TCHH\_IDLE@{OSMO\_TRXC\_CHAN\_COMB\_TCHH\_IDLE}}}\mbox{\label{trxc_8h_aff9778450b84320cd965f936d75a7a6ea716b216c3463848c99c543ba7f7d2bb7}} 
OSMO\+\_\+\+TRXC\+\_\+\+CHAN\+\_\+\+COMB\+\_\+\+TCHH\+\_\+\+IDLE&TCH/\+HS, idle every other slot. \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{OSMO\_TRXC\_CHAN\_COMB\_TCHH@{OSMO\_TRXC\_CHAN\_COMB\_TCHH}!trxc.h@{trxc.h}}\index{trxc.h@{trxc.h}!OSMO\_TRXC\_CHAN\_COMB\_TCHH@{OSMO\_TRXC\_CHAN\_COMB\_TCHH}}}\mbox{\label{trxc_8h_aff9778450b84320cd965f936d75a7a6ea0c8a1c48b2211dd7bbb1009e0f607130}} 
OSMO\+\_\+\+TRXC\+\_\+\+CHAN\+\_\+\+COMB\+\_\+\+TCHH&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{OSMO\_TRXC\_CHAN\_COMB\_BCCH@{OSMO\_TRXC\_CHAN\_COMB\_BCCH}!trxc.h@{trxc.h}}\index{trxc.h@{trxc.h}!OSMO\_TRXC\_CHAN\_COMB\_BCCH@{OSMO\_TRXC\_CHAN\_COMB\_BCCH}}}\mbox{\label{trxc_8h_aff9778450b84320cd965f936d75a7a6ea0bfaac2e820fc04f3d8769141acd412e}} 
OSMO\+\_\+\+TRXC\+\_\+\+CHAN\+\_\+\+COMB\+\_\+\+BCCH&DL\+: FCCH+\+SCH+\+CCCH+\+BCCH, UL\+: RACH. \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{OSMO\_TRXC\_CHAN\_COMB\_BCCH\_SDCCH4@{OSMO\_TRXC\_CHAN\_COMB\_BCCH\_SDCCH4}!trxc.h@{trxc.h}}\index{trxc.h@{trxc.h}!OSMO\_TRXC\_CHAN\_COMB\_BCCH\_SDCCH4@{OSMO\_TRXC\_CHAN\_COMB\_BCCH\_SDCCH4}}}\mbox{\label{trxc_8h_aff9778450b84320cd965f936d75a7a6ea08eafcc0d025fc5c7c2ec281236d75aa}} 
OSMO\+\_\+\+TRXC\+\_\+\+CHAN\+\_\+\+COMB\+\_\+\+BCCH\+\_\+\+SDCCH4&DL\+: +SDCCH/4+\+SACCH/4, UL\+: +SDCCH/4. \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{OSMO\_TRXC\_CHAN\_COMB\_CCCH@{OSMO\_TRXC\_CHAN\_COMB\_CCCH}!trxc.h@{trxc.h}}\index{trxc.h@{trxc.h}!OSMO\_TRXC\_CHAN\_COMB\_CCCH@{OSMO\_TRXC\_CHAN\_COMB\_CCCH}}}\mbox{\label{trxc_8h_aff9778450b84320cd965f936d75a7a6ea0c28b2d18f160439e73b0fe96e4a7f4f}} 
OSMO\+\_\+\+TRXC\+\_\+\+CHAN\+\_\+\+COMB\+\_\+\+CCCH&DL\+: CCCH+\+BCCH, UL\+: RACH. \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{OSMO\_TRXC\_CHAN\_COMB\_SDCCH8@{OSMO\_TRXC\_CHAN\_COMB\_SDCCH8}!trxc.h@{trxc.h}}\index{trxc.h@{trxc.h}!OSMO\_TRXC\_CHAN\_COMB\_SDCCH8@{OSMO\_TRXC\_CHAN\_COMB\_SDCCH8}}}\mbox{\label{trxc_8h_aff9778450b84320cd965f936d75a7a6ea4a6dde1c4c2751d746b10b554991bd47}} 
OSMO\+\_\+\+TRXC\+\_\+\+CHAN\+\_\+\+COMB\+\_\+\+SDCCH8&SDCCH/8 + SACCH/8. \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{OSMO\_TRXC\_CHAN\_COMB\_TCHF\_FACCH\_SACCHM@{OSMO\_TRXC\_CHAN\_COMB\_TCHF\_FACCH\_SACCHM}!trxc.h@{trxc.h}}\index{trxc.h@{trxc.h}!OSMO\_TRXC\_CHAN\_COMB\_TCHF\_FACCH\_SACCHM@{OSMO\_TRXC\_CHAN\_COMB\_TCHF\_FACCH\_SACCHM}}}\mbox{\label{trxc_8h_aff9778450b84320cd965f936d75a7a6ea1d968dd52a0039e764fd0919dfdaa974}} 
OSMO\+\_\+\+TRXC\+\_\+\+CHAN\+\_\+\+COMB\+\_\+\+TCHF\+\_\+\+FACCH\+\_\+\+SACCHM&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{OSMO\_TRXC\_CHAN\_COMB\_TCHF\_SACCHM@{OSMO\_TRXC\_CHAN\_COMB\_TCHF\_SACCHM}!trxc.h@{trxc.h}}\index{trxc.h@{trxc.h}!OSMO\_TRXC\_CHAN\_COMB\_TCHF\_SACCHM@{OSMO\_TRXC\_CHAN\_COMB\_TCHF\_SACCHM}}}\mbox{\label{trxc_8h_aff9778450b84320cd965f936d75a7a6ea1b227d0b6872f5bae38d015a53f61613}} 
OSMO\+\_\+\+TRXC\+\_\+\+CHAN\+\_\+\+COMB\+\_\+\+TCHF\+\_\+\+SACCHM&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{OSMO\_TRXC\_CHAN\_COMB\_TCHFD\_SACCHMD@{OSMO\_TRXC\_CHAN\_COMB\_TCHFD\_SACCHMD}!trxc.h@{trxc.h}}\index{trxc.h@{trxc.h}!OSMO\_TRXC\_CHAN\_COMB\_TCHFD\_SACCHMD@{OSMO\_TRXC\_CHAN\_COMB\_TCHFD\_SACCHMD}}}\mbox{\label{trxc_8h_aff9778450b84320cd965f936d75a7a6eacdbd98258b8a1235a5b85ce0b0168eb8}} 
OSMO\+\_\+\+TRXC\+\_\+\+CHAN\+\_\+\+COMB\+\_\+\+TCHFD\+\_\+\+SACCHMD&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{OSMO\_TRXC\_CHAN\_COMB\_PBCCH@{OSMO\_TRXC\_CHAN\_COMB\_PBCCH}!trxc.h@{trxc.h}}\index{trxc.h@{trxc.h}!OSMO\_TRXC\_CHAN\_COMB\_PBCCH@{OSMO\_TRXC\_CHAN\_COMB\_PBCCH}}}\mbox{\label{trxc_8h_aff9778450b84320cd965f936d75a7a6eaa916e5996eb19612abe3cd176388a0e0}} 
OSMO\+\_\+\+TRXC\+\_\+\+CHAN\+\_\+\+COMB\+\_\+\+PBCCH&PBCCH+\+PCCCH+\+PDTCH+\+PACCH+\+PTCCH. \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{OSMO\_TRXC\_CHAN\_COMB\_PCCCH@{OSMO\_TRXC\_CHAN\_COMB\_PCCCH}!trxc.h@{trxc.h}}\index{trxc.h@{trxc.h}!OSMO\_TRXC\_CHAN\_COMB\_PCCCH@{OSMO\_TRXC\_CHAN\_COMB\_PCCCH}}}\mbox{\label{trxc_8h_aff9778450b84320cd965f936d75a7a6ea59582889b20abc039c9dc72ed0e82005}} 
OSMO\+\_\+\+TRXC\+\_\+\+CHAN\+\_\+\+COMB\+\_\+\+PCCCH&PCCCH+\+PDTCH+\+PACCH+\+PTCCH. \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{OSMO\_TRXC\_CHAN\_COMB\_PDTCH@{OSMO\_TRXC\_CHAN\_COMB\_PDTCH}!trxc.h@{trxc.h}}\index{trxc.h@{trxc.h}!OSMO\_TRXC\_CHAN\_COMB\_PDTCH@{OSMO\_TRXC\_CHAN\_COMB\_PDTCH}}}\mbox{\label{trxc_8h_aff9778450b84320cd965f936d75a7a6ea3c766a2f26da4ba7d0d75432f222c292}} 
OSMO\+\_\+\+TRXC\+\_\+\+CHAN\+\_\+\+COMB\+\_\+\+PDTCH&PDTCH+\+PACCH+\+PTCCH. \\
\hline

\end{DoxyEnumFields}
\mbox{\label{trxc_8h_ad78b74aa3af9b4f40fc93d7f6dee826e}} 
\index{trxc.h@{trxc.h}!osmo\_trxc\_msg\_type@{osmo\_trxc\_msg\_type}}
\index{osmo\_trxc\_msg\_type@{osmo\_trxc\_msg\_type}!trxc.h@{trxc.h}}
\doxysubsubsection{osmo\_trxc\_msg\_type}
{\footnotesize\ttfamily enum \textbf{ osmo\+\_\+trxc\+\_\+msg\+\_\+type}}

\begin{DoxyEnumFields}{Enumerator}
\raisebox{\heightof{T}}[0pt][0pt]{\index{OSMO\_TRXC\_MT\_CMD@{OSMO\_TRXC\_MT\_CMD}!trxc.h@{trxc.h}}\index{trxc.h@{trxc.h}!OSMO\_TRXC\_MT\_CMD@{OSMO\_TRXC\_MT\_CMD}}}\mbox{\label{trxc_8h_ad78b74aa3af9b4f40fc93d7f6dee826ea73fc63648629594d37889a5781ecaa3c}} 
OSMO\+\_\+\+TRXC\+\_\+\+MT\+\_\+\+CMD&\char`\"{}\+CMD $<$verb$>$ [$<$params$>$]\char`\"{} (L1 -\/$>$ TRX) \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{OSMO\_TRXC\_MT\_RSP@{OSMO\_TRXC\_MT\_RSP}!trxc.h@{trxc.h}}\index{trxc.h@{trxc.h}!OSMO\_TRXC\_MT\_RSP@{OSMO\_TRXC\_MT\_RSP}}}\mbox{\label{trxc_8h_ad78b74aa3af9b4f40fc93d7f6dee826eaffa4abb47d26e68efbc3e8b632452731}} 
OSMO\+\_\+\+TRXC\+\_\+\+MT\+\_\+\+RSP&\char`\"{}\+RSP $<$verb$>$ $<$status$>$ [$<$params$>$]\char`\"{} (TRX -\/$>$ L1) \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{OSMO\_TRXC\_MT\_IND@{OSMO\_TRXC\_MT\_IND}!trxc.h@{trxc.h}}\index{trxc.h@{trxc.h}!OSMO\_TRXC\_MT\_IND@{OSMO\_TRXC\_MT\_IND}}}\mbox{\label{trxc_8h_ad78b74aa3af9b4f40fc93d7f6dee826ea7f71e1229a0d449985efead38921e415}} 
OSMO\+\_\+\+TRXC\+\_\+\+MT\+\_\+\+IND&\char`\"{}\+IND $<$verb$>$ $<$params$>$\char`\"{} (TRX -\/$>$ L1) \\
\hline

\end{DoxyEnumFields}
\mbox{\label{trxc_8h_a996f47680cc2135d9f507756808c3671}} 
\index{trxc.h@{trxc.h}!osmo\_trxc\_vamos\_comb@{osmo\_trxc\_vamos\_comb}}
\index{osmo\_trxc\_vamos\_comb@{osmo\_trxc\_vamos\_comb}!trxc.h@{trxc.h}}
\doxysubsubsection{osmo\_trxc\_vamos\_comb}
{\footnotesize\ttfamily enum \textbf{ osmo\+\_\+trxc\+\_\+vamos\+\_\+comb}}



VAMOS-\/enabled channel combinations\+: the {\ttfamily chan\+\_\+comb} parameter of SETSLOT is symbolic (not numeric) for these. 

\begin{DoxyEnumFields}{Enumerator}
\raisebox{\heightof{T}}[0pt][0pt]{\index{OSMO\_TRXC\_VAMOS\_COMB\_VFF@{OSMO\_TRXC\_VAMOS\_COMB\_VFF}!trxc.h@{trxc.h}}\index{trxc.h@{trxc.h}!OSMO\_TRXC\_VAMOS\_COMB\_VFF@{OSMO\_TRXC\_VAMOS\_COMB\_VFF}}}\mbox{\label{trxc_8h_a996f47680cc2135d9f507756808c3671ac2ce8ddfff18202d2293f115dfbc6b44}} 
OSMO\+\_\+\+TRXC\+\_\+\+VAMOS\+\_\+\+COMB\+\_\+\+VFF&V0(TCH/F) \& V1(TCH/F) \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{OSMO\_TRXC\_VAMOS\_COMB\_VHH@{OSMO\_TRXC\_VAMOS\_COMB\_VHH}!trxc.h@{trxc.h}}\index{trxc.h@{trxc.h}!OSMO\_TRXC\_VAMOS\_COMB\_VHH@{OSMO\_TRXC\_VAMOS\_COMB\_VHH}}}\mbox{\label{trxc_8h_a996f47680cc2135d9f507756808c3671ab65de32920d025b2c8db8d0c6893bb37}} 
OSMO\+\_\+\+TRXC\+\_\+\+VAMOS\+\_\+\+COMB\+\_\+\+VHH&V0(TCH/\+H0)\&V1(TCH/\+H0) + V0(TCH/\+H1)\&V1(TCH/\+H1) \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{OSMO\_TRXC\_VAMOS\_COMB\_VFH@{OSMO\_TRXC\_VAMOS\_COMB\_VFH}!trxc.h@{trxc.h}}\index{trxc.h@{trxc.h}!OSMO\_TRXC\_VAMOS\_COMB\_VFH@{OSMO\_TRXC\_VAMOS\_COMB\_VFH}}}\mbox{\label{trxc_8h_a996f47680cc2135d9f507756808c3671a99d4a5a17692914d5ee8f0d47f9ebbdb}} 
OSMO\+\_\+\+TRXC\+\_\+\+VAMOS\+\_\+\+COMB\+\_\+\+VFH&V0(TCH/F) \& V1(TCH/\+H0) + V0(TCH/F) \& V1(TCH/\+H1) \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{OSMO\_TRXC\_VAMOS\_COMB\_HVHH@{OSMO\_TRXC\_VAMOS\_COMB\_HVHH}!trxc.h@{trxc.h}}\index{trxc.h@{trxc.h}!OSMO\_TRXC\_VAMOS\_COMB\_HVHH@{OSMO\_TRXC\_VAMOS\_COMB\_HVHH}}}\mbox{\label{trxc_8h_a996f47680cc2135d9f507756808c3671a535c796212fa5bfd505edbf0548db4f7}} 
OSMO\+\_\+\+TRXC\+\_\+\+VAMOS\+\_\+\+COMB\+\_\+\+HVHH&TCH/\+H0 + V0(TCH/\+H1) \& V1(TCH/\+H1) (mixed) \\
\hline

\end{DoxyEnumFields}


\doxysubsection{Function Documentation}
\mbox{\label{trxc_8h_a6e1a862bfbe249057eb574244c8966bc}} 
\index{trxc.h@{trxc.h}!osmo\_trxc\_chan\_comb\_name@{osmo\_trxc\_chan\_comb\_name}}
\index{osmo\_trxc\_chan\_comb\_name@{osmo\_trxc\_chan\_comb\_name}!trxc.h@{trxc.h}}
\doxysubsubsection{osmo\_trxc\_chan\_comb\_name()}
{\footnotesize\ttfamily static const char $\ast$ osmo\+\_\+trxc\+\_\+chan\+\_\+comb\+\_\+name (\begin{DoxyParamCaption}\item[{enum \textbf{ osmo\+\_\+trxc\+\_\+chan\+\_\+comb}}]{comb }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}



References \textbf{ osmo\+\_\+trxc\+\_\+chan\+\_\+comb\+\_\+names}.

\mbox{\label{trxc_8h_ab2b78df335a1816da41cc49fd2bcee2f}} 
\index{trxc.h@{trxc.h}!osmo\_trxc\_clock\_ind\_build@{osmo\_trxc\_clock\_ind\_build}}
\index{osmo\_trxc\_clock\_ind\_build@{osmo\_trxc\_clock\_ind\_build}!trxc.h@{trxc.h}}
\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_8h_a20c78e09170212ca79c29e55e3a03686}} 
\index{trxc.h@{trxc.h}!osmo\_trxc\_clock\_ind\_parse@{osmo\_trxc\_clock\_ind\_parse}}
\index{osmo\_trxc\_clock\_ind\_parse@{osmo\_trxc\_clock\_ind\_parse}!trxc.h@{trxc.h}}
\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_8h_a342dad8454176839c10696e7fdba5c1a}} 
\index{trxc.h@{trxc.h}!osmo\_trxc\_msg\_build@{osmo\_trxc\_msg\_build}}
\index{osmo\_trxc\_msg\_build@{osmo\_trxc\_msg\_build}!trxc.h@{trxc.h}}
\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_8h_ae9883862e555b73abe5a2af73feef045}} 
\index{trxc.h@{trxc.h}!osmo\_trxc\_msg\_name@{osmo\_trxc\_msg\_name}}
\index{osmo\_trxc\_msg\_name@{osmo\_trxc\_msg\_name}!trxc.h@{trxc.h}}
\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_8h_a1230febcdc6035e7b7ebeb5cd39d64dd}} 
\index{trxc.h@{trxc.h}!osmo\_trxc\_msg\_name\_buf@{osmo\_trxc\_msg\_name\_buf}}
\index{osmo\_trxc\_msg\_name\_buf@{osmo\_trxc\_msg\_name\_buf}!trxc.h@{trxc.h}}
\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_8h_a347c9ddab9ba96b958db9884a5008603}} 
\index{trxc.h@{trxc.h}!osmo\_trxc\_msg\_params\_scan@{osmo\_trxc\_msg\_params\_scan}}
\index{osmo\_trxc\_msg\_params\_scan@{osmo\_trxc\_msg\_params\_scan}!trxc.h@{trxc.h}}
\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_8h_a51e4fd628a745ec95dcf84cfce525ff9}} 
\index{trxc.h@{trxc.h}!osmo\_trxc\_msg\_parse@{osmo\_trxc\_msg\_parse}}
\index{osmo\_trxc\_msg\_parse@{osmo\_trxc\_msg\_parse}!trxc.h@{trxc.h}}
\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_8h_a44885d33ba4400ab53d44265eb790b5f}} 
\index{trxc.h@{trxc.h}!osmo\_trxc\_setslot\_build@{osmo\_trxc\_setslot\_build}}
\index{osmo\_trxc\_setslot\_build@{osmo\_trxc\_setslot\_build}!trxc.h@{trxc.h}}
\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_8h_a98e096247ecef4a30cd3788936d9add2}} 
\index{trxc.h@{trxc.h}!osmo\_trxc\_setslot\_parse@{osmo\_trxc\_setslot\_parse}}
\index{osmo\_trxc\_setslot\_parse@{osmo\_trxc\_setslot\_parse}!trxc.h@{trxc.h}}
\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}.

\mbox{\label{trxc_8h_a1f40ef6a4ab699c2de002781cfd545b0}} 
\index{trxc.h@{trxc.h}!osmo\_trxc\_vamos\_comb\_name@{osmo\_trxc\_vamos\_comb\_name}}
\index{osmo\_trxc\_vamos\_comb\_name@{osmo\_trxc\_vamos\_comb\_name}!trxc.h@{trxc.h}}
\doxysubsubsection{osmo\_trxc\_vamos\_comb\_name()}
{\footnotesize\ttfamily static const char $\ast$ osmo\+\_\+trxc\+\_\+vamos\+\_\+comb\+\_\+name (\begin{DoxyParamCaption}\item[{enum \textbf{ osmo\+\_\+trxc\+\_\+vamos\+\_\+comb}}]{comb }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}



References \textbf{ osmo\+\_\+trxc\+\_\+vamos\+\_\+comb\+\_\+names}.



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



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



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

\mbox{\label{trxc_8h_a31201fe720c726ae9b6a30b2b7555214}} 
\index{trxc.h@{trxc.h}!osmo\_trxc\_vamos\_comb\_names@{osmo\_trxc\_vamos\_comb\_names}}
\index{osmo\_trxc\_vamos\_comb\_names@{osmo\_trxc\_vamos\_comb\_names}!trxc.h@{trxc.h}}
\doxysubsubsection{osmo\_trxc\_vamos\_comb\_names}
{\footnotesize\ttfamily const struct value\+\_\+string osmo\+\_\+trxc\+\_\+vamos\+\_\+comb\+\_\+names[$\,$]\hspace{0.3cm}{\ttfamily [extern]}}



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

