\hypertarget{LCBV_8h}{
\section{LCBV.h File Reference}
\label{LCBV_8h}\index{LCBV.h@{LCBV.h}}
}
LCB Virtual Device, interface. 



This graph shows which files directly or indirectly include this file:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=167pt]{LCBV_8h__dep__incl}
\end{center}
\end{figure}
\subsection*{Typedefs}
\begin{CompactItemize}
\item 
typedef enum \hyperlink{LCBV_8h_a10}{\_\-LCBV\_\-PKT\_\-FATE\_\-M} \hyperlink{LCBV_8h_a0}{LCBV\_\-PKT\_\-FATE\_\-M}
\begin{CompactList}\small\item\em Typedef for enum \_\-LCBV\_\-PKT\_\-FATE\_\-M. \item\end{CompactList}\item 
typedef unsigned int($\ast$ \hyperlink{LCBV_8h_a1}{LCBV\_\-pkt\-Cb} )(void $\ast$prm, unsigned int dsc, \hyperlink{struct__EBF__pkt}{EBF\_\-pkt} $\ast$pkt)
\begin{CompactList}\small\item\em Typedef for LCBV packet handling callback routine. \item\end{CompactList}\item 
typedef unsigned int($\ast$ \hyperlink{LCBV_8h_a2}{LCBV\_\-pkts\-Rng\-Free\-Cb} )(void $\ast$prm, \hyperlink{struct__EBF__pkt}{EBF\_\-pkt} $\ast$from, \hyperlink{struct__EBF__pkt}{EBF\_\-pkt} $\ast$to)
\begin{CompactList}\small\item\em Callback signature to free the exclusive range of EBF packets {\em from\/} to {\em to\/}. \item\end{CompactList}\end{CompactItemize}
\subsection*{Enumerations}
\begin{CompactItemize}
\item 
enum \hyperlink{LCBV_8h_a10}{\_\-LCBV\_\-PKT\_\-FATE\_\-M} \{ \par
\hyperlink{LCBV_8h_a10a3}{LCBV\_\-PKT\_\-FATE\_\-M\_\-NO\_\-MORE} =  (1 $<$$<$ 0), 
\par
\hyperlink{LCBV_8h_a10a4}{LCBV\_\-PKT\_\-FATE\_\-M\_\-NO\_\-FREE} =  (1 $<$$<$ 2), 
\par
\hyperlink{LCBV_8h_a10a5}{LCBV\_\-PKT\_\-FATE\_\-M\_\-NO\_\-PROCESS} =  (1 $<$$<$ 3), 
\par
\hyperlink{LCBV_8h_a10a6}{LCBV\_\-PKT\_\-FATE\_\-M\_\-PAUSE} =  (1 $<$$<$ 4), 
\par
\hyperlink{LCBV_8h_a10a7}{LCBV\_\-PKT\_\-FATE\_\-M\_\-IOERR} =  (1 $<$$<$ 5), 
\par
\hyperlink{LCBV_8h_a10a8}{LCBV\_\-PKT\_\-FATE\_\-M\_\-ABORT}, 
\par
\hyperlink{LCBV_8h_a10a9}{LCBV\_\-PKT\_\-FATE\_\-M\_\-EOF} =  (1 $<$$<$ 31)
 \}
\begin{CompactList}\small\item\em Bit masks defining the options available on the return values of the packet callback routine. \item\end{CompactList}\end{CompactItemize}


\subsection{Detailed Description}
LCB Virtual Device, interface. 

\begin{Desc}
\item[Author:]JJRussell - \href{mailto:russell@slac.stanford.edu}{\tt russell@slac.stanford.edu}\end{Desc}


\footnotesize\begin{verbatim}   CVS $Id: LCBV.h,v 1.4 2007/02/14 01:01:53 russell Exp $
\end{verbatim}
\normalsize


\subsection{Typedef Documentation}
\hypertarget{LCBV_8h_a0}{
\index{LCBV.h@{LCBV.h}!LCBV_PKT_FATE_M@{LCBV\_\-PKT\_\-FATE\_\-M}}
\index{LCBV_PKT_FATE_M@{LCBV\_\-PKT\_\-FATE\_\-M}!LCBV.h@{LCBV.h}}
\subsubsection[LCBV\_\-PKT\_\-FATE\_\-M]{\setlength{\rightskip}{0pt plus 5cm}\hyperlink{LCBV_8h_a0}{LCBV\_\-PKT\_\-FATE\_\-M}}}
\label{LCBV_8h_a0}


