\doxysection{include/osmocom/isdn/i460\+\_\+mux.h File Reference}
\label{i460__mux_8h}\index{include/osmocom/isdn/i460\_mux.h@{include/osmocom/isdn/i460\_mux.h}}


ITU-\/T I.\+460 sub-\/channel multiplexer + demultiplexer.  


{\ttfamily \#include $<$stdint.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/core/bits.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/core/linuxlist.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/core/msgb.\+h$>$}\newline
\doxysubsection*{Data Structures}
\begin{DoxyCompactItemize}
\item 
struct \textbf{ osmo\+\_\+i460\+\_\+subchan\+\_\+demux}
\item 
struct \textbf{ osmo\+\_\+i460\+\_\+subchan\+\_\+mux}
\item 
struct \textbf{ osmo\+\_\+i460\+\_\+subchan}
\item 
struct \textbf{ osmo\+\_\+i460\+\_\+timeslot}
\item 
struct \textbf{ osmo\+\_\+i460\+\_\+schan\+\_\+desc}
\begin{DoxyCompactList}\small\item\em description of a sub-\/channel; passed by caller \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection*{Macros}
\begin{DoxyCompactItemize}
\item 
\#define \textbf{ OSMO\+\_\+\+I460\+\_\+\+NUM\+\_\+\+SUBCHAN}~8
\end{DoxyCompactItemize}
\doxysubsection*{Typedefs}
\begin{DoxyCompactItemize}
\item 
typedef void($\ast$ \textbf{ out\+\_\+cb\+\_\+bits\+\_\+t}) (struct \textbf{ osmo\+\_\+i460\+\_\+subchan} $\ast$schan, void $\ast$user\+\_\+data, const \textbf{ ubit\+\_\+t} $\ast$bits, unsigned int num\+\_\+bits)
\item 
typedef void($\ast$ \textbf{ out\+\_\+cb\+\_\+bytes\+\_\+t}) (struct \textbf{ osmo\+\_\+i460\+\_\+subchan} $\ast$schan, void $\ast$user\+\_\+data, const uint8\+\_\+t $\ast$bytes, unsigned int num\+\_\+bytes)
\item 
typedef void($\ast$ \textbf{ in\+\_\+cb\+\_\+queue\+\_\+empty\+\_\+t}) (struct \textbf{ osmo\+\_\+i460\+\_\+subchan} $\ast$schan, void $\ast$user\+\_\+data)
\end{DoxyCompactItemize}
\doxysubsection*{Enumerations}
\begin{DoxyCompactItemize}
\item 
enum \textbf{ osmo\+\_\+i460\+\_\+rate} \{ \newline
\textbf{ OSMO\+\_\+\+I460\+\_\+\+RATE\+\_\+\+NONE}
, \newline
\textbf{ OSMO\+\_\+\+I460\+\_\+\+RATE\+\_\+64k}
, \newline
\textbf{ OSMO\+\_\+\+I460\+\_\+\+RATE\+\_\+32k}
, \newline
\textbf{ OSMO\+\_\+\+I460\+\_\+\+RATE\+\_\+16k}
, \newline
\textbf{ OSMO\+\_\+\+I460\+\_\+\+RATE\+\_\+8k}
 \}
\end{DoxyCompactItemize}
\doxysubsection*{Functions}
\begin{DoxyCompactItemize}
\item 
void \textbf{ osmo\+\_\+i460\+\_\+demux\+\_\+in} (struct \textbf{ osmo\+\_\+i460\+\_\+timeslot} $\ast$\textbf{ ts}, const uint8\+\_\+t $\ast$\textbf{ data}, size\+\_\+t data\+\_\+len)
\begin{DoxyCompactList}\small\item\em Feed multiplexed data (from an E1 timeslot) into de-\/multiplexer. \end{DoxyCompactList}\item 
void \textbf{ osmo\+\_\+i460\+\_\+mux\+\_\+enqueue} (struct \textbf{ osmo\+\_\+i460\+\_\+subchan} $\ast$schan, struct \textbf{ msgb} $\ast$msg)
\begin{DoxyCompactList}\small\item\em enqueue a to-\/be-\/transmitted message buffer containing unpacked bits \end{DoxyCompactList}\item 
int \textbf{ osmo\+\_\+i460\+\_\+mux\+\_\+out} (struct \textbf{ osmo\+\_\+i460\+\_\+timeslot} $\ast$\textbf{ ts}, uint8\+\_\+t $\ast$out, size\+\_\+t out\+\_\+len)
\begin{DoxyCompactList}\small\item\em Get multiplexed data from de-\/multiplexer (for feeding it into an E1 timeslot). \end{DoxyCompactList}\item 
void \textbf{ osmo\+\_\+i460\+\_\+ts\+\_\+init} (struct \textbf{ osmo\+\_\+i460\+\_\+timeslot} $\ast$\textbf{ ts})
\begin{DoxyCompactList}\small\item\em initialize an I.\+460 timeslot \end{DoxyCompactList}\item 
struct \textbf{ osmo\+\_\+i460\+\_\+subchan} $\ast$ \textbf{ osmo\+\_\+i460\+\_\+subchan\+\_\+add} (void $\ast$ctx, struct \textbf{ osmo\+\_\+i460\+\_\+timeslot} $\ast$\textbf{ ts}, const struct \textbf{ osmo\+\_\+i460\+\_\+schan\+\_\+desc} $\ast$chd)
\begin{DoxyCompactList}\small\item\em add a new sub-\/channel to the given timeslot \end{DoxyCompactList}\item 
void \textbf{ osmo\+\_\+i460\+\_\+subchan\+\_\+del} (struct \textbf{ osmo\+\_\+i460\+\_\+subchan} $\ast$schan)
\item 
int \textbf{ osmo\+\_\+i460\+\_\+subchan\+\_\+count} (struct \textbf{ osmo\+\_\+i460\+\_\+timeslot} $\ast$\textbf{ ts})
\begin{DoxyCompactList}\small\item\em count the number of sub-\/channels in this I.\+460 slot. \end{DoxyCompactList}\end{DoxyCompactItemize}


\doxysubsection{Detailed Description}
ITU-\/T I.\+460 sub-\/channel multiplexer + demultiplexer. 



\doxysubsection{Macro Definition Documentation}
\mbox{\label{i460__mux_8h_a6cf61aee9d77ed70a9f57ae133348a69}} 
\index{i460\_mux.h@{i460\_mux.h}!OSMO\_I460\_NUM\_SUBCHAN@{OSMO\_I460\_NUM\_SUBCHAN}}
\index{OSMO\_I460\_NUM\_SUBCHAN@{OSMO\_I460\_NUM\_SUBCHAN}!i460\_mux.h@{i460\_mux.h}}
\doxysubsubsection{OSMO\_I460\_NUM\_SUBCHAN}
{\footnotesize\ttfamily \#define OSMO\+\_\+\+I460\+\_\+\+NUM\+\_\+\+SUBCHAN~8}



\doxysubsection{Typedef Documentation}
\mbox{\label{i460__mux_8h_aea293a0a9f8ba92f29cc46258aaa4c1b}} 
\index{i460\_mux.h@{i460\_mux.h}!in\_cb\_queue\_empty\_t@{in\_cb\_queue\_empty\_t}}
\index{in\_cb\_queue\_empty\_t@{in\_cb\_queue\_empty\_t}!i460\_mux.h@{i460\_mux.h}}
\doxysubsubsection{in\_cb\_queue\_empty\_t}
{\footnotesize\ttfamily typedef void($\ast$ in\+\_\+cb\+\_\+queue\+\_\+empty\+\_\+t) (struct \textbf{ osmo\+\_\+i460\+\_\+subchan} $\ast$schan, void $\ast$user\+\_\+data)}

\mbox{\label{i460__mux_8h_ac1ad10a1150f25c2933fac5ea1913374}} 
\index{i460\_mux.h@{i460\_mux.h}!out\_cb\_bits\_t@{out\_cb\_bits\_t}}
\index{out\_cb\_bits\_t@{out\_cb\_bits\_t}!i460\_mux.h@{i460\_mux.h}}
\doxysubsubsection{out\_cb\_bits\_t}
{\footnotesize\ttfamily typedef void($\ast$ out\+\_\+cb\+\_\+bits\+\_\+t) (struct \textbf{ osmo\+\_\+i460\+\_\+subchan} $\ast$schan, void $\ast$user\+\_\+data, const \textbf{ ubit\+\_\+t} $\ast$bits, unsigned int num\+\_\+bits)}

\mbox{\label{i460__mux_8h_a3101392be40a92cff95bdb1fc168392c}} 
\index{i460\_mux.h@{i460\_mux.h}!out\_cb\_bytes\_t@{out\_cb\_bytes\_t}}
\index{out\_cb\_bytes\_t@{out\_cb\_bytes\_t}!i460\_mux.h@{i460\_mux.h}}
\doxysubsubsection{out\_cb\_bytes\_t}
{\footnotesize\ttfamily typedef void($\ast$ out\+\_\+cb\+\_\+bytes\+\_\+t) (struct \textbf{ osmo\+\_\+i460\+\_\+subchan} $\ast$schan, void $\ast$user\+\_\+data, const uint8\+\_\+t $\ast$bytes, unsigned int num\+\_\+bytes)}



\doxysubsection{Enumeration Type Documentation}
\mbox{\label{i460__mux_8h_ade60cf1b213ecb63fd62fa7eaf12b051}} 
\index{i460\_mux.h@{i460\_mux.h}!osmo\_i460\_rate@{osmo\_i460\_rate}}
\index{osmo\_i460\_rate@{osmo\_i460\_rate}!i460\_mux.h@{i460\_mux.h}}
\doxysubsubsection{osmo\_i460\_rate}
{\footnotesize\ttfamily enum \textbf{ osmo\+\_\+i460\+\_\+rate}}

\begin{DoxyEnumFields}{Enumerator}
\raisebox{\heightof{T}}[0pt][0pt]{\index{OSMO\_I460\_RATE\_NONE@{OSMO\_I460\_RATE\_NONE}!i460\_mux.h@{i460\_mux.h}}\index{i460\_mux.h@{i460\_mux.h}!OSMO\_I460\_RATE\_NONE@{OSMO\_I460\_RATE\_NONE}}}\mbox{\label{i460__mux_8h_ade60cf1b213ecb63fd62fa7eaf12b051a204fc8e2e540f9eaaeff6fb64b8ffe58}} 
OSMO\+\_\+\+I460\+\_\+\+RATE\+\_\+\+NONE&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{OSMO\_I460\_RATE\_64k@{OSMO\_I460\_RATE\_64k}!i460\_mux.h@{i460\_mux.h}}\index{i460\_mux.h@{i460\_mux.h}!OSMO\_I460\_RATE\_64k@{OSMO\_I460\_RATE\_64k}}}\mbox{\label{i460__mux_8h_ade60cf1b213ecb63fd62fa7eaf12b051adf76fac095a26194687b0d29b8781894}} 
OSMO\+\_\+\+I460\+\_\+\+RATE\+\_\+64k&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{OSMO\_I460\_RATE\_32k@{OSMO\_I460\_RATE\_32k}!i460\_mux.h@{i460\_mux.h}}\index{i460\_mux.h@{i460\_mux.h}!OSMO\_I460\_RATE\_32k@{OSMO\_I460\_RATE\_32k}}}\mbox{\label{i460__mux_8h_ade60cf1b213ecb63fd62fa7eaf12b051a9dd3a1e9c9a5415fe455503349a0ec64}} 
OSMO\+\_\+\+I460\+\_\+\+RATE\+\_\+32k&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{OSMO\_I460\_RATE\_16k@{OSMO\_I460\_RATE\_16k}!i460\_mux.h@{i460\_mux.h}}\index{i460\_mux.h@{i460\_mux.h}!OSMO\_I460\_RATE\_16k@{OSMO\_I460\_RATE\_16k}}}\mbox{\label{i460__mux_8h_ade60cf1b213ecb63fd62fa7eaf12b051a73a65362ffa22cbe53eed29a6032a891}} 
OSMO\+\_\+\+I460\+\_\+\+RATE\+\_\+16k&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{OSMO\_I460\_RATE\_8k@{OSMO\_I460\_RATE\_8k}!i460\_mux.h@{i460\_mux.h}}\index{i460\_mux.h@{i460\_mux.h}!OSMO\_I460\_RATE\_8k@{OSMO\_I460\_RATE\_8k}}}\mbox{\label{i460__mux_8h_ade60cf1b213ecb63fd62fa7eaf12b051aa66778cd01712903e7f43a70f16fe05a}} 
OSMO\+\_\+\+I460\+\_\+\+RATE\+\_\+8k&\\
\hline

