\doxysection{src/gsm/abis\+\_\+nm.c File Reference}
\label{abis__nm_8c}\index{src/gsm/abis\_nm.c@{src/gsm/abis\_nm.c}}
{\ttfamily \#include $<$stdint.\+h$>$}\newline
{\ttfamily \#include $<$errno.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/core/utils.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/core/logging.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/gsm/tlv.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/gsm/gsm\+\_\+utils.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/gsm/protocol/gsm\+\_\+12\+\_\+21.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/gsm/abis\+\_\+nm.\+h$>$}\newline
\doxysubsection*{Functions}
\begin{DoxyCompactItemize}
\item 
const char $\ast$ \textbf{ abis\+\_\+nm\+\_\+nack\+\_\+name} (uint8\+\_\+t nack)
\begin{DoxyCompactList}\small\item\em Get human-\/readable string for OML NACK message type. \end{DoxyCompactList}\item 
const char $\ast$ \textbf{ abis\+\_\+nm\+\_\+nack\+\_\+cause\+\_\+name} (uint8\+\_\+t \textbf{ cause})
\begin{DoxyCompactList}\small\item\em Get human-\/readable string for NACK cause. \end{DoxyCompactList}\item 
const char $\ast$ \textbf{ abis\+\_\+nm\+\_\+event\+\_\+type\+\_\+name} (uint8\+\_\+t \textbf{ cause})
\begin{DoxyCompactList}\small\item\em Get human-\/readable string for OML event type. \end{DoxyCompactList}\item 
const char $\ast$ \textbf{ abis\+\_\+nm\+\_\+severity\+\_\+name} (uint8\+\_\+t \textbf{ cause})
\begin{DoxyCompactList}\small\item\em Get human-\/readable string for perceived OML severity. \end{DoxyCompactList}\item 
const char $\ast$ \textbf{ abis\+\_\+nm\+\_\+opstate\+\_\+name} (uint8\+\_\+t os)
\begin{DoxyCompactList}\small\item\em Get human-\/readable string for OML Operational State. \end{DoxyCompactList}\item 
const char $\ast$ \textbf{ abis\+\_\+nm\+\_\+avail\+\_\+name} (uint8\+\_\+t avail)
\begin{DoxyCompactList}\small\item\em Get human-\/readable string for OML Availability State. \end{DoxyCompactList}\item 
const char $\ast$ \textbf{ abis\+\_\+nm\+\_\+test\+\_\+name} (uint8\+\_\+t test)
\begin{DoxyCompactList}\small\item\em Get human-\/readable string for OML test. \end{DoxyCompactList}\item 
struct \textbf{ msgb} $\ast$ \textbf{ abis\+\_\+nm\+\_\+fail\+\_\+evt\+\_\+rep} (enum \textbf{ abis\+\_\+nm\+\_\+event\+\_\+type} t, enum \textbf{ abis\+\_\+nm\+\_\+severity} s, enum \textbf{ abis\+\_\+nm\+\_\+pcause\+\_\+type} ct, uint16\+\_\+t cause\+\_\+value, const char $\ast$fmt,...)
\begin{DoxyCompactList}\small\item\em Pack 3GPP TS 12.\+21 § 8.\+8.\+2 Failure Event Report into msgb. \end{DoxyCompactList}\item 
struct \textbf{ msgb} $\ast$ \textbf{ abis\+\_\+nm\+\_\+fail\+\_\+evt\+\_\+vrep} (enum \textbf{ abis\+\_\+nm\+\_\+event\+\_\+type} t, enum \textbf{ abis\+\_\+nm\+\_\+severity} s, enum \textbf{ abis\+\_\+nm\+\_\+pcause\+\_\+type} ct, uint16\+\_\+t cause\+\_\+value, const char $\ast$fmt, va\+\_\+list ap)
\begin{DoxyCompactList}\small\item\em Pack 3GPP TS 12.\+21 § 8.\+8.\+2 Failure Event Report into msgb. \end{DoxyCompactList}\item 
uint16\+\_\+t \textbf{ abis\+\_\+nm\+\_\+sw\+\_\+desc\+\_\+len} (const struct \textbf{ abis\+\_\+nm\+\_\+sw\+\_\+desc} $\ast$sw, bool put\+\_\+sw\+\_\+desc)
\begin{DoxyCompactList}\small\item\em Compute length of given 3GPP TS 52.\+021 §9.4.\+62 SW Description. \end{DoxyCompactList}\item 
uint16\+\_\+t \textbf{ abis\+\_\+nm\+\_\+put\+\_\+sw\+\_\+desc} (struct \textbf{ msgb} $\ast$\textbf{ msg}, const struct \textbf{ abis\+\_\+nm\+\_\+sw\+\_\+desc} $\ast$sw, bool put\+\_\+sw\+\_\+desc)
\begin{DoxyCompactList}\small\item\em Put given 3GPP TS 52.\+021 §9.4.\+62 SW Description into msgb. \end{DoxyCompactList}\item 
uint16\+\_\+t \textbf{ abis\+\_\+nm\+\_\+put\+\_\+sw\+\_\+file} (struct \textbf{ msgb} $\ast$\textbf{ msg}, const char $\ast$id, const char $\ast$ver, bool put\+\_\+sw\+\_\+desc)
\begin{DoxyCompactList}\small\item\em Put given file ID/\+Version pair as 3GPP TS 52.\+021 §9.4.\+62 SW Description into msgb. \end{DoxyCompactList}\item 
uint32\+\_\+t \textbf{ abis\+\_\+nm\+\_\+get\+\_\+sw\+\_\+desc\+\_\+len} (const uint8\+\_\+t $\ast$buf, size\+\_\+t \textbf{ len})
\begin{DoxyCompactList}\small\item\em Get length of first 3GPP TS 52.\+021 §9.4.\+62 SW Description from buffer. \end{DoxyCompactList}\item 
static int \textbf{ abis\+\_\+nm\+\_\+get\+\_\+sw\+\_\+desc} (struct \textbf{ abis\+\_\+nm\+\_\+sw\+\_\+desc} $\ast$sw, const uint8\+\_\+t $\ast$buf, size\+\_\+t \textbf{ length})
\begin{DoxyCompactList}\small\item\em Parse single 3GPP TS 52.\+021 §9.4.\+62 SW Description from buffer. \end{DoxyCompactList}\item 
int \textbf{ abis\+\_\+nm\+\_\+get\+\_\+sw\+\_\+conf} (const uint8\+\_\+t $\ast$buf, size\+\_\+t buf\+\_\+len, struct \textbf{ abis\+\_\+nm\+\_\+sw\+\_\+desc} $\ast$sw, uint16\+\_\+t sw\+\_\+len)
\begin{DoxyCompactList}\small\item\em Parse 3GPP TS 52.\+021 §9.4.\+61 SW Configuration from buffer. \end{DoxyCompactList}\item 
int \textbf{ abis\+\_\+nm\+\_\+chcomb4pchan} (enum \textbf{ gsm\+\_\+phys\+\_\+chan\+\_\+config} pchan)
\begin{DoxyCompactList}\small\item\em Obtain OML Channel Combination for phnsical channel config. \end{DoxyCompactList}\item 
enum \textbf{ gsm\+\_\+phys\+\_\+chan\+\_\+config} \textbf{ abis\+\_\+nm\+\_\+pchan4chcomb} (uint8\+\_\+t chcomb)
\begin{DoxyCompactList}\small\item\em Obtain physical channel config for OML Channel Combination. \end{DoxyCompactList}\item 
char $\ast$ \textbf{ abis\+\_\+nm\+\_\+dump\+\_\+foh\+\_\+buf} (char $\ast$buf, size\+\_\+t buf\+\_\+len, const struct \textbf{ abis\+\_\+om\+\_\+fom\+\_\+hdr} $\ast$foh)
\item 
const char $\ast$ \textbf{ abis\+\_\+nm\+\_\+dump\+\_\+foh} (const struct \textbf{ abis\+\_\+om\+\_\+fom\+\_\+hdr} $\ast$foh)
\item 
char $\ast$ \textbf{ abis\+\_\+nm\+\_\+dump\+\_\+foh\+\_\+c} (void $\ast$ctx, const struct \textbf{ abis\+\_\+om\+\_\+fom\+\_\+hdr} $\ast$foh)
\item 
void \textbf{ abis\+\_\+nm\+\_\+debugp\+\_\+foh} (int ss, struct \textbf{ abis\+\_\+om\+\_\+fom\+\_\+hdr} $\ast$foh)
\end{DoxyCompactItemize}
\doxysubsection*{Variables}
\begin{DoxyCompactItemize}
\item 
const char \textbf{ abis\+\_\+nm\+\_\+ipa\+\_\+magic} [13] = \char`\"{}com.\+ipaccess\char`\"{}
\item 
const char \textbf{ abis\+\_\+nm\+\_\+osmo\+\_\+magic} [12] = \char`\"{}org.\+osmocom\char`\"{}
\item 
enum \textbf{ abis\+\_\+nm\+\_\+msgtype} \textbf{ abis\+\_\+nm\+\_\+reports} [4]
\begin{DoxyCompactList}\small\item\em unidirectional messages from BTS to BSC \end{DoxyCompactList}\item 
enum \textbf{ abis\+\_\+nm\+\_\+msgtype} \textbf{ abis\+\_\+nm\+\_\+no\+\_\+ack\+\_\+nack} [3]
\begin{DoxyCompactList}\small\item\em messages without ACK/\+NACK \end{DoxyCompactList}\item 
enum \textbf{ abis\+\_\+nm\+\_\+msgtype} \textbf{ abis\+\_\+nm\+\_\+sw\+\_\+load\+\_\+msgs} [9]
\begin{DoxyCompactList}\small\item\em messages related to software load \end{DoxyCompactList}\item 
enum \textbf{ abis\+\_\+nm\+\_\+msgtype} \textbf{ abis\+\_\+nm\+\_\+nacks} [33]
\begin{DoxyCompactList}\small\item\em All NACKs (negative acknowledgements. \end{DoxyCompactList}\item 
static const struct \textbf{ value\+\_\+string} \textbf{ nack\+\_\+names} [$\,$]
\item 
const struct \textbf{ value\+\_\+string} \textbf{ abis\+\_\+mm\+\_\+event\+\_\+cause\+\_\+names} [$\,$]
\item 
const struct \textbf{ value\+\_\+string} \textbf{ abis\+\_\+nm\+\_\+pcause\+\_\+type\+\_\+names} [$\,$]
\item 
static const struct \textbf{ value\+\_\+string} \textbf{ nack\+\_\+cause\+\_\+names} [$\,$]
\item 
static const struct \textbf{ value\+\_\+string} \textbf{ event\+\_\+type\+\_\+names} [$\,$]
\item 
static const struct \textbf{ value\+\_\+string} \textbf{ severity\+\_\+names} [$\,$]
\item 
const uint8\+\_\+t \textbf{ abis\+\_\+nm\+\_\+t200\+\_\+ms} [$\,$]
\begin{DoxyCompactList}\small\item\em 3GPP TS 12.\+21 9.\+4.\+53 T200 values (in msec) \end{DoxyCompactList}\item 
const struct \textbf{ value\+\_\+string} \textbf{ abis\+\_\+nm\+\_\+msgtype\+\_\+names} [$\,$]
\begin{DoxyCompactList}\small\item\em 3GPP TS 52.\+021 §9.1 Message Types \end{DoxyCompactList}\item 
const struct \textbf{ value\+\_\+string} \textbf{ abis\+\_\+nm\+\_\+att\+\_\+names} [$\,$]
\begin{DoxyCompactList}\small\item\em 3GPP TS 52.\+021 §9.4 Attributes and Parameters \end{DoxyCompactList}\item 
enum \textbf{ abis\+\_\+nm\+\_\+attr} \textbf{ abis\+\_\+nm\+\_\+att\+\_\+settable} [$\,$]
\begin{DoxyCompactList}\small\item\em Attributes that the BSC can set, not only get, according to Section 9.\+4. \end{DoxyCompactList}\item 
const struct \textbf{ tlv\+\_\+definition} \textbf{ abis\+\_\+nm\+\_\+att\+\_\+tlvdef\+\_\+ipa}
\begin{DoxyCompactList}\small\item\em GSM A-\/bis OML IPA TLV parser definition. \end{DoxyCompactList}\item 
const struct \textbf{ tlv\+\_\+definition} \textbf{ abis\+\_\+nm\+\_\+att\+\_\+tlvdef}
\begin{DoxyCompactList}\small\item\em GSM A-\/bis OML TLV parser definition. \end{DoxyCompactList}\item 
const struct \textbf{ tlv\+\_\+definition} \textbf{ abis\+\_\+nm\+\_\+osmo\+\_\+att\+\_\+tlvdef}
\begin{DoxyCompactList}\small\item\em org.\+osmocom GSM A-\/bis OML TLV parser definition \end{DoxyCompactList}\item 
const struct \textbf{ value\+\_\+string} \textbf{ abis\+\_\+nm\+\_\+msg\+\_\+disc\+\_\+names} [$\,$]
\begin{DoxyCompactList}\small\item\em Human-\/readable strings for A-\/bis OML Object Class. \end{DoxyCompactList}\item 
const struct \textbf{ value\+\_\+string} \textbf{ abis\+\_\+nm\+\_\+obj\+\_\+class\+\_\+names} [$\,$]
\begin{DoxyCompactList}\small\item\em Human-\/readable strings for A-\/bis OML Object Class. \end{DoxyCompactList}\item 
static const struct \textbf{ value\+\_\+string} \textbf{ avail\+\_\+names} [$\,$]
\item 
static const struct \textbf{ value\+\_\+string} \textbf{ test\+\_\+names} [$\,$]
\item 
const struct \textbf{ value\+\_\+string} \textbf{ abis\+\_\+nm\+\_\+adm\+\_\+state\+\_\+names} [$\,$]
\begin{DoxyCompactList}\small\item\em Human-\/readable names for OML administrative state. \end{DoxyCompactList}\item 
static enum \textbf{ abis\+\_\+nm\+\_\+chan\+\_\+comb} \textbf{ chcomb4pchan} [$\,$]
\item 
const struct \textbf{ value\+\_\+string} \textbf{ abis\+\_\+nm\+\_\+ipacc\+\_\+freq\+\_\+band\+\_\+desc} [$\,$]
\item 
const struct \textbf{ value\+\_\+string} \textbf{ abis\+\_\+nm\+\_\+ipacc\+\_\+ciph\+\_\+algo\+\_\+desc} [$\,$]
\item 
const struct \textbf{ value\+\_\+string} \textbf{ abis\+\_\+nm\+\_\+ipacc\+\_\+chant\+\_\+desc} [$\,$]
\item 
const struct \textbf{ value\+\_\+string} \textbf{ abis\+\_\+nm\+\_\+ipacc\+\_\+chanm\+\_\+desc} [$\,$]
\item 
const struct \textbf{ value\+\_\+string} \textbf{ abis\+\_\+nm\+\_\+ipacc\+\_\+gprs\+\_\+coding\+\_\+desc} [$\,$]
\item 
const struct \textbf{ value\+\_\+string} \textbf{ abis\+\_\+nm\+\_\+ipacc\+\_\+rtp\+\_\+feat\+\_\+desc} [$\,$]
\item 
const struct \textbf{ value\+\_\+string} \textbf{ abis\+\_\+nm\+\_\+ipacc\+\_\+rsl\+\_\+feat\+\_\+desc} [$\,$]
\end{DoxyCompactItemize}
