\doxysection{src/gsm/gsm23003.c File Reference}
\label{gsm23003_8c}\index{src/gsm/gsm23003.c@{src/gsm/gsm23003.c}}


Utility function implementations related to 3GPP TS 23.\+003.  


{\ttfamily \#include $<$ctype.\+h$>$}\newline
{\ttfamily \#include $<$stdio.\+h$>$}\newline
{\ttfamily \#include $<$stdlib.\+h$>$}\newline
{\ttfamily \#include $<$errno.\+h$>$}\newline
{\ttfamily \#include $<$string.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/gsm/gsm23003.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/gsm/protocol/gsm\+\_\+23\+\_\+003.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/core/utils.\+h$>$}\newline
\doxysubsection*{Functions}
\begin{DoxyCompactItemize}
\item 
static bool \textbf{ is\+\_\+n\+\_\+digits} (const char $\ast$str, int min\+\_\+digits, int max\+\_\+digits)
\item 
bool \textbf{ osmo\+\_\+imsi\+\_\+str\+\_\+valid} (const char $\ast$imsi)
\begin{DoxyCompactList}\small\item\em Determine whether the given IMSI is valid according to 3GPP TS 23.\+003. \end{DoxyCompactList}\item 
bool \textbf{ osmo\+\_\+msisdn\+\_\+str\+\_\+valid} (const char $\ast$msisdn)
\begin{DoxyCompactList}\small\item\em Determine whether the given MSISDN is valid according to 3GPP TS 23.\+003. \end{DoxyCompactList}\item 
bool \textbf{ osmo\+\_\+imei\+\_\+str\+\_\+valid} (const char $\ast$imei, bool with\+\_\+15th\+\_\+digit)
\begin{DoxyCompactList}\small\item\em Determine whether the given IMEI is valid according to 3GPP TS 23.\+003, Section 6.\+2.\+1. \end{DoxyCompactList}\item 
char $\ast$ \textbf{ osmo\+\_\+mcc\+\_\+name\+\_\+buf} (char $\ast$buf, size\+\_\+t buf\+\_\+len, uint16\+\_\+t mcc)
\begin{DoxyCompactList}\small\item\em Return MCC string as standardized 3-\/digit with leading zeros. \end{DoxyCompactList}\item 
const char $\ast$ \textbf{ osmo\+\_\+mcc\+\_\+name} (uint16\+\_\+t mcc)
\begin{DoxyCompactList}\small\item\em Return MCC string as standardized 3-\/digit with leading zeros. \end{DoxyCompactList}\item 
const char $\ast$ \textbf{ osmo\+\_\+mcc\+\_\+name\+\_\+c} (const void $\ast$ctx, uint16\+\_\+t mcc)
\begin{DoxyCompactList}\small\item\em Return MCC string as standardized 3-\/digit with leading zeros, into a talloc-\/allocated buffer. \end{DoxyCompactList}\item 
char $\ast$ \textbf{ osmo\+\_\+mnc\+\_\+name\+\_\+buf} (char $\ast$buf, size\+\_\+t buf\+\_\+len, uint16\+\_\+t mnc, bool mnc\+\_\+3\+\_\+digits)
\begin{DoxyCompactList}\small\item\em Return MNC string as standardized 2-\/ or 3-\/digit with leading zeros. \end{DoxyCompactList}\item 
char $\ast$ \textbf{ osmo\+\_\+mnc\+\_\+name\+\_\+c} (const void $\ast$ctx, uint16\+\_\+t mnc, bool mnc\+\_\+3\+\_\+digits)
\begin{DoxyCompactList}\small\item\em Return MNC string as standardized 2-\/ or 3-\/digit with leading zeros, into a talloc-\/allocated buffer. \end{DoxyCompactList}\item 
const char $\ast$ \textbf{ osmo\+\_\+mnc\+\_\+name} (uint16\+\_\+t mnc, bool mnc\+\_\+3\+\_\+digits)
\begin{DoxyCompactList}\small\item\em Return MNC string as standardized 2-\/ or 3-\/digit with leading zeros. \end{DoxyCompactList}\item 
char $\ast$ \textbf{ osmo\+\_\+plmn\+\_\+name\+\_\+buf} (char $\ast$buf, size\+\_\+t buf\+\_\+len, const struct \textbf{ osmo\+\_\+plmn\+\_\+id} $\ast$plmn)
\begin{DoxyCompactList}\small\item\em Return MCC-\/\+MNC string as standardized 3-\/digit-\/dash-\/2/3-\/digit with leading zeros. \end{DoxyCompactList}\item 
const char $\ast$ \textbf{ osmo\+\_\+plmn\+\_\+name} (const struct \textbf{ osmo\+\_\+plmn\+\_\+id} $\ast$plmn)
\begin{DoxyCompactList}\small\item\em Return MCC-\/\+MNC string as standardized 3-\/digit-\/dash-\/2/3-\/digit with leading zeros. \end{DoxyCompactList}\item 
const char $\ast$ \textbf{ osmo\+\_\+plmn\+\_\+name2} (const struct \textbf{ osmo\+\_\+plmn\+\_\+id} $\ast$plmn)
\begin{DoxyCompactList}\small\item\em Same as \doxyref{osmo\+\_\+plmn\+\_\+name()}{p.}{gsm23003_8c_a82c72499a602aa92b80418f3d11a9e22}, but returning in a different static buffer. \end{DoxyCompactList}\item 
char $\ast$ \textbf{ osmo\+\_\+plmn\+\_\+name\+\_\+c} (const void $\ast$ctx, const struct \textbf{ osmo\+\_\+plmn\+\_\+id} $\ast$plmn)
\begin{DoxyCompactList}\small\item\em Return MCC-\/\+MNC string as standardized 3-\/digit-\/dash-\/2/3-\/digit with leading zeros, into a dynamically-\/allocated output buffer. \end{DoxyCompactList}\item 
char $\ast$ \textbf{ osmo\+\_\+lai\+\_\+name\+\_\+buf} (char $\ast$buf, size\+\_\+t buf\+\_\+len, const struct \textbf{ osmo\+\_\+location\+\_\+area\+\_\+id} $\ast$\textbf{ lai})
\begin{DoxyCompactList}\small\item\em Return MCC-\/\+MNC-\/\+LAC as string, in caller-\/provided output buffer. \end{DoxyCompactList}\item 
const char $\ast$ \textbf{ osmo\+\_\+lai\+\_\+name} (const struct \textbf{ osmo\+\_\+location\+\_\+area\+\_\+id} $\ast$\textbf{ lai})
\begin{DoxyCompactList}\small\item\em Return MCC-\/\+MNC-\/\+LAC as string, in a static buffer. \end{DoxyCompactList}\item 
char $\ast$ \textbf{ osmo\+\_\+lai\+\_\+name\+\_\+c} (const void $\ast$ctx, const struct \textbf{ osmo\+\_\+location\+\_\+area\+\_\+id} $\ast$\textbf{ lai})
\begin{DoxyCompactList}\small\item\em Return MCC-\/\+MNC-\/\+LAC as string, in a talloc-\/allocated output buffer. \end{DoxyCompactList}\item 
char $\ast$ \textbf{ osmo\+\_\+rai\+\_\+name2\+\_\+buf} (char $\ast$buf, size\+\_\+t buf\+\_\+len, const struct \textbf{ osmo\+\_\+routing\+\_\+area\+\_\+id} $\ast$rai)
\begin{DoxyCompactList}\small\item\em Return MCC-\/\+MNC-\/\+LAC-\/\+RAC as string, in caller-\/provided output buffer. \end{DoxyCompactList}\item 
const char $\ast$ \textbf{ osmo\+\_\+rai\+\_\+name2} (const struct \textbf{ osmo\+\_\+routing\+\_\+area\+\_\+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\+\_\+name2\+\_\+c} (const void $\ast$ctx, const struct \textbf{ osmo\+\_\+routing\+\_\+area\+\_\+id} $\ast$rai)
\begin{DoxyCompactList}\small\item\em Return MCC-\/\+MNC-\/\+LAC-\/\+RAC as string, in a talloc-\/allocated output buffer. \end{DoxyCompactList}\item 
char $\ast$ \textbf{ osmo\+\_\+cgi\+\_\+name\+\_\+buf} (char $\ast$buf, size\+\_\+t buf\+\_\+len, const struct \textbf{ osmo\+\_\+cell\+\_\+global\+\_\+id} $\ast$cgi)
\begin{DoxyCompactList}\small\item\em Return MCC-\/\+MNC-\/\+LAC-\/\+CI as string, in caller-\/provided output buffer. \end{DoxyCompactList}\item 
const char $\ast$ \textbf{ osmo\+\_\+cgi\+\_\+name} (const struct \textbf{ osmo\+\_\+cell\+\_\+global\+\_\+id} $\ast$cgi)
\begin{DoxyCompactList}\small\item\em Return MCC-\/\+MNC-\/\+LAC-\/\+CI as string, in a static buffer. \end{DoxyCompactList}\item 
const char $\ast$ \textbf{ osmo\+\_\+cgi\+\_\+name2} (const struct \textbf{ osmo\+\_\+cell\+\_\+global\+\_\+id} $\ast$cgi)
\begin{DoxyCompactList}\small\item\em Same as \doxyref{osmo\+\_\+cgi\+\_\+name()}{p.}{gsm23003_8c_aefd2465415517b530e66bd0d081b2d1c}, but uses a different static buffer. \end{DoxyCompactList}\item 
char $\ast$ \textbf{ osmo\+\_\+cgi\+\_\+name\+\_\+c} (const void $\ast$ctx, const struct \textbf{ osmo\+\_\+cell\+\_\+global\+\_\+id} $\ast$cgi)
\begin{DoxyCompactList}\small\item\em Return MCC-\/\+MNC-\/\+LAC-\/\+CI as string, in a talloc-\/allocated output buffer. \end{DoxyCompactList}\item 
char $\ast$ \textbf{ osmo\+\_\+cgi\+\_\+ps\+\_\+name\+\_\+buf} (char $\ast$buf, size\+\_\+t buf\+\_\+len, const struct \textbf{ osmo\+\_\+cell\+\_\+global\+\_\+id\+\_\+ps} $\ast$cgi\+\_\+ps)
\begin{DoxyCompactList}\small\item\em Return MCC-\/\+MNC-\/\+LAC-\/\+RAC-\/\+CI as string, in caller-\/provided output buffer. \end{DoxyCompactList}\item 
const char $\ast$ \textbf{ osmo\+\_\+cgi\+\_\+ps\+\_\+name} (const struct \textbf{ osmo\+\_\+cell\+\_\+global\+\_\+id\+\_\+ps} $\ast$cgi\+\_\+ps)
\begin{DoxyCompactList}\small\item\em Return MCC-\/\+MNC-\/\+LAC-\/\+RAC-\/\+CI as string, in a static buffer. \end{DoxyCompactList}\item 
const char $\ast$ \textbf{ osmo\+\_\+cgi\+\_\+ps\+\_\+name2} (const struct \textbf{ osmo\+\_\+cell\+\_\+global\+\_\+id\+\_\+ps} $\ast$cgi\+\_\+ps)
\begin{DoxyCompactList}\small\item\em Same as \doxyref{osmo\+\_\+cgi\+\_\+ps\+\_\+name()}{p.}{gsm23003_8c_ab255c392a7e013582fc771ae837cd47e}, but uses a different static buffer. \end{DoxyCompactList}\item 
char $\ast$ \textbf{ osmo\+\_\+rnc\+\_\+id\+\_\+name\+\_\+buf} (char $\ast$buf, size\+\_\+t buf\+\_\+len, const struct \textbf{ osmo\+\_\+rnc\+\_\+id} $\ast$rnc)
\begin{DoxyCompactList}\small\item\em Return string representation of RNC in caller-\/provided output buffer. \end{DoxyCompactList}\item 
const char $\ast$ \textbf{ osmo\+\_\+rnc\+\_\+id\+\_\+name} (const struct \textbf{ osmo\+\_\+rnc\+\_\+id} $\ast$rnc)
\begin{DoxyCompactList}\small\item\em Return string representation of RNC in static output buffer. \end{DoxyCompactList}\item 
char $\ast$ \textbf{ osmo\+\_\+rnc\+\_\+id\+\_\+name\+\_\+c} (const void $\ast$ctx, const struct \textbf{ osmo\+\_\+rnc\+\_\+id} $\ast$rnc)
\begin{DoxyCompactList}\small\item\em Return string representation of RNC in static output buffer. \end{DoxyCompactList}\item 
char $\ast$ \textbf{ osmo\+\_\+cgi\+\_\+ps\+\_\+name\+\_\+c} (const void $\ast$ctx, const struct \textbf{ osmo\+\_\+cell\+\_\+global\+\_\+id\+\_\+ps} $\ast$cgi\+\_\+ps)
\begin{DoxyCompactList}\small\item\em Return MCC-\/\+MNC-\/\+LAC-\/\+RAC-\/\+CI as string, in a talloc-\/allocated output buffer. \end{DoxyCompactList}\item 
char $\ast$ \textbf{ osmo\+\_\+sai\+\_\+name\+\_\+buf} (char $\ast$buf, size\+\_\+t buf\+\_\+len, const struct \textbf{ osmo\+\_\+service\+\_\+area\+\_\+id} $\ast$sai)
\begin{DoxyCompactList}\small\item\em Return MCC-\/\+MNC-\/\+LAC-\/\+SAC as string, in caller-\/provided output buffer. \end{DoxyCompactList}\item 
const char $\ast$ \textbf{ osmo\+\_\+sai\+\_\+name} (const struct \textbf{ osmo\+\_\+service\+\_\+area\+\_\+id} $\ast$sai)
\begin{DoxyCompactList}\small\item\em Return MCC-\/\+MNC-\/\+LAC-\/\+SAC as string, in a static buffer. \end{DoxyCompactList}\item 
const char $\ast$ \textbf{ osmo\+\_\+sai\+\_\+name2} (const struct \textbf{ osmo\+\_\+service\+\_\+area\+\_\+id} $\ast$sai)
\begin{DoxyCompactList}\small\item\em Same as \doxyref{osmo\+\_\+cgi\+\_\+name()}{p.}{gsm23003_8c_aefd2465415517b530e66bd0d081b2d1c}, but uses a different static buffer. \end{DoxyCompactList}\item 
char $\ast$ \textbf{ osmo\+\_\+sai\+\_\+name\+\_\+c} (const void $\ast$ctx, const struct \textbf{ osmo\+\_\+service\+\_\+area\+\_\+id} $\ast$sai)
\begin{DoxyCompactList}\small\item\em Return MCC-\/\+MNC-\/\+LAC-\/\+SAC as string, in a talloc-\/allocated output buffer. \end{DoxyCompactList}\item 
static void \textbf{ to\+\_\+bcd} (uint8\+\_\+t $\ast$bcd, uint16\+\_\+t val)
\item 
char $\ast$ \textbf{ osmo\+\_\+gummei\+\_\+name\+\_\+buf} (char $\ast$buf, size\+\_\+t buf\+\_\+len, const struct \textbf{ osmo\+\_\+gummei} $\ast$gummei)
\begin{DoxyCompactList}\small\item\em Return string representation of GUMMEI in caller-\/provided output buffer. \end{DoxyCompactList}\item 
const char $\ast$ \textbf{ osmo\+\_\+gummei\+\_\+name} (const struct \textbf{ osmo\+\_\+gummei} $\ast$gummei)
\begin{DoxyCompactList}\small\item\em Return string representation of GUMMEI in static output buffer. \end{DoxyCompactList}\item 
char $\ast$ \textbf{ osmo\+\_\+gummei\+\_\+name\+\_\+c} (const void $\ast$ctx, const struct \textbf{ osmo\+\_\+gummei} $\ast$gummei)
\begin{DoxyCompactList}\small\item\em Return string representation of GUMMEI in static output buffer. \end{DoxyCompactList}\item 
void \textbf{ osmo\+\_\+plmn\+\_\+to\+\_\+bcd} (uint8\+\_\+t $\ast$bcd\+\_\+dst, const struct \textbf{ osmo\+\_\+plmn\+\_\+id} $\ast$plmn)
\item 
void \textbf{ osmo\+\_\+plmn\+\_\+from\+\_\+bcd} (const uint8\+\_\+t $\ast$bcd\+\_\+src, struct \textbf{ osmo\+\_\+plmn\+\_\+id} $\ast$plmn)
\item 
int \textbf{ osmo\+\_\+mnc\+\_\+from\+\_\+str} (const char $\ast$mnc\+\_\+str, uint16\+\_\+t $\ast$mnc, bool $\ast$mnc\+\_\+3\+\_\+digits)
\item 
int \textbf{ osmo\+\_\+mnc\+\_\+cmp} (uint16\+\_\+t a\+\_\+mnc, bool a\+\_\+mnc\+\_\+3\+\_\+digits, uint16\+\_\+t b\+\_\+mnc, bool b\+\_\+mnc\+\_\+3\+\_\+digits)
\item 
int \textbf{ osmo\+\_\+plmn\+\_\+cmp} (const struct \textbf{ osmo\+\_\+plmn\+\_\+id} $\ast$a, const struct \textbf{ osmo\+\_\+plmn\+\_\+id} $\ast$b)
\item 
int \textbf{ osmo\+\_\+lai\+\_\+cmp} (const struct \textbf{ osmo\+\_\+location\+\_\+area\+\_\+id} $\ast$a, const struct \textbf{ osmo\+\_\+location\+\_\+area\+\_\+id} $\ast$b)
\item 
int \textbf{ osmo\+\_\+rai\+\_\+cmp} (const struct \textbf{ osmo\+\_\+routing\+\_\+area\+\_\+id} $\ast$a, const struct \textbf{ osmo\+\_\+routing\+\_\+area\+\_\+id} $\ast$b)
\item 
int \textbf{ osmo\+\_\+cgi\+\_\+cmp} (const struct \textbf{ osmo\+\_\+cell\+\_\+global\+\_\+id} $\ast$a, const struct \textbf{ osmo\+\_\+cell\+\_\+global\+\_\+id} $\ast$b)
\item 
int \textbf{ osmo\+\_\+cgi\+\_\+ps\+\_\+cmp} (const struct \textbf{ osmo\+\_\+cell\+\_\+global\+\_\+id\+\_\+ps} $\ast$a, const struct \textbf{ osmo\+\_\+cell\+\_\+global\+\_\+id\+\_\+ps} $\ast$b)
\item 
int \textbf{ osmo\+\_\+rnc\+\_\+id\+\_\+cmp} (const struct \textbf{ osmo\+\_\+rnc\+\_\+id} $\ast$a, const struct \textbf{ osmo\+\_\+rnc\+\_\+id} $\ast$b)
\item 
int \textbf{ osmo\+\_\+mme\+\_\+id\+\_\+cmp} (const struct \textbf{ osmo\+\_\+mme\+\_\+id} $\ast$a, const struct \textbf{ osmo\+\_\+mme\+\_\+id} $\ast$b)
\item 
int \textbf{ osmo\+\_\+gummei\+\_\+cmp} (const struct \textbf{ osmo\+\_\+gummei} $\ast$a, const struct \textbf{ osmo\+\_\+gummei} $\ast$b)
\item 
int \textbf{ osmo\+\_\+gen\+\_\+home\+\_\+network\+\_\+domain} (char $\ast$out, const struct \textbf{ osmo\+\_\+plmn\+\_\+id} $\ast$plmn)
\begin{DoxyCompactList}\small\item\em Generate TS 23.\+003 Section 19.\+2 Home Network Realm/\+Domain (text form) \end{DoxyCompactList}\item 
int \textbf{ osmo\+\_\+parse\+\_\+home\+\_\+network\+\_\+domain} (struct \textbf{ osmo\+\_\+plmn\+\_\+id} $\ast$out, const char $\ast$in)
\begin{DoxyCompactList}\small\item\em Parse a TS 23.\+003 Section 19.\+2 Home Network Realm/\+Domain (text form) into a \doxyref{osmo\+\_\+plmn\+\_\+id}{p.}{structosmo__plmn__id}. \end{DoxyCompactList}\item 
int \textbf{ osmo\+\_\+gen\+\_\+mme\+\_\+domain} (char $\ast$out, const struct \textbf{ osmo\+\_\+gummei} $\ast$gummei)
\begin{DoxyCompactList}\small\item\em Generate TS 23.\+003 Section 19.\+4.\+2.\+4 MME Domain (text form) \end{DoxyCompactList}\item 
int \textbf{ osmo\+\_\+parse\+\_\+mme\+\_\+domain} (struct \textbf{ osmo\+\_\+gummei} $\ast$out, const char $\ast$in)
\begin{DoxyCompactList}\small\item\em Parse a TS 23.\+003 Section 19.\+4.\+2.\+4 MME Domain (text form) into a \doxyref{osmo\+\_\+gummei}{p.}{structosmo__gummei}. \end{DoxyCompactList}\item 
int \textbf{ osmo\+\_\+gen\+\_\+mme\+\_\+group\+\_\+domain} (char $\ast$out, uint16\+\_\+t mmegi, const struct \textbf{ osmo\+\_\+plmn\+\_\+id} $\ast$plmn)
\begin{DoxyCompactList}\small\item\em Generate TS 23.\+003 Section 19.\+4.\+2.\+4 MME Group Domain (text form) \end{DoxyCompactList}\end{DoxyCompactItemize}


\doxysubsection{Detailed Description}
Utility function implementations related to 3GPP TS 23.\+003. 



\doxysubsection{Function Documentation}
\mbox{\label{gsm23003_8c_aff7afe46ec757c7436bd654ebec86415}} 
\index{gsm23003.c@{gsm23003.c}!is\_n\_digits@{is\_n\_digits}}
\index{is\_n\_digits@{is\_n\_digits}!gsm23003.c@{gsm23003.c}}
\doxysubsubsection{is\_n\_digits()}
{\footnotesize\ttfamily static bool is\+\_\+n\+\_\+digits (\begin{DoxyParamCaption}\item[{const char $\ast$}]{str,  }\item[{int}]{min\+\_\+digits,  }\item[{int}]{max\+\_\+digits }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ len}.



Referenced by \textbf{ osmo\+\_\+imei\+\_\+str\+\_\+valid()}, \textbf{ osmo\+\_\+imsi\+\_\+str\+\_\+valid()}, and \textbf{ osmo\+\_\+msisdn\+\_\+str\+\_\+valid()}.

\mbox{\label{gsm23003_8c_a812c50d21076570156b8a16df2cb053b}} 
\index{gsm23003.c@{gsm23003.c}!osmo\_cgi\_cmp@{osmo\_cgi\_cmp}}
\index{osmo\_cgi\_cmp@{osmo\_cgi\_cmp}!gsm23003.c@{gsm23003.c}}
\doxysubsubsection{osmo\_cgi\_cmp()}
{\footnotesize\ttfamily int osmo\+\_\+cgi\+\_\+cmp (\begin{DoxyParamCaption}\item[{const struct \textbf{ osmo\+\_\+cell\+\_\+global\+\_\+id} $\ast$}]{a,  }\item[{const struct \textbf{ osmo\+\_\+cell\+\_\+global\+\_\+id} $\ast$}]{b }\end{DoxyParamCaption})}



References \textbf{ osmo\+\_\+cell\+\_\+global\+\_\+id\+::cell\+\_\+identity}, \textbf{ osmo\+\_\+cell\+\_\+global\+\_\+id\+::lai}, and \textbf{ osmo\+\_\+lai\+\_\+cmp()}.



Referenced by \textbf{ gsm0808\+\_\+cell\+\_\+id\+\_\+u\+\_\+match()}.

\mbox{\label{gsm23003_8c_aefd2465415517b530e66bd0d081b2d1c}} 
\index{gsm23003.c@{gsm23003.c}!osmo\_cgi\_name@{osmo\_cgi\_name}}
\index{osmo\_cgi\_name@{osmo\_cgi\_name}!gsm23003.c@{gsm23003.c}}
\doxysubsubsection{osmo\_cgi\_name()}
{\footnotesize\ttfamily const char $\ast$ osmo\+\_\+cgi\+\_\+name (\begin{DoxyParamCaption}\item[{const struct \textbf{ osmo\+\_\+cell\+\_\+global\+\_\+id} $\ast$}]{cgi }\end{DoxyParamCaption})}



Return MCC-\/\+MNC-\/\+LAC-\/\+CI as string, in a static buffer. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em cgi} & CGI to encode. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
Static string buffer. 
\end{DoxyReturn}


References \textbf{ osmo\+\_\+cgi\+\_\+name\+\_\+buf()}.



Referenced by \textbf{ gsm0808\+\_\+cell\+\_\+id\+\_\+u\+\_\+name()}.

\mbox{\label{gsm23003_8c_a14a9714deb805f194750d94a8265fbd9}} 
\index{gsm23003.c@{gsm23003.c}!osmo\_cgi\_name2@{osmo\_cgi\_name2}}
\index{osmo\_cgi\_name2@{osmo\_cgi\_name2}!gsm23003.c@{gsm23003.c}}
\doxysubsubsection{osmo\_cgi\_name2()}
{\footnotesize\ttfamily const char $\ast$ osmo\+\_\+cgi\+\_\+name2 (\begin{DoxyParamCaption}\item[{const struct \textbf{ osmo\+\_\+cell\+\_\+global\+\_\+id} $\ast$}]{cgi }\end{DoxyParamCaption})}



Same as \doxyref{osmo\+\_\+cgi\+\_\+name()}{p.}{gsm23003_8c_aefd2465415517b530e66bd0d081b2d1c}, but uses a different static buffer. 

Useful for printing two distinct CGIs in the same printf format. 
\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em cgi} & CGI to encode. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
Static string buffer. 
\end{DoxyReturn}


References \textbf{ osmo\+\_\+cgi\+\_\+name\+\_\+buf()}.

\mbox{\label{gsm23003_8c_a147dff07936b4dc8539ac97dd51be864}} 
\index{gsm23003.c@{gsm23003.c}!osmo\_cgi\_name\_buf@{osmo\_cgi\_name\_buf}}
\index{osmo\_cgi\_name\_buf@{osmo\_cgi\_name\_buf}!gsm23003.c@{gsm23003.c}}
\doxysubsubsection{osmo\_cgi\_name\_buf()}
{\footnotesize\ttfamily char $\ast$ osmo\+\_\+cgi\+\_\+name\+\_\+buf (\begin{DoxyParamCaption}\item[{char $\ast$}]{buf,  }\item[{size\+\_\+t}]{buf\+\_\+len,  }\item[{const struct \textbf{ osmo\+\_\+cell\+\_\+global\+\_\+id} $\ast$}]{cgi }\end{DoxyParamCaption})}



Return MCC-\/\+MNC-\/\+LAC-\/\+CI as string, in caller-\/provided output buffer. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ out}}  & {\em buf} & caller-\/allocated output buffer \\
\hline
\mbox{\texttt{ in}}  & {\em buf\+\_\+len} & size of buf in bytes \\
\hline
\mbox{\texttt{ in}}  & {\em cgi} & CGI to encode. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
buf 
\end{DoxyReturn}


References \textbf{ osmo\+\_\+cell\+\_\+global\+\_\+id\+::cell\+\_\+identity}, \textbf{ osmo\+\_\+cell\+\_\+global\+\_\+id\+::lai}, and \textbf{ osmo\+\_\+lai\+\_\+name()}.



Referenced by \textbf{ osmo\+\_\+cgi\+\_\+name()}, \textbf{ osmo\+\_\+cgi\+\_\+name2()}, and \textbf{ osmo\+\_\+cgi\+\_\+name\+\_\+c()}.

\mbox{\label{gsm23003_8c_a0ec1a24992445b3effa127ea48280cbe}} 
\index{gsm23003.c@{gsm23003.c}!osmo\_cgi\_name\_c@{osmo\_cgi\_name\_c}}
\index{osmo\_cgi\_name\_c@{osmo\_cgi\_name\_c}!gsm23003.c@{gsm23003.c}}
\doxysubsubsection{osmo\_cgi\_name\_c()}
{\footnotesize\ttfamily char $\ast$ osmo\+\_\+cgi\+\_\+name\+\_\+c (\begin{DoxyParamCaption}\item[{const void $\ast$}]{ctx,  }\item[{const struct \textbf{ osmo\+\_\+cell\+\_\+global\+\_\+id} $\ast$}]{cgi }\end{DoxyParamCaption})}



Return MCC-\/\+MNC-\/\+LAC-\/\+CI as string, in a talloc-\/allocated output buffer. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em ctx} & talloc context from which to allocate output buffer \\
\hline
\mbox{\texttt{ in}}  & {\em cgi} & CGI to encode. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
string representation of CGI in dynamically-\/allocated buffer. 
\end{DoxyReturn}


References \textbf{ osmo\+\_\+cgi\+\_\+name\+\_\+buf()}.

\mbox{\label{gsm23003_8c_a3ceb86873192ea2dbe0e8f9b1b6a6ad4}} 
\index{gsm23003.c@{gsm23003.c}!osmo\_cgi\_ps\_cmp@{osmo\_cgi\_ps\_cmp}}
\index{osmo\_cgi\_ps\_cmp@{osmo\_cgi\_ps\_cmp}!gsm23003.c@{gsm23003.c}}
\doxysubsubsection{osmo\_cgi\_ps\_cmp()}
{\footnotesize\ttfamily int osmo\+\_\+cgi\+\_\+ps\+\_\+cmp (\begin{DoxyParamCaption}\item[{const struct \textbf{ osmo\+\_\+cell\+\_\+global\+\_\+id\+\_\+ps} $\ast$}]{a,  }\item[{const struct \textbf{ osmo\+\_\+cell\+\_\+global\+\_\+id\+\_\+ps} $\ast$}]{b }\end{DoxyParamCaption})}



References \textbf{ osmo\+\_\+cell\+\_\+global\+\_\+id\+\_\+ps\+::cell\+\_\+identity}, \textbf{ osmo\+\_\+rai\+\_\+cmp()}, and \textbf{ osmo\+\_\+cell\+\_\+global\+\_\+id\+\_\+ps\+::rai}.

\mbox{\label{gsm23003_8c_ab255c392a7e013582fc771ae837cd47e}} 
\index{gsm23003.c@{gsm23003.c}!osmo\_cgi\_ps\_name@{osmo\_cgi\_ps\_name}}
\index{osmo\_cgi\_ps\_name@{osmo\_cgi\_ps\_name}!gsm23003.c@{gsm23003.c}}
\doxysubsubsection{osmo\_cgi\_ps\_name()}
{\footnotesize\ttfamily const char $\ast$ osmo\+\_\+cgi\+\_\+ps\+\_\+name (\begin{DoxyParamCaption}\item[{const struct \textbf{ osmo\+\_\+cell\+\_\+global\+\_\+id\+\_\+ps} $\ast$}]{cgi\+\_\+ps }\end{DoxyParamCaption})}



Return MCC-\/\+MNC-\/\+LAC-\/\+RAC-\/\+CI as string, in a static buffer. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em cgi\+\_\+ps} & CGI-\/\+PS to encode. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
Static string buffer. 
\end{DoxyReturn}


References \textbf{ osmo\+\_\+cgi\+\_\+ps\+\_\+name\+\_\+buf()}.



Referenced by \textbf{ gsm0808\+\_\+cell\+\_\+id\+\_\+u\+\_\+name()}.

\mbox{\label{gsm23003_8c_ac7c647c2aa8b624bae7ac4a1367ee6d0}} 
\index{gsm23003.c@{gsm23003.c}!osmo\_cgi\_ps\_name2@{osmo\_cgi\_ps\_name2}}
\index{osmo\_cgi\_ps\_name2@{osmo\_cgi\_ps\_name2}!gsm23003.c@{gsm23003.c}}
\doxysubsubsection{osmo\_cgi\_ps\_name2()}
{\footnotesize\ttfamily const char $\ast$ osmo\+\_\+cgi\+\_\+ps\+\_\+name2 (\begin{DoxyParamCaption}\item[{const struct \textbf{ osmo\+\_\+cell\+\_\+global\+\_\+id\+\_\+ps} $\ast$}]{cgi\+\_\+ps }\end{DoxyParamCaption})}



Same as \doxyref{osmo\+\_\+cgi\+\_\+ps\+\_\+name()}{p.}{gsm23003_8c_ab255c392a7e013582fc771ae837cd47e}, but uses a different static buffer. 

Useful for printing two distinct CGI-\/\+PSs in the same printf format. 
\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em cgi} & CGI-\/\+PS to encode. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
Static string buffer. 
\end{DoxyReturn}