\end{DoxyEnumFields}


\doxysubsection{Function Documentation}
\mbox{\label{i460__mux_8h_a63ea0e20ed072142f8bb3e555d873973}} 
\index{i460\_mux.h@{i460\_mux.h}!osmo\_i460\_demux\_in@{osmo\_i460\_demux\_in}}
\index{osmo\_i460\_demux\_in@{osmo\_i460\_demux\_in}!i460\_mux.h@{i460\_mux.h}}
\doxysubsubsection{osmo\_i460\_demux\_in()}
{\footnotesize\ttfamily void osmo\+\_\+i460\+\_\+demux\+\_\+in (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+i460\+\_\+timeslot} $\ast$}]{ts,  }\item[{const uint8\+\_\+t $\ast$}]{data,  }\item[{size\+\_\+t}]{data\+\_\+len }\end{DoxyParamCaption})}



Feed multiplexed data (from an E1 timeslot) into de-\/multiplexer. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em ts} & timeslot state. \\
\hline
\mbox{\texttt{ in}}  & {\em data} & input data bytes as received from E1/\+T1. \\
\hline
\mbox{\texttt{ in}}  & {\em data\+\_\+len} & length of data in bytes. \\
\hline
\end{DoxyParams}


References \textbf{ ARRAY\+\_\+\+SIZE}, \textbf{ data}, \textbf{ osmo\+\_\+i460\+\_\+subchan\+::demux}, \textbf{ demux\+\_\+subchan\+\_\+extract\+\_\+bits()}, \textbf{ osmo\+\_\+i460\+\_\+has\+\_\+single\+\_\+64k\+\_\+schan()}, \textbf{ OSMO\+\_\+\+I460\+\_\+\+RATE\+\_\+\+NONE}, \textbf{ osmo\+\_\+pbit2ubit()}, \textbf{ osmo\+\_\+i460\+\_\+subchan\+\_\+demux\+::out\+\_\+cb\+\_\+bits}, \textbf{ osmo\+\_\+i460\+\_\+subchan\+\_\+demux\+::out\+\_\+cb\+\_\+bytes}, \textbf{ osmo\+\_\+i460\+\_\+subchan\+::rate}, \textbf{ ts}, and \textbf{ osmo\+\_\+i460\+\_\+subchan\+\_\+demux\+::user\+\_\+data}.

