\doxysection{include/osmocom/gsm/rsl.h File Reference}
\label{rsl_8h}\index{include/osmocom/gsm/rsl.h@{include/osmocom/gsm/rsl.h}}
{\ttfamily \#include $<$stdint.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/core/utils.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/core/msgb.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/gsm/protocol/gsm\+\_\+08\+\_\+58.\+h$>$}\newline
\doxysubsection*{Macros}
\begin{DoxyCompactItemize}
\item 
\#define \textbf{ rsl\+\_\+tlv\+\_\+parse}(dec,  buf,  \textbf{ len})~   \textbf{ tlv\+\_\+parse}(dec, \&\textbf{ rsl\+\_\+att\+\_\+tlvdef}, buf, \textbf{ len}, 0, 0)
\begin{DoxyCompactList}\small\item\em Parse RSL TLV structure using \doxyref{tlv\+\_\+parse}{p.}{group__tlv_gaa52227475e0050c2f0c78cb612e01d65}. \end{DoxyCompactList}\item 
\#define \textbf{ rsl\+\_\+ipac\+\_\+eie\+\_\+tlv\+\_\+parse}(dec,  buf,  \textbf{ len})~   \textbf{ tlv\+\_\+parse}(dec, \&\textbf{ rsl\+\_\+ipac\+\_\+eie\+\_\+tlvdef}, buf, \textbf{ len}, 0, 0)
\begin{DoxyCompactList}\small\item\em Parse RSL IPAC EIE TLV structure using \doxyref{tlv\+\_\+parse}{p.}{group__tlv_gaa52227475e0050c2f0c78cb612e01d65}. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection*{Functions}
\begin{DoxyCompactItemize}
\item 
void \textbf{ rsl\+\_\+init\+\_\+rll\+\_\+hdr} (struct \textbf{ abis\+\_\+rsl\+\_\+rll\+\_\+hdr} $\ast$dh, uint8\+\_\+t \textbf{ msg\+\_\+type})
\begin{DoxyCompactList}\small\item\em Initialize a RSL RLL header. \end{DoxyCompactList}\item 
void \textbf{ rsl\+\_\+init\+\_\+cchan\+\_\+hdr} (struct \textbf{ abis\+\_\+rsl\+\_\+cchan\+\_\+hdr} $\ast$ch, uint8\+\_\+t \textbf{ msg\+\_\+type})
\begin{DoxyCompactList}\small\item\em Initialize a RSL Common Channel header. \end{DoxyCompactList}\item 
uint8\+\_\+t \textbf{ rsl\+\_\+enc\+\_\+chan\+\_\+nr} (uint8\+\_\+t \textbf{ type}, uint8\+\_\+t subch, uint8\+\_\+t \textbf{ timeslot})
\begin{DoxyCompactList}\small\item\em Encode channel number as per Section 9.\+3.\+1. \end{DoxyCompactList}\item 
int \textbf{ rsl\+\_\+dec\+\_\+chan\+\_\+nr} (uint8\+\_\+t \textbf{ chan\+\_\+nr}, uint8\+\_\+t $\ast$\textbf{ type}, uint8\+\_\+t $\ast$subch, uint8\+\_\+t $\ast$\textbf{ timeslot})
\begin{DoxyCompactList}\small\item\em Decode RSL channel number. \end{DoxyCompactList}\item 
char $\ast$ \textbf{ rsl\+\_\+chan\+\_\+nr\+\_\+str\+\_\+buf} (char $\ast$buf, size\+\_\+t buf\+\_\+len, uint8\+\_\+t \textbf{ chan\+\_\+nr})
\begin{DoxyCompactList}\small\item\em Get human-\/readable string for RSL channel number, in caller-\/provided buffer. \end{DoxyCompactList}\item 
const char $\ast$ \textbf{ rsl\+\_\+chan\+\_\+nr\+\_\+str} (uint8\+\_\+t \textbf{ chan\+\_\+nr})
\begin{DoxyCompactList}\small\item\em Get human-\/readable string for RSL channel number, in static buffer. \end{DoxyCompactList}\item 
char $\ast$ \textbf{ rsl\+\_\+chan\+\_\+nr\+\_\+str\+\_\+c} (const void $\ast$ctx, uint8\+\_\+t \textbf{ chan\+\_\+nr})
\begin{DoxyCompactList}\small\item\em Get human-\/readable string for RSL channel number, in dynamically-\/allocated buffer. \end{DoxyCompactList}\item 
const char $\ast$ \textbf{ rsl\+\_\+err\+\_\+name} (uint8\+\_\+t err)
\begin{DoxyCompactList}\small\item\em Get human-\/readable name for RSL Error. \end{DoxyCompactList}\item 
const char $\ast$ \textbf{ rsl\+\_\+rlm\+\_\+cause\+\_\+name} (uint8\+\_\+t err)
\begin{DoxyCompactList}\small\item\em Get human-\/readable string for RLM cause. \end{DoxyCompactList}\item 
const char $\ast$ \textbf{ rsl\+\_\+msg\+\_\+name} (uint8\+\_\+t \textbf{ msg\+\_\+type})
\begin{DoxyCompactList}\small\item\em Get human-\/readable string for RSL Message Type. \end{DoxyCompactList}\item 
const char $\ast$ \textbf{ rsl\+\_\+ipac\+\_\+msg\+\_\+name} (uint8\+\_\+t \textbf{ msg\+\_\+type})
\begin{DoxyCompactList}\small\item\em Get human-\/readable name of ip.\+access RSL msg type. \end{DoxyCompactList}\item 
const char $\ast$ \textbf{ rsl\+\_\+or\+\_\+ipac\+\_\+msg\+\_\+name} (uint8\+\_\+t \textbf{ msg\+\_\+type})
\begin{DoxyCompactList}\small\item\em Get human-\/readable name of standard or ip.\+access RSL msg type. \end{DoxyCompactList}\item 
int \textbf{ rsl\+\_\+ccch\+\_\+conf\+\_\+to\+\_\+bs\+\_\+cc\+\_\+chans} (int ccch\+\_\+conf)
\item 
void \textbf{ rsl\+\_\+rll\+\_\+push\+\_\+hdr} (struct \textbf{ msgb} $\ast$\textbf{ msg}, uint8\+\_\+t \textbf{ msg\+\_\+type}, uint8\+\_\+t \textbf{ chan\+\_\+nr}, uint8\+\_\+t \textbf{ link\+\_\+id}, int transparent)
\begin{DoxyCompactList}\small\item\em Push a RSL RLL header onto an existing msgb. \end{DoxyCompactList}\item 
void \textbf{ rsl\+\_\+rll\+\_\+push\+\_\+l3} (struct \textbf{ msgb} $\ast$\textbf{ msg}, uint8\+\_\+t \textbf{ msg\+\_\+type}, uint8\+\_\+t \textbf{ chan\+\_\+nr}, uint8\+\_\+t \textbf{ link\+\_\+id}, int transparent)
\begin{DoxyCompactList}\small\item\em Wrap msgb in L3 Info IE and push a RSL RLL header. \end{DoxyCompactList}\item 
struct \textbf{ msgb} $\ast$ \textbf{ rsl\+\_\+rll\+\_\+simple} (uint8\+\_\+t \textbf{ msg\+\_\+type}, uint8\+\_\+t \textbf{ chan\+\_\+nr}, uint8\+\_\+t \textbf{ link\+\_\+id}, int transparent)
\begin{DoxyCompactList}\small\item\em Create msgb with RSL RLL header. \end{DoxyCompactList}\item 
static const char $\ast$ \textbf{ rsl\+\_\+act\+\_\+type\+\_\+name} (uint8\+\_\+t act\+\_\+type)
\begin{DoxyCompactList}\small\item\em Return a human readable name for GSM 08.\+58 RSL\+\_\+\+ACT\+\_\+$\ast$ constants. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection*{Variables}
\begin{DoxyCompactItemize}
\item 
const struct \textbf{ tlv\+\_\+definition} \textbf{ rsl\+\_\+att\+\_\+tlvdef}
\item 
const struct \textbf{ tlv\+\_\+definition} \textbf{ rsl\+\_\+ipac\+\_\+eie\+\_\+tlvdef}
\begin{DoxyCompactList}\small\item\em TLV parser definitions for IPA embedded IEs. \end{DoxyCompactList}\item 
const struct \textbf{ value\+\_\+string} \textbf{ rsl\+\_\+act\+\_\+type\+\_\+names} [$\,$]
\begin{DoxyCompactList}\small\item\em String names of RSL Channel Activation Types. \end{DoxyCompactList}\end{DoxyCompactItemize}