References \textbf{ osmo\+\_\+cgi\+\_\+ps\+\_\+name\+\_\+buf()}.

\mbox{\label{gsm23003_8c_abd8aa509a254a66e3fdb8e898103ae03}} 
\index{gsm23003.c@{gsm23003.c}!osmo\_cgi\_ps\_name\_buf@{osmo\_cgi\_ps\_name\_buf}}
\index{osmo\_cgi\_ps\_name\_buf@{osmo\_cgi\_ps\_name\_buf}!gsm23003.c@{gsm23003.c}}
\doxysubsubsection{osmo\_cgi\_ps\_name\_buf()}
{\footnotesize\ttfamily char $\ast$ osmo\+\_\+cgi\+\_\+ps\+\_\+name\+\_\+buf (\begin{DoxyParamCaption}\item[{char $\ast$}]{buf,  }\item[{size\+\_\+t}]{buf\+\_\+len,  }\item[{const struct \textbf{ osmo\+\_\+cell\+\_\+global\+\_\+id\+\_\+ps} $\ast$}]{cgi\+\_\+ps }\end{DoxyParamCaption})}



Return MCC-\/\+MNC-\/\+LAC-\/\+RAC-\/\+CI as string, in caller-\/provided output buffer. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ out}}  & {\em buf} & caller-\/allocated output buffer \\
\hline
\mbox{\texttt{ in}}  & {\em buf\+\_\+len} & size of buf in bytes \\
\hline
\mbox{\texttt{ in}}  & {\em cgi\+\_\+ps} & CGI-\/\+PS to encode. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
buf 
\end{DoxyReturn}