\mbox{\label{i460__mux_8h_aaec9106d232081b9451bb41573f0658b}} 
\index{i460\_mux.h@{i460\_mux.h}!osmo\_i460\_mux\_enqueue@{osmo\_i460\_mux\_enqueue}}
\index{osmo\_i460\_mux\_enqueue@{osmo\_i460\_mux\_enqueue}!i460\_mux.h@{i460\_mux.h}}
\doxysubsubsection{osmo\_i460\_mux\_enqueue()}
{\footnotesize\ttfamily void osmo\+\_\+i460\+\_\+mux\+\_\+enqueue (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+i460\+\_\+subchan} $\ast$}]{schan,  }\item[{struct \textbf{ msgb} $\ast$}]{msg }\end{DoxyParamCaption})}



enqueue a to-\/be-\/transmitted message buffer containing unpacked bits 



References \textbf{ msgb\+\_\+enqueue()}, \textbf{ msgb\+\_\+length()}, \textbf{ osmo\+\_\+i460\+\_\+subchan\+::mux}, \textbf{ OSMO\+\_\+\+ASSERT}, and \textbf{ osmo\+\_\+i460\+\_\+subchan\+\_\+mux\+::tx\+\_\+queue}.

\mbox{\label{i460__mux_8h_a202639ded7762dfe9963bc4e4fa334e1}} 
\index{i460\_mux.h@{i460\_mux.h}!osmo\_i460\_mux\_out@{osmo\_i460\_mux\_out}}
\index{osmo\_i460\_mux\_out@{osmo\_i460\_mux\_out}!i460\_mux.h@{i460\_mux.h}}
\doxysubsubsection{osmo\_i460\_mux\_out()}
{\footnotesize\ttfamily int osmo\+\_\+i460\+\_\+mux\+\_\+out (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+i460\+\_\+timeslot} $\ast$}]{ts,  }\item[{uint8\+\_\+t $\ast$}]{out,  }\item[{size\+\_\+t}]{out\+\_\+len }\end{DoxyParamCaption})}



