\doxysection{include/osmocom/e1d/proto.h File Reference}
\label{proto_8h}\index{include/osmocom/e1d/proto.h@{include/osmocom/e1d/proto.h}}


Specification of the IPC protocol used on the CTL UNIX domain socket between osmo-\/e1d and its client programs.  


{\ttfamily \#include $<$stdint.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/core/select.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/core/utils.\+h$>$}\newline
\doxysubsection*{Data Structures}
\begin{DoxyCompactItemize}
\item 
struct \textbf{ osmo\+\_\+e1dp\+\_\+msg\+\_\+hdr}
\begin{DoxyCompactList}\small\item\em message header of osmo-\/e1d CTL protocol. \end{DoxyCompactList}\item 
struct \textbf{ osmo\+\_\+e1dp\+\_\+intf\+\_\+info}
\begin{DoxyCompactList}\small\item\em Information about an E1 interface. \end{DoxyCompactList}\item 
struct \textbf{ osmo\+\_\+e1dp\+\_\+line\+\_\+config}
\begin{DoxyCompactList}\small\item\em Configuration of an E1 line. \end{DoxyCompactList}\item 
struct \textbf{ osmo\+\_\+e1dp\+\_\+line\+\_\+info}
\begin{DoxyCompactList}\small\item\em Information about an E1 line. \end{DoxyCompactList}\item 
struct \textbf{ osmo\+\_\+e1dp\+\_\+ts\+\_\+config}
\begin{DoxyCompactList}\small\item\em Configuration of an E1 timeslot. \end{DoxyCompactList}\item 
struct \textbf{ osmo\+\_\+e1dp\+\_\+ts\+\_\+info}
\begin{DoxyCompactList}\small\item\em Information about an E1 timeslot. \end{DoxyCompactList}\item 
struct \textbf{ osmo\+\_\+e1dp\+\_\+cas\+\_\+bits}
\begin{DoxyCompactList}\small\item\em Information about CAS bits. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection*{Macros}
\begin{DoxyCompactItemize}
\item 
\#define \textbf{ E1\+DP\+\_\+\+TS\+\_\+\+OPEN\+\_\+\+F\+\_\+\+FORCE}~0x80
\begin{DoxyCompactList}\small\item\em Flag that can be used as \doxyref{osmo\+\_\+e1dp\+\_\+ts\+\_\+config.\+flags}{p.}{structosmo__e1dp__ts__config_a69ccb2f3b56edeb4fb7c6f4d4268fb83} to force opening a TS. \end{DoxyCompactList}\item 
\#define \textbf{ E1\+DP\+\_\+\+MAGIC}~0x01e1
\begin{DoxyCompactList}\small\item\em Magic value. \end{DoxyCompactList}\item 
\#define \textbf{ E1\+DP\+\_\+\+MAX\+\_\+\+LEN}~4096
\begin{DoxyCompactList}\small\item\em Maximum length of a protocol message. \end{DoxyCompactList}\item 
\#define \textbf{ E1\+DP\+\_\+\+TS\+\_\+\+SUPERCHAN}~0xfe
\begin{DoxyCompactList}\small\item\em magic value used to indicate superchannel instead of timeslot. \end{DoxyCompactList}\item 
\#define \textbf{ E1\+DP\+\_\+\+INVALID}~0xff
\begin{DoxyCompactList}\small\item\em magic value to indicate given field (interface/line/timeslot) is unspecified/invalid. \end{DoxyCompactList}\item 
\#define \textbf{ E1\+DP\+\_\+\+DEFAULT\+\_\+\+SOCKET}~\char`\"{}/tmp/osmo-\/e1d.\+ctl\char`\"{}
\begin{DoxyCompactList}\small\item\em default location of osmo-\/e1d CTL protocol UNIX domain socket \end{DoxyCompactList}\item 
\#define \textbf{ E1\+DP\+\_\+\+MAX\+\_\+\+SIZE\+\_\+\+HDLC}~264
\begin{DoxyCompactList}\small\item\em Maximum length of HDLC messages. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection*{Enumerations}
\begin{DoxyCompactItemize}
\item 
enum \textbf{ osmo\+\_\+e1dp\+\_\+msg\+\_\+type} \{ \newline
\textbf{ E1\+DP\+\_\+\+CMD\+\_\+\+INTF\+\_\+\+QUERY} = 0x00
, \newline
\textbf{ E1\+DP\+\_\+\+CMD\+\_\+\+LINE\+\_\+\+QUERY} = 0x01
, \newline
\textbf{ E1\+DP\+\_\+\+CMD\+\_\+\+TS\+\_\+\+QUERY} = 0x02
, \newline
\textbf{ E1\+DP\+\_\+\+CMD\+\_\+\+LINE\+\_\+\+CONFIG} = 0x03
, \newline
\textbf{ E1\+DP\+\_\+\+CMD\+\_\+\+TS\+\_\+\+OPEN} = 0x04
, \newline
\textbf{ E1\+DP\+\_\+\+CMD\+\_\+\+SABITS} = 0x05
, \newline
\textbf{ E1\+DP\+\_\+\+CMD\+\_\+\+CAS} = 0x06
, \newline
\textbf{ E1\+DP\+\_\+\+EVT\+\_\+\+LOS\+\_\+\+ON} = 0x40
, \newline
\textbf{ E1\+DP\+\_\+\+EVT\+\_\+\+LOS\+\_\+\+OFF} = 0x41
, \newline
\textbf{ E1\+DP\+\_\+\+EVT\+\_\+\+AIS\+\_\+\+ON} = 0x42
, \newline
\textbf{ E1\+DP\+\_\+\+EVT\+\_\+\+AIS\+\_\+\+OFF} = 0x43
, \newline
\textbf{ E1\+DP\+\_\+\+EVT\+\_\+\+RAI\+\_\+\+ON} = 0x44
, \newline
\textbf{ E1\+DP\+\_\+\+EVT\+\_\+\+RAI\+\_\+\+OFF} = 0x45
, \newline
\textbf{ E1\+DP\+\_\+\+EVT\+\_\+\+LOF\+\_\+\+ON} = 0x46
, \newline
\textbf{ E1\+DP\+\_\+\+EVT\+\_\+\+LOF\+\_\+\+OFF} = 0x47
, \newline
\textbf{ E1\+DP\+\_\+\+EVT\+\_\+\+CAS} = 0x7e
, \newline
\textbf{ E1\+DP\+\_\+\+EVT\+\_\+\+SABITS} = 0x7f
, \newline
\textbf{ E1\+DP\+\_\+\+EVT\+\_\+\+TYPE} = 0x40
, \newline
\textbf{ E1\+DP\+\_\+\+RESP\+\_\+\+TYPE} = 0x80
, \newline
\textbf{ E1\+DP\+\_\+\+ERR\+\_\+\+TYPE} = 0xc0
, \newline
\textbf{ E1\+DP\+\_\+\+TYPE\+\_\+\+MSK} = 0xc0
 \}
\begin{DoxyCompactList}\small\item\em e1d CTL protocol message type definition. \end{DoxyCompactList}\item 
enum \textbf{ osmo\+\_\+e1dp\+\_\+line\+\_\+mode} \{ \newline
\textbf{ E1\+DP\+\_\+\+LMODE\+\_\+\+OFF} = 0x00
, \newline
\textbf{ E1\+DP\+\_\+\+LMODE\+\_\+\+CHANNELIZED} = 0x20
, \newline
\textbf{ E1\+DP\+\_\+\+LMODE\+\_\+\+SUPERCHANNEL} = 0x21
, \newline
\textbf{ E1\+DP\+\_\+\+LMODE\+\_\+\+E1\+OIP} = 0x22
 \}
\begin{DoxyCompactList}\small\item\em e1d CTL protocol line mode. \end{DoxyCompactList}\item 
enum \textbf{ osmo\+\_\+e1dp\+\_\+ts\+\_\+mode} \{ \newline
\textbf{ E1\+DP\+\_\+\+TSMODE\+\_\+\+OFF} = 0x00
, \newline
\textbf{ E1\+DP\+\_\+\+TSMODE\+\_\+\+RAW} = 0x10
, \newline
\textbf{ E1\+DP\+\_\+\+TSMODE\+\_\+\+HDLCFCS} = 0x11
 \}
\begin{DoxyCompactList}\small\item\em e1d CTL protocol timeslot mode. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection*{Functions}
\begin{DoxyCompactItemize}
\item 
struct \textbf{ osmo\+\_\+e1dp\+\_\+msg\+\_\+hdr} \textbf{ \+\_\+\+\_\+attribute\+\_\+\+\_\+} ((packed))
\item 
struct msgb $\ast$ \textbf{ osmo\+\_\+e1dp\+\_\+recv} (struct osmo\+\_\+fd $\ast$ofd, int $\ast$fd)
\item 
int \textbf{ osmo\+\_\+e1dp\+\_\+send} (struct osmo\+\_\+fd $\ast$ofd, struct msgb $\ast$msgb, int fd)
\end{DoxyCompactItemize}
\doxysubsection*{Variables}
\begin{DoxyCompactItemize}
\item 
uint16\+\_\+t \textbf{ magic}
\item 
uint16\+\_\+t \textbf{ len}
\item 
uint8\+\_\+t \textbf{ type}
\item 
uint8\+\_\+t \textbf{ intf}
\item 
uint8\+\_\+t \textbf{ line}
\item 
uint8\+\_\+t \textbf{ ts}
\item 
uint8\+\_\+t \textbf{ id}
\item 
uint8\+\_\+t \textbf{ n\+\_\+lines}
\item 
uint8\+\_\+t \textbf{ mode}
\item 
struct \textbf{ osmo\+\_\+e1dp\+\_\+line\+\_\+config} \textbf{ cfg}
\item 
uint8\+\_\+t \textbf{ status}
\begin{DoxyCompactList}\small\item\em E1 line configuration. \end{DoxyCompactList}\item 
uint8\+\_\+t \textbf{ flags}
\item 
uint16\+\_\+t \textbf{ read\+\_\+bufsize}
\item 
uint8\+\_\+t \textbf{ bits}
\item 
uint8\+\_\+t \textbf{ query\+\_\+rx}
\item 
const struct value\+\_\+string \textbf{ osmo\+\_\+e1dp\+\_\+msg\+\_\+type\+\_\+names} [$\,$]
\item 
const struct value\+\_\+string \textbf{ osmo\+\_\+e1dp\+\_\+line\+\_\+mode\+\_\+names} [$\,$]
\item 
const struct value\+\_\+string \textbf{ osmo\+\_\+e1dp\+\_\+ts\+\_\+mode\+\_\+names} [$\,$]
\end{DoxyCompactItemize}


\doxysubsection{Detailed Description}
Specification of the IPC protocol used on the CTL UNIX domain socket between osmo-\/e1d and its client programs. 



\doxysubsection{Macro Definition Documentation}
\mbox{\label{proto_8h_a50accb9486d52635974522cd4508e3a3}} 
\index{proto.h@{proto.h}!E1DP\_DEFAULT\_SOCKET@{E1DP\_DEFAULT\_SOCKET}}
\index{E1DP\_DEFAULT\_SOCKET@{E1DP\_DEFAULT\_SOCKET}!proto.h@{proto.h}}
\doxysubsubsection{E1DP\_DEFAULT\_SOCKET}
{\footnotesize\ttfamily \#define E1\+DP\+\_\+\+DEFAULT\+\_\+\+SOCKET~\char`\"{}/tmp/osmo-\/e1d.\+ctl\char`\"{}}



default location of osmo-\/e1d CTL protocol UNIX domain socket 

\mbox{\label{proto_8h_af4a740b0a1f318a45214ecc49cf5a3ce}} 
\index{proto.h@{proto.h}!E1DP\_INVALID@{E1DP\_INVALID}}
\index{E1DP\_INVALID@{E1DP\_INVALID}!proto.h@{proto.h}}
\doxysubsubsection{E1DP\_INVALID}
{\footnotesize\ttfamily \#define E1\+DP\+\_\+\+INVALID~0xff}



magic value to indicate given field (interface/line/timeslot) is unspecified/invalid. 

\mbox{\label{proto_8h_a0099233cb2ea8fead778619f27c2a8b7}} 
\index{proto.h@{proto.h}!E1DP\_MAGIC@{E1DP\_MAGIC}}
\index{E1DP\_MAGIC@{E1DP\_MAGIC}!proto.h@{proto.h}}
\doxysubsubsection{E1DP\_MAGIC}
{\footnotesize\ttfamily \#define E1\+DP\+\_\+\+MAGIC~0x01e1}



Magic value. 

the idea here is to use the first byte as a version number, to prevent incompatible clients from connecting to e1d \mbox{\label{proto_8h_ab5884106287e047bb2a35dccd36e2d07}} 
\index{proto.h@{proto.h}!E1DP\_MAX\_LEN@{E1DP\_MAX\_LEN}}
\index{E1DP\_MAX\_LEN@{E1DP\_MAX\_LEN}!proto.h@{proto.h}}
\doxysubsubsection{E1DP\_MAX\_LEN}
{\footnotesize\ttfamily \#define E1\+DP\+\_\+\+MAX\+\_\+\+LEN~4096}



Maximum length of a protocol message. 

\mbox{\label{proto_8h_af78a88532b7053e2ed955e4e5d303ccd}} 
\index{proto.h@{proto.h}!E1DP\_MAX\_SIZE\_HDLC@{E1DP\_MAX\_SIZE\_HDLC}}
\index{E1DP\_MAX\_SIZE\_HDLC@{E1DP\_MAX\_SIZE\_HDLC}!proto.h@{proto.h}}
\doxysubsubsection{E1DP\_MAX\_SIZE\_HDLC}
{\footnotesize\ttfamily \#define E1\+DP\+\_\+\+MAX\+\_\+\+SIZE\+\_\+\+HDLC~264}



Maximum length of HDLC messages. 

\mbox{\label{proto_8h_a83f3575e5669c318a755e86baf51cf2b}} 
\index{proto.h@{proto.h}!E1DP\_TS\_OPEN\_F\_FORCE@{E1DP\_TS\_OPEN\_F\_FORCE}}
\index{E1DP\_TS\_OPEN\_F\_FORCE@{E1DP\_TS\_OPEN\_F\_FORCE}!proto.h@{proto.h}}
\doxysubsubsection{E1DP\_TS\_OPEN\_F\_FORCE}
{\footnotesize\ttfamily \#define E1\+DP\+\_\+\+TS\+\_\+\+OPEN\+\_\+\+F\+\_\+\+FORCE~0x80}



Flag that can be used as \doxyref{osmo\+\_\+e1dp\+\_\+ts\+\_\+config.\+flags}{p.}{structosmo__e1dp__ts__config_a69ccb2f3b56edeb4fb7c6f4d4268fb83} to force opening a TS. 

\mbox{\label{proto_8h_a890ae039b22666a0af63fae896a4d001}} 
\index{proto.h@{proto.h}!E1DP\_TS\_SUPERCHAN@{E1DP\_TS\_SUPERCHAN}}
\index{E1DP\_TS\_SUPERCHAN@{E1DP\_TS\_SUPERCHAN}!proto.h@{proto.h}}
\doxysubsubsection{E1DP\_TS\_SUPERCHAN}
{\footnotesize\ttfamily \#define E1\+DP\+\_\+\+TS\+\_\+\+SUPERCHAN~0xfe}



magic value used to indicate superchannel instead of timeslot. 



\doxysubsection{Enumeration Type Documentation}
\mbox{\label{proto_8h_a54f89a0aee2831e2c19c405f74968262}} 
\index{proto.h@{proto.h}!osmo\_e1dp\_line\_mode@{osmo\_e1dp\_line\_mode}}
\index{osmo\_e1dp\_line\_mode@{osmo\_e1dp\_line\_mode}!proto.h@{proto.h}}
\doxysubsubsection{osmo\_e1dp\_line\_mode}
{\footnotesize\ttfamily enum \textbf{ osmo\+\_\+e1dp\+\_\+line\+\_\+mode}}



e1d CTL protocol line mode. 

\begin{DoxyEnumFields}{Enumerator}
\raisebox{\heightof{T}}[0pt][0pt]{\index{E1DP\_LMODE\_OFF@{E1DP\_LMODE\_OFF}!proto.h@{proto.h}}\index{proto.h@{proto.h}!E1DP\_LMODE\_OFF@{E1DP\_LMODE\_OFF}}}\mbox{\label{proto_8h_a54f89a0aee2831e2c19c405f74968262ac4622a0558945722312108a6036b7375}} 
E1\+DP\+\_\+\+LMODE\+\_\+\+OFF&Line is switched off. \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{E1DP\_LMODE\_CHANNELIZED@{E1DP\_LMODE\_CHANNELIZED}!proto.h@{proto.h}}\index{proto.h@{proto.h}!E1DP\_LMODE\_CHANNELIZED@{E1DP\_LMODE\_CHANNELIZED}}}\mbox{\label{proto_8h_a54f89a0aee2831e2c19c405f74968262ad90f553e93e5f69c6c17a9f8b88a6441}} 
E1\+DP\+\_\+\+LMODE\+\_\+\+CHANNELIZED&Line is used in channelized mode with (64k\+Bps) timeslots. \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{E1DP\_LMODE\_SUPERCHANNEL@{E1DP\_LMODE\_SUPERCHANNEL}!proto.h@{proto.h}}\index{proto.h@{proto.h}!E1DP\_LMODE\_SUPERCHANNEL@{E1DP\_LMODE\_SUPERCHANNEL}}}\mbox{\label{proto_8h_a54f89a0aee2831e2c19c405f74968262aaf4d586e9a20bd1a11042fe63a610f78}} 
E1\+DP\+\_\+\+LMODE\+\_\+\+SUPERCHANNEL&Line is used as superchannel (31TS combined together) \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{E1DP\_LMODE\_E1OIP@{E1DP\_LMODE\_E1OIP}!proto.h@{proto.h}}\index{proto.h@{proto.h}!E1DP\_LMODE\_E1OIP@{E1DP\_LMODE\_E1OIP}}}\mbox{\label{proto_8h_a54f89a0aee2831e2c19c405f74968262aa5a098e0544c2784d8fe2b1ae85af207}} 
E1\+DP\+\_\+\+LMODE\+\_\+\+E1\+OIP&Line is used in E1o\+IP mode (not available to CTL clients) \\
\hline

\end{DoxyEnumFields}
\mbox{\label{proto_8h_a5dedba3c62783aa32c70670a6e00f11f}} 
\index{proto.h@{proto.h}!osmo\_e1dp\_msg\_type@{osmo\_e1dp\_msg\_type}}
\index{osmo\_e1dp\_msg\_type@{osmo\_e1dp\_msg\_type}!proto.h@{proto.h}}
\doxysubsubsection{osmo\_e1dp\_msg\_type}
{\footnotesize\ttfamily enum \textbf{ osmo\+\_\+e1dp\+\_\+msg\+\_\+type}}



e1d CTL protocol message type definition. 

Split in \textquotesingle{}type\textquotesingle{} and \textquotesingle{}command\textquotesingle{} portion. \begin{DoxyEnumFields}{Enumerator}
\raisebox{\heightof{T}}[0pt][0pt]{\index{E1DP\_CMD\_INTF\_QUERY@{E1DP\_CMD\_INTF\_QUERY}!proto.h@{proto.h}}\index{proto.h@{proto.h}!E1DP\_CMD\_INTF\_QUERY@{E1DP\_CMD\_INTF\_QUERY}}}\mbox{\label{proto_8h_a5dedba3c62783aa32c70670a6e00f11faa391e74da91e18666b5b977d894e6163}} 
E1\+DP\+\_\+\+CMD\+\_\+\+INTF\+\_\+\+QUERY&Query information about E1 interface(s). filter\+: intf (optional); in\+: n/a out\+: array of \doxyref{osmo\+\_\+e1dp\+\_\+intf\+\_\+info}{p.}{structosmo__e1dp__intf__info} \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{E1DP\_CMD\_LINE\_QUERY@{E1DP\_CMD\_LINE\_QUERY}!proto.h@{proto.h}}\index{proto.h@{proto.h}!E1DP\_CMD\_LINE\_QUERY@{E1DP\_CMD\_LINE\_QUERY}}}\mbox{\label{proto_8h_a5dedba3c62783aa32c70670a6e00f11fac464026c2915ca48101dfe4616a365da}} 
E1\+DP\+\_\+\+CMD\+\_\+\+LINE\+\_\+\+QUERY&Query information about E1 line(s). filter\+: intf (required), line (optional); in\+: n/a; out\+: array of \doxyref{osmo\+\_\+e1dp\+\_\+line\+\_\+info}{p.}{structosmo__e1dp__line__info} \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{E1DP\_CMD\_TS\_QUERY@{E1DP\_CMD\_TS\_QUERY}!proto.h@{proto.h}}\index{proto.h@{proto.h}!E1DP\_CMD\_TS\_QUERY@{E1DP\_CMD\_TS\_QUERY}}}\mbox{\label{proto_8h_a5dedba3c62783aa32c70670a6e00f11fa533596a26a7cf869d005645864e84ea4}} 
E1\+DP\+\_\+\+CMD\+\_\+\+TS\+\_\+\+QUERY&Query information about E1 timeslot(s). filter\+: intf (required), line (required), ts (optional); in\+: n/a; out\+: array of \doxyref{osmo\+\_\+e1dp\+\_\+ts\+\_\+info}{p.}{structosmo__e1dp__ts__info} \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{E1DP\_CMD\_LINE\_CONFIG@{E1DP\_CMD\_LINE\_CONFIG}!proto.h@{proto.h}}\index{proto.h@{proto.h}!E1DP\_CMD\_LINE\_CONFIG@{E1DP\_CMD\_LINE\_CONFIG}}}\mbox{\label{proto_8h_a5dedba3c62783aa32c70670a6e00f11fa44032d2ea9a1c4cf424bdaf41b81a52a}} 
E1\+DP\+\_\+\+CMD\+\_\+\+LINE\+\_\+\+CONFIG&Configure a given E1 line. filter\+: intf (required), line (required); in\+: \doxyref{osmo\+\_\+e1dp\+\_\+line\+\_\+config}{p.}{structosmo__e1dp__line__config}; out\+: \doxyref{osmo\+\_\+e1dp\+\_\+line\+\_\+info}{p.}{structosmo__e1dp__line__info} \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{E1DP\_CMD\_TS\_OPEN@{E1DP\_CMD\_TS\_OPEN}!proto.h@{proto.h}}\index{proto.h@{proto.h}!E1DP\_CMD\_TS\_OPEN@{E1DP\_CMD\_TS\_OPEN}}}\mbox{\label{proto_8h_a5dedba3c62783aa32c70670a6e00f11fa02682ce7888ddfe00c05beb12e12e547}} 
E1\+DP\+\_\+\+CMD\+\_\+\+TS\+\_\+\+OPEN&Open a given E1 timeslot. filter\+: intf (required), line (required), ts (required); in\+: \doxyref{osmo\+\_\+e1dp\+\_\+ts\+\_\+config}{p.}{structosmo__e1dp__ts__config}; out\+: \doxyref{osmo\+\_\+e1dp\+\_\+ts\+\_\+info}{p.}{structosmo__e1dp__ts__info} with the opened TS (or an invalid one with id == -\/1 for errors)
\begin{DoxyItemize}
\item message with the file descriptor 
\end{DoxyItemize}\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{E1DP\_CMD\_SABITS@{E1DP\_CMD\_SABITS}!proto.h@{proto.h}}\index{proto.h@{proto.h}!E1DP\_CMD\_SABITS@{E1DP\_CMD\_SABITS}}}\mbox{\label{proto_8h_a5dedba3c62783aa32c70670a6e00f11fa3291a7c00ce6a01d0973d0eebc87445c}} 
E1\+DP\+\_\+\+CMD\+\_\+\+SABITS&Send Sa bits to line. filter\+: intf (required), line (required), ts n/a; in\+: uint8\+\_\+t; \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{E1DP\_CMD\_CAS@{E1DP\_CMD\_CAS}!proto.h@{proto.h}}\index{proto.h@{proto.h}!E1DP\_CMD\_CAS@{E1DP\_CMD\_CAS}}}\mbox{\label{proto_8h_a5dedba3c62783aa32c70670a6e00f11fa9987f736cd6fff1d2bda14ae18795e76}} 
E1\+DP\+\_\+\+CMD\+\_\+\+CAS&Send CAS bits to line. filter\+: intf (required), line (required), ts (required), in\+: uint8\+\_\+t; \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{E1DP\_EVT\_LOS\_ON@{E1DP\_EVT\_LOS\_ON}!proto.h@{proto.h}}\index{proto.h@{proto.h}!E1DP\_EVT\_LOS\_ON@{E1DP\_EVT\_LOS\_ON}}}\mbox{\label{proto_8h_a5dedba3c62783aa32c70670a6e00f11fac053e30510ef90cfb74b9bddb10dce97}} 
E1\+DP\+\_\+\+EVT\+\_\+\+LOS\+\_\+\+ON&Received signal loss from interface. \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{E1DP\_EVT\_LOS\_OFF@{E1DP\_EVT\_LOS\_OFF}!proto.h@{proto.h}}\index{proto.h@{proto.h}!E1DP\_EVT\_LOS\_OFF@{E1DP\_EVT\_LOS\_OFF}}}\mbox{\label{proto_8h_a5dedba3c62783aa32c70670a6e00f11fa1cde85b6df4824cd0371f8f938a8ba81}} 
E1\+DP\+\_\+\+EVT\+\_\+\+LOS\+\_\+\+OFF&Ceased signal loss from interface. \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{E1DP\_EVT\_AIS\_ON@{E1DP\_EVT\_AIS\_ON}!proto.h@{proto.h}}\index{proto.h@{proto.h}!E1DP\_EVT\_AIS\_ON@{E1DP\_EVT\_AIS\_ON}}}\mbox{\label{proto_8h_a5dedba3c62783aa32c70670a6e00f11fa05eaed776e5a456ce177da4c240cf269}} 
E1\+DP\+\_\+\+EVT\+\_\+\+AIS\+\_\+\+ON&Received alarm indication signal from interface. \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{E1DP\_EVT\_AIS\_OFF@{E1DP\_EVT\_AIS\_OFF}!proto.h@{proto.h}}\index{proto.h@{proto.h}!E1DP\_EVT\_AIS\_OFF@{E1DP\_EVT\_AIS\_OFF}}}\mbox{\label{proto_8h_a5dedba3c62783aa32c70670a6e00f11fa33b1f63f6df0fc398ea02b0edcd13de1}} 
E1\+DP\+\_\+\+EVT\+\_\+\+AIS\+\_\+\+OFF&Ceased alarm indication signal from interface. \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{E1DP\_EVT\_RAI\_ON@{E1DP\_EVT\_RAI\_ON}!proto.h@{proto.h}}\index{proto.h@{proto.h}!E1DP\_EVT\_RAI\_ON@{E1DP\_EVT\_RAI\_ON}}}\mbox{\label{proto_8h_a5dedba3c62783aa32c70670a6e00f11fa9ee5c1461ea21181fbb25554a9ec023d}} 
E1\+DP\+\_\+\+EVT\+\_\+\+RAI\+\_\+\+ON&Received remote alarm indication from interface. \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{E1DP\_EVT\_RAI\_OFF@{E1DP\_EVT\_RAI\_OFF}!proto.h@{proto.h}}\index{proto.h@{proto.h}!E1DP\_EVT\_RAI\_OFF@{E1DP\_EVT\_RAI\_OFF}}}\mbox{\label{proto_8h_a5dedba3c62783aa32c70670a6e00f11fa9b52ec7144834bed39a942cd553199ff}} 
E1\+DP\+\_\+\+EVT\+\_\+\+RAI\+\_\+\+OFF&Ceased remote alarm indication from interface. \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{E1DP\_EVT\_LOF\_ON@{E1DP\_EVT\_LOF\_ON}!proto.h@{proto.h}}\index{proto.h@{proto.h}!E1DP\_EVT\_LOF\_ON@{E1DP\_EVT\_LOF\_ON}}}\mbox{\label{proto_8h_a5dedba3c62783aa32c70670a6e00f11fa56e835c4a5a98b42598719b64413c785}} 
E1\+DP\+\_\+\+EVT\+\_\+\+LOF\+\_\+\+ON&Received frame loss from interface. \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{E1DP\_EVT\_LOF\_OFF@{E1DP\_EVT\_LOF\_OFF}!proto.h@{proto.h}}\index{proto.h@{proto.h}!E1DP\_EVT\_LOF\_OFF@{E1DP\_EVT\_LOF\_OFF}}}\mbox{\label{proto_8h_a5dedba3c62783aa32c70670a6e00f11fa1b102cb910dc42293c63a901838d662b}} 
E1\+DP\+\_\+\+EVT\+\_\+\+LOF\+\_\+\+OFF&Ceased frame loss from interface. \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{E1DP\_EVT\_CAS@{E1DP\_EVT\_CAS}!proto.h@{proto.h}}\index{proto.h@{proto.h}!E1DP\_EVT\_CAS@{E1DP\_EVT\_CAS}}}\mbox{\label{proto_8h_a5dedba3c62783aa32c70670a6e00f11faebbdbd26eabf8c3a42ec555ba51301cf}} 
E1\+DP\+\_\+\+EVT\+\_\+\+CAS&Received CAS bits from interface. out\+: uint8\+\_\+t; \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{E1DP\_EVT\_SABITS@{E1DP\_EVT\_SABITS}!proto.h@{proto.h}}\index{proto.h@{proto.h}!E1DP\_EVT\_SABITS@{E1DP\_EVT\_SABITS}}}\mbox{\label{proto_8h_a5dedba3c62783aa32c70670a6e00f11fac26af502cdce77bd8eed8b5ca0f42279}} 
E1\+DP\+\_\+\+EVT\+\_\+\+SABITS&Received Sa bits from interface. out\+: uint8\+\_\+t; \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{E1DP\_EVT\_TYPE@{E1DP\_EVT\_TYPE}!proto.h@{proto.h}}\index{proto.h@{proto.h}!E1DP\_EVT\_TYPE@{E1DP\_EVT\_TYPE}}}\mbox{\label{proto_8h_a5dedba3c62783aa32c70670a6e00f11fa6b045fd8bfc94d182838ad11ddf3ef49}} 
E1\+DP\+\_\+\+EVT\+\_\+\+TYPE&Message is an event. \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{E1DP\_RESP\_TYPE@{E1DP\_RESP\_TYPE}!proto.h@{proto.h}}\index{proto.h@{proto.h}!E1DP\_RESP\_TYPE@{E1DP\_RESP\_TYPE}}}\mbox{\label{proto_8h_a5dedba3c62783aa32c70670a6e00f11fab2c5843454e80d354ad63db07d0a2e7e}} 
E1\+DP\+\_\+\+RESP\+\_\+\+TYPE&Message is a response ~\newline
 \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{E1DP\_ERR\_TYPE@{E1DP\_ERR\_TYPE}!proto.h@{proto.h}}\index{proto.h@{proto.h}!E1DP\_ERR\_TYPE@{E1DP\_ERR\_TYPE}}}\mbox{\label{proto_8h_a5dedba3c62783aa32c70670a6e00f11fa7d3096e4a89aa14e97cb7c0c00f8450a}} 