References \textbf{ osmo\+\_\+cell\+\_\+global\+\_\+id\+\_\+ps\+::cell\+\_\+identity}, \textbf{ osmo\+\_\+rai\+\_\+name2()}, and \textbf{ osmo\+\_\+cell\+\_\+global\+\_\+id\+\_\+ps\+::rai}.



Referenced by \textbf{ osmo\+\_\+cgi\+\_\+ps\+\_\+name()}, \textbf{ osmo\+\_\+cgi\+\_\+ps\+\_\+name2()}, and \textbf{ osmo\+\_\+cgi\+\_\+ps\+\_\+name\+\_\+c()}.

\mbox{\label{gsm23003_8c_ae5f5f53cc1272fc7d2de17d9904d1c9b}} 
\index{gsm23003.c@{gsm23003.c}!osmo\_cgi\_ps\_name\_c@{osmo\_cgi\_ps\_name\_c}}
\index{osmo\_cgi\_ps\_name\_c@{osmo\_cgi\_ps\_name\_c}!gsm23003.c@{gsm23003.c}}
\doxysubsubsection{osmo\_cgi\_ps\_name\_c()}
{\footnotesize\ttfamily char $\ast$ osmo\+\_\+cgi\+\_\+ps\+\_\+name\+\_\+c (\begin{DoxyParamCaption}\item[{const void $\ast$}]{ctx,  }\item[{const struct \textbf{ osmo\+\_\+cell\+\_\+global\+\_\+id\+\_\+ps} $\ast$}]{cgi\+\_\+ps }\end{DoxyParamCaption})}



Return MCC-\/\+MNC-\/\+LAC-\/\+RAC-\/\+CI as string, in a talloc-\/allocated output buffer. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em ctx} & talloc context from which to allocate output buffer \\
\hline
\mbox{\texttt{ in}}  & {\em cgi\+\_\+ps} & CGI-\/\+PS to encode. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
string representation of CGI in dynamically-\/allocated buffer. 
\end{DoxyReturn}


