\doxysection{include/osmocom/gsm/bts\+\_\+features.h File Reference}
\label{bts__features_8h}\index{include/osmocom/gsm/bts\_features.h@{include/osmocom/gsm/bts\_features.h}}
{\ttfamily \#include $<$osmocom/core/utils.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/core/bitvec.\+h$>$}\newline
\doxysubsection*{Macros}
\begin{DoxyCompactItemize}
\item 
\#define \textbf{ MAX\+\_\+\+BTS\+\_\+\+FEATURES}~128
\end{DoxyCompactItemize}
\doxysubsection*{Enumerations}
\begin{DoxyCompactItemize}
\item 
enum \textbf{ osmo\+\_\+bts\+\_\+features} \{ \newline
\textbf{ BTS\+\_\+\+FEAT\+\_\+\+HSCSD}
, \newline
\textbf{ BTS\+\_\+\+FEAT\+\_\+\+GPRS}
, \newline
\textbf{ BTS\+\_\+\+FEAT\+\_\+\+EGPRS}
, \newline
\textbf{ BTS\+\_\+\+FEAT\+\_\+\+ECSD}
, \newline
\textbf{ BTS\+\_\+\+FEAT\+\_\+\+HOPPING}
, \newline
\textbf{ BTS\+\_\+\+FEAT\+\_\+\+MULTI\+\_\+\+TSC}
, \newline
\textbf{ BTS\+\_\+\+FEAT\+\_\+\+OML\+\_\+\+ALERTS}
, \newline
\textbf{ BTS\+\_\+\+FEAT\+\_\+\+AGCH\+\_\+\+PCH\+\_\+\+PROP}
, \newline
\textbf{ BTS\+\_\+\+FEAT\+\_\+\+CBCH}
, \newline
\textbf{ BTS\+\_\+\+FEAT\+\_\+\+SPEECH\+\_\+\+F\+\_\+\+V1}
, \newline
\textbf{ BTS\+\_\+\+FEAT\+\_\+\+SPEECH\+\_\+\+H\+\_\+\+V1}
, \newline
\textbf{ BTS\+\_\+\+FEAT\+\_\+\+SPEECH\+\_\+\+F\+\_\+\+EFR}
, \newline
\textbf{ BTS\+\_\+\+FEAT\+\_\+\+SPEECH\+\_\+\+F\+\_\+\+AMR}
, \newline
\textbf{ BTS\+\_\+\+FEAT\+\_\+\+SPEECH\+\_\+\+H\+\_\+\+AMR}
, \newline
\textbf{ BTS\+\_\+\+FEAT\+\_\+\+ETWS\+\_\+\+PN}
, \newline
\textbf{ BTS\+\_\+\+FEAT\+\_\+\+PAGING\+\_\+\+COORDINATION}
, \newline
\textbf{ BTS\+\_\+\+FEAT\+\_\+\+IPV6\+\_\+\+NSVC}
, \newline
\textbf{ BTS\+\_\+\+FEAT\+\_\+\+ACCH\+\_\+\+REP}
, \newline
\textbf{ BTS\+\_\+\+FEAT\+\_\+\+CCN}
, \newline
\textbf{ BTS\+\_\+\+FEAT\+\_\+\+VAMOS}
, \newline
\textbf{ BTS\+\_\+\+FEAT\+\_\+\+ABIS\+\_\+\+OSMO\+\_\+\+PCU}
, \newline
\textbf{ BTS\+\_\+\+FEAT\+\_\+\+BCCH\+\_\+\+POWER\+\_\+\+RED}
, \newline
\textbf{ BTS\+\_\+\+FEAT\+\_\+\+DYN\+\_\+\+TS\+\_\+\+SDCCH8}
, \newline
\textbf{ BTS\+\_\+\+FEAT\+\_\+\+ACCH\+\_\+\+TEMP\+\_\+\+OVP}
, \newline
\textbf{ BTS\+\_\+\+FEAT\+\_\+\+OSMUX}
, \newline
\textbf{ BTS\+\_\+\+FEAT\+\_\+\+VBS}
, \newline
\textbf{ BTS\+\_\+\+FEAT\+\_\+\+VGCS}
, \newline
\textbf{ BTS\+\_\+\+FEAT\+\_\+\+TWTS001}
, \newline
\textbf{ BTS\+\_\+\+FEAT\+\_\+\+TWTS002}
, \newline
\textbf{ \+\_\+\+NUM\+\_\+\+BTS\+\_\+\+FEAT}
 \}
\end{DoxyCompactItemize}
\doxysubsection*{Functions}
\begin{DoxyCompactItemize}
\item 
static const char $\ast$ \textbf{ osmo\+\_\+bts\+\_\+features\+\_\+desc} (enum \textbf{ osmo\+\_\+bts\+\_\+features} val)
\item 
const char $\ast$ \textbf{ osmo\+\_\+bts\+\_\+feature\+\_\+name} (enum \textbf{ osmo\+\_\+bts\+\_\+features} feature) \textbf{ OSMO\+\_\+\+DEPRECATED}(\char`\"{}Use \textbf{ osmo\+\_\+bts\+\_\+features\+\_\+desc}() \textbf{ instead}\char`\"{})
\begin{DoxyCompactList}\small\item\em return description string of a BTS feature (osmo\+\_\+bts\+\_\+features\+\_\+descs). \end{DoxyCompactList}\item 
static const char $\ast$ \textbf{ osmo\+\_\+bts\+\_\+features\+\_\+name} (enum \textbf{ osmo\+\_\+bts\+\_\+features} val)
\item 
static int \textbf{ osmo\+\_\+bts\+\_\+set\+\_\+feature} (struct \textbf{ bitvec} $\ast$features, enum \textbf{ osmo\+\_\+bts\+\_\+features} feature)
\item 
static int \textbf{ osmo\+\_\+bts\+\_\+unset\+\_\+feature} (struct \textbf{ bitvec} $\ast$features, enum \textbf{ osmo\+\_\+bts\+\_\+features} feature)
\item 
static bool \textbf{ osmo\+\_\+bts\+\_\+has\+\_\+feature} (const struct \textbf{ bitvec} $\ast$features, enum \textbf{ osmo\+\_\+bts\+\_\+features} feature)
\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{Macro Definition Documentation}
\mbox{\label{bts__features_8h_a87b4d8fa51c2862d974dd4400711d1eb}} 
\index{bts\_features.h@{bts\_features.h}!MAX\_BTS\_FEATURES@{MAX\_BTS\_FEATURES}}
\index{MAX\_BTS\_FEATURES@{MAX\_BTS\_FEATURES}!bts\_features.h@{bts\_features.h}}
\doxysubsubsection{MAX\_BTS\_FEATURES}
{\footnotesize\ttfamily \#define MAX\+\_\+\+BTS\+\_\+\+FEATURES~128}



\doxysubsection{Enumeration Type Documentation}
\mbox{\label{bts__features_8h_aeb85c0f33f4f68234ecf90c3efcf4f86}} 
\index{bts\_features.h@{bts\_features.h}!osmo\_bts\_features@{osmo\_bts\_features}}
\index{osmo\_bts\_features@{osmo\_bts\_features}!bts\_features.h@{bts\_features.h}}
\doxysubsubsection{osmo\_bts\_features}
{\footnotesize\ttfamily enum \textbf{ osmo\+\_\+bts\+\_\+features}}

\begin{DoxyEnumFields}{Enumerator}
\raisebox{\heightof{T}}[0pt][0pt]{\index{BTS\_FEAT\_HSCSD@{BTS\_FEAT\_HSCSD}!bts\_features.h@{bts\_features.h}}\index{bts\_features.h@{bts\_features.h}!BTS\_FEAT\_HSCSD@{BTS\_FEAT\_HSCSD}}}\mbox{\label{bts__features_8h_aeb85c0f33f4f68234ecf90c3efcf4f86ab9348a05890fc9c82b9f9269e2b1906d}} 
BTS\+\_\+\+FEAT\+\_\+\+HSCSD&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{BTS\_FEAT\_GPRS@{BTS\_FEAT\_GPRS}!bts\_features.h@{bts\_features.h}}\index{bts\_features.h@{bts\_features.h}!BTS\_FEAT\_GPRS@{BTS\_FEAT\_GPRS}}}\mbox{\label{bts__features_8h_aeb85c0f33f4f68234ecf90c3efcf4f86aad9b83f41baf9a1eedb0f055260f6cdc}} 
BTS\+\_\+\+FEAT\+\_\+\+GPRS&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{BTS\_FEAT\_EGPRS@{BTS\_FEAT\_EGPRS}!bts\_features.h@{bts\_features.h}}\index{bts\_features.h@{bts\_features.h}!BTS\_FEAT\_EGPRS@{BTS\_FEAT\_EGPRS}}}\mbox{\label{bts__features_8h_aeb85c0f33f4f68234ecf90c3efcf4f86af7fd7f9ddbc380740d5bde0264664f32}} 
BTS\+\_\+\+FEAT\+\_\+\+EGPRS&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{BTS\_FEAT\_ECSD@{BTS\_FEAT\_ECSD}!bts\_features.h@{bts\_features.h}}\index{bts\_features.h@{bts\_features.h}!BTS\_FEAT\_ECSD@{BTS\_FEAT\_ECSD}}}\mbox{\label{bts__features_8h_aeb85c0f33f4f68234ecf90c3efcf4f86a79be6e6f3c79d1cbafe6bc9fe940ce6c}} 
BTS\+\_\+\+FEAT\+\_\+\+ECSD&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{BTS\_FEAT\_HOPPING@{BTS\_FEAT\_HOPPING}!bts\_features.h@{bts\_features.h}}\index{bts\_features.h@{bts\_features.h}!BTS\_FEAT\_HOPPING@{BTS\_FEAT\_HOPPING}}}\mbox{\label{bts__features_8h_aeb85c0f33f4f68234ecf90c3efcf4f86ab8c45a4f6f7e82825054b212524d789b}} 
BTS\+\_\+\+FEAT\+\_\+\+HOPPING&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{BTS\_FEAT\_MULTI\_TSC@{BTS\_FEAT\_MULTI\_TSC}!bts\_features.h@{bts\_features.h}}\index{bts\_features.h@{bts\_features.h}!BTS\_FEAT\_MULTI\_TSC@{BTS\_FEAT\_MULTI\_TSC}}}\mbox{\label{bts__features_8h_aeb85c0f33f4f68234ecf90c3efcf4f86a91d851a6f3af9a3d7606cb7002c976ac}} 
BTS\+\_\+\+FEAT\+\_\+\+MULTI\+\_\+\+TSC&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{BTS\_FEAT\_OML\_ALERTS@{BTS\_FEAT\_OML\_ALERTS}!bts\_features.h@{bts\_features.h}}\index{bts\_features.h@{bts\_features.h}!BTS\_FEAT\_OML\_ALERTS@{BTS\_FEAT\_OML\_ALERTS}}}\mbox{\label{bts__features_8h_aeb85c0f33f4f68234ecf90c3efcf4f86a52b5575e63964af7fcae382925ac3068}} 
BTS\+\_\+\+FEAT\+\_\+\+OML\+\_\+\+ALERTS&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{BTS\_FEAT\_AGCH\_PCH\_PROP@{BTS\_FEAT\_AGCH\_PCH\_PROP}!bts\_features.h@{bts\_features.h}}\index{bts\_features.h@{bts\_features.h}!BTS\_FEAT\_AGCH\_PCH\_PROP@{BTS\_FEAT\_AGCH\_PCH\_PROP}}}\mbox{\label{bts__features_8h_aeb85c0f33f4f68234ecf90c3efcf4f86a5940463ff270e11d570ef6ac17f6a256}} 
BTS\+\_\+\+FEAT\+\_\+\+AGCH\+\_\+\+PCH\+\_\+\+PROP&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{BTS\_FEAT\_CBCH@{BTS\_FEAT\_CBCH}!bts\_features.h@{bts\_features.h}}\index{bts\_features.h@{bts\_features.h}!BTS\_FEAT\_CBCH@{BTS\_FEAT\_CBCH}}}\mbox{\label{bts__features_8h_aeb85c0f33f4f68234ecf90c3efcf4f86ad85fa331eee0613b57dc69f11120b799}} 
BTS\+\_\+\+FEAT\+\_\+\+CBCH&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{BTS\_FEAT\_SPEECH\_F\_V1@{BTS\_FEAT\_SPEECH\_F\_V1}!bts\_features.h@{bts\_features.h}}\index{bts\_features.h@{bts\_features.h}!BTS\_FEAT\_SPEECH\_F\_V1@{BTS\_FEAT\_SPEECH\_F\_V1}}}\mbox{\label{bts__features_8h_aeb85c0f33f4f68234ecf90c3efcf4f86a48aa049af685fd5b11eca5c0f999ac4d}} 
BTS\+\_\+\+FEAT\+\_\+\+SPEECH\+\_\+\+F\+\_\+\+V1&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{BTS\_FEAT\_SPEECH\_H\_V1@{BTS\_FEAT\_SPEECH\_H\_V1}!bts\_features.h@{bts\_features.h}}\index{bts\_features.h@{bts\_features.h}!BTS\_FEAT\_SPEECH\_H\_V1@{BTS\_FEAT\_SPEECH\_H\_V1}}}\mbox{\label{bts__features_8h_aeb85c0f33f4f68234ecf90c3efcf4f86ac657fb74a8151ae6e3e6195ba6ae5cf6}} 
BTS\+\_\+\+FEAT\+\_\+\+SPEECH\+\_\+\+H\+\_\+\+V1&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{BTS\_FEAT\_SPEECH\_F\_EFR@{BTS\_FEAT\_SPEECH\_F\_EFR}!bts\_features.h@{bts\_features.h}}\index{bts\_features.h@{bts\_features.h}!BTS\_FEAT\_SPEECH\_F\_EFR@{BTS\_FEAT\_SPEECH\_F\_EFR}}}\mbox{\label{bts__features_8h_aeb85c0f33f4f68234ecf90c3efcf4f86af87f8c7eae3819e5c4df6e9898e38aea}} 
BTS\+\_\+\+FEAT\+\_\+\+SPEECH\+\_\+\+F\+\_\+\+EFR&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{BTS\_FEAT\_SPEECH\_F\_AMR@{BTS\_FEAT\_SPEECH\_F\_AMR}!bts\_features.h@{bts\_features.h}}\index{bts\_features.h@{bts\_features.h}!BTS\_FEAT\_SPEECH\_F\_AMR@{BTS\_FEAT\_SPEECH\_F\_AMR}}}\mbox{\label{bts__features_8h_aeb85c0f33f4f68234ecf90c3efcf4f86aaa80014d892f44012815904519a19d3d}} 
BTS\+\_\+\+FEAT\+\_\+\+SPEECH\+\_\+\+F\+\_\+\+AMR&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{BTS\_FEAT\_SPEECH\_H\_AMR@{BTS\_FEAT\_SPEECH\_H\_AMR}!bts\_features.h@{bts\_features.h}}\index{bts\_features.h@{bts\_features.h}!BTS\_FEAT\_SPEECH\_H\_AMR@{BTS\_FEAT\_SPEECH\_H\_AMR}}}\mbox{\label{bts__features_8h_aeb85c0f33f4f68234ecf90c3efcf4f86a3002a9cb99bb1125b04e1f48ca705c88}} 
BTS\+\_\+\+FEAT\+\_\+\+SPEECH\+\_\+\+H\+\_\+\+AMR&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{BTS\_FEAT\_ETWS\_PN@{BTS\_FEAT\_ETWS\_PN}!bts\_features.h@{bts\_features.h}}\index{bts\_features.h@{bts\_features.h}!BTS\_FEAT\_ETWS\_PN@{BTS\_FEAT\_ETWS\_PN}}}\mbox{\label{bts__features_8h_aeb85c0f33f4f68234ecf90c3efcf4f86ab196c4df2595c8c882afce7b91fe8595}} 
BTS\+\_\+\+FEAT\+\_\+\+ETWS\+\_\+\+PN&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{BTS\_FEAT\_PAGING\_COORDINATION@{BTS\_FEAT\_PAGING\_COORDINATION}!bts\_features.h@{bts\_features.h}}\index{bts\_features.h@{bts\_features.h}!BTS\_FEAT\_PAGING\_COORDINATION@{BTS\_FEAT\_PAGING\_COORDINATION}}}\mbox{\label{bts__features_8h_aeb85c0f33f4f68234ecf90c3efcf4f86a30f9cb23f359bd4e7718bd57d96dd799}} 
BTS\+\_\+\+FEAT\+\_\+\+PAGING\+\_\+\+COORDINATION&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{BTS\_FEAT\_IPV6\_NSVC@{BTS\_FEAT\_IPV6\_NSVC}!bts\_features.h@{bts\_features.h}}\index{bts\_features.h@{bts\_features.h}!BTS\_FEAT\_IPV6\_NSVC@{BTS\_FEAT\_IPV6\_NSVC}}}\mbox{\label{bts__features_8h_aeb85c0f33f4f68234ecf90c3efcf4f86a855fd60ab1cee11857389c8ab5e59e3e}} 
BTS\+\_\+\+FEAT\+\_\+\+IPV6\+\_\+\+NSVC&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{BTS\_FEAT\_ACCH\_REP@{BTS\_FEAT\_ACCH\_REP}!bts\_features.h@{bts\_features.h}}\index{bts\_features.h@{bts\_features.h}!BTS\_FEAT\_ACCH\_REP@{BTS\_FEAT\_ACCH\_REP}}}\mbox{\label{bts__features_8h_aeb85c0f33f4f68234ecf90c3efcf4f86aac06314a5e9a0e835cb12696b403c065}} 
BTS\+\_\+\+FEAT\+\_\+\+ACCH\+\_\+\+REP&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{BTS\_FEAT\_CCN@{BTS\_FEAT\_CCN}!bts\_features.h@{bts\_features.h}}\index{bts\_features.h@{bts\_features.h}!BTS\_FEAT\_CCN@{BTS\_FEAT\_CCN}}}\mbox{\label{bts__features_8h_aeb85c0f33f4f68234ecf90c3efcf4f86ab8098c7cbe157499c2e0e04dbf395957}} 
BTS\+\_\+\+FEAT\+\_\+\+CCN&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{BTS\_FEAT\_VAMOS@{BTS\_FEAT\_VAMOS}!bts\_features.h@{bts\_features.h}}\index{bts\_features.h@{bts\_features.h}!BTS\_FEAT\_VAMOS@{BTS\_FEAT\_VAMOS}}}\mbox{\label{bts__features_8h_aeb85c0f33f4f68234ecf90c3efcf4f86aa4da46b08ecb6e10e74edee0b559629a}} 
BTS\+\_\+\+FEAT\+\_\+\+VAMOS&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{BTS\_FEAT\_ABIS\_OSMO\_PCU@{BTS\_FEAT\_ABIS\_OSMO\_PCU}!bts\_features.h@{bts\_features.h}}\index{bts\_features.h@{bts\_features.h}!BTS\_FEAT\_ABIS\_OSMO\_PCU@{BTS\_FEAT\_ABIS\_OSMO\_PCU}}}\mbox{\label{bts__features_8h_aeb85c0f33f4f68234ecf90c3efcf4f86a1bab20640a2c2a0582c9f26151d4fc37}} 
BTS\+\_\+\+FEAT\+\_\+\+ABIS\+\_\+\+OSMO\+\_\+\+PCU&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{BTS\_FEAT\_BCCH\_POWER\_RED@{BTS\_FEAT\_BCCH\_POWER\_RED}!bts\_features.h@{bts\_features.h}}\index{bts\_features.h@{bts\_features.h}!BTS\_FEAT\_BCCH\_POWER\_RED@{BTS\_FEAT\_BCCH\_POWER\_RED}}}\mbox{\label{bts__features_8h_aeb85c0f33f4f68234ecf90c3efcf4f86a955e4a23ae3d4ebfdb8b79778442dacd}} 
BTS\+\_\+\+FEAT\+\_\+\+BCCH\+\_\+\+POWER\+\_\+\+RED&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{BTS\_FEAT\_DYN\_TS\_SDCCH8@{BTS\_FEAT\_DYN\_TS\_SDCCH8}!bts\_features.h@{bts\_features.h}}\index{bts\_features.h@{bts\_features.h}!BTS\_FEAT\_DYN\_TS\_SDCCH8@{BTS\_FEAT\_DYN\_TS\_SDCCH8}}}\mbox{\label{bts__features_8h_aeb85c0f33f4f68234ecf90c3efcf4f86a8137c403998c79d1c2f3cedb1dd66737}} 
BTS\+\_\+\+FEAT\+\_\+\+DYN\+\_\+\+TS\+\_\+\+SDCCH8&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{BTS\_FEAT\_ACCH\_TEMP\_OVP@{BTS\_FEAT\_ACCH\_TEMP\_OVP}!bts\_features.h@{bts\_features.h}}\index{bts\_features.h@{bts\_features.h}!BTS\_FEAT\_ACCH\_TEMP\_OVP@{BTS\_FEAT\_ACCH\_TEMP\_OVP}}}\mbox{\label{bts__features_8h_aeb85c0f33f4f68234ecf90c3efcf4f86adc2ba43942134767b0ac0f16a3df33eb}} 
BTS\+\_\+\+FEAT\+\_\+\+ACCH\+\_\+\+TEMP\+\_\+\+OVP&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{BTS\_FEAT\_OSMUX@{BTS\_FEAT\_OSMUX}!bts\_features.h@{bts\_features.h}}\index{bts\_features.h@{bts\_features.h}!BTS\_FEAT\_OSMUX@{BTS\_FEAT\_OSMUX}}}\mbox{\label{bts__features_8h_aeb85c0f33f4f68234ecf90c3efcf4f86ad321a0c2bafea3ea5962dab1cb988e83}} 
BTS\+\_\+\+FEAT\+\_\+\+OSMUX&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{BTS\_FEAT\_VBS@{BTS\_FEAT\_VBS}!bts\_features.h@{bts\_features.h}}\index{bts\_features.h@{bts\_features.h}!BTS\_FEAT\_VBS@{BTS\_FEAT\_VBS}}}\mbox{\label{bts__features_8h_aeb85c0f33f4f68234ecf90c3efcf4f86abc9b0583a419374b4c9fb7040cfe7a50}} 
BTS\+\_\+\+FEAT\+\_\+\+VBS&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{BTS\_FEAT\_VGCS@{BTS\_FEAT\_VGCS}!bts\_features.h@{bts\_features.h}}\index{bts\_features.h@{bts\_features.h}!BTS\_FEAT\_VGCS@{BTS\_FEAT\_VGCS}}}\mbox{\label{bts__features_8h_aeb85c0f33f4f68234ecf90c3efcf4f86a9b703cac45c17ebe4aca903fd189b5d7}} 
BTS\+\_\+\+FEAT\+\_\+\+VGCS&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{BTS\_FEAT\_TWTS001@{BTS\_FEAT\_TWTS001}!bts\_features.h@{bts\_features.h}}\index{bts\_features.h@{bts\_features.h}!BTS\_FEAT\_TWTS001@{BTS\_FEAT\_TWTS001}}}\mbox{\label{bts__features_8h_aeb85c0f33f4f68234ecf90c3efcf4f86abf054906259dfe5939232a26bb456c5c}} 
BTS\+\_\+\+FEAT\+\_\+\+TWTS001&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{BTS\_FEAT\_TWTS002@{BTS\_FEAT\_TWTS002}!bts\_features.h@{bts\_features.h}}\index{bts\_features.h@{bts\_features.h}!BTS\_FEAT\_TWTS002@{BTS\_FEAT\_TWTS002}}}\mbox{\label{bts__features_8h_aeb85c0f33f4f68234ecf90c3efcf4f86aad6818ebf7788b172ca2285bdbdfc6ca}} 
BTS\+\_\+\+FEAT\+\_\+\+TWTS002&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{\_NUM\_BTS\_FEAT@{\_NUM\_BTS\_FEAT}!bts\_features.h@{bts\_features.h}}\index{bts\_features.h@{bts\_features.h}!\_NUM\_BTS\_FEAT@{\_NUM\_BTS\_FEAT}}}\mbox{\label{bts__features_8h_aeb85c0f33f4f68234ecf90c3efcf4f86a379580e37d19faf534de5a6a07ba172d}} 
\+\_\+\+NUM\+\_\+\+BTS\+\_\+\+FEAT&\\
\hline