E1\+DP\+\_\+\+ERR\+\_\+\+TYPE&Message is an error. \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{E1DP\_TYPE\_MSK@{E1DP\_TYPE\_MSK}!proto.h@{proto.h}}\index{proto.h@{proto.h}!E1DP\_TYPE\_MSK@{E1DP\_TYPE\_MSK}}}\mbox{\label{proto_8h_a5dedba3c62783aa32c70670a6e00f11fac3e5262083d7b91e341dd2bb431519b9}} 
E1\+DP\+\_\+\+TYPE\+\_\+\+MSK&Mask to separate type from command. \\
\hline

\end{DoxyEnumFields}
\mbox{\label{proto_8h_aa5290a388cd40c8e936be0cbcfabb323}} 
\index{proto.h@{proto.h}!osmo\_e1dp\_ts\_mode@{osmo\_e1dp\_ts\_mode}}
\index{osmo\_e1dp\_ts\_mode@{osmo\_e1dp\_ts\_mode}!proto.h@{proto.h}}
\doxysubsubsection{osmo\_e1dp\_ts\_mode}
{\footnotesize\ttfamily enum \textbf{ osmo\+\_\+e1dp\+\_\+ts\+\_\+mode}}



e1d CTL protocol timeslot mode. 

\begin{DoxyEnumFields}{Enumerator}
\raisebox{\heightof{T}}[0pt][0pt]{\index{E1DP\_TSMODE\_OFF@{E1DP\_TSMODE\_OFF}!proto.h@{proto.h}}\index{proto.h@{proto.h}!E1DP\_TSMODE\_OFF@{E1DP\_TSMODE\_OFF}}}\mbox{\label{proto_8h_aa5290a388cd40c8e936be0cbcfabb323ac3fbc767fa4d1a27ad0692f652533c79}} 
E1\+DP\+\_\+\+TSMODE\+\_\+\+OFF&Timeslot is switched off. \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{E1DP\_TSMODE\_RAW@{E1DP\_TSMODE\_RAW}!proto.h@{proto.h}}\index{proto.h@{proto.h}!E1DP\_TSMODE\_RAW@{E1DP\_TSMODE\_RAW}}}\mbox{\label{proto_8h_aa5290a388cd40c8e936be0cbcfabb323a293c184375a4c78ebff8796f3591d44f}} 
E1\+DP\+\_\+\+TSMODE\+\_\+\+RAW&Timeslot is in RAW mode, containing transparent 64k\+Bps bitstream. \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{E1DP\_TSMODE\_HDLCFCS@{E1DP\_TSMODE\_HDLCFCS}!proto.h@{proto.h}}\index{proto.h@{proto.h}!E1DP\_TSMODE\_HDLCFCS@{E1DP\_TSMODE\_HDLCFCS}}}\mbox{\label{proto_8h_aa5290a388cd40c8e936be0cbcfabb323a25c81ad7c87d5ccfa0e5757d1cd8119a}} 
E1\+DP\+\_\+\+TSMODE\+\_\+\+HDLCFCS&Timeslot is in HLDC-\/\+FCS mode; e1d will run software HDLC processor. \\
\hline