References \textbf{ osmo\+\_\+cgi\+\_\+ps\+\_\+name\+\_\+buf()}.

\mbox{\label{gsm23003_8c_a15b0328ac44ae0c9b920755676064f44}} 
\index{gsm23003.c@{gsm23003.c}!osmo\_gen\_home\_network\_domain@{osmo\_gen\_home\_network\_domain}}
\index{osmo\_gen\_home\_network\_domain@{osmo\_gen\_home\_network\_domain}!gsm23003.c@{gsm23003.c}}
\doxysubsubsection{osmo\_gen\_home\_network\_domain()}
{\footnotesize\ttfamily int osmo\+\_\+gen\+\_\+home\+\_\+network\+\_\+domain (\begin{DoxyParamCaption}\item[{char $\ast$}]{out,  }\item[{const struct \textbf{ osmo\+\_\+plmn\+\_\+id} $\ast$}]{plmn }\end{DoxyParamCaption})}



Generate TS 23.\+003 Section 19.\+2 Home Network Realm/\+Domain (text form) 


\begin{DoxyParams}{Parameters}
{\em out\mbox{[}out\mbox{]}} & caller-\/provided output buffer, at least 33 bytes long \\
\hline
{\em plmn\mbox{[}in\mbox{]}} & Osmocom representation of PLMN ID (MCC + MNC) \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
number of characters printed (excluding NUL); negative on error 
\end{DoxyReturn}


References \textbf{ osmo\+\_\+plmn\+\_\+id\+::mcc}, and \textbf{ osmo\+\_\+plmn\+\_\+id\+::mnc}.



Referenced by \textbf{ osmo\+\_\+gen\+\_\+mme\+\_\+domain()}, and \textbf{ osmo\+\_\+gen\+\_\+mme\+\_\+group\+\_\+domain()}.

\mbox{\label{gsm23003_8c_aeb44a0c8c7a7a2f60fdba9f95457c0a8}} 
\index{gsm23003.c@{gsm23003.c}!osmo\_gen\_mme\_domain@{osmo\_gen\_mme\_domain}}
\index{osmo\_gen\_mme\_domain@{osmo\_gen\_mme\_domain}!gsm23003.c@{gsm23003.c}}
\doxysubsubsection{osmo\_gen\_mme\_domain()}
{\footnotesize\ttfamily int osmo\+\_\+gen\+\_\+mme\+\_\+domain (\begin{DoxyParamCaption}\item[{char $\ast$}]{out,  }\item[{const struct \textbf{ osmo\+\_\+gummei} $\ast$}]{gummei }\end{DoxyParamCaption})}



Generate TS 23.\+003 Section 19.\+4.\+2.\+4 MME Domain (text form) 


\begin{DoxyParams}{Parameters}
{\em out\mbox{[}out\mbox{]}} & caller-\/provided output buffer, at least 56 bytes long \\
\hline
{\em gummei\mbox{[}in\mbox{]}} & Structure representing the Globally Unique MME Identifier \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
number of characters printed (excluding NUL); negative on error 
\end{DoxyReturn}


References \textbf{ osmo\+\_\+mme\+\_\+id\+::code}, \textbf{ osmo\+\_\+mme\+\_\+id\+::group\+\_\+id}, \textbf{ GSM23003\+\_\+\+HOME\+\_\+\+NETWORK\+\_\+\+DOMAIN\+\_\+\+LEN}, \textbf{ osmo\+\_\+gummei\+::mme}, \textbf{ osmo\+\_\+gen\+\_\+home\+\_\+network\+\_\+domain()}, and \textbf{ osmo\+\_\+gummei\+::plmn}.

\mbox{\label{gsm23003_8c_af4f9ec40d8d8121c57961228854f28a8}} 
\index{gsm23003.c@{gsm23003.c}!osmo\_gen\_mme\_group\_domain@{osmo\_gen\_mme\_group\_domain}}
\index{osmo\_gen\_mme\_group\_domain@{osmo\_gen\_mme\_group\_domain}!gsm23003.c@{gsm23003.c}}
\doxysubsubsection{osmo\_gen\_mme\_group\_domain()}
{\footnotesize\ttfamily int osmo\+\_\+gen\+\_\+mme\+\_\+group\+\_\+domain (\begin{DoxyParamCaption}\item[{char $\ast$}]{out,  }\item[{uint16\+\_\+t}]{mmegi,  }\item[{const struct \textbf{ osmo\+\_\+plmn\+\_\+id} $\ast$}]{plmn }\end{DoxyParamCaption})}



Generate TS 23.\+003 Section 19.\+4.\+2.\+4 MME Group Domain (text form) 


\begin{DoxyParams}{Parameters}
{\em out\mbox{[}out\mbox{]}} & caller-\/provided output buffer, at least 56 bytes long \\
\hline
{\em mmegi\mbox{[}in\mbox{]}} & MME Group Identifier \\
\hline
{\em plmn\mbox{[}in\mbox{]}} & Osmocom representation of PLMN ID (MCC + MNC) \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
number of characters printed (excluding NUL); negative on error 
\end{DoxyReturn}


References \textbf{ GSM23003\+\_\+\+HOME\+\_\+\+NETWORK\+\_\+\+DOMAIN\+\_\+\+LEN}, and \textbf{ osmo\+\_\+gen\+\_\+home\+\_\+network\+\_\+domain()}.

\mbox{\label{gsm23003_8c_a553f6fa71a75a839df0b97afe0766e8a}} 
\index{gsm23003.c@{gsm23003.c}!osmo\_gummei\_cmp@{osmo\_gummei\_cmp}}
\index{osmo\_gummei\_cmp@{osmo\_gummei\_cmp}!gsm23003.c@{gsm23003.c}}
\doxysubsubsection{osmo\_gummei\_cmp()}
{\footnotesize\ttfamily int osmo\+\_\+gummei\+\_\+cmp (\begin{DoxyParamCaption}\item[{const struct \textbf{ osmo\+\_\+gummei} $\ast$}]{a,  }\item[{const struct \textbf{ osmo\+\_\+gummei} $\ast$}]{b }\end{DoxyParamCaption})}



References \textbf{ osmo\+\_\+gummei\+::mme}, \textbf{ osmo\+\_\+mme\+\_\+id\+\_\+cmp()}, \textbf{ osmo\+\_\+plmn\+\_\+cmp()}, and \textbf{ osmo\+\_\+gummei\+::plmn}.

\mbox{\label{gsm23003_8c_a391be2cd5ea9138b2834a18c6987e615}} 
\index{gsm23003.c@{gsm23003.c}!osmo\_gummei\_name@{osmo\_gummei\_name}}
\index{osmo\_gummei\_name@{osmo\_gummei\_name}!gsm23003.c@{gsm23003.c}}
\doxysubsubsection{osmo\_gummei\_name()}
{\footnotesize\ttfamily const char $\ast$ osmo\+\_\+gummei\+\_\+name (\begin{DoxyParamCaption}\item[{const struct \textbf{ osmo\+\_\+gummei} $\ast$}]{gummei }\end{DoxyParamCaption})}



Return string representation of GUMMEI in static output buffer. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em gummei} & GUMMEI to be stringified \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
pointer to static output buffer 
\end{DoxyReturn}


References \textbf{ osmo\+\_\+gummei\+\_\+name\+\_\+buf()}.

\mbox{\label{gsm23003_8c_abea50682518f9fa950df8ea5926c0fa0}} 
\index{gsm23003.c@{gsm23003.c}!osmo\_gummei\_name\_buf@{osmo\_gummei\_name\_buf}}
\index{osmo\_gummei\_name\_buf@{osmo\_gummei\_name\_buf}!gsm23003.c@{gsm23003.c}}
\doxysubsubsection{osmo\_gummei\_name\_buf()}
{\footnotesize\ttfamily char $\ast$ osmo\+\_\+gummei\+\_\+name\+\_\+buf (\begin{DoxyParamCaption}\item[{char $\ast$}]{buf,  }\item[{size\+\_\+t}]{buf\+\_\+len,  }\item[{const struct \textbf{ osmo\+\_\+gummei} $\ast$}]{gummei }\end{DoxyParamCaption})}



Return string representation of GUMMEI in caller-\/provided output buffer. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ out}}  & {\em buf} & pointer to caller-\/provided output buffer \\
\hline
\mbox{\texttt{ in}}  & {\em buf\+\_\+len} & size of buf in bytes \\
\hline
\mbox{\texttt{ in}}  & {\em gummei} & GUMMEI to be stringified \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
buf 
\end{DoxyReturn}


References \textbf{ osmo\+\_\+mme\+\_\+id\+::code}, \textbf{ osmo\+\_\+mme\+\_\+id\+::group\+\_\+id}, \textbf{ osmo\+\_\+gummei\+::mme}, \textbf{ osmo\+\_\+plmn\+\_\+name\+\_\+buf()}, and \textbf{ osmo\+\_\+gummei\+::plmn}.



Referenced by \textbf{ osmo\+\_\+gummei\+\_\+name()}, and \textbf{ osmo\+\_\+gummei\+\_\+name\+\_\+c()}.

\mbox{\label{gsm23003_8c_ab8d78cb94e6f0a4de3cbda361a515349}} 
\index{gsm23003.c@{gsm23003.c}!osmo\_gummei\_name\_c@{osmo\_gummei\_name\_c}}
\index{osmo\_gummei\_name\_c@{osmo\_gummei\_name\_c}!gsm23003.c@{gsm23003.c}}
\doxysubsubsection{osmo\_gummei\_name\_c()}
{\footnotesize\ttfamily char $\ast$ osmo\+\_\+gummei\+\_\+name\+\_\+c (\begin{DoxyParamCaption}\item[{const void $\ast$}]{ctx,  }\item[{const struct \textbf{ osmo\+\_\+gummei} $\ast$}]{gummei }\end{DoxyParamCaption})}



Return string representation of GUMMEI in static output buffer. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ out}}  & {\em buf} & pointer to caller-\/provided output buffer \\
\hline
\mbox{\texttt{ in}}  & {\em buf\+\_\+len} & size of buf in bytes \\
\hline
\mbox{\texttt{ in}}  & {\em gummei} & GUMMEI to be stringified \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
pointer to static output buffer 
\end{DoxyReturn}


References \textbf{ osmo\+\_\+gummei\+\_\+name\+\_\+buf()}.

\mbox{\label{gsm23003_8c_ad0de5ffd112d4c82117e01db507b0919}} 
\index{gsm23003.c@{gsm23003.c}!osmo\_imei\_str\_valid@{osmo\_imei\_str\_valid}}
\index{osmo\_imei\_str\_valid@{osmo\_imei\_str\_valid}!gsm23003.c@{gsm23003.c}}
\doxysubsubsection{osmo\_imei\_str\_valid()}
{\footnotesize\ttfamily bool osmo\+\_\+imei\+\_\+str\+\_\+valid (\begin{DoxyParamCaption}\item[{const char $\ast$}]{imei,  }\item[{bool}]{with\+\_\+15th\+\_\+digit }\end{DoxyParamCaption})}



Determine whether the given IMEI is valid according to 3GPP TS 23.\+003, Section 6.\+2.\+1. 

It consists of 14 digits, the 15th check digit is not intended for digital transmission. 
\begin{DoxyParams}{Parameters}
{\em imei} & IMEI digits in ASCII string representation. \\
\hline
{\em with\+\_\+15th\+\_\+digit} & when true, expect the 15th digit to be present and verify it. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true when the IMEI is valid, false for invalid characters or number of digits. 
\end{DoxyReturn}


References \textbf{ is\+\_\+n\+\_\+digits()}, and \textbf{ osmo\+\_\+luhn()}.