Typedef for enum \_\-LCBV\_\-PKT\_\-FATE\_\-M. 

\begin{Desc}
\item[Usage]The user can control the packets processing loop in packet handler by specifying the return value as a bit list of the options enumerated here. The most common values will be 0, just keep on keeping on or LCBD\_\-PKT\_\-FATE\_\-M\_\-NO\_\-MORE to stop the stream.\end{Desc}
\hypertarget{LCBV_8h_a1}{
\index{LCBV.h@{LCBV.h}!LCBV_pktCb@{LCBV\_\-pktCb}}
\index{LCBV_pktCb@{LCBV\_\-pktCb}!LCBV.h@{LCBV.h}}
\subsubsection[LCBV\_\-pktCb]{\setlength{\rightskip}{0pt plus 5cm}unsigned int($\ast$ \hyperlink{LCBV_8h_a1}{LCBV\_\-pkt\-Cb})(void $\ast$prm, unsigned int dsc, \hyperlink{struct__EBF__pkt}{EBF\_\-pkt} $\ast$pkt)}}
\label{LCBV_8h_a1}


Typedef for LCBV packet handling callback routine. 

\begin{Desc}
\item[Returns:]A bit list of options enumerated by LCBV\_\-PKT\_\-FATE\_\-M\end{Desc}
\begin{Desc}
\item[Parameters:]
\begin{description}
\item[{\em prm}]User provided parameter \item[{\em dsc}]The event descriptor as an uninterpreted unsigned int. Likely the only thing valuable in here is the status. \item[{\em pkt}]Pointer to the packet data. This contains the length of the packet as well as the data itself\end{description}
\end{Desc}
\begin{Desc}
\item[Usage]This is the user callback routine to handle packets.\end{Desc}
\begin{Desc}
\item[Return Options]Normally this routine should return 0, but for testing and debugging purposes, it may return a bit list of the options enumerated in LCBV\_\-PKT\_\-FATE\_\-M. The options currently include\end{Desc}
\begin{itemize}
\item LCBV\_\-PKT\_\-FATE\_\-M\_\-NO\_\-MORE, stop servicing the packets, whether it is empty or not\end{itemize}
\hypertarget{LCBV_8h_a2}{
\index{LCBV.h@{LCBV.h}!LCBV_pktsRngFreeCb@{LCBV\_\-pktsRngFreeCb}}
\index{LCBV_pktsRngFreeCb@{LCBV\_\-pktsRngFreeCb}!LCBV.h@{LCBV.h}}
\subsubsection[LCBV\_\-pktsRngFreeCb]{\setlength{\rightskip}{0pt plus 5cm}unsigned int($\ast$ \hyperlink{LCBV_8h_a2}{LCBV\_\-pkts\-Rng\-Free\-Cb})(void $\ast$prm, \hyperlink{struct__EBF__pkt}{EBF\_\-pkt} $\ast$from, \hyperlink{struct__EBF__pkt}{EBF\_\-pkt} $\ast$to)}}
\label{LCBV_8h_a2}


Callback signature to free the exclusive range of EBF packets {\em from\/} to {\em to\/}. 