Get multiplexed data from de-\/multiplexer (for feeding it into an E1 timeslot). 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em ts} & timeslot state. \\
\hline
\mbox{\texttt{ out}}  & {\em out} & caller-\/provided buffer where to store generated output bytes. \\
\hline
\mbox{\texttt{ in}}  & {\em out\+\_\+len} & number of bytes to be stored at out. \\
\hline
\end{DoxyParams}


References \textbf{ mux\+\_\+timeslot\+\_\+provide\+\_\+bits()}, and \textbf{ osmo\+\_\+i460\+\_\+subchan\+::ts}.

\mbox{\label{i460__mux_8h_ac1e5f8d00d61e586ad07f8528e0ce134}} 
\index{i460\_mux.h@{i460\_mux.h}!osmo\_i460\_subchan\_add@{osmo\_i460\_subchan\_add}}
\index{osmo\_i460\_subchan\_add@{osmo\_i460\_subchan\_add}!i460\_mux.h@{i460\_mux.h}}
\doxysubsubsection{osmo\_i460\_subchan\_add()}
{\footnotesize\ttfamily struct \textbf{ osmo\+\_\+i460\+\_\+subchan} $\ast$ osmo\+\_\+i460\+\_\+subchan\+\_\+add (\begin{DoxyParamCaption}\item[{void $\ast$}]{ctx,  }\item[{struct \textbf{ osmo\+\_\+i460\+\_\+timeslot} $\ast$}]{ts,  }\item[{const struct \textbf{ osmo\+\_\+i460\+\_\+schan\+\_\+desc} $\ast$}]{chd }\end{DoxyParamCaption})}