\end{DoxyEnumFields}


\doxysubsection{Function Documentation}
\mbox{\label{proto_8h_a1fe63f751372dd1983c369b53e08593f}} 
\index{proto.h@{proto.h}!\_\_attribute\_\_@{\_\_attribute\_\_}}
\index{\_\_attribute\_\_@{\_\_attribute\_\_}!proto.h@{proto.h}}
\doxysubsubsection{\_\_attribute\_\_()}
{\footnotesize\ttfamily struct \textbf{ osmo\+\_\+e1dp\+\_\+cas\+\_\+bits} \+\_\+\+\_\+attribute\+\_\+\+\_\+ (\begin{DoxyParamCaption}\item[{(packed)}]{ }\end{DoxyParamCaption})}

\mbox{\label{proto_8h_a6085347d7e8e7dfc33fd8a4b352006e5}} 
\index{proto.h@{proto.h}!osmo\_e1dp\_recv@{osmo\_e1dp\_recv}}
\index{osmo\_e1dp\_recv@{osmo\_e1dp\_recv}!proto.h@{proto.h}}
\doxysubsubsection{osmo\_e1dp\_recv()}
{\footnotesize\ttfamily struct msgb $\ast$ osmo\+\_\+e1dp\+\_\+recv (\begin{DoxyParamCaption}\item[{struct osmo\+\_\+fd $\ast$}]{ofd,  }\item[{int $\ast$}]{fd }\end{DoxyParamCaption})}