\begin{Desc}
\item[Parameters:]
\begin{description}
\item[{\em prm}]Arbitrary user parameter, but likely the LCB device handle \item[{\em from}]The address to start the free at. \item[{\em to}]The address of the last event to free\end{description}
\end{Desc}
\begin{Desc}
\item[What's freed]The memory from {\em from\/} to {\em to\/} is freed.\end{Desc}


\subsection{Enumeration Type Documentation}
\hypertarget{LCBV_8h_a10}{
\index{LCBV.h@{LCBV.h}!_LCBV_PKT_FATE_M@{\_\-LCBV\_\-PKT\_\-FATE\_\-M}}
\index{_LCBV_PKT_FATE_M@{\_\-LCBV\_\-PKT\_\-FATE\_\-M}!LCBV.h@{LCBV.h}}
\subsubsection[\_\-LCBV\_\-PKT\_\-FATE\_\-M]{\setlength{\rightskip}{0pt plus 5cm}enum \hyperlink{LCBV_8h_a10}{\_\-LCBV\_\-PKT\_\-FATE\_\-M}}}
\label{LCBV_8h_a10}


Bit masks defining the options available on the return values of the packet callback routine. 

\begin{Desc}
\item[See also:]EBF\_\-pkt\_\-cb\end{Desc}
\begin{Desc}
\item[Enumerator: ]\par
\begin{description}
\index{LCBV_PKT_FATE_M_NO_MORE@{LCBV\_\-PKT\_\-FATE\_\-M\_\-NO\_\-MORE}!LCBV.h@{LCBV.h}}\index{LCBV.h@{LCBV.h}!LCBV_PKT_FATE_M_NO_MORE@{LCBV\_\-PKT\_\-FATE\_\-M\_\-NO\_\-MORE}}\item[{\em 
\hypertarget{LCBV_8h_a10a3}{
LCBV\_\-PKT\_\-FATE\_\-M\_\-NO\_\-MORE}
\label{LCBV_8h_a10a3}
}]Stop processing transactions \index{LCBV_PKT_FATE_M_NO_FREE@{LCBV\_\-PKT\_\-FATE\_\-M\_\-NO\_\-FREE}!LCBV.h@{LCBV.h}}\index{LCBV.h@{LCBV.h}!LCBV_PKT_FATE_M_NO_FREE@{LCBV\_\-PKT\_\-FATE\_\-M\_\-NO\_\-FREE}}\item[{\em 
\hypertarget{LCBV_8h_a10a4}{
LCBV\_\-PKT\_\-FATE\_\-M\_\-NO\_\-FREE}
\label{LCBV_8h_a10a4}
}]Don't free the event \index{LCBV_PKT_FATE_M_NO_PROCESS@{LCBV\_\-PKT\_\-FATE\_\-M\_\-NO\_\-PROCESS}!LCBV.h@{LCBV.h}}\index{LCBV.h@{LCBV.h}!LCBV_PKT_FATE_M_NO_PROCESS@{LCBV\_\-PKT\_\-FATE\_\-M\_\-NO\_\-PROCESS}}\item[{\em 
\hypertarget{LCBV_8h_a10a5}{
LCBV\_\-PKT\_\-FATE\_\-M\_\-NO\_\-PROCESS}
\label{LCBV_8h_a10a5}
}]Don't process the event, applicable only for error handler \index{LCBV_PKT_FATE_M_PAUSE@{LCBV\_\-PKT\_\-FATE\_\-M\_\-PAUSE}!LCBV.h@{LCBV.h}}\index{LCBV.h@{LCBV.h}!LCBV_PKT_FATE_M_PAUSE@{LCBV\_\-PKT\_\-FATE\_\-M\_\-PAUSE}}\item[{\em 
\hypertarget{LCBV_8h_a10a6}{
LCBV\_\-PKT\_\-FATE\_\-M\_\-PAUSE}
\label{LCBV_8h_a10a6}
}]Pause the processing \index{LCBV_PKT_FATE_M_IOERR@{LCBV\_\-PKT\_\-FATE\_\-M\_\-IOERR}!LCBV.h@{LCBV.h}}\index{LCBV.h@{LCBV.h}!LCBV_PKT_FATE_M_IOERR@{LCBV\_\-PKT\_\-FATE\_\-M\_\-IOERR}}\item[{\em 
\hypertarget{LCBV_8h_a10a7}{
LCBV\_\-PKT\_\-FATE\_\-M\_\-IOERR}
\label{LCBV_8h_a10a7}
}]IO error \index{LCBV_PKT_FATE_M_ABORT@{LCBV\_\-PKT\_\-FATE\_\-M\_\-ABORT}!LCBV.h@{LCBV.h}}\index{LCBV.h@{LCBV.h}!LCBV_PKT_FATE_M_ABORT@{LCBV\_\-PKT\_\-FATE\_\-M\_\-ABORT}}\item[{\em 
\hypertarget{LCBV_8h_a10a8}{
LCBV\_\-PKT\_\-FATE\_\-M\_\-ABORT}
\label{LCBV_8h_a10a8}
}]Convenience symbol, since this is the most common return value from the error routine \index{LCBV_PKT_FATE_M_EOF@{LCBV\_\-PKT\_\-FATE\_\-M\_\-EOF}!LCBV.h@{LCBV.h}}\index{LCBV.h@{LCBV.h}!LCBV_PKT_FATE_M_EOF@{LCBV\_\-PKT\_\-FATE\_\-M\_\-EOF}}\item[{\em 
\hypertarget{LCBV_8h_a10a9}{
LCBV\_\-PKT\_\-FATE\_\-M\_\-EOF}
\label{LCBV_8h_a10a9}
}]No more packets \end{description}
\end{Desc}

