\doxysection{src/gsm/bts\+\_\+features.c File Reference}
\label{bts__features_8c}\index{src/gsm/bts\_features.c@{src/gsm/bts\_features.c}}


osmo-\/bts features.  


{\ttfamily \#include $<$osmocom/core/utils.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/gsm/bts\+\_\+features.\+h$>$}\newline
\doxysubsection*{Functions}
\begin{DoxyCompactItemize}
\item 
\textbf{ osmo\+\_\+static\+\_\+assert} (\textbf{ ARRAY\+\_\+\+SIZE}(\textbf{ osmo\+\_\+bts\+\_\+features\+\_\+descs})==\textbf{ \+\_\+\+NUM\+\_\+\+BTS\+\_\+\+FEAT}+1, \+\_\+bts\+\_\+features\+\_\+descs)
\item 
const char $\ast$ \textbf{ osmo\+\_\+bts\+\_\+feature\+\_\+name} (enum \textbf{ osmo\+\_\+bts\+\_\+features} feature)
\begin{DoxyCompactList}\small\item\em return description string of a BTS feature (osmo\+\_\+bts\+\_\+features\+\_\+descs). \end{DoxyCompactList}\item 
\textbf{ osmo\+\_\+static\+\_\+assert} (\textbf{ ARRAY\+\_\+\+SIZE}(\textbf{ osmo\+\_\+bts\+\_\+features\+\_\+names})==\textbf{ \+\_\+\+NUM\+\_\+\+BTS\+\_\+\+FEAT}+1, \+\_\+bts\+\_\+features\+\_\+names)
\end{DoxyCompactItemize}
\doxysubsection*{Variables}
\begin{DoxyCompactItemize}
\item 
const struct \textbf{ value\+\_\+string} \textbf{ osmo\+\_\+bts\+\_\+features\+\_\+descs} [$\,$]
\item 
const struct \textbf{ value\+\_\+string} \textbf{ osmo\+\_\+bts\+\_\+features\+\_\+names} [$\,$]
\end{DoxyCompactItemize}


\doxysubsection{Detailed Description}
osmo-\/bts features. 



\doxysubsection{Function Documentation}
\mbox{\label{bts__features_8c_af58630d702bc5b4d757969f777bc8bde}} 
\index{bts\_features.c@{bts\_features.c}!osmo\_bts\_feature\_name@{osmo\_bts\_feature\_name}}
\index{osmo\_bts\_feature\_name@{osmo\_bts\_feature\_name}!bts\_features.c@{bts\_features.c}}
\doxysubsubsection{osmo\_bts\_feature\_name()}
{\footnotesize\ttfamily const char $\ast$ osmo\+\_\+bts\+\_\+feature\+\_\+name (\begin{DoxyParamCaption}\item[{enum \textbf{ osmo\+\_\+bts\+\_\+features}}]{feature }\end{DoxyParamCaption})}



return description string of a BTS feature (osmo\+\_\+bts\+\_\+features\+\_\+descs). 

To get the plain feature name, use \doxyref{osmo\+\_\+bts\+\_\+features\+\_\+name()}{p.}{bts__features_8h_a491f78f152b659ce5093dc9421d6640c} instead. 

References \textbf{ get\+\_\+value\+\_\+string()}, and \textbf{ osmo\+\_\+bts\+\_\+features\+\_\+descs}.

\mbox{\label{bts__features_8c_a0c196686b95d35f4f81fa9ae02db69dc}} 
\index{bts\_features.c@{bts\_features.c}!osmo\_static\_assert@{osmo\_static\_assert}}
\index{osmo\_static\_assert@{osmo\_static\_assert}!bts\_features.c@{bts\_features.c}}
\doxysubsubsection{osmo\_static\_assert()\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily osmo\+\_\+static\+\_\+assert (\begin{DoxyParamCaption}\item[{\textbf{ ARRAY\+\_\+\+SIZE}(\textbf{ osmo\+\_\+bts\+\_\+features\+\_\+descs})}]{ = {\ttfamily =\textbf{ \+\_\+\+NUM\+\_\+\+BTS\+\_\+\+FEAT}+1},  }\item[{\+\_\+bts\+\_\+features\+\_\+descs}]{ }\end{DoxyParamCaption})}



References \textbf{ ARRAY\+\_\+\+SIZE}.

\mbox{\label{bts__features_8c_ae942b4d084ceefd0892a8081ba1edf98}} 
\index{bts\_features.c@{bts\_features.c}!osmo\_static\_assert@{osmo\_static\_assert}}
\index{osmo\_static\_assert@{osmo\_static\_assert}!bts\_features.c@{bts\_features.c}}
\doxysubsubsection{osmo\_static\_assert()\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily osmo\+\_\+static\+\_\+assert (\begin{DoxyParamCaption}\item[{\textbf{ ARRAY\+\_\+\+SIZE}(\textbf{ osmo\+\_\+bts\+\_\+features\+\_\+names})}]{ = {\ttfamily =\textbf{ \+\_\+\+NUM\+\_\+\+BTS\+\_\+\+FEAT}+1},  }\item[{\+\_\+bts\+\_\+features\+\_\+names}]{ }\end{DoxyParamCaption})}



References \textbf{ ARRAY\+\_\+\+SIZE}.



\doxysubsection{Variable Documentation}
\mbox{\label{bts__features_8c_aae3a1de23a923b91f4fc441057fc0257}} 
\index{bts\_features.c@{bts\_features.c}!osmo\_bts\_features\_descs@{osmo\_bts\_features\_descs}}
\index{osmo\_bts\_features\_descs@{osmo\_bts\_features\_descs}!bts\_features.c@{bts\_features.c}}
\doxysubsubsection{osmo\_bts\_features\_descs}
{\footnotesize\ttfamily const struct \textbf{ value\+\_\+string} osmo\+\_\+bts\+\_\+features\+\_\+descs[$\,$]}

{\bfseries Initial value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{= \{}
\DoxyCodeLine{        \{ BTS\_FEAT\_HSCSD,         \textcolor{stringliteral}{"{}HSCSD"{}} \},}
\DoxyCodeLine{        \{ BTS\_FEAT\_GPRS,           \textcolor{stringliteral}{"{}GPRS"{}} \},}
\DoxyCodeLine{        \{ BTS\_FEAT\_EGPRS,         \textcolor{stringliteral}{"{}EGPRS"{}} \},}
\DoxyCodeLine{        \{ BTS\_FEAT\_ECSD,           \textcolor{stringliteral}{"{}ECSD"{}} \},}
\DoxyCodeLine{        \{ BTS\_FEAT\_HOPPING,             \textcolor{stringliteral}{"{}Frequency Hopping"{}} \},}
\DoxyCodeLine{        \{ BTS\_FEAT\_MULTI\_TSC,         \textcolor{stringliteral}{"{}Multi-\/TSC"{}} \},}
\DoxyCodeLine{        \{ BTS\_FEAT\_OML\_ALERTS,               \textcolor{stringliteral}{"{}OML Alerts"{}} \},}
\DoxyCodeLine{        \{ BTS\_FEAT\_AGCH\_PCH\_PROP, \textcolor{stringliteral}{"{}AGCH/PCH proportional allocation"{}} \},}
\DoxyCodeLine{        \{ BTS\_FEAT\_CBCH,           \textcolor{stringliteral}{"{}CBCH"{}} \},}
\DoxyCodeLine{        \{ BTS\_FEAT\_SPEECH\_F\_V1,             \textcolor{stringliteral}{"{}Fullrate speech V1"{}} \},}
\DoxyCodeLine{        \{ BTS\_FEAT\_SPEECH\_H\_V1,             \textcolor{stringliteral}{"{}Halfrate speech V1"{}} \},}
\DoxyCodeLine{        \{ BTS\_FEAT\_SPEECH\_F\_EFR,   \textcolor{stringliteral}{"{}Fullrate speech EFR"{}} \},}
\DoxyCodeLine{        \{ BTS\_FEAT\_SPEECH\_F\_AMR,   \textcolor{stringliteral}{"{}Fullrate speech AMR"{}} \},}
\DoxyCodeLine{        \{ BTS\_FEAT\_SPEECH\_H\_AMR,   \textcolor{stringliteral}{"{}Halfrate speech AMR"{}} \},}
\DoxyCodeLine{        \{ BTS\_FEAT\_ETWS\_PN,             \textcolor{stringliteral}{"{}ETWS Primary Notification via PCH"{}} \},}
\DoxyCodeLine{        \{ BTS\_FEAT\_PAGING\_COORDINATION,     \textcolor{stringliteral}{"{}BSS Paging Coordination"{}} \},}
\DoxyCodeLine{        \{ BTS\_FEAT\_IPV6\_NSVC,         \textcolor{stringliteral}{"{}NSVC IPv6"{}} \},}
\DoxyCodeLine{        \{ BTS\_FEAT\_ACCH\_REP,           \textcolor{stringliteral}{"{}FACCH/SACCH Repetition"{}} \},}
\DoxyCodeLine{        \{ BTS\_FEAT\_CCN,                     \textcolor{stringliteral}{"{}Cell Change Notification (CCN)"{}} \},}
\DoxyCodeLine{        \{ BTS\_FEAT\_VAMOS,         \textcolor{stringliteral}{"{}VAMOS (Voice services over Adaptive Multi-\/user channels on One Slot)"{}} \},}
\DoxyCodeLine{        \{ BTS\_FEAT\_ABIS\_OSMO\_PCU, \textcolor{stringliteral}{"{}OsmoPCU over OML link IPA multiplex"{}} \},}
\DoxyCodeLine{        \{ BTS\_FEAT\_BCCH\_POWER\_RED,       \textcolor{stringliteral}{"{}BCCH carrier power reduction mode"{}} \},}
\DoxyCodeLine{        \{ BTS\_FEAT\_DYN\_TS\_SDCCH8, \textcolor{stringliteral}{"{}Dynamic Timeslot configuration as SDCCH8"{}} \},}
\DoxyCodeLine{        \{ BTS\_FEAT\_ACCH\_TEMP\_OVP, \textcolor{stringliteral}{"{}FACCH/SACCH Temporary overpower"{}} \},}
\DoxyCodeLine{        \{ BTS\_FEAT\_OSMUX,         \textcolor{stringliteral}{"{}Osmux (Osmocom RTP multiplexing)"{}} \},}
\DoxyCodeLine{        \{ BTS\_FEAT\_VBS,                     \textcolor{stringliteral}{"{}Voice Broadcast Service"{}} \},}
\DoxyCodeLine{        \{ BTS\_FEAT\_VGCS,           \textcolor{stringliteral}{"{}Voice Group Call Service"{}} \},}
\DoxyCodeLine{        \{ 0, NULL \}}
\DoxyCodeLine{\}}

\end{DoxyCode}


Referenced by \textbf{ osmo\+\_\+bts\+\_\+feature\+\_\+name()}, and \textbf{ osmo\+\_\+bts\+\_\+features\+\_\+desc()}.

\mbox{\label{bts__features_8c_ae0895205e184505055adcdffcf7aef9d}} 
\index{bts\_features.c@{bts\_features.c}!osmo\_bts\_features\_names@{osmo\_bts\_features\_names}}
\index{osmo\_bts\_features\_names@{osmo\_bts\_features\_names}!bts\_features.c@{bts\_features.c}}
\doxysubsubsection{osmo\_bts\_features\_names}
{\footnotesize\ttfamily const struct \textbf{ value\+\_\+string} osmo\+\_\+bts\+\_\+features\+\_\+names[$\,$]}

{\bfseries Initial value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{= \{}
\DoxyCodeLine{        \{ BTS\_FEAT\_HSCSD, \textcolor{stringliteral}{"{}HSCSD"{}} \},}
\DoxyCodeLine{        \{ BTS\_FEAT\_GPRS, \textcolor{stringliteral}{"{}GPRS"{}} \},}
\DoxyCodeLine{        \{ BTS\_FEAT\_EGPRS, \textcolor{stringliteral}{"{}EGPRS"{}} \},}
\DoxyCodeLine{        \{ BTS\_FEAT\_ECSD, \textcolor{stringliteral}{"{}ECSD"{}} \},}
\DoxyCodeLine{        \{ BTS\_FEAT\_HOPPING, \textcolor{stringliteral}{"{}HOPPING"{}} \},}
\DoxyCodeLine{        \{ BTS\_FEAT\_MULTI\_TSC, \textcolor{stringliteral}{"{}MULTI\_TSC"{}} \},}
\DoxyCodeLine{        \{ BTS\_FEAT\_OML\_ALERTS, \textcolor{stringliteral}{"{}OML\_ALERTS"{}} \},}
\DoxyCodeLine{        \{ BTS\_FEAT\_AGCH\_PCH\_PROP, \textcolor{stringliteral}{"{}AGCH\_PCH\_PROP"{}} \},}
\DoxyCodeLine{        \{ BTS\_FEAT\_CBCH, \textcolor{stringliteral}{"{}CBCH"{}} \},}
\DoxyCodeLine{        \{ BTS\_FEAT\_SPEECH\_F\_V1, \textcolor{stringliteral}{"{}SPEECH\_F\_V1"{}} \},}
\DoxyCodeLine{        \{ BTS\_FEAT\_SPEECH\_H\_V1, \textcolor{stringliteral}{"{}SPEECH\_H\_V1"{}} \},}
\DoxyCodeLine{        \{ BTS\_FEAT\_SPEECH\_F\_EFR, \textcolor{stringliteral}{"{}SPEECH\_F\_EFR"{}} \},}
\DoxyCodeLine{        \{ BTS\_FEAT\_SPEECH\_F\_AMR, \textcolor{stringliteral}{"{}SPEECH\_F\_AMR"{}} \},}
\DoxyCodeLine{        \{ BTS\_FEAT\_SPEECH\_H\_AMR, \textcolor{stringliteral}{"{}SPEECH\_H\_AMR"{}} \},}
\DoxyCodeLine{        \{ BTS\_FEAT\_ETWS\_PN, \textcolor{stringliteral}{"{}ETWS\_PN"{}} \},}
\DoxyCodeLine{        \{ BTS\_FEAT\_PAGING\_COORDINATION, \textcolor{stringliteral}{"{}PAGING\_COORDINATION"{}} \},}
\DoxyCodeLine{        \{ BTS\_FEAT\_IPV6\_NSVC, \textcolor{stringliteral}{"{}IPV6\_NSVC"{}} \},}
\DoxyCodeLine{        \{ BTS\_FEAT\_ACCH\_REP, \textcolor{stringliteral}{"{}ACCH\_REP"{}} \},}
\DoxyCodeLine{        \{ BTS\_FEAT\_CCN, \textcolor{stringliteral}{"{}CCN"{}} \},}
\DoxyCodeLine{        \{ BTS\_FEAT\_VAMOS, \textcolor{stringliteral}{"{}VAMOS"{}} \},}
\DoxyCodeLine{        \{ BTS\_FEAT\_ABIS\_OSMO\_PCU, \textcolor{stringliteral}{"{}ABIS\_OSMO\_PCU"{}} \},}
\DoxyCodeLine{        \{ BTS\_FEAT\_BCCH\_POWER\_RED, \textcolor{stringliteral}{"{}BCCH\_PWR\_RED"{}} \},}
\DoxyCodeLine{        \{ BTS\_FEAT\_DYN\_TS\_SDCCH8, \textcolor{stringliteral}{"{}DYN\_TS\_SDCCH8"{}} \},}
\DoxyCodeLine{        \{ BTS\_FEAT\_ACCH\_TEMP\_OVP, \textcolor{stringliteral}{"{}ACCH\_TEMP\_OVP"{}} \},}
\DoxyCodeLine{        \{ BTS\_FEAT\_OSMUX, \textcolor{stringliteral}{"{}OSMUX"{}} \},}
\DoxyCodeLine{        \{ BTS\_FEAT\_VBS, \textcolor{stringliteral}{"{}VBS"{}} \},}
\DoxyCodeLine{        \{ BTS\_FEAT\_VGCS, \textcolor{stringliteral}{"{}VGCS"{}} \},}
\DoxyCodeLine{        \{\}}
\DoxyCodeLine{\}}

\end{DoxyCode}


Referenced by \textbf{ osmo\+\_\+bts\+\_\+features\+\_\+name()}.