\mbox{\label{proto_8h_ac07335524874d83fd13aa0dacc6de042}} 
\index{proto.h@{proto.h}!osmo\_e1dp\_send@{osmo\_e1dp\_send}}
\index{osmo\_e1dp\_send@{osmo\_e1dp\_send}!proto.h@{proto.h}}
\doxysubsubsection{osmo\_e1dp\_send()}
{\footnotesize\ttfamily int osmo\+\_\+e1dp\+\_\+send (\begin{DoxyParamCaption}\item[{struct osmo\+\_\+fd $\ast$}]{ofd,  }\item[{struct msgb $\ast$}]{msgb,  }\item[{int}]{fd }\end{DoxyParamCaption})}



\doxysubsection{Variable Documentation}
\mbox{\label{proto_8h_a46a6da6b1936191571fd30b2a749f38c}} 
\index{proto.h@{proto.h}!bits@{bits}}
\index{bits@{bits}!proto.h@{proto.h}}
\doxysubsubsection{bits}
{\footnotesize\ttfamily uint8\+\_\+t bits}

\mbox{\label{proto_8h_a17cb4588ef3a87241f6ea1a59af61b04}} 
\index{proto.h@{proto.h}!cfg@{cfg}}
\index{cfg@{cfg}!proto.h@{proto.h}}
\doxysubsubsection{cfg}
{\footnotesize\ttfamily struct \textbf{ osmo\+\_\+e1dp\+\_\+ts\+\_\+config} cfg}