\mbox{\label{gsm23003_8c_a8766c8f8ed9765b4cdd6cee1047d18a5}} 
\index{gsm23003.c@{gsm23003.c}!osmo\_imsi\_str\_valid@{osmo\_imsi\_str\_valid}}
\index{osmo\_imsi\_str\_valid@{osmo\_imsi\_str\_valid}!gsm23003.c@{gsm23003.c}}
\doxysubsubsection{osmo\_imsi\_str\_valid()}
{\footnotesize\ttfamily bool osmo\+\_\+imsi\+\_\+str\+\_\+valid (\begin{DoxyParamCaption}\item[{const char $\ast$}]{imsi }\end{DoxyParamCaption})}



Determine whether the given IMSI is valid according to 3GPP TS 23.\+003. 


\begin{DoxyParams}{Parameters}
{\em imsi} & IMSI digits in ASCII string representation. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true when the IMSI is valid, false for invalid characters or number of digits. 
\end{DoxyReturn}


References \textbf{ GSM23003\+\_\+\+IMSI\+\_\+\+MAX\+\_\+\+DIGITS}, \textbf{ GSM23003\+\_\+\+IMSI\+\_\+\+MIN\+\_\+\+DIGITS}, and \textbf{ is\+\_\+n\+\_\+digits()}.

\mbox{\label{gsm23003_8c_aadd30eb1e9a03e5137e6c1d11999f0cf}} 
\index{gsm23003.c@{gsm23003.c}!osmo\_lai\_cmp@{osmo\_lai\_cmp}}
\index{osmo\_lai\_cmp@{osmo\_lai\_cmp}!gsm23003.c@{gsm23003.c}}
\doxysubsubsection{osmo\_lai\_cmp()}
{\footnotesize\ttfamily int osmo\+\_\+lai\+\_\+cmp (\begin{DoxyParamCaption}\item[{const struct \textbf{ osmo\+\_\+location\+\_\+area\+\_\+id} $\ast$}]{a,  }\item[{const struct \textbf{ osmo\+\_\+location\+\_\+area\+\_\+id} $\ast$}]{b }\end{DoxyParamCaption})}



References \textbf{ osmo\+\_\+location\+\_\+area\+\_\+id\+::lac}, \textbf{ osmo\+\_\+plmn\+\_\+cmp()}, and \textbf{ osmo\+\_\+location\+\_\+area\+\_\+id\+::plmn}.



Referenced by \textbf{ osmo\+\_\+cgi\+\_\+cmp()}, and \textbf{ osmo\+\_\+rai\+\_\+cmp()}.

\mbox{\label{gsm23003_8c_a5711213c323cfbcdb123abd79f562729}} 
\index{gsm23003.c@{gsm23003.c}!osmo\_lai\_name@{osmo\_lai\_name}}
\index{osmo\_lai\_name@{osmo\_lai\_name}!gsm23003.c@{gsm23003.c}}
\doxysubsubsection{osmo\_lai\_name()}
{\footnotesize\ttfamily const char $\ast$ osmo\+\_\+lai\+\_\+name (\begin{DoxyParamCaption}\item[{const struct \textbf{ osmo\+\_\+location\+\_\+area\+\_\+id} $\ast$}]{lai }\end{DoxyParamCaption})}



Return MCC-\/\+MNC-\/\+LAC as string, in a static buffer. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em lai} & LAI to encode, the rac member is ignored. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
Static string buffer. 
\end{DoxyReturn}


References \textbf{ lai}, and \textbf{ osmo\+\_\+lai\+\_\+name\+\_\+buf()}.



Referenced by \textbf{ gsm0808\+\_\+cell\+\_\+id\+\_\+u\+\_\+name()}, \textbf{ osmo\+\_\+cgi\+\_\+name\+\_\+buf()}, and \textbf{ osmo\+\_\+sai\+\_\+name\+\_\+buf()}.

\mbox{\label{gsm23003_8c_ad186fec00a69640e8a2c01a0486835b6}} 
\index{gsm23003.c@{gsm23003.c}!osmo\_lai\_name\_buf@{osmo\_lai\_name\_buf}}
\index{osmo\_lai\_name\_buf@{osmo\_lai\_name\_buf}!gsm23003.c@{gsm23003.c}}
\doxysubsubsection{osmo\_lai\_name\_buf()}
{\footnotesize\ttfamily char $\ast$ osmo\+\_\+lai\+\_\+name\+\_\+buf (\begin{DoxyParamCaption}\item[{char $\ast$}]{buf,  }\item[{size\+\_\+t}]{buf\+\_\+len,  }\item[{const struct \textbf{ osmo\+\_\+location\+\_\+area\+\_\+id} $\ast$}]{lai }\end{DoxyParamCaption})}



Return MCC-\/\+MNC-\/\+LAC as string, in caller-\/provided output buffer. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ out}}  & {\em buf} & caller-\/allocated output buffer \\
\hline
\mbox{\texttt{ in}}  & {\em buf\+\_\+len} & size of buf in bytes \\
\hline
\mbox{\texttt{ in}}  & {\em lai} & LAI to encode, the rac member is ignored. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
buf 
\end{DoxyReturn}


References \textbf{ gsm48\+\_\+loc\+\_\+area\+\_\+id\+::lac}, \textbf{ lai}, and \textbf{ osmo\+\_\+plmn\+\_\+name\+\_\+buf()}.



Referenced by \textbf{ osmo\+\_\+lai\+\_\+name()}, and \textbf{ osmo\+\_\+lai\+\_\+name\+\_\+c()}.

\mbox{\label{gsm23003_8c_a7ed8678227edee0f0d9ed1731139b47c}} 
\index{gsm23003.c@{gsm23003.c}!osmo\_lai\_name\_c@{osmo\_lai\_name\_c}}
\index{osmo\_lai\_name\_c@{osmo\_lai\_name\_c}!gsm23003.c@{gsm23003.c}}
\doxysubsubsection{osmo\_lai\_name\_c()}
{\footnotesize\ttfamily char $\ast$ osmo\+\_\+lai\+\_\+name\+\_\+c (\begin{DoxyParamCaption}\item[{const void $\ast$}]{ctx,  }\item[{const struct \textbf{ osmo\+\_\+location\+\_\+area\+\_\+id} $\ast$}]{lai }\end{DoxyParamCaption})}



Return MCC-\/\+MNC-\/\+LAC as string, in a talloc-\/allocated output buffer. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em ctx} & talloc context from which to allocate output buffer \\
\hline
\mbox{\texttt{ in}}  & {\em lai} & LAI to encode, the rac member is ignored. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
string representation of lai in dynamically allocated buffer. 
\end{DoxyReturn}


References \textbf{ lai}, and \textbf{ osmo\+\_\+lai\+\_\+name\+\_\+buf()}.

\mbox{\label{gsm23003_8c_a1e37b2a138a0d812095d452fd4effc78}} 
\index{gsm23003.c@{gsm23003.c}!osmo\_mcc\_name@{osmo\_mcc\_name}}
\index{osmo\_mcc\_name@{osmo\_mcc\_name}!gsm23003.c@{gsm23003.c}}
\doxysubsubsection{osmo\_mcc\_name()}
{\footnotesize\ttfamily const char $\ast$ osmo\+\_\+mcc\+\_\+name (\begin{DoxyParamCaption}\item[{uint16\+\_\+t}]{mcc }\end{DoxyParamCaption})}



Return MCC string as standardized 3-\/digit with leading zeros. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em mcc} & MCC value. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
string in static buffer. 
\end{DoxyReturn}


References \textbf{ osmo\+\_\+mcc\+\_\+name\+\_\+buf()}.



Referenced by \textbf{ osmo\+\_\+rai\+\_\+name\+\_\+buf()}.

\mbox{\label{gsm23003_8c_a2f04e1521f8853628a830dd867cc96cf}} 
\index{gsm23003.c@{gsm23003.c}!osmo\_mcc\_name\_buf@{osmo\_mcc\_name\_buf}}
\index{osmo\_mcc\_name\_buf@{osmo\_mcc\_name\_buf}!gsm23003.c@{gsm23003.c}}
\doxysubsubsection{osmo\_mcc\_name\_buf()}
{\footnotesize\ttfamily char $\ast$ osmo\+\_\+mcc\+\_\+name\+\_\+buf (\begin{DoxyParamCaption}\item[{char $\ast$}]{buf,  }\item[{size\+\_\+t}]{buf\+\_\+len,  }\item[{uint16\+\_\+t}]{mcc }\end{DoxyParamCaption})}



Return MCC string as standardized 3-\/digit with leading zeros. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ out}}  & {\em buf} & caller-\/allocated output buffer \\
\hline
\mbox{\texttt{ in}}  & {\em buf\+\_\+len} & size of buf in bytes \\
\hline
\mbox{\texttt{ in}}  & {\em mcc} & MCC value. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
string in user-\/supplied output buffer 
\end{DoxyReturn}


Referenced by \textbf{ osmo\+\_\+mcc\+\_\+name()}, \textbf{ osmo\+\_\+mcc\+\_\+name\+\_\+c()}, and \textbf{ osmo\+\_\+plmn\+\_\+name\+\_\+buf()}.

\mbox{\label{gsm23003_8c_a648cdca36bf8685b712e2d58dff05fa2}} 
\index{gsm23003.c@{gsm23003.c}!osmo\_mcc\_name\_c@{osmo\_mcc\_name\_c}}
\index{osmo\_mcc\_name\_c@{osmo\_mcc\_name\_c}!gsm23003.c@{gsm23003.c}}
\doxysubsubsection{osmo\_mcc\_name\_c()}
{\footnotesize\ttfamily const char $\ast$ osmo\+\_\+mcc\+\_\+name\+\_\+c (\begin{DoxyParamCaption}\item[{const void $\ast$}]{ctx,  }\item[{uint16\+\_\+t}]{mcc }\end{DoxyParamCaption})}



Return MCC string as standardized 3-\/digit with leading zeros, into a talloc-\/allocated buffer. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em ctx} & talloc context from which to allocate output buffer \\
\hline
\mbox{\texttt{ in}}  & {\em mcc} & MCC value. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
string in dynamically allocated buffer. 
\end{DoxyReturn}


References \textbf{ osmo\+\_\+mcc\+\_\+name\+\_\+buf()}.

\mbox{\label{gsm23003_8c_aa06e6e3db8a52af258220eaf02d7f4b7}} 
\index{gsm23003.c@{gsm23003.c}!osmo\_mme\_id\_cmp@{osmo\_mme\_id\_cmp}}
\index{osmo\_mme\_id\_cmp@{osmo\_mme\_id\_cmp}!gsm23003.c@{gsm23003.c}}
\doxysubsubsection{osmo\_mme\_id\_cmp()}
{\footnotesize\ttfamily int osmo\+\_\+mme\+\_\+id\+\_\+cmp (\begin{DoxyParamCaption}\item[{const struct \textbf{ osmo\+\_\+mme\+\_\+id} $\ast$}]{a,  }\item[{const struct \textbf{ osmo\+\_\+mme\+\_\+id} $\ast$}]{b }\end{DoxyParamCaption})}



References \textbf{ osmo\+\_\+mme\+\_\+id\+::code}, and \textbf{ osmo\+\_\+mme\+\_\+id\+::group\+\_\+id}.



Referenced by \textbf{ osmo\+\_\+gummei\+\_\+cmp()}.

\mbox{\label{gsm23003_8c_aa3513d871d4632695e4b4c7780cdd39a}} 
\index{gsm23003.c@{gsm23003.c}!osmo\_mnc\_cmp@{osmo\_mnc\_cmp}}
\index{osmo\_mnc\_cmp@{osmo\_mnc\_cmp}!gsm23003.c@{gsm23003.c}}
\doxysubsubsection{osmo\_mnc\_cmp()}
{\footnotesize\ttfamily int osmo\+\_\+mnc\+\_\+cmp (\begin{DoxyParamCaption}\item[{uint16\+\_\+t}]{a\+\_\+mnc,  }\item[{bool}]{a\+\_\+mnc\+\_\+3\+\_\+digits,  }\item[{uint16\+\_\+t}]{b\+\_\+mnc,  }\item[{bool}]{b\+\_\+mnc\+\_\+3\+\_\+digits }\end{DoxyParamCaption})}



Referenced by \textbf{ osmo\+\_\+plmn\+\_\+cmp()}.