add a new sub-\/channel to the given timeslot 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em ctx} & talloc context from where to allocate the internal buffer \\
\hline
\mbox{\texttt{ in}}  & {\em ts} & timeslot to which to add a sub-\/channel \\
\hline
\mbox{\texttt{ in}}  & {\em chd} & description of the sub-\/channel to be added \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
pointer to sub-\/channel on success, NULL on error 
\end{DoxyReturn}


References \textbf{ alloc\+\_\+bitbuf()}, \textbf{ osmo\+\_\+i460\+\_\+subchan\+::bit\+\_\+offset}, \textbf{ osmo\+\_\+i460\+\_\+schan\+\_\+desc\+::bit\+\_\+offset}, \textbf{ osmo\+\_\+i460\+\_\+subchan\+::demux}, \textbf{ osmo\+\_\+i460\+\_\+schan\+\_\+desc\+::demux}, \textbf{ find\+\_\+unused\+\_\+subchan\+\_\+idx()}, \textbf{ osmo\+\_\+i460\+\_\+subchan\+\_\+mux\+::in\+\_\+cb\+\_\+queue\+\_\+empty}, \textbf{ osmo\+\_\+i460\+\_\+schan\+\_\+desc\+::in\+\_\+cb\+\_\+queue\+\_\+empty}, \textbf{ osmo\+\_\+i460\+\_\+subchan\+::mux}, \textbf{ osmo\+\_\+i460\+\_\+schan\+\_\+desc\+::mux}, \textbf{ osmo\+\_\+i460\+\_\+schan\+\_\+desc\+::num\+\_\+bits}, \textbf{ osmo\+\_\+i460\+\_\+subchan\+\_\+demux\+::out\+\_\+cb\+\_\+bits}, \textbf{ osmo\+\_\+i460\+\_\+schan\+\_\+desc\+::out\+\_\+cb\+\_\+bits}, \textbf{ osmo\+\_\+i460\+\_\+subchan\+\_\+demux\+::out\+\_\+cb\+\_\+bytes}, \textbf{ osmo\+\_\+i460\+\_\+schan\+\_\+desc\+::out\+\_\+cb\+\_\+bytes}, \textbf{ osmo\+\_\+i460\+\_\+subchan\+::rate}, \textbf{ osmo\+\_\+i460\+\_\+schan\+\_\+desc\+::rate}, \textbf{ osmo\+\_\+i460\+\_\+timeslot\+::schan}, \textbf{ subchan\+\_\+reset()}, \textbf{ osmo\+\_\+i460\+\_\+subchan\+::ts}, \textbf{ osmo\+\_\+i460\+\_\+subchan\+\_\+demux\+::user\+\_\+data}, \textbf{ osmo\+\_\+i460\+\_\+subchan\+\_\+mux\+::user\+\_\+data}, and \textbf{ osmo\+\_\+i460\+\_\+schan\+\_\+desc\+::user\+\_\+data}.