Referenced by \textbf{ osmo\+\_\+e1dp\+\_\+client\+\_\+line\+\_\+config()}.

\mbox{\label{proto_8h_aa2585d779da0ab21273a8d92de9a0ebe}} 
\index{proto.h@{proto.h}!flags@{flags}}
\index{flags@{flags}!proto.h@{proto.h}}
\doxysubsubsection{flags}
{\footnotesize\ttfamily uint8\+\_\+t flags}

\mbox{\label{proto_8h_a1e6927fa1486224044e568f9c370519b}} 
\index{proto.h@{proto.h}!id@{id}}
\index{id@{id}!proto.h@{proto.h}}
\doxysubsubsection{id}
{\footnotesize\ttfamily uint8\+\_\+t id}

\mbox{\label{proto_8h_a89cac7a5805070257b2741f20d669649}} 
\index{proto.h@{proto.h}!intf@{intf}}
\index{intf@{intf}!proto.h@{proto.h}}
\doxysubsubsection{intf}
{\footnotesize\ttfamily uint8\+\_\+t intf}



Referenced by \textbf{ osmo\+\_\+e1dp\+\_\+client\+\_\+intf\+\_\+query()}, \textbf{ osmo\+\_\+e1dp\+\_\+client\+\_\+line\+\_\+config()}, \textbf{ osmo\+\_\+e1dp\+\_\+client\+\_\+line\+\_\+query()}, \textbf{ osmo\+\_\+e1dp\+\_\+client\+\_\+set\+\_\+cas()}, \textbf{ osmo\+\_\+e1dp\+\_\+client\+\_\+set\+\_\+sa\+\_\+bits()}, and \textbf{ osmo\+\_\+e1dp\+\_\+client\+\_\+ts\+\_\+query()}.