\mbox{\label{gsm23003_8c_aecaffb04c72e63ad834a1064f586174a}} 
\index{gsm23003.c@{gsm23003.c}!osmo\_mnc\_from\_str@{osmo\_mnc\_from\_str}}
\index{osmo\_mnc\_from\_str@{osmo\_mnc\_from\_str}!gsm23003.c@{gsm23003.c}}
\doxysubsubsection{osmo\_mnc\_from\_str()}
{\footnotesize\ttfamily int osmo\+\_\+mnc\+\_\+from\+\_\+str (\begin{DoxyParamCaption}\item[{const char $\ast$}]{mnc\+\_\+str,  }\item[{uint16\+\_\+t $\ast$}]{mnc,  }\item[{bool $\ast$}]{mnc\+\_\+3\+\_\+digits }\end{DoxyParamCaption})}



References \textbf{ osmo\+\_\+str\+\_\+to\+\_\+int()}.



Referenced by \textbf{ osmo\+\_\+mcc\+\_\+from\+\_\+str()}.

\mbox{\label{gsm23003_8c_a258ead3e7e644239373b7e4f9b9c75cd}} 
\index{gsm23003.c@{gsm23003.c}!osmo\_mnc\_name@{osmo\_mnc\_name}}
\index{osmo\_mnc\_name@{osmo\_mnc\_name}!gsm23003.c@{gsm23003.c}}
\doxysubsubsection{osmo\_mnc\_name()}
{\footnotesize\ttfamily const char $\ast$ osmo\+\_\+mnc\+\_\+name (\begin{DoxyParamCaption}\item[{uint16\+\_\+t}]{mnc,  }\item[{bool}]{mnc\+\_\+3\+\_\+digits }\end{DoxyParamCaption})}



Return MNC string as standardized 2-\/ or 3-\/digit with leading zeros. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em mnc} & MNC value. \\
\hline
\mbox{\texttt{ in}}  & {\em mnc\+\_\+3\+\_\+digits} & True if an MNC should fill three digits, only has an effect if MNC $<$ 100. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
string in static buffer. 
\end{DoxyReturn}


References \textbf{ osmo\+\_\+mnc\+\_\+name\+\_\+buf()}.



Referenced by \textbf{ osmo\+\_\+rai\+\_\+name\+\_\+buf()}.

\mbox{\label{gsm23003_8c_af96dea73e6009d961a07381202ec8562}} 
\index{gsm23003.c@{gsm23003.c}!osmo\_mnc\_name\_buf@{osmo\_mnc\_name\_buf}}
\index{osmo\_mnc\_name\_buf@{osmo\_mnc\_name\_buf}!gsm23003.c@{gsm23003.c}}
\doxysubsubsection{osmo\_mnc\_name\_buf()}
{\footnotesize\ttfamily char $\ast$ osmo\+\_\+mnc\+\_\+name\+\_\+buf (\begin{DoxyParamCaption}\item[{char $\ast$}]{buf,  }\item[{size\+\_\+t}]{buf\+\_\+len,  }\item[{uint16\+\_\+t}]{mnc,  }\item[{bool}]{mnc\+\_\+3\+\_\+digits }\end{DoxyParamCaption})}



Return MNC string as standardized 2-\/ or 3-\/digit with leading zeros. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ out}}  & {\em buf} & caller-\/allocated output buffer \\
\hline
\mbox{\texttt{ in}}  & {\em buf\+\_\+len} & size of buf in bytes \\
\hline
\mbox{\texttt{ in}}  & {\em mnc} & MNC value. \\
\hline
\mbox{\texttt{ in}}  & {\em mnc\+\_\+3\+\_\+digits} & True if an MNC should fill three digits, only has an effect if MNC $<$ 100. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
string in static buffer. 
\end{DoxyReturn}


Referenced by \textbf{ osmo\+\_\+mnc\+\_\+name()}, \textbf{ osmo\+\_\+mnc\+\_\+name\+\_\+c()}, and \textbf{ osmo\+\_\+plmn\+\_\+name\+\_\+buf()}.

\mbox{\label{gsm23003_8c_a455278bc743801015031b33060542b49}} 
\index{gsm23003.c@{gsm23003.c}!osmo\_mnc\_name\_c@{osmo\_mnc\_name\_c}}
\index{osmo\_mnc\_name\_c@{osmo\_mnc\_name\_c}!gsm23003.c@{gsm23003.c}}
\doxysubsubsection{osmo\_mnc\_name\_c()}
{\footnotesize\ttfamily char $\ast$ osmo\+\_\+mnc\+\_\+name\+\_\+c (\begin{DoxyParamCaption}\item[{const void $\ast$}]{ctx,  }\item[{uint16\+\_\+t}]{mnc,  }\item[{bool}]{mnc\+\_\+3\+\_\+digits }\end{DoxyParamCaption})}



Return MNC string as standardized 2-\/ or 3-\/digit with leading zeros, into a talloc-\/allocated buffer. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em ctx} & talloc context from which to allocate output buffer \\
\hline
\mbox{\texttt{ in}}  & {\em mnc} & MNC value. \\
\hline
\mbox{\texttt{ in}}  & {\em mnc\+\_\+3\+\_\+digits} & True if an MNC should fill three digits, only has an effect if MNC $<$ 100. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
string in dynamically allocated buffer. 
\end{DoxyReturn}


References \textbf{ osmo\+\_\+mnc\+\_\+name\+\_\+buf()}.

\mbox{\label{gsm23003_8c_add7e01a847d17b403dca9a1c58072f79}} 
\index{gsm23003.c@{gsm23003.c}!osmo\_msisdn\_str\_valid@{osmo\_msisdn\_str\_valid}}
\index{osmo\_msisdn\_str\_valid@{osmo\_msisdn\_str\_valid}!gsm23003.c@{gsm23003.c}}
\doxysubsubsection{osmo\_msisdn\_str\_valid()}
{\footnotesize\ttfamily bool osmo\+\_\+msisdn\+\_\+str\+\_\+valid (\begin{DoxyParamCaption}\item[{const char $\ast$}]{msisdn }\end{DoxyParamCaption})}



Determine whether the given MSISDN is valid according to 3GPP TS 23.\+003. 


\begin{DoxyParams}{Parameters}
{\em msisdn} & MSISDN digits in ASCII string representation. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true when the MSISDN is valid, false for invalid characters or number of digits. 
\end{DoxyReturn}


References \textbf{ GSM23003\+\_\+\+MSISDN\+\_\+\+MAX\+\_\+\+DIGITS}, \textbf{ GSM23003\+\_\+\+MSISDN\+\_\+\+MIN\+\_\+\+DIGITS}, and \textbf{ is\+\_\+n\+\_\+digits()}.

\mbox{\label{gsm23003_8c_a3ce658c252a4323e2eb9d5279fe2e2e8}} 
\index{gsm23003.c@{gsm23003.c}!osmo\_parse\_home\_network\_domain@{osmo\_parse\_home\_network\_domain}}
\index{osmo\_parse\_home\_network\_domain@{osmo\_parse\_home\_network\_domain}!gsm23003.c@{gsm23003.c}}
\doxysubsubsection{osmo\_parse\_home\_network\_domain()}
{\footnotesize\ttfamily int osmo\+\_\+parse\+\_\+home\+\_\+network\+\_\+domain (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+plmn\+\_\+id} $\ast$}]{out,  }\item[{const char $\ast$}]{in }\end{DoxyParamCaption})}



Parse a TS 23.\+003 Section 19.\+2 Home Network Realm/\+Domain (text form) into a \doxyref{osmo\+\_\+plmn\+\_\+id}{p.}{structosmo__plmn__id}. 


\begin{DoxyParams}{Parameters}
{\em out\mbox{[}out\mbox{]}} & caller-\/allocated output structure \\
\hline
{\em in\mbox{[}in\mbox{]}} & character string representation to be parsed \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 on success; negative on error 
\end{DoxyReturn}


References \textbf{ osmo\+\_\+plmn\+\_\+id\+::mcc}, and \textbf{ osmo\+\_\+plmn\+\_\+id\+::mnc}.

\mbox{\label{gsm23003_8c_a638c10c477d06ed8d78f8ce06bd6b824}} 
\index{gsm23003.c@{gsm23003.c}!osmo\_parse\_mme\_domain@{osmo\_parse\_mme\_domain}}
\index{osmo\_parse\_mme\_domain@{osmo\_parse\_mme\_domain}!gsm23003.c@{gsm23003.c}}
\doxysubsubsection{osmo\_parse\_mme\_domain()}
{\footnotesize\ttfamily int osmo\+\_\+parse\+\_\+mme\+\_\+domain (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+gummei} $\ast$}]{out,  }\item[{const char $\ast$}]{in }\end{DoxyParamCaption})}



Parse a TS 23.\+003 Section 19.\+4.\+2.\+4 MME Domain (text form) into a \doxyref{osmo\+\_\+gummei}{p.}{structosmo__gummei}. 


\begin{DoxyParams}{Parameters}
{\em out\mbox{[}out\mbox{]}} & caller-\/allocated output GUMMEI structure \\
\hline
{\em in\mbox{[}in\mbox{]}} & character string representation to be parsed \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 on success; negative on error 
\end{DoxyReturn}


References \textbf{ osmo\+\_\+mme\+\_\+id\+::code}, \textbf{ osmo\+\_\+mme\+\_\+id\+::group\+\_\+id}, \textbf{ osmo\+\_\+plmn\+\_\+id\+::mcc}, \textbf{ osmo\+\_\+gummei\+::mme}, \textbf{ osmo\+\_\+plmn\+\_\+id\+::mnc}, and \textbf{ osmo\+\_\+gummei\+::plmn}.

\mbox{\label{gsm23003_8c_a6e5fad9eb2065463fbe1266246896f4c}} 
\index{gsm23003.c@{gsm23003.c}!osmo\_plmn\_cmp@{osmo\_plmn\_cmp}}
\index{osmo\_plmn\_cmp@{osmo\_plmn\_cmp}!gsm23003.c@{gsm23003.c}}
\doxysubsubsection{osmo\_plmn\_cmp()}
{\footnotesize\ttfamily int osmo\+\_\+plmn\+\_\+cmp (\begin{DoxyParamCaption}\item[{const struct \textbf{ osmo\+\_\+plmn\+\_\+id} $\ast$}]{a,  }\item[{const struct \textbf{ osmo\+\_\+plmn\+\_\+id} $\ast$}]{b }\end{DoxyParamCaption})}



References \textbf{ osmo\+\_\+plmn\+\_\+id\+::mcc}, \textbf{ osmo\+\_\+plmn\+\_\+id\+::mnc}, \textbf{ osmo\+\_\+plmn\+\_\+id\+::mnc\+\_\+3\+\_\+digits}, and \textbf{ osmo\+\_\+mnc\+\_\+cmp()}.



Referenced by \textbf{ osmo\+\_\+gummei\+\_\+cmp()}, \textbf{ osmo\+\_\+lai\+\_\+cmp()}, and \textbf{ osmo\+\_\+rnc\+\_\+id\+\_\+cmp()}.

\mbox{\label{gsm23003_8c_ae8a971afee2120261b82eb7a8d3a4f2c}} 
\index{gsm23003.c@{gsm23003.c}!osmo\_plmn\_from\_bcd@{osmo\_plmn\_from\_bcd}}
\index{osmo\_plmn\_from\_bcd@{osmo\_plmn\_from\_bcd}!gsm23003.c@{gsm23003.c}}
\doxysubsubsection{osmo\_plmn\_from\_bcd()}
{\footnotesize\ttfamily void osmo\+\_\+plmn\+\_\+from\+\_\+bcd (\begin{DoxyParamCaption}\item[{const uint8\+\_\+t $\ast$}]{bcd\+\_\+src,  }\item[{struct \textbf{ osmo\+\_\+plmn\+\_\+id} $\ast$}]{plmn }\end{DoxyParamCaption})}



References \textbf{ osmo\+\_\+plmn\+\_\+id\+::mcc}, \textbf{ osmo\+\_\+plmn\+\_\+id\+::mnc}, and \textbf{ osmo\+\_\+plmn\+\_\+id\+::mnc\+\_\+3\+\_\+digits}.



