\doxysection{src/gsm/gsm48.c File Reference}
\label{gsm48_8c}\index{src/gsm/gsm48.c@{src/gsm/gsm48.c}}


GSM Mobile Radio Interface Layer 3 messages 3GPP TS 04.\+08 version 7.\+21.\+0 Release 1998 / ETSI TS 100 940 V7.\+21.\+0.  


{\ttfamily \#include $<$stdint.\+h$>$}\newline
{\ttfamily \#include $<$stdio.\+h$>$}\newline
{\ttfamily \#include $<$string.\+h$>$}\newline
{\ttfamily \#include $<$stdbool.\+h$>$}\newline
{\ttfamily \#include $<$inttypes.\+h$>$}\newline
{\ttfamily \#include $<$ctype.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/core/utils.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/core/byteswap.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/core/bit16gen.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/core/bit32gen.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/core/talloc.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/gsm/tlv.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/gsm/gsm48.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/gsm/gsm0502.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/gsm/gsm\+\_\+utils.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/gsm/protocol/gsm\+\_\+04\+\_\+08.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/gsm/protocol/gsm\+\_\+04\+\_\+80.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/gsm/protocol/gsm\+\_\+08\+\_\+58.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/gsm/protocol/gsm\+\_\+04\+\_\+08\+\_\+gprs.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/gsm/protocol/gsm\+\_\+23\+\_\+003.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/gsm/protocol/gsm\+\_\+44\+\_\+068.\+h$>$}\newline
\doxysubsection*{Functions}
\begin{DoxyCompactItemize}
\item 
const char $\ast$ \textbf{ rr\+\_\+cause\+\_\+name} (uint8\+\_\+t \textbf{ cause})
\begin{DoxyCompactList}\small\item\em return string representation of RR Cause value \end{DoxyCompactList}\item 
char $\ast$ \textbf{ osmo\+\_\+rai\+\_\+name\+\_\+buf} (char $\ast$buf, size\+\_\+t buf\+\_\+len, const struct \textbf{ gprs\+\_\+ra\+\_\+id} $\ast$rai)
\begin{DoxyCompactList}\small\item\em Return MCC-\/\+MNC-\/\+LAC-\/\+RAC as string, in a caller-\/provided output buffer. \end{DoxyCompactList}\item 
const char $\ast$ \textbf{ osmo\+\_\+rai\+\_\+name} (const struct \textbf{ gprs\+\_\+ra\+\_\+id} $\ast$rai)
\begin{DoxyCompactList}\small\item\em Return MCC-\/\+MNC-\/\+LAC-\/\+RAC as string, in a static buffer. \end{DoxyCompactList}\item 
char $\ast$ \textbf{ osmo\+\_\+rai\+\_\+name\+\_\+c} (const void $\ast$ctx, const struct \textbf{ gprs\+\_\+ra\+\_\+id} $\ast$rai)
\begin{DoxyCompactList}\small\item\em Return MCC-\/\+MNC-\/\+LAC-\/\+RAC as string, in dynamically-\/allocated output buffer. \end{DoxyCompactList}\item 
void \textbf{ osmo\+\_\+rai\+\_\+to\+\_\+gprs} (struct \textbf{ gprs\+\_\+ra\+\_\+id} $\ast$dest, const struct \textbf{ osmo\+\_\+routing\+\_\+area\+\_\+id} $\ast$src)
\begin{DoxyCompactList}\small\item\em Convert \doxyref{osmo\+\_\+routing\+\_\+area\+\_\+id}{p.}{structosmo__routing__area__id} (new) into \doxyref{gprs\+\_\+ra\+\_\+id}{p.}{structgprs__ra__id} (old) \end{DoxyCompactList}\item 
void \textbf{ gprs\+\_\+rai\+\_\+to\+\_\+osmo} (struct \textbf{ osmo\+\_\+routing\+\_\+area\+\_\+id} $\ast$dest, const struct \textbf{ gprs\+\_\+ra\+\_\+id} $\ast$src)
\begin{DoxyCompactList}\small\item\em Convert \doxyref{gprs\+\_\+ra\+\_\+id}{p.}{structgprs__ra__id} (old) into \doxyref{osmo\+\_\+routing\+\_\+area\+\_\+id}{p.}{structosmo__routing__area__id} (new) \end{DoxyCompactList}\item 
const char $\ast$ \textbf{ gsm48\+\_\+cc\+\_\+state\+\_\+name} (uint8\+\_\+t state)
\begin{DoxyCompactList}\small\item\em return string representation of CC State \end{DoxyCompactList}\item 
const char $\ast$ \textbf{ gsm48\+\_\+cc\+\_\+msg\+\_\+name} (uint8\+\_\+t msgtype)
\begin{DoxyCompactList}\small\item\em return string representation of CC Message Type \end{DoxyCompactList}\item 
const char $\ast$ \textbf{ gsm48\+\_\+rr\+\_\+msg\+\_\+name} (uint8\+\_\+t msgtype)
\begin{DoxyCompactList}\small\item\em return string representation of RR Message Type \end{DoxyCompactList}\item 
const char $\ast$ \textbf{ gsm48\+\_\+rr\+\_\+short\+\_\+pd\+\_\+msg\+\_\+name} (uint8\+\_\+t msgtype)
\begin{DoxyCompactList}\small\item\em return string representation of RR Message Type using the RR short protocol discriminator \end{DoxyCompactList}\item 
enum \textbf{ gsm48\+\_\+chan\+\_\+mode} \textbf{ gsm48\+\_\+chan\+\_\+mode\+\_\+to\+\_\+vamos} (enum \textbf{ gsm48\+\_\+chan\+\_\+mode} \textbf{ mode})
\begin{DoxyCompactList}\small\item\em Translate GSM48\+\_\+\+CMODE\+\_\+\+SPEECH\+\_\+$\ast$ to its corresponding GSM48\+\_\+\+CMODE\+\_\+\+SPEECH\+\_\+$\ast$\+\_\+\+VAMOS mode. \end{DoxyCompactList}\item 
enum \textbf{ gsm48\+\_\+chan\+\_\+mode} \textbf{ gsm48\+\_\+chan\+\_\+mode\+\_\+to\+\_\+non\+\_\+vamos} (enum \textbf{ gsm48\+\_\+chan\+\_\+mode} \textbf{ mode})
\begin{DoxyCompactList}\small\item\em Translate GSM48\+\_\+\+CMODE\+\_\+\+SPEECH\+\_\+$\ast$\+\_\+\+VAMOS to its corresponding GSM48\+\_\+\+CMODE\+\_\+\+SPEECH\+\_\+$\ast$ non-\/vamos mode. \end{DoxyCompactList}\item 
const char $\ast$ \textbf{ gsm48\+\_\+mi\+\_\+type\+\_\+name} (uint8\+\_\+t \textbf{ mi})
\begin{DoxyCompactList}\small\item\em return string representation of Mobile Identity Type \end{DoxyCompactList}\item 
char $\ast$ \textbf{ osmo\+\_\+mi\+\_\+name\+\_\+buf} (char $\ast$buf, size\+\_\+t buf\+\_\+len, const uint8\+\_\+t $\ast$\textbf{ mi}, uint8\+\_\+t \textbf{ mi\+\_\+len})
\begin{DoxyCompactList}\small\item\em Deprecated, see osmo\+\_\+mobile\+\_\+identity instead. \end{DoxyCompactList}\item 
const char $\ast$ \textbf{ osmo\+\_\+mi\+\_\+name} (const uint8\+\_\+t $\ast$\textbf{ mi}, uint8\+\_\+t \textbf{ mi\+\_\+len})
\begin{DoxyCompactList}\small\item\em Deprecated, see osmo\+\_\+mobile\+\_\+identity instead. \end{DoxyCompactList}\item 
char $\ast$ \textbf{ osmo\+\_\+mi\+\_\+name\+\_\+c} (const void $\ast$ctx, const uint8\+\_\+t $\ast$\textbf{ mi}, uint8\+\_\+t \textbf{ mi\+\_\+len})
\begin{DoxyCompactList}\small\item\em Deprecated, see osmo\+\_\+mobile\+\_\+identity instead. \end{DoxyCompactList}\item 
int \textbf{ osmo\+\_\+mobile\+\_\+identity\+\_\+decode} (struct osmo\+\_\+mobile\+\_\+identity $\ast$\textbf{ mi}, const uint8\+\_\+t $\ast$mi\+\_\+data, uint8\+\_\+t \textbf{ mi\+\_\+len}, bool allow\+\_\+hex)
\begin{DoxyCompactList}\small\item\em Extract Mobile Identity from encoded bytes (3GPP TS 24.\+008 10.\+5.\+1.\+4). \end{DoxyCompactList}\item 
int \textbf{ osmo\+\_\+mobile\+\_\+identity\+\_\+encoded\+\_\+len} (const struct osmo\+\_\+mobile\+\_\+identity $\ast$\textbf{ mi}, int $\ast$mi\+\_\+digits)
\begin{DoxyCompactList}\small\item\em Return the number of encoded Mobile Identity octets, without actually encoding. \end{DoxyCompactList}\item 
int \textbf{ osmo\+\_\+mobile\+\_\+identity\+\_\+encode\+\_\+buf} (uint8\+\_\+t $\ast$buf, size\+\_\+t buflen, const struct osmo\+\_\+mobile\+\_\+identity $\ast$\textbf{ mi}, bool allow\+\_\+hex)
\begin{DoxyCompactList}\small\item\em Encode Mobile Identity from uint32\+\_\+t (TMSI) or digits string (all others) (3GPP TS 24.\+008 10.\+5.\+1.\+4). \end{DoxyCompactList}\item 
int \textbf{ osmo\+\_\+mobile\+\_\+identity\+\_\+encode\+\_\+msgb} (struct \textbf{ msgb} $\ast$\textbf{ msg}, const struct osmo\+\_\+mobile\+\_\+identity $\ast$\textbf{ mi}, bool allow\+\_\+hex)
\begin{DoxyCompactList}\small\item\em Encode Mobile Identity type and BCD digits, appended to a msgb. \end{DoxyCompactList}\item 
int \textbf{ osmo\+\_\+mobile\+\_\+identity\+\_\+decode\+\_\+from\+\_\+l3\+\_\+buf} (struct osmo\+\_\+mobile\+\_\+identity $\ast$\textbf{ mi}, const uint8\+\_\+t $\ast$l3\+\_\+data, size\+\_\+t l3\+\_\+len, bool allow\+\_\+hex)
\begin{DoxyCompactList}\small\item\em Extract Mobile Identity from a Complete Layer 3 message. \end{DoxyCompactList}\item 
int \textbf{ osmo\+\_\+mobile\+\_\+identity\+\_\+decode\+\_\+from\+\_\+l3} (struct osmo\+\_\+mobile\+\_\+identity $\ast$\textbf{ mi}, struct \textbf{ msgb} $\ast$\textbf{ msg}, bool allow\+\_\+hex)
\begin{DoxyCompactList}\small\item\em Extract Mobile Identity from a Complete Layer 3 message. \end{DoxyCompactList}\item 
int \textbf{ osmo\+\_\+mobile\+\_\+identity\+\_\+to\+\_\+str\+\_\+buf} (char $\ast$buf, size\+\_\+t buflen, const struct osmo\+\_\+mobile\+\_\+identity $\ast$\textbf{ mi})
\begin{DoxyCompactList}\small\item\em Return a human readable representation of a struct osmo\+\_\+mobile\+\_\+identity. \end{DoxyCompactList}\item 
char $\ast$ \textbf{ osmo\+\_\+mobile\+\_\+identity\+\_\+to\+\_\+str\+\_\+c} (void $\ast$ctx, const struct osmo\+\_\+mobile\+\_\+identity $\ast$\textbf{ mi})
\begin{DoxyCompactList}\small\item\em Like \doxyref{osmo\+\_\+mobile\+\_\+identity\+\_\+to\+\_\+str\+\_\+buf()}{p.}{group__gsm0408_ga2314c30d9470ecf1e15949ba1827bf0a}, but return the string in a talloc buffer. \end{DoxyCompactList}\item 
int \textbf{ osmo\+\_\+mobile\+\_\+identity\+\_\+cmp} (const struct osmo\+\_\+mobile\+\_\+identity $\ast$a, const struct osmo\+\_\+mobile\+\_\+identity $\ast$b)
\begin{DoxyCompactList}\small\item\em Compare two osmo\+\_\+mobile\+\_\+identity structs, returning typical cmp() result. \end{DoxyCompactList}\item 
bool \textbf{ gsm48\+\_\+hdr\+\_\+gmm\+\_\+cipherable} (const struct \textbf{ gsm48\+\_\+hdr} $\ast$\textbf{ hdr})
\begin{DoxyCompactList}\small\item\em Checks is particular message is cipherable in A/\+Gb mode according to 3GPP TS 24.\+008 § 4.\+7.\+1.\+2. \end{DoxyCompactList}\item 
void \textbf{ gsm48\+\_\+mcc\+\_\+mnc\+\_\+to\+\_\+bcd} (uint8\+\_\+t $\ast$bcd\+\_\+dst, uint16\+\_\+t mcc, uint16\+\_\+t mnc)
\item 
void \textbf{ gsm48\+\_\+mcc\+\_\+mnc\+\_\+from\+\_\+bcd} (uint8\+\_\+t $\ast$bcd\+\_\+src, uint16\+\_\+t $\ast$mcc, uint16\+\_\+t $\ast$mnc)
\item 
void \textbf{ gsm48\+\_\+generate\+\_\+lai} (struct \textbf{ gsm48\+\_\+loc\+\_\+area\+\_\+id} $\ast$lai48, uint16\+\_\+t mcc, uint16\+\_\+t mnc, uint16\+\_\+t \textbf{ lac})
\begin{DoxyCompactList}\small\item\em Encode TS 04.\+08 Location Area Identifier, legacy implementation. \end{DoxyCompactList}\item 
void \textbf{ gsm48\+\_\+generate\+\_\+lai2} (struct \textbf{ gsm48\+\_\+loc\+\_\+area\+\_\+id} $\ast$lai48, const struct \textbf{ osmo\+\_\+location\+\_\+area\+\_\+id} $\ast$\textbf{ lai})
\begin{DoxyCompactList}\small\item\em Encode TS 04.\+08 Location Area Identifier. \end{DoxyCompactList}\item 
int \textbf{ gsm48\+\_\+decode\+\_\+lai} (struct \textbf{ gsm48\+\_\+loc\+\_\+area\+\_\+id} $\ast$\textbf{ lai}, uint16\+\_\+t $\ast$mcc, uint16\+\_\+t $\ast$mnc, uint16\+\_\+t $\ast$\textbf{ lac})
\begin{DoxyCompactList}\small\item\em Decode TS 04.\+08 Location Area Identifier, legacy implementation. \end{DoxyCompactList}\item 
void \textbf{ gsm48\+\_\+decode\+\_\+lai2} (const struct \textbf{ gsm48\+\_\+loc\+\_\+area\+\_\+id} $\ast$\textbf{ lai}, struct \textbf{ osmo\+\_\+location\+\_\+area\+\_\+id} $\ast$decoded)
\begin{DoxyCompactList}\small\item\em Decode TS 04.\+08 Location Area Identifier. \end{DoxyCompactList}\item 
void \textbf{ gsm48\+\_\+set\+\_\+dtx} (struct \textbf{ gsm48\+\_\+cell\+\_\+options} $\ast$op, enum \textbf{ gsm48\+\_\+dtx\+\_\+mode} full, enum \textbf{ gsm48\+\_\+dtx\+\_\+mode} half, bool is\+\_\+bcch)
\begin{DoxyCompactList}\small\item\em Set DTX mode in Cell Options IE (3GPP TS 44.\+018) \end{DoxyCompactList}\item 
int \textbf{ gsm48\+\_\+generate\+\_\+mid\+\_\+from\+\_\+tmsi} (uint8\+\_\+t $\ast$buf, uint32\+\_\+t tmsi)
\begin{DoxyCompactList}\small\item\em Deprecated, see osmo\+\_\+mobile\+\_\+identity instead. \end{DoxyCompactList}\item 
uint8\+\_\+t \textbf{ gsm48\+\_\+generate\+\_\+mid} (uint8\+\_\+t $\ast$buf, const char $\ast$id, uint8\+\_\+t mi\+\_\+type)
\begin{DoxyCompactList}\small\item\em Deprecated, see osmo\+\_\+mobile\+\_\+identity instead. \end{DoxyCompactList}\item 
int \textbf{ gsm48\+\_\+generate\+\_\+mid\+\_\+from\+\_\+imsi} (uint8\+\_\+t $\ast$buf, const char $\ast$imsi)
\begin{DoxyCompactList}\small\item\em Deprecated, see osmo\+\_\+mobile\+\_\+identity instead. \end{DoxyCompactList}\item 
int \textbf{ gsm48\+\_\+mi\+\_\+to\+\_\+string} (char $\ast$string, int str\+\_\+len, const uint8\+\_\+t $\ast$\textbf{ mi}, int \textbf{ mi\+\_\+len})
\begin{DoxyCompactList}\small\item\em Deprecated, see osmo\+\_\+mobile\+\_\+identity instead. \end{DoxyCompactList}\item 
int \textbf{ osmo\+\_\+routing\+\_\+area\+\_\+id\+\_\+decode} (struct \textbf{ osmo\+\_\+routing\+\_\+area\+\_\+id} $\ast$dst, const uint8\+\_\+t $\ast$ra\+\_\+data, size\+\_\+t ra\+\_\+data\+\_\+len)
\begin{DoxyCompactList}\small\item\em Decode to struct \doxyref{osmo\+\_\+routing\+\_\+area\+\_\+id}{p.}{structosmo__routing__area__id} from a 3GPP TS 24.\+008 § 10.\+5.\+5.\+15 Routing area identification. \end{DoxyCompactList}\item 
int \textbf{ osmo\+\_\+routing\+\_\+area\+\_\+id\+\_\+encode\+\_\+buf} (uint8\+\_\+t $\ast$buf, size\+\_\+t buflen, const struct \textbf{ osmo\+\_\+routing\+\_\+area\+\_\+id} $\ast$src)
\begin{DoxyCompactList}\small\item\em Encode struct \doxyref{osmo\+\_\+routing\+\_\+area\+\_\+id}{p.}{structosmo__routing__area__id} to a 3GPP TS 24.\+008 § 10.\+5.\+5.\+15 Routing area identification\+: write to a buffer. \end{DoxyCompactList}\item 
int \textbf{ osmo\+\_\+routing\+\_\+area\+\_\+id\+\_\+encode\+\_\+msgb} (struct \textbf{ msgb} $\ast$\textbf{ msg}, const struct \textbf{ osmo\+\_\+routing\+\_\+area\+\_\+id} $\ast$src)
\begin{DoxyCompactList}\small\item\em Encode struct \doxyref{osmo\+\_\+routing\+\_\+area\+\_\+id}{p.}{structosmo__routing__area__id} to a 3GPP TS 24.\+008 § 10.\+5.\+5.\+15 Routing area identification\+: append to msgb. \end{DoxyCompactList}\item 
void \textbf{ gsm48\+\_\+parse\+\_\+ra} (struct \textbf{ gprs\+\_\+ra\+\_\+id} $\ast$raid, const uint8\+\_\+t $\ast$buf)
\begin{DoxyCompactList}\small\item\em Parse TS 04.\+08 Routing Area Identifier. \end{DoxyCompactList}\item 
void \textbf{ gsm48\+\_\+encode\+\_\+ra} (struct \textbf{ gsm48\+\_\+ra\+\_\+id} $\ast$out, const struct \textbf{ gprs\+\_\+ra\+\_\+id} $\ast$raid)
\begin{DoxyCompactList}\small\item\em Encode a 3GPP TS 24.\+008 § 10.\+5.\+5.\+15 Routing area identification. \end{DoxyCompactList}\item 
int \textbf{ gsm48\+\_\+construct\+\_\+ra} (uint8\+\_\+t $\ast$buf, const struct \textbf{ gprs\+\_\+ra\+\_\+id} $\ast$raid)
\begin{DoxyCompactList}\small\item\em Encode a TS 04.\+08 Routing Area Identifier. \end{DoxyCompactList}\item 
bool \textbf{ gsm48\+\_\+ra\+\_\+equal} (const struct \textbf{ gprs\+\_\+ra\+\_\+id} $\ast$raid1, const struct \textbf{ gprs\+\_\+ra\+\_\+id} $\ast$raid2)
\begin{DoxyCompactList}\small\item\em Compare a TS 04.\+08 Routing Area Identifier. \end{DoxyCompactList}\item 
int \textbf{ gsm48\+\_\+number\+\_\+of\+\_\+paging\+\_\+subchannels} (const struct \textbf{ gsm48\+\_\+control\+\_\+channel\+\_\+descr} $\ast$\textbf{ chan\+\_\+desc})
\begin{DoxyCompactList}\small\item\em Determine number of paging sub-\/channels. \end{DoxyCompactList}\item 
char $\ast$ \textbf{ gsm48\+\_\+pdisc\+\_\+msgtype\+\_\+name\+\_\+buf} (char $\ast$buf, size\+\_\+t buf\+\_\+len, uint8\+\_\+t pdisc, uint8\+\_\+t \textbf{ msg\+\_\+type})
\begin{DoxyCompactList}\small\item\em Compose a string naming the message type for given protocol, in a caller-\/provided buffer. \end{DoxyCompactList}\item 
const char $\ast$ \textbf{ gsm48\+\_\+pdisc\+\_\+msgtype\+\_\+name} (uint8\+\_\+t pdisc, uint8\+\_\+t \textbf{ msg\+\_\+type})
\begin{DoxyCompactList}\small\item\em Compose a string naming the message type for given protocol, in a static buffer. \end{DoxyCompactList}\item 
char $\ast$ \textbf{ gsm48\+\_\+pdisc\+\_\+msgtype\+\_\+name\+\_\+c} (const void $\ast$ctx, uint8\+\_\+t pdisc, uint8\+\_\+t \textbf{ msg\+\_\+type})
\begin{DoxyCompactList}\small\item\em Compose a string naming the message type for given protocol, in a dynamically-\/allocated buffer. \end{DoxyCompactList}\item 
struct \textbf{ gsm48\+\_\+hdr} $\ast$ \textbf{ gsm48\+\_\+push\+\_\+l3hdr} (struct \textbf{ msgb} $\ast$\textbf{ msg}, uint8\+\_\+t pdisc, uint8\+\_\+t \textbf{ msg\+\_\+type})
\begin{DoxyCompactList}\small\item\em Wrap a given \doxyref{msg}{p.}{gsm__08__08_8h_a22fb9e0346dd94237971f7d829821bfa} with \doxyref{gsm48\+\_\+hdr}{p.}{structgsm48__hdr} structure. \end{DoxyCompactList}\item 
bool \textbf{ osmo\+\_\+gsm48\+\_\+classmark1\+\_\+is\+\_\+r99} (const struct \textbf{ gsm48\+\_\+classmark1} $\ast$cm1)
\item 
bool \textbf{ osmo\+\_\+gsm48\+\_\+classmark2\+\_\+is\+\_\+r99} (const struct \textbf{ gsm48\+\_\+classmark2} $\ast$\textbf{ cm2}, uint8\+\_\+t \textbf{ cm2\+\_\+len})
\item 
bool \textbf{ osmo\+\_\+gsm48\+\_\+classmark\+\_\+is\+\_\+r99} (const struct \textbf{ osmo\+\_\+gsm48\+\_\+classmark} $\ast$cm)
\begin{DoxyCompactList}\small\item\em Return true if any of Classmark 1 or Classmark 2 are present and indicate R99 capability. \end{DoxyCompactList}\item 
char $\ast$ \textbf{ osmo\+\_\+gsm48\+\_\+classmark\+\_\+a5\+\_\+name\+\_\+buf} (char $\ast$buf, size\+\_\+t buf\+\_\+len, const struct \textbf{ osmo\+\_\+gsm48\+\_\+classmark} $\ast$cm)
\begin{DoxyCompactList}\small\item\em Return a string representation of A5 cipher algorithms indicated by Classmark 1, 2 and 3. \end{DoxyCompactList}\item 
const char $\ast$ \textbf{ osmo\+\_\+gsm48\+\_\+classmark\+\_\+a5\+\_\+name} (const struct \textbf{ osmo\+\_\+gsm48\+\_\+classmark} $\ast$cm)
\begin{DoxyCompactList}\small\item\em Return a string representation of A5 cipher algorithms indicated by Classmark 1, 2 and 3. \end{DoxyCompactList}\item 
char $\ast$ \textbf{ osmo\+\_\+gsm48\+\_\+classmark\+\_\+a5\+\_\+name\+\_\+c} (const void $\ast$ctx, const struct \textbf{ osmo\+\_\+gsm48\+\_\+classmark} $\ast$cm)
\begin{DoxyCompactList}\small\item\em Return a string representation of A5 cipher algorithms indicated by Classmark 1, 2 and 3. \end{DoxyCompactList}\item 
void \textbf{ osmo\+\_\+gsm48\+\_\+classmark\+\_\+update} (struct \textbf{ osmo\+\_\+gsm48\+\_\+classmark} $\ast$dst, const struct \textbf{ osmo\+\_\+gsm48\+\_\+classmark} $\ast$src)
\begin{DoxyCompactList}\small\item\em Overwrite dst with the Classmark information present in src. \end{DoxyCompactList}\item 
int \textbf{ osmo\+\_\+gsm48\+\_\+classmark\+\_\+supports\+\_\+a5} (const struct \textbf{ osmo\+\_\+gsm48\+\_\+classmark} $\ast$cm, uint8\+\_\+t a5)
\begin{DoxyCompactList}\small\item\em Determine if the given Classmark (1/2/3) value permits a given A5/n cipher. \end{DoxyCompactList}\item 
int8\+\_\+t \textbf{ osmo\+\_\+gsm48\+\_\+rfpowercap2powerclass} (enum \textbf{ gsm\+\_\+band} band, uint8\+\_\+t rf\+\_\+power\+\_\+cap)
\begin{DoxyCompactList}\small\item\em Decode power class from Classmark1/2 RF power capability field. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection*{Variables}
\begin{DoxyCompactItemize}
\item 
const struct \textbf{ tlv\+\_\+definition} \textbf{ gsm48\+\_\+att\+\_\+tlvdef}
\begin{DoxyCompactList}\small\item\em TLV parser definitions for TS 04.\+08 CC. \end{DoxyCompactList}\item 
const struct \textbf{ tlv\+\_\+definition} \textbf{ gsm48\+\_\+rr\+\_\+att\+\_\+tlvdef}
\begin{DoxyCompactList}\small\item\em TLV parser definitions for TS 04.\+08 RR. \end{DoxyCompactList}\item 
const struct \textbf{ tlv\+\_\+definition} \textbf{ gsm48\+\_\+mm\+\_\+att\+\_\+tlvdef}
\begin{DoxyCompactList}\small\item\em TLV parser definitions for TS 04.\+08 MM. \end{DoxyCompactList}\item 
static const struct \textbf{ value\+\_\+string} \textbf{ rr\+\_\+cause\+\_\+names} [$\,$]
\item 
static const char $\ast$ \textbf{ cc\+\_\+state\+\_\+names} [32]
\item 
static const struct \textbf{ value\+\_\+string} \textbf{ cc\+\_\+msg\+\_\+names} [$\,$]
\item 
static const struct \textbf{ value\+\_\+string} \textbf{ rr\+\_\+msg\+\_\+names} [$\,$]
\item 
static const struct \textbf{ value\+\_\+string} \textbf{ rr\+\_\+msg\+\_\+type\+\_\+short\+\_\+names} [$\,$]
\item 
const struct \textbf{ value\+\_\+string} \textbf{ gsm48\+\_\+chan\+\_\+mode\+\_\+names} [$\,$]
\item 
const struct \textbf{ value\+\_\+string} \textbf{ gsm\+\_\+chan\+\_\+t\+\_\+names} [$\,$]
\item 
static const struct \textbf{ value\+\_\+string} \textbf{ mi\+\_\+type\+\_\+names} [$\,$]
\item 
const struct \textbf{ value\+\_\+string} \textbf{ gsm48\+\_\+pdisc\+\_\+names} [$\,$]
\begin{DoxyCompactList}\small\item\em TS 04.\+08 Protocol Descriptor names. \end{DoxyCompactList}\item 
const struct \textbf{ value\+\_\+string} \textbf{ gsm48\+\_\+rr\+\_\+msgtype\+\_\+names} [$\,$]
\begin{DoxyCompactList}\small\item\em TS 04.\+08 RR Message Type names. \end{DoxyCompactList}\item 
const struct \textbf{ value\+\_\+string} \textbf{ gsm48\+\_\+mm\+\_\+msgtype\+\_\+names} [$\,$]
\begin{DoxyCompactList}\small\item\em TS 04.\+08 MM Message Type names. \end{DoxyCompactList}\item 
const struct \textbf{ value\+\_\+string} \textbf{ gsm48\+\_\+cc\+\_\+msgtype\+\_\+names} [$\,$]
\begin{DoxyCompactList}\small\item\em TS 04.\+08 CC Message Type names. \end{DoxyCompactList}\item 
const struct \textbf{ value\+\_\+string} \textbf{ gsm48\+\_\+cc\+\_\+cause\+\_\+names} [$\,$]
\begin{DoxyCompactList}\small\item\em TS 04.\+08 10.\+5..4.\+11 Call Control Cause Values. \end{DoxyCompactList}\item 
const struct \textbf{ value\+\_\+string} \textbf{ gsm48\+\_\+nc\+\_\+ss\+\_\+msgtype\+\_\+names} [$\,$]
\begin{DoxyCompactList}\small\item\em TS 04.\+80, section 3.\+4 Messages for supplementary services control. \end{DoxyCompactList}\item 
const struct \textbf{ value\+\_\+string} \textbf{ gsm48\+\_\+reject\+\_\+value\+\_\+names} [$\,$]
\item 
const struct \textbf{ value\+\_\+string} \textbf{ osmo\+\_\+lu\+\_\+type\+\_\+names} [$\,$]
\item 
const struct \textbf{ value\+\_\+string} \textbf{ osmo\+\_\+cm\+\_\+service\+\_\+type\+\_\+names} [$\,$]
\end{DoxyCompactItemize}


\doxysubsection{Detailed Description}
GSM Mobile Radio Interface Layer 3 messages 3GPP TS 04.\+08 version 7.\+21.\+0 Release 1998 / ETSI TS 100 940 V7.\+21.\+0. 