\mbox{\label{proto_8h_a8aed22e2c7b283705ec82e0120515618}} 
\index{proto.h@{proto.h}!len@{len}}
\index{len@{len}!proto.h@{proto.h}}
\doxysubsubsection{len}
{\footnotesize\ttfamily uint16\+\_\+t len}

\mbox{\label{proto_8h_a49601971f24dd78db5dc626c92dcd990}} 
\index{proto.h@{proto.h}!line@{line}}
\index{line@{line}!proto.h@{proto.h}}
\doxysubsubsection{line}
{\footnotesize\ttfamily uint8\+\_\+t line}



Referenced by \textbf{ osmo\+\_\+e1dp\+\_\+client\+\_\+line\+\_\+config()}, \textbf{ osmo\+\_\+e1dp\+\_\+client\+\_\+line\+\_\+query()}, \textbf{ osmo\+\_\+e1dp\+\_\+client\+\_\+set\+\_\+cas()}, \textbf{ osmo\+\_\+e1dp\+\_\+client\+\_\+set\+\_\+sa\+\_\+bits()}, and \textbf{ osmo\+\_\+e1dp\+\_\+client\+\_\+ts\+\_\+query()}.

\mbox{\label{proto_8h_a8c61e64b8675498cee79c59d3f8131e2}} 
\index{proto.h@{proto.h}!magic@{magic}}
\index{magic@{magic}!proto.h@{proto.h}}
\doxysubsubsection{magic}
{\footnotesize\ttfamily uint16\+\_\+t magic}