Referenced by \textbf{ gsm48\+\_\+decode\+\_\+lai2()}, and \textbf{ gsm48\+\_\+mcc\+\_\+mnc\+\_\+from\+\_\+bcd()}.

\mbox{\label{gsm23003_8c_a82c72499a602aa92b80418f3d11a9e22}} 
\index{gsm23003.c@{gsm23003.c}!osmo\_plmn\_name@{osmo\_plmn\_name}}
\index{osmo\_plmn\_name@{osmo\_plmn\_name}!gsm23003.c@{gsm23003.c}}
\doxysubsubsection{osmo\_plmn\_name()}
{\footnotesize\ttfamily const char $\ast$ osmo\+\_\+plmn\+\_\+name (\begin{DoxyParamCaption}\item[{const struct \textbf{ osmo\+\_\+plmn\+\_\+id} $\ast$}]{plmn }\end{DoxyParamCaption})}



Return MCC-\/\+MNC string as standardized 3-\/digit-\/dash-\/2/3-\/digit with leading zeros. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em plmn} & MCC-\/\+MNC value. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
string in static buffer. 
\end{DoxyReturn}


References \textbf{ osmo\+\_\+plmn\+\_\+name\+\_\+buf()}.

\mbox{\label{gsm23003_8c_ada111597152a978afb5ad234e0352bfb}} 
\index{gsm23003.c@{gsm23003.c}!osmo\_plmn\_name2@{osmo\_plmn\_name2}}
\index{osmo\_plmn\_name2@{osmo\_plmn\_name2}!gsm23003.c@{gsm23003.c}}
\doxysubsubsection{osmo\_plmn\_name2()}
{\footnotesize\ttfamily const char $\ast$ osmo\+\_\+plmn\+\_\+name2 (\begin{DoxyParamCaption}\item[{const struct \textbf{ osmo\+\_\+plmn\+\_\+id} $\ast$}]{plmn }\end{DoxyParamCaption})}



Same as \doxyref{osmo\+\_\+plmn\+\_\+name()}{p.}{gsm23003_8c_a82c72499a602aa92b80418f3d11a9e22}, but returning in a different static buffer. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em plmn} & MCC-\/\+MNC value. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
string in static buffer. 
\end{DoxyReturn}


References \textbf{ osmo\+\_\+plmn\+\_\+name\+\_\+buf()}.

\mbox{\label{gsm23003_8c_a9b9e02a0cb07baf36b3550e1b6ae24aa}} 
\index{gsm23003.c@{gsm23003.c}!osmo\_plmn\_name\_buf@{osmo\_plmn\_name\_buf}}
\index{osmo\_plmn\_name\_buf@{osmo\_plmn\_name\_buf}!gsm23003.c@{gsm23003.c}}
\doxysubsubsection{osmo\_plmn\_name\_buf()}
{\footnotesize\ttfamily char $\ast$ osmo\+\_\+plmn\+\_\+name\+\_\+buf (\begin{DoxyParamCaption}\item[{char $\ast$}]{buf,  }\item[{size\+\_\+t}]{buf\+\_\+len,  }\item[{const struct \textbf{ osmo\+\_\+plmn\+\_\+id} $\ast$}]{plmn }\end{DoxyParamCaption})}



Return MCC-\/\+MNC string as standardized 3-\/digit-\/dash-\/2/3-\/digit with leading zeros. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ out}}  & {\em buf} & caller-\/allocated output buffer \\
\hline
\mbox{\texttt{ in}}  & {\em buf\+\_\+len} & size of buf in bytes \\
\hline
\mbox{\texttt{ in}}  & {\em plmn} & MCC-\/\+MNC value. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
string in static buffer. 
\end{DoxyReturn}


References \textbf{ osmo\+\_\+plmn\+\_\+id\+::mcc}, \textbf{ osmo\+\_\+plmn\+\_\+id\+::mnc}, \textbf{ osmo\+\_\+plmn\+\_\+id\+::mnc\+\_\+3\+\_\+digits}, \textbf{ osmo\+\_\+mcc\+\_\+name\+\_\+buf()}, and \textbf{ osmo\+\_\+mnc\+\_\+name\+\_\+buf()}.



Referenced by \textbf{ osmo\+\_\+gummei\+\_\+name\+\_\+buf()}, \textbf{ osmo\+\_\+lai\+\_\+name\+\_\+buf()}, \textbf{ osmo\+\_\+plmn\+\_\+name()}, \textbf{ osmo\+\_\+plmn\+\_\+name2()}, \textbf{ osmo\+\_\+plmn\+\_\+name\+\_\+c()}, \textbf{ osmo\+\_\+rai\+\_\+name2\+\_\+buf()}, and \textbf{ osmo\+\_\+rnc\+\_\+id\+\_\+name\+\_\+buf()}.

\mbox{\label{gsm23003_8c_ace5d736b988f5c681e4372d28082d3d8}} 
\index{gsm23003.c@{gsm23003.c}!osmo\_plmn\_name\_c@{osmo\_plmn\_name\_c}}
\index{osmo\_plmn\_name\_c@{osmo\_plmn\_name\_c}!gsm23003.c@{gsm23003.c}}
\doxysubsubsection{osmo\_plmn\_name\_c()}
{\footnotesize\ttfamily char $\ast$ osmo\+\_\+plmn\+\_\+name\+\_\+c (\begin{DoxyParamCaption}\item[{const void $\ast$}]{ctx,  }\item[{const struct \textbf{ osmo\+\_\+plmn\+\_\+id} $\ast$}]{plmn }\end{DoxyParamCaption})}



Return MCC-\/\+MNC string as standardized 3-\/digit-\/dash-\/2/3-\/digit with leading zeros, into a dynamically-\/allocated output buffer. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em ctx} & talloc context from which to allocate output buffer \\
\hline
\mbox{\texttt{ in}}  & {\em plmn} & MCC-\/\+MNC value. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
string in dynamically allocated buffer. 
\end{DoxyReturn}


References \textbf{ osmo\+\_\+plmn\+\_\+name\+\_\+buf()}.

\mbox{\label{gsm23003_8c_a5a734cb91e447b4127f9aa2cf6d775fe}} 
\index{gsm23003.c@{gsm23003.c}!osmo\_plmn\_to\_bcd@{osmo\_plmn\_to\_bcd}}
\index{osmo\_plmn\_to\_bcd@{osmo\_plmn\_to\_bcd}!gsm23003.c@{gsm23003.c}}
\doxysubsubsection{osmo\_plmn\_to\_bcd()}
{\footnotesize\ttfamily void osmo\+\_\+plmn\+\_\+to\+\_\+bcd (\begin{DoxyParamCaption}\item[{uint8\+\_\+t $\ast$}]{bcd\+\_\+dst,  }\item[{const struct \textbf{ osmo\+\_\+plmn\+\_\+id} $\ast$}]{plmn }\end{DoxyParamCaption})}



References \textbf{ osmo\+\_\+plmn\+\_\+id\+::mcc}, \textbf{ osmo\+\_\+plmn\+\_\+id\+::mnc}, \textbf{ osmo\+\_\+plmn\+\_\+id\+::mnc\+\_\+3\+\_\+digits}, and \textbf{ to\+\_\+bcd()}.



Referenced by \textbf{ gsm0808\+\_\+create\+\_\+common\+\_\+id()}, \textbf{ gsm48\+\_\+generate\+\_\+lai2()}, \textbf{ gsm48\+\_\+mcc\+\_\+mnc\+\_\+to\+\_\+bcd()}, and \textbf{ put\+\_\+old\+\_\+bss\+\_\+to\+\_\+new\+\_\+bss\+\_\+information()}.

\mbox{\label{gsm23003_8c_a3a3ba28b8569d7fcc5956d94b1731860}} 
\index{gsm23003.c@{gsm23003.c}!osmo\_rai\_cmp@{osmo\_rai\_cmp}}
\index{osmo\_rai\_cmp@{osmo\_rai\_cmp}!gsm23003.c@{gsm23003.c}}
\doxysubsubsection{osmo\_rai\_cmp()}
{\footnotesize\ttfamily int osmo\+\_\+rai\+\_\+cmp (\begin{DoxyParamCaption}\item[{const struct \textbf{ osmo\+\_\+routing\+\_\+area\+\_\+id} $\ast$}]{a,  }\item[{const struct \textbf{ osmo\+\_\+routing\+\_\+area\+\_\+id} $\ast$}]{b }\end{DoxyParamCaption})}



References \textbf{ osmo\+\_\+routing\+\_\+area\+\_\+id\+::lac}, \textbf{ osmo\+\_\+lai\+\_\+cmp()}, and \textbf{ osmo\+\_\+routing\+\_\+area\+\_\+id\+::rac}.



Referenced by \textbf{ osmo\+\_\+cgi\+\_\+ps\+\_\+cmp()}.

\mbox{\label{gsm23003_8c_a89798a86e9a4a354dfc1e23d5ba0e30b}} 
\index{gsm23003.c@{gsm23003.c}!osmo\_rai\_name2@{osmo\_rai\_name2}}
\index{osmo\_rai\_name2@{osmo\_rai\_name2}!gsm23003.c@{gsm23003.c}}
\doxysubsubsection{osmo\_rai\_name2()}
{\footnotesize\ttfamily const char $\ast$ osmo\+\_\+rai\+\_\+name2 (\begin{DoxyParamCaption}\item[{const struct \textbf{ osmo\+\_\+routing\+\_\+area\+\_\+id} $\ast$}]{rai }\end{DoxyParamCaption})}



Return MCC-\/\+MNC-\/\+LAC-\/\+RAC as string, in a static buffer. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em rai} & RAI to encode, the rac member is ignored. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
Static string buffer. 
\end{DoxyReturn}


References \textbf{ osmo\+\_\+rai\+\_\+name2\+\_\+buf()}.



Referenced by \textbf{ osmo\+\_\+cgi\+\_\+ps\+\_\+name\+\_\+buf()}.

\mbox{\label{gsm23003_8c_a82630c48fa1ae4e3ffeacedd72ab5222}} 
\index{gsm23003.c@{gsm23003.c}!osmo\_rai\_name2\_buf@{osmo\_rai\_name2\_buf}}
\index{osmo\_rai\_name2\_buf@{osmo\_rai\_name2\_buf}!gsm23003.c@{gsm23003.c}}
\doxysubsubsection{osmo\_rai\_name2\_buf()}
{\footnotesize\ttfamily char $\ast$ osmo\+\_\+rai\+\_\+name2\+\_\+buf (\begin{DoxyParamCaption}\item[{char $\ast$}]{buf,  }\item[{size\+\_\+t}]{buf\+\_\+len,  }\item[{const struct \textbf{ osmo\+\_\+routing\+\_\+area\+\_\+id} $\ast$}]{rai }\end{DoxyParamCaption})}



Return MCC-\/\+MNC-\/\+LAC-\/\+RAC as string, in caller-\/provided output buffer. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ out}}  & {\em buf} & caller-\/allocated output buffer \\
\hline
\mbox{\texttt{ in}}  & {\em buf\+\_\+len} & size of buf in bytes \\
\hline
\mbox{\texttt{ in}}  & {\em rai} & RAI to encode, the rac member is ignored. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
buf 
\end{DoxyReturn}


References \textbf{ osmo\+\_\+location\+\_\+area\+\_\+id\+::lac}, \textbf{ osmo\+\_\+routing\+\_\+area\+\_\+id\+::lac}, \textbf{ osmo\+\_\+plmn\+\_\+name\+\_\+buf()}, \textbf{ osmo\+\_\+location\+\_\+area\+\_\+id\+::plmn}, and \textbf{ osmo\+\_\+routing\+\_\+area\+\_\+id\+::rac}.



Referenced by \textbf{ osmo\+\_\+rai\+\_\+name2()}, and \textbf{ osmo\+\_\+rai\+\_\+name2\+\_\+c()}.