\mbox{\label{i460__mux_8h_adbeaac50546caedabd973fa5a294d624}} 
\index{i460\_mux.h@{i460\_mux.h}!osmo\_i460\_subchan\_count@{osmo\_i460\_subchan\_count}}
\index{osmo\_i460\_subchan\_count@{osmo\_i460\_subchan\_count}!i460\_mux.h@{i460\_mux.h}}
\doxysubsubsection{osmo\_i460\_subchan\_count()}
{\footnotesize\ttfamily int osmo\+\_\+i460\+\_\+subchan\+\_\+count (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+i460\+\_\+timeslot} $\ast$}]{ts }\end{DoxyParamCaption})}



count the number of sub-\/channels in this I.\+460 slot. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em ts} & timeslot that holds the I.\+460 subchannels. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
number of subchannels. ~\newline
 
\end{DoxyReturn}


References \textbf{ ARRAY\+\_\+\+SIZE}, \textbf{ OSMO\+\_\+\+I460\+\_\+\+RATE\+\_\+\+NONE}, and \textbf{ ts}.



Referenced by \textbf{ osmo\+\_\+i460\+\_\+has\+\_\+single\+\_\+64k\+\_\+schan()}.

\mbox{\label{i460__mux_8h_a275016759936cb7aeaf530d828d156cc}} 
\index{i460\_mux.h@{i460\_mux.h}!osmo\_i460\_subchan\_del@{osmo\_i460\_subchan\_del}}
\index{osmo\_i460\_subchan\_del@{osmo\_i460\_subchan\_del}!i460\_mux.h@{i460\_mux.h}}
\doxysubsubsection{osmo\_i460\_subchan\_del()}
{\footnotesize\ttfamily void osmo\+\_\+i460\+\_\+subchan\+\_\+del (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+i460\+\_\+subchan} $\ast$}]{schan }\end{DoxyParamCaption})}



References \textbf{ subchan\+\_\+reset()}.

\mbox{\label{i460__mux_8h_a9016834233de0070cc5723eaa8309f96}} 
\index{i460\_mux.h@{i460\_mux.h}!osmo\_i460\_ts\_init@{osmo\_i460\_ts\_init}}
\index{osmo\_i460\_ts\_init@{osmo\_i460\_ts\_init}!i460\_mux.h@{i460\_mux.h}}
\doxysubsubsection{osmo\_i460\_ts\_init()}
{\footnotesize\ttfamily void osmo\+\_\+i460\+\_\+ts\+\_\+init (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+i460\+\_\+timeslot} $\ast$}]{ts }\end{DoxyParamCaption})}



initialize an I.\+460 timeslot 



References \textbf{ ARRAY\+\_\+\+SIZE}, \textbf{ osmo\+\_\+i460\+\_\+timeslot\+::schan}, \textbf{ subchan\+\_\+reset()}, and \textbf{ osmo\+\_\+i460\+\_\+subchan\+::ts}.