\mbox{\label{proto_8h_a37e90f5e3bd99fac2021fb3a326607d4}} 
\index{proto.h@{proto.h}!mode@{mode}}
\index{mode@{mode}!proto.h@{proto.h}}
\doxysubsubsection{mode}
{\footnotesize\ttfamily uint8\+\_\+t mode}



Referenced by \textbf{ osmo\+\_\+e1dp\+\_\+client\+\_\+line\+\_\+config()}.

\mbox{\label{proto_8h_a8197fb431aa5da36aba9fc75545d3d4c}} 
\index{proto.h@{proto.h}!n\_lines@{n\_lines}}
\index{n\_lines@{n\_lines}!proto.h@{proto.h}}
\doxysubsubsection{n\_lines}
{\footnotesize\ttfamily uint8\+\_\+t n\+\_\+lines}

\mbox{\label{proto_8h_a36507b0bc14b49b5a09c61aafe7731d7}} 
\index{proto.h@{proto.h}!osmo\_e1dp\_line\_mode\_names@{osmo\_e1dp\_line\_mode\_names}}
\index{osmo\_e1dp\_line\_mode\_names@{osmo\_e1dp\_line\_mode\_names}!proto.h@{proto.h}}
\doxysubsubsection{osmo\_e1dp\_line\_mode\_names}
{\footnotesize\ttfamily const struct value\+\_\+string osmo\+\_\+e1dp\+\_\+line\+\_\+mode\+\_\+names[$\,$]\hspace{0.3cm}{\ttfamily [extern]}}