\mbox{\label{gsm23003_8c_aab325fedd81035fab50d0edf222f63ff}} 
\index{gsm23003.c@{gsm23003.c}!osmo\_rai\_name2\_c@{osmo\_rai\_name2\_c}}
\index{osmo\_rai\_name2\_c@{osmo\_rai\_name2\_c}!gsm23003.c@{gsm23003.c}}
\doxysubsubsection{osmo\_rai\_name2\_c()}
{\footnotesize\ttfamily char $\ast$ osmo\+\_\+rai\+\_\+name2\+\_\+c (\begin{DoxyParamCaption}\item[{const void $\ast$}]{ctx,  }\item[{const struct \textbf{ osmo\+\_\+routing\+\_\+area\+\_\+id} $\ast$}]{rai }\end{DoxyParamCaption})}



Return MCC-\/\+MNC-\/\+LAC-\/\+RAC as string, in a talloc-\/allocated output buffer. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em ctx} & talloc context from which to allocate output buffer \\
\hline
\mbox{\texttt{ in}}  & {\em rai} & RAI to encode, the rac member is ignored. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
string representation of lai in dynamically allocated buffer. 
\end{DoxyReturn}


References \textbf{ osmo\+\_\+rai\+\_\+name2\+\_\+buf()}.

\mbox{\label{gsm23003_8c_a633fc7ac2eba8553d01cefac50279fa4}} 
\index{gsm23003.c@{gsm23003.c}!osmo\_rnc\_id\_cmp@{osmo\_rnc\_id\_cmp}}
\index{osmo\_rnc\_id\_cmp@{osmo\_rnc\_id\_cmp}!gsm23003.c@{gsm23003.c}}
\doxysubsubsection{osmo\_rnc\_id\_cmp()}
{\footnotesize\ttfamily int osmo\+\_\+rnc\+\_\+id\+\_\+cmp (\begin{DoxyParamCaption}\item[{const struct \textbf{ osmo\+\_\+rnc\+\_\+id} $\ast$}]{a,  }\item[{const struct \textbf{ osmo\+\_\+rnc\+\_\+id} $\ast$}]{b }\end{DoxyParamCaption})}



References \textbf{ osmo\+\_\+plmn\+\_\+cmp()}, \textbf{ osmo\+\_\+rnc\+\_\+id\+::plmn}, and \textbf{ osmo\+\_\+rnc\+\_\+id\+::rnc\+\_\+id}.

\mbox{\label{gsm23003_8c_abf5d61f9ad6603f3b03e7d52cac586f5}} 
\index{gsm23003.c@{gsm23003.c}!osmo\_rnc\_id\_name@{osmo\_rnc\_id\_name}}
\index{osmo\_rnc\_id\_name@{osmo\_rnc\_id\_name}!gsm23003.c@{gsm23003.c}}
\doxysubsubsection{osmo\_rnc\_id\_name()}
{\footnotesize\ttfamily const char $\ast$ osmo\+\_\+rnc\+\_\+id\+\_\+name (\begin{DoxyParamCaption}\item[{const struct \textbf{ osmo\+\_\+rnc\+\_\+id} $\ast$}]{rnc }\end{DoxyParamCaption})}



Return string representation of RNC in static output buffer. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em rnc} & RNC to be stringified \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
pointer to static output buffer 
\end{DoxyReturn}


References \textbf{ osmo\+\_\+rnc\+\_\+id\+\_\+name\+\_\+buf()}.

\mbox{\label{gsm23003_8c_a0fde6713e146140ae83590b5727bb862}} 
\index{gsm23003.c@{gsm23003.c}!osmo\_rnc\_id\_name\_buf@{osmo\_rnc\_id\_name\_buf}}
\index{osmo\_rnc\_id\_name\_buf@{osmo\_rnc\_id\_name\_buf}!gsm23003.c@{gsm23003.c}}
\doxysubsubsection{osmo\_rnc\_id\_name\_buf()}
{\footnotesize\ttfamily char $\ast$ osmo\+\_\+rnc\+\_\+id\+\_\+name\+\_\+buf (\begin{DoxyParamCaption}\item[{char $\ast$}]{buf,  }\item[{size\+\_\+t}]{buf\+\_\+len,  }\item[{const struct \textbf{ osmo\+\_\+rnc\+\_\+id} $\ast$}]{rnc }\end{DoxyParamCaption})}



Return string representation of RNC in caller-\/provided output buffer. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ out}}  & {\em buf} & pointer to caller-\/provided output buffer \\
\hline
\mbox{\texttt{ in}}  & {\em buf\+\_\+len} & size of buf in bytes \\
\hline
\mbox{\texttt{ in}}  & {\em rnc} & RNC to be stringified \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
buf 
\end{DoxyReturn}


References \textbf{ osmo\+\_\+plmn\+\_\+name\+\_\+buf()}, \textbf{ osmo\+\_\+rnc\+\_\+id\+::plmn}, and \textbf{ osmo\+\_\+rnc\+\_\+id\+::rnc\+\_\+id}.



Referenced by \textbf{ osmo\+\_\+rnc\+\_\+id\+\_\+name()}, and \textbf{ osmo\+\_\+rnc\+\_\+id\+\_\+name\+\_\+c()}.

\mbox{\label{gsm23003_8c_a84ba501661a58de17550847e45ee956e}} 
\index{gsm23003.c@{gsm23003.c}!osmo\_rnc\_id\_name\_c@{osmo\_rnc\_id\_name\_c}}
\index{osmo\_rnc\_id\_name\_c@{osmo\_rnc\_id\_name\_c}!gsm23003.c@{gsm23003.c}}
\doxysubsubsection{osmo\_rnc\_id\_name\_c()}
{\footnotesize\ttfamily char $\ast$ osmo\+\_\+rnc\+\_\+id\+\_\+name\+\_\+c (\begin{DoxyParamCaption}\item[{const void $\ast$}]{ctx,  }\item[{const struct \textbf{ osmo\+\_\+rnc\+\_\+id} $\ast$}]{rnc }\end{DoxyParamCaption})}



Return string representation of RNC in static output buffer. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ out}}  & {\em buf} & pointer to caller-\/provided output buffer \\
\hline
\mbox{\texttt{ in}}  & {\em buf\+\_\+len} & size of buf in bytes \\
\hline
\mbox{\texttt{ in}}  & {\em rnc} & RNC to be stringified \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
pointer to static output buffer 
\end{DoxyReturn}


References \textbf{ osmo\+\_\+rnc\+\_\+id\+\_\+name\+\_\+buf()}.

\mbox{\label{gsm23003_8c_a6d91a72ad4d80f54160762da3c71e1c3}} 
\index{gsm23003.c@{gsm23003.c}!osmo\_sai\_name@{osmo\_sai\_name}}
\index{osmo\_sai\_name@{osmo\_sai\_name}!gsm23003.c@{gsm23003.c}}
\doxysubsubsection{osmo\_sai\_name()}
{\footnotesize\ttfamily const char $\ast$ osmo\+\_\+sai\+\_\+name (\begin{DoxyParamCaption}\item[{const struct \textbf{ osmo\+\_\+service\+\_\+area\+\_\+id} $\ast$}]{sai }\end{DoxyParamCaption})}



Return MCC-\/\+MNC-\/\+LAC-\/\+SAC as string, in a static buffer. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em sai} & SAI to encode. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
Static string buffer. 
\end{DoxyReturn}


References \textbf{ osmo\+\_\+sai\+\_\+name\+\_\+buf()}.



Referenced by \textbf{ gsm0808\+\_\+cell\+\_\+id\+\_\+u\+\_\+name()}.

\mbox{\label{gsm23003_8c_aaff6dbe29a9a35a44b2c47a400502406}} 
\index{gsm23003.c@{gsm23003.c}!osmo\_sai\_name2@{osmo\_sai\_name2}}
\index{osmo\_sai\_name2@{osmo\_sai\_name2}!gsm23003.c@{gsm23003.c}}
\doxysubsubsection{osmo\_sai\_name2()}
{\footnotesize\ttfamily const char $\ast$ osmo\+\_\+sai\+\_\+name2 (\begin{DoxyParamCaption}\item[{const struct \textbf{ osmo\+\_\+service\+\_\+area\+\_\+id} $\ast$}]{sai }\end{DoxyParamCaption})}



Same as \doxyref{osmo\+\_\+cgi\+\_\+name()}{p.}{gsm23003_8c_aefd2465415517b530e66bd0d081b2d1c}, but uses a different static buffer. 

Useful for printing two distinct CGIs in the same printf format. 
\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em sai} & SAI to encode. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
Static string buffer. 
\end{DoxyReturn}


References \textbf{ osmo\+\_\+sai\+\_\+name\+\_\+buf()}.

\mbox{\label{gsm23003_8c_a029c57e0ced4bfeb34f49452b55a68bf}} 
\index{gsm23003.c@{gsm23003.c}!osmo\_sai\_name\_buf@{osmo\_sai\_name\_buf}}
\index{osmo\_sai\_name\_buf@{osmo\_sai\_name\_buf}!gsm23003.c@{gsm23003.c}}
\doxysubsubsection{osmo\_sai\_name\_buf()}
{\footnotesize\ttfamily char $\ast$ osmo\+\_\+sai\+\_\+name\+\_\+buf (\begin{DoxyParamCaption}\item[{char $\ast$}]{buf,  }\item[{size\+\_\+t}]{buf\+\_\+len,  }\item[{const struct \textbf{ osmo\+\_\+service\+\_\+area\+\_\+id} $\ast$}]{sai }\end{DoxyParamCaption})}



Return MCC-\/\+MNC-\/\+LAC-\/\+SAC as string, in caller-\/provided output buffer. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ out}}  & {\em buf} & caller-\/allocated output buffer \\
\hline
\mbox{\texttt{ in}}  & {\em buf\+\_\+len} & size of buf in bytes \\
\hline
\mbox{\texttt{ in}}  & {\em sai} & SAI to encode. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
buf 
\end{DoxyReturn}


References \textbf{ osmo\+\_\+service\+\_\+area\+\_\+id\+::lai}, \textbf{ osmo\+\_\+lai\+\_\+name()}, and \textbf{ osmo\+\_\+service\+\_\+area\+\_\+id\+::sac}.



Referenced by \textbf{ osmo\+\_\+sai\+\_\+name()}, \textbf{ osmo\+\_\+sai\+\_\+name2()}, and \textbf{ osmo\+\_\+sai\+\_\+name\+\_\+c()}.

\mbox{\label{gsm23003_8c_abb4d7f96b41a747bde7eec263185c7d0}} 
\index{gsm23003.c@{gsm23003.c}!osmo\_sai\_name\_c@{osmo\_sai\_name\_c}}
\index{osmo\_sai\_name\_c@{osmo\_sai\_name\_c}!gsm23003.c@{gsm23003.c}}
\doxysubsubsection{osmo\_sai\_name\_c()}
{\footnotesize\ttfamily char $\ast$ osmo\+\_\+sai\+\_\+name\+\_\+c (\begin{DoxyParamCaption}\item[{const void $\ast$}]{ctx,  }\item[{const struct \textbf{ osmo\+\_\+service\+\_\+area\+\_\+id} $\ast$}]{sai }\end{DoxyParamCaption})}



Return MCC-\/\+MNC-\/\+LAC-\/\+SAC as string, in a talloc-\/allocated output buffer. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em ctx} & talloc context from which to allocate output buffer \\
\hline
\mbox{\texttt{ in}}  & {\em sai} & SAI to encode. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
string representation of CGI in dynamically-\/allocated buffer. 
\end{DoxyReturn}


References \textbf{ osmo\+\_\+sai\+\_\+name\+\_\+buf()}.

\mbox{\label{gsm23003_8c_a216368bfbaa559d8482ff57a9559e296}} 
\index{gsm23003.c@{gsm23003.c}!to\_bcd@{to\_bcd}}
\index{to\_bcd@{to\_bcd}!gsm23003.c@{gsm23003.c}}
\doxysubsubsection{to\_bcd()}
{\footnotesize\ttfamily static void to\+\_\+bcd (\begin{DoxyParamCaption}\item[{uint8\+\_\+t $\ast$}]{bcd,  }\item[{uint16\+\_\+t}]{val }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



Referenced by \textbf{ osmo\+\_\+plmn\+\_\+to\+\_\+bcd()}.