\end{DoxyEnumFields}


\doxysubsection{Function Documentation}
\mbox{\label{bts__features_8h_ad98517bb5d175d88e5a51b241f4acc1b}} 
\index{bts\_features.h@{bts\_features.h}!osmo\_bts\_feature\_name@{osmo\_bts\_feature\_name}}
\index{osmo\_bts\_feature\_name@{osmo\_bts\_feature\_name}!bts\_features.h@{bts\_features.h}}
\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_8h_a0bce701ccb14e786c9706da40ee2f78e}} 
\index{bts\_features.h@{bts\_features.h}!osmo\_bts\_features\_desc@{osmo\_bts\_features\_desc}}
\index{osmo\_bts\_features\_desc@{osmo\_bts\_features\_desc}!bts\_features.h@{bts\_features.h}}
\doxysubsubsection{osmo\_bts\_features\_desc()}
{\footnotesize\ttfamily static const char $\ast$ osmo\+\_\+bts\+\_\+features\+\_\+desc (\begin{DoxyParamCaption}\item[{enum \textbf{ osmo\+\_\+bts\+\_\+features}}]{val }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}



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

\mbox{\label{bts__features_8h_a491f78f152b659ce5093dc9421d6640c}} 
\index{bts\_features.h@{bts\_features.h}!osmo\_bts\_features\_name@{osmo\_bts\_features\_name}}
\index{osmo\_bts\_features\_name@{osmo\_bts\_features\_name}!bts\_features.h@{bts\_features.h}}
\doxysubsubsection{osmo\_bts\_features\_name()}
{\footnotesize\ttfamily static const char $\ast$ osmo\+\_\+bts\+\_\+features\+\_\+name (\begin{DoxyParamCaption}\item[{enum \textbf{ osmo\+\_\+bts\+\_\+features}}]{val }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}



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

\mbox{\label{bts__features_8h_acc73f85ad20b9878eb30e67fe854db84}} 
\index{bts\_features.h@{bts\_features.h}!osmo\_bts\_has\_feature@{osmo\_bts\_has\_feature}}
\index{osmo\_bts\_has\_feature@{osmo\_bts\_has\_feature}!bts\_features.h@{bts\_features.h}}
\doxysubsubsection{osmo\_bts\_has\_feature()}
{\footnotesize\ttfamily static bool osmo\+\_\+bts\+\_\+has\+\_\+feature (\begin{DoxyParamCaption}\item[{const struct \textbf{ bitvec} $\ast$}]{features,  }\item[{enum \textbf{ osmo\+\_\+bts\+\_\+features}}]{feature }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}



References \textbf{ \+\_\+\+NUM\+\_\+\+BTS\+\_\+\+FEAT}, \textbf{ bitvec\+\_\+get\+\_\+bit\+\_\+pos()}, \textbf{ MAX\+\_\+\+BTS\+\_\+\+FEATURES}, \textbf{ ONE}, and \textbf{ OSMO\+\_\+\+ASSERT}.

\mbox{\label{bts__features_8h_a83a67ced3626e829a05fc4ca45092a3d}} 
\index{bts\_features.h@{bts\_features.h}!osmo\_bts\_set\_feature@{osmo\_bts\_set\_feature}}
\index{osmo\_bts\_set\_feature@{osmo\_bts\_set\_feature}!bts\_features.h@{bts\_features.h}}
\doxysubsubsection{osmo\_bts\_set\_feature()}
{\footnotesize\ttfamily static int osmo\+\_\+bts\+\_\+set\+\_\+feature (\begin{DoxyParamCaption}\item[{struct \textbf{ bitvec} $\ast$}]{features,  }\item[{enum \textbf{ osmo\+\_\+bts\+\_\+features}}]{feature }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}



References \textbf{ \+\_\+\+NUM\+\_\+\+BTS\+\_\+\+FEAT}, \textbf{ bitvec\+\_\+set\+\_\+bit\+\_\+pos()}, \textbf{ MAX\+\_\+\+BTS\+\_\+\+FEATURES}, and \textbf{ OSMO\+\_\+\+ASSERT}.

\mbox{\label{bts__features_8h_adb3682f957cb2eb37d5f3524033545d5}} 
\index{bts\_features.h@{bts\_features.h}!osmo\_bts\_unset\_feature@{osmo\_bts\_unset\_feature}}
\index{osmo\_bts\_unset\_feature@{osmo\_bts\_unset\_feature}!bts\_features.h@{bts\_features.h}}
\doxysubsubsection{osmo\_bts\_unset\_feature()}
{\footnotesize\ttfamily static int osmo\+\_\+bts\+\_\+unset\+\_\+feature (\begin{DoxyParamCaption}\item[{struct \textbf{ bitvec} $\ast$}]{features,  }\item[{enum \textbf{ osmo\+\_\+bts\+\_\+features}}]{feature }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}



References \textbf{ \+\_\+\+NUM\+\_\+\+BTS\+\_\+\+FEAT}, \textbf{ bitvec\+\_\+set\+\_\+bit\+\_\+pos()}, \textbf{ MAX\+\_\+\+BTS\+\_\+\+FEATURES}, and \textbf{ OSMO\+\_\+\+ASSERT}.



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



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

\mbox{\label{bts__features_8h_ae0895205e184505055adcdffcf7aef9d}} 
\index{bts\_features.h@{bts\_features.h}!osmo\_bts\_features\_names@{osmo\_bts\_features\_names}}
\index{osmo\_bts\_features\_names@{osmo\_bts\_features\_names}!bts\_features.h@{bts\_features.h}}
\doxysubsubsection{osmo\_bts\_features\_names}
{\footnotesize\ttfamily const struct \textbf{ value\+\_\+string} osmo\+\_\+bts\+\_\+features\+\_\+names[$\,$]\hspace{0.3cm}{\ttfamily [extern]}}



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