\mbox{\label{proto_8h_a7e58563e43d2af22104645a47f86e37b}} 
\index{proto.h@{proto.h}!osmo\_e1dp\_msg\_type\_names@{osmo\_e1dp\_msg\_type\_names}}
\index{osmo\_e1dp\_msg\_type\_names@{osmo\_e1dp\_msg\_type\_names}!proto.h@{proto.h}}
\doxysubsubsection{osmo\_e1dp\_msg\_type\_names}
{\footnotesize\ttfamily const struct value\+\_\+string osmo\+\_\+e1dp\+\_\+msg\+\_\+type\+\_\+names[$\,$]\hspace{0.3cm}{\ttfamily [extern]}}

\mbox{\label{proto_8h_a524e5022229b2c6fe418aece9c5b3fde}} 
\index{proto.h@{proto.h}!osmo\_e1dp\_ts\_mode\_names@{osmo\_e1dp\_ts\_mode\_names}}
\index{osmo\_e1dp\_ts\_mode\_names@{osmo\_e1dp\_ts\_mode\_names}!proto.h@{proto.h}}
\doxysubsubsection{osmo\_e1dp\_ts\_mode\_names}
{\footnotesize\ttfamily const struct value\+\_\+string osmo\+\_\+e1dp\+\_\+ts\+\_\+mode\+\_\+names[$\,$]\hspace{0.3cm}{\ttfamily [extern]}}

\mbox{\label{proto_8h_a04bba4b87c8a75d1404aadb32bb8e417}} 
\index{proto.h@{proto.h}!query\_rx@{query\_rx}}
\index{query\_rx@{query\_rx}!proto.h@{proto.h}}
\doxysubsubsection{query\_rx}
{\footnotesize\ttfamily uint8\+\_\+t query\+\_\+rx}

\mbox{\label{proto_8h_a6968c3ab79d78ec16ed40fde909d8fce}} 
\index{proto.h@{proto.h}!read\_bufsize@{read\_bufsize}}
\index{read\_bufsize@{read\_bufsize}!proto.h@{proto.h}}
\doxysubsubsection{read\_bufsize}
{\footnotesize\ttfamily uint16\+\_\+t read\+\_\+bufsize}

\mbox{\label{proto_8h_ade818037fd6c985038ff29656089758d}} 
\index{proto.h@{proto.h}!status@{status}}
\index{status@{status}!proto.h@{proto.h}}
\doxysubsubsection{status}
{\footnotesize\ttfamily uint8\+\_\+t status}



E1 line configuration. 

TBD \mbox{\label{proto_8h_abeaad8e42f075afd3737ad93d929d191}} 
\index{proto.h@{proto.h}!ts@{ts}}
\index{ts@{ts}!proto.h@{proto.h}}
\doxysubsubsection{ts}
{\footnotesize\ttfamily uint8\+\_\+t ts}



Referenced by \textbf{ osmo\+\_\+e1dp\+\_\+client\+\_\+set\+\_\+cas()}, and \textbf{ osmo\+\_\+e1dp\+\_\+client\+\_\+ts\+\_\+query()}.

\mbox{\label{proto_8h_a1d127017fb298b889f4ba24752d08b8e}} 
\index{proto.h@{proto.h}!type@{type}}
\index{type@{type}!proto.h@{proto.h}}
\doxysubsubsection{type}
{\footnotesize\ttfamily uint8\+\_\+t type}

