\hypertarget{LIOX_8h}{
\section{LIOX.h File Reference}
\label{LIOX_8h}\index{LIOX.h@{LIOX.h}}
}
Defines public aspects of the LIOX.  


{\tt \#include \char`\"{}PBI/Endianness.h\char`\"{}}\par
{\tt \#include \char`\"{}LCB/LCB.h\char`\"{}}\par
{\tt \#include \char`\"{}LCB/LIOX\_\-msgs.h\char`\"{}}\par
{\tt \#include \char`\"{}MSG/MSG\_\-pubdefs.h\char`\"{}}\par


Include dependency graph for LIOX.h:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=240pt]{LIOX_8h__incl}
\end{center}
\end{figure}


This graph shows which files directly or indirectly include this file:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=218pt]{LIOX_8h__dep__incl}
\end{center}
\end{figure}
\subsection*{Data Structures}
\begin{CompactItemize}
\item 
struct \hyperlink{struct__BFLIOX__CSR}{\_\-BFLIOX\_\-CSR}
\begin{CompactList}\small\item\em map of the LATp backend CSR register \item\end{CompactList}\item 
struct \hyperlink{struct__BFLIOX__FIFO__FAULTS}{\_\-BFLIOX\_\-FIFO\_\-FAULTS}
\begin{CompactList}\small\item\em map of the LATp backend CSR register \item\end{CompactList}\item 
union \hyperlink{union__LIOX__CSR}{\_\-LIOX\_\-CSR}
\begin{CompactList}\small\item\em union for 32-bit CSR register \item\end{CompactList}\item 
union \hyperlink{union__LIOX__FIFO__FAULTS}{\_\-LIOX\_\-FIFO\_\-FAULTS}
\begin{CompactList}\small\item\em union for 32-bit CSR register \item\end{CompactList}\end{CompactItemize}
\subsection*{Defines}
\begin{CompactItemize}
\item 
\hypertarget{LIOX_8h_a0}{
\#define \hyperlink{LIOX_8h_a0}{LIOX\_\-DEFAULT\_\-TIMEOUT}\ ((unsigned int) $\sim$0x0)}
\label{LIOX_8h_a0}

\begin{CompactList}\small\item\em Sentinel value meaning \char`\"{}use the default timeout value\char`\"{}. \item\end{CompactList}\item 
\hypertarget{LIOX_8h_a1}{
\#define \hyperlink{LIOX_8h_a1}{LIOX\_\-INTERNAL\_\-MASK}\ (0x1)}
\label{LIOX_8h_a1}

\begin{CompactList}\small\item\em Bit mask applied to LIOX opcode to determine if opcode results in a transmission. \item\end{CompactList}\item 
\hypertarget{LIOX_8h_a2}{
\#define \hyperlink{LIOX_8h_a2}{LIOX\_\-EVENT\_\-MASK}\ (0x2)}
\label{LIOX_8h_a2}

\begin{CompactList}\small\item\em Bit mask applied to LIOX opcode to determine if opcode is for event fabric. \item\end{CompactList}\item 
\hypertarget{LIOX_8h_a3}{
\#define \hyperlink{LIOX_8h_a3}{LIOX\_\-RESPONSE\_\-MASK}\ (0x4)}
\label{LIOX_8h_a3}

\begin{CompactList}\small\item\em Bit mask applied to LIOX opcode to determine if opcode results in a response. \item\end{CompactList}\item 
\hypertarget{LIOX_8h_a4}{
\#define \hyperlink{LIOX_8h_a4}{LIOX\_\-UNSOLICITED\_\-MASK}\ (0x8)}
\label{LIOX_8h_a4}

\begin{CompactList}\small\item\em Bit mask applied to LIOX opcode to determine if opcode is an unsolicited command. \item\end{CompactList}\end{CompactItemize}
\subsection*{Typedefs}
\begin{CompactItemize}
\item 
typedef \hyperlink{struct__LIOX__ci}{\_\-LIOX\_\-ci} \hyperlink{LIOX_8h_a5}{LIOX\_\-ci}
\begin{CompactList}\small\item\em Typedef for struct \hyperlink{struct__LIOX__ci}{\_\-LIOX\_\-ci}. \item\end{CompactList}\item 
typedef \hyperlink{struct__LIOX__cl}{\_\-LIOX\_\-cl} \hyperlink{LIOX_8h_a6}{LIOX\_\-cl}
\begin{CompactList}\small\item\em Typedef for struct \hyperlink{struct__LIOX__cl}{\_\-LIOX\_\-cl}. \item\end{CompactList}\item 
typedef \hyperlink{union__LIOX__ri}{\_\-LIOX\_\-ri} \hyperlink{LIOX_8h_a7}{LIOX\_\-ri}
\begin{CompactList}\small\item\em Typedef for union \hyperlink{union__LIOX__ri}{\_\-LIOX\_\-ri}. \item\end{CompactList}\item 
typedef \hyperlink{struct__LIOX__rl}{\_\-LIOX\_\-rl} \hyperlink{LIOX_8h_a8}{LIOX\_\-rl}
\begin{CompactList}\small\item\em Typedef for struct \hyperlink{struct__LIOX__rl}{\_\-LIOX\_\-rl}. \item\end{CompactList}\item 
\hypertarget{LIOX_8h_a9}{
typedef \hyperlink{struct__LIOX}{\_\-LIOX} $\ast$ \hyperlink{LIOX_8h_a9}{LIOX}}
\label{LIOX_8h_a9}

\begin{CompactList}\small\item\em Typedef for struct \hyperlink{struct__LIOX}{\_\-LIOX}. \item\end{CompactList}\item 
\hypertarget{LIOX_8h_a10}{
typedef void $\ast$ \hyperlink{LIOX_8h_a10}{LIOX\_\-cb\_\-prm}}
\label{LIOX_8h_a10}

\begin{CompactList}\small\item\em Typedef for opaque LIOX user callback parameter. \item\end{CompactList}\item 
\hypertarget{LIOX_8h_a11}{
typedef int($\ast$ \hyperlink{LIOX_8h_a11}{LIOX\_\-rst\_\-cb} )(\hyperlink{struct__LIOX}{LIOX} lh, unsigned int status, \hyperlink{LIOX_8h_a10}{LIOX\_\-cb\_\-prm} usr\-Parm)}
\label{LIOX_8h_a11}

\begin{CompactList}\small\item\em User supplied callback routine for LIOX result processing. \item\end{CompactList}\item 
\hypertarget{LIOX_8h_a12}{
typedef unsigned int($\ast$ \hyperlink{LIOX_8h_a12}{LIOX\_\-ri\_\-cb} )(\hyperlink{struct__LIOX}{LIOX} lh, \hyperlink{union__LIOX__ri}{LIOX\_\-ri} $\ast$ri, \hyperlink{LIOX_8h_a10}{LIOX\_\-cb\_\-prm} usr\-Parm)}
\label{LIOX_8h_a12}

\begin{CompactList}\small\item\em Typedef for function pointer to for-each result item processing routine. \item\end{CompactList}\item 
\hypertarget{LIOX_8h_a13}{
typedef unsigned int($\ast$ \hyperlink{LIOX_8h_a13}{LIOX\_\-ci\_\-cb} )(\hyperlink{struct__LIOX}{LIOX} lh, \hyperlink{struct__LIOX__ci}{LIOX\_\-ci} $\ast$ci, \hyperlink{LIOX_8h_a10}{LIOX\_\-cb\_\-prm} usr\-Parm)}
\label{LIOX_8h_a13}

\begin{CompactList}\small\item\em Typedef for function pointer to for-each command item processing routine. \item\end{CompactList}\item 
\hypertarget{LIOX_8h_a14}{
typedef enum \hyperlink{LIOX_8h_a29}{\_\-LIOX\_\-STATE} \hyperlink{LIOX_8h_a14}{LIOX\_\-STATE}}
\label{LIOX_8h_a14}

\begin{CompactList}\small\item\em Typdef for enum \_\-LIOX\_\-STATE. \item\end{CompactList}\item 
\hypertarget{LIOX_8h_a15}{
typedef enum \hyperlink{LIOX_8h_a30}{\_\-LIOX\_\-OPCODE} \hyperlink{LIOX_8h_a15}{LIOX\_\-OPCODE}}
\label{LIOX_8h_a15}

\begin{CompactList}\small\item\em Typdef for enum \_\-LIOX\_\-OPCODE. \item\end{CompactList}\item 
\hypertarget{LIOX_8h_a16}{
typedef \hyperlink{union__LIOX__CSR}{\_\-LIOX\_\-CSR} \hyperlink{LIOX_8h_a16}{LIOX\_\-CSR}}
\label{LIOX_8h_a16}

\begin{CompactList}\small\item\em typedef for union \hyperlink{union__LIOX__CSR}{\_\-LIOX\_\-CSR} \item\end{CompactList}\item 
\hypertarget{LIOX_8h_a17}{
typedef \hyperlink{union__LIOX__FIFO__FAULTS}{\_\-LIOX\_\-FIFO\_\-FAULTS} \hyperlink{LIOX_8h_a17}{LIOX\_\-FIFO\_\-FAULTS}}
\label{LIOX_8h_a17}

\begin{CompactList}\small\item\em typedef for union \hyperlink{union__LIOX__FIFO__FAULTS}{\_\-LIOX\_\-FIFO\_\-FAULTS} \item\end{CompactList}\end{CompactItemize}
\subsection*{Enumerations}
\begin{CompactItemize}
\item 
enum \hyperlink{LIOX_8h_a29}{\_\-LIOX\_\-STATE} \{ \par
\hyperlink{LIOX_8h_a29a18}{LIOX\_\-READY} = 0, 
\par
\hyperlink{LIOX_8h_a29a19}{LIOX\_\-PEND}, 
\par
\hyperlink{LIOX_8h_a29a20}{LIOX\_\-RECEIVED}
 \}
\begin{CompactList}\small\item\em Enumeration of LIOX states. \item\end{CompactList}\item 
enum \hyperlink{LIOX_8h_a30}{\_\-LIOX\_\-OPCODE} \{ \par
\hyperlink{LIOX_8h_a30a21}{LIOX\_\-OP\_\-CMD} =  0x0, 
\par
\hyperlink{LIOX_8h_a30a22}{LIOX\_\-OP\_\-MARKER} =  0x1, 
\par
\hyperlink{LIOX_8h_a30a23}{LIOX\_\-OP\_\-EVENT} =  0x2, 
\par
\hyperlink{LIOX_8h_a30a24}{LIOX\_\-OP\_\-LAT\_\-RESET} =  0x3, 
\par
\hyperlink{LIOX_8h_a30a25}{LIOX\_\-OP\_\-CMD\_\-RSP} =  0x4, 
\par
\hyperlink{LIOX_8h_a30a26}{LIOX\_\-OP\_\-CSR} =  0x5, 
\par
\hyperlink{LIOX_8h_a30a27}{LIOX\_\-OP\_\-FIFO\_\-FAULT} =  0x7, 
\par
\hyperlink{LIOX_8h_a30a28}{LIOX\_\-OP\_\-UNSOL\_\-CMD} =  0x\-E
 \}
\begin{CompactList}\small\item\em Enumeration of LIOX opcodes. \item\end{CompactList}\end{CompactItemize}


\subsection{Detailed Description}
Defines public aspects of the LIOX. 

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


\footnotesize\begin{verbatim}
  CVS $Id: LIOX.h,v 1.12 2004/04/28 21:03:25 ebacho Exp $
\end{verbatim}\normalsize


The LIOX (LAT I/O Transaction) is a data structure that connects a LCB command list to a LCB result list. See chapter 4 of Mike Huffer's \char`\"{}LAT Communications Board -- Design Specification\char`\"{} for more details.

\subsection{Typedef Documentation}
\hypertarget{LIOX_8h_a5}{
\index{LIOX.h@{LIOX.h}!LIOX_ci@{LIOX\_\-ci}}
\index{LIOX_ci@{LIOX\_\-ci}!LIOX.h@{LIOX.h}}
\subsubsection[LIOX\_\-ci]{\setlength{\rightskip}{0pt plus 5cm}\hyperlink{struct__LIOX__ci}{LIOX\_\-ci}}}
\label{LIOX_8h_a5}


Typedef for struct \hyperlink{struct__LIOX__ci}{\_\-LIOX\_\-ci}. 

LIOX Command Item data structure \hypertarget{LIOX_8h_a6}{
\index{LIOX.h@{LIOX.h}!LIOX_cl@{LIOX\_\-cl}}
\index{LIOX_cl@{LIOX\_\-cl}!LIOX.h@{LIOX.h}}
\subsubsection[LIOX\_\-cl]{\setlength{\rightskip}{0pt plus 5cm}\hyperlink{struct__LIOX__cl}{LIOX\_\-cl}}}
\label{LIOX_8h_a6}


Typedef for struct \hyperlink{struct__LIOX__cl}{\_\-LIOX\_\-cl}. 

LIOX Command List data structure \hypertarget{LIOX_8h_a7}{
\index{LIOX.h@{LIOX.h}!LIOX_ri@{LIOX\_\-ri}}
\index{LIOX_ri@{LIOX\_\-ri}!LIOX.h@{LIOX.h}}
\subsubsection[LIOX\_\-ri]{\setlength{\rightskip}{0pt plus 5cm}\hyperlink{union__LIOX__ri}{LIOX\_\-ri}}}
\label{LIOX_8h_a7}


Typedef for union \hyperlink{union__LIOX__ri}{\_\-LIOX\_\-ri}. 

LIOX Result Item data structure \hypertarget{LIOX_8h_a8}{
\index{LIOX.h@{LIOX.h}!LIOX_rl@{LIOX\_\-rl}}
\index{LIOX_rl@{LIOX\_\-rl}!LIOX.h@{LIOX.h}}
\subsubsection[LIOX\_\-rl]{\setlength{\rightskip}{0pt plus 5cm}\hyperlink{struct__LIOX__rl}{LIOX\_\-rl}}}
\label{LIOX_8h_a8}


Typedef for struct \hyperlink{struct__LIOX__rl}{\_\-LIOX\_\-rl}. 

LIOX Result List data structure 

\subsection{Enumeration Type Documentation}
\hypertarget{LIOX_8h_a30}{
\index{LIOX.h@{LIOX.h}!_LIOX_OPCODE@{\_\-LIOX\_\-OPCODE}}
\index{_LIOX_OPCODE@{\_\-LIOX\_\-OPCODE}!LIOX.h@{LIOX.h}}
\subsubsection[\_\-LIOX\_\-OPCODE]{\setlength{\rightskip}{0pt plus 5cm}enum \hyperlink{LIOX_8h_a30}{\_\-LIOX\_\-OPCODE}}}
\label{LIOX_8h_a30}


Enumeration of LIOX opcodes. 

\begin{Desc}
\item[Enumeration values: ]\par
\begin{description}
\index{LIOX_OP_CMD@{LIOX\_\-OP\_\-CMD}!LIOX.h@{LIOX.h}}\index{LIOX.h@{LIOX.h}!LIOX_OP_CMD@{LIOX\_\-OP\_\-CMD}}\item[{\em 
\hypertarget{LIOX_8h_a30a21}{
{\em LIOX\_\-OP\_\-CMD}}
\label{LIOX_8h_a30a21}
}]LIOX external command transmission (no response) \index{LIOX_OP_MARKER@{LIOX\_\-OP\_\-MARKER}!LIOX.h@{LIOX.h}}\index{LIOX.h@{LIOX.h}!LIOX_OP_MARKER@{LIOX\_\-OP\_\-MARKER}}\item[{\em 
\hypertarget{LIOX_8h_a30a22}{
{\em LIOX\_\-OP\_\-MARKER}}
\label{LIOX_8h_a30a22}
}]LIOX interal opcode marker \index{LIOX_OP_EVENT@{LIOX\_\-OP\_\-EVENT}!LIOX.h@{LIOX.h}}\index{LIOX.h@{LIOX.h}!LIOX_OP_EVENT@{LIOX\_\-OP\_\-EVENT}}\item[{\em 
\hypertarget{LIOX_8h_a30a23}{
{\em LIOX\_\-OP\_\-EVENT}}
\label{LIOX_8h_a30a23}
}]LIOX external event transmission (no response) \index{LIOX_OP_LAT_RESET@{LIOX\_\-OP\_\-LAT\_\-RESET}!LIOX.h@{LIOX.h}}\index{LIOX.h@{LIOX.h}!LIOX_OP_LAT_RESET@{LIOX\_\-OP\_\-LAT\_\-RESET}}\item[{\em 
\hypertarget{LIOX_8h_a30a24}{
{\em LIOX\_\-OP\_\-LAT\_\-RESET}}
\label{LIOX_8h_a30a24}
}]LIOX interal opcode LAT RESET \index{LIOX_OP_CMD_RSP@{LIOX\_\-OP\_\-CMD\_\-RSP}!LIOX.h@{LIOX.h}}\index{LIOX.h@{LIOX.h}!LIOX_OP_CMD_RSP@{LIOX\_\-OP\_\-CMD\_\-RSP}}\item[{\em 
\hypertarget{LIOX_8h_a30a25}{
{\em LIOX\_\-OP\_\-CMD\_\-RSP}}
\label{LIOX_8h_a30a25}
}]LIOX external command transmission with response \index{LIOX_OP_CSR@{LIOX\_\-OP\_\-CSR}!LIOX.h@{LIOX.h}}\index{LIOX.h@{LIOX.h}!LIOX_OP_CSR@{LIOX\_\-OP\_\-CSR}}\item[{\em 
\hypertarget{LIOX_8h_a30a26}{
{\em LIOX\_\-OP\_\-CSR}}
\label{LIOX_8h_a30a26}
}]LIOX interal opcode write CSR \index{LIOX_OP_FIFO_FAULT@{LIOX\_\-OP\_\-FIFO\_\-FAULT}!LIOX.h@{LIOX.h}}\index{LIOX.h@{LIOX.h}!LIOX_OP_FIFO_FAULT@{LIOX\_\-OP\_\-FIFO\_\-FAULT}}\item[{\em 
\hypertarget{LIOX_8h_a30a27}{
{\em LIOX\_\-OP\_\-FIFO\_\-FAULT}}
\label{LIOX_8h_a30a27}
}]LIOX interal opcode write FIFO FAULT register \index{LIOX_OP_UNSOL_CMD@{LIOX\_\-OP\_\-UNSOL\_\-CMD}!LIOX.h@{LIOX.h}}\index{LIOX.h@{LIOX.h}!LIOX_OP_UNSOL_CMD@{LIOX\_\-OP\_\-UNSOL\_\-CMD}}\item[{\em 
\hypertarget{LIOX_8h_a30a28}{
{\em LIOX\_\-OP\_\-UNSOL\_\-CMD}}
\label{LIOX_8h_a30a28}
}]LIOX external unsolicited command \end{description}
\end{Desc}

\hypertarget{LIOX_8h_a29}{
\index{LIOX.h@{LIOX.h}!_LIOX_STATE@{\_\-LIOX\_\-STATE}}
\index{_LIOX_STATE@{\_\-LIOX\_\-STATE}!LIOX.h@{LIOX.h}}
\subsubsection[\_\-LIOX\_\-STATE]{\setlength{\rightskip}{0pt plus 5cm}enum \hyperlink{LIOX_8h_a29}{\_\-LIOX\_\-STATE}}}
\label{LIOX_8h_a29}


Enumeration of LIOX states. 

\begin{Desc}
\item[Enumeration values: ]\par
\begin{description}
\index{LIOX_READY@{LIOX\_\-READY}!LIOX.h@{LIOX.h}}\index{LIOX.h@{LIOX.h}!LIOX_READY@{LIOX\_\-READY}}\item[{\em 
\hypertarget{LIOX_8h_a29a18}{
{\em LIOX\_\-READY}}
\label{LIOX_8h_a29a18}
}]LIOX Allocated, ready for transmission \index{LIOX_PEND@{LIOX\_\-PEND}!LIOX.h@{LIOX.h}}\index{LIOX.h@{LIOX.h}!LIOX_PEND@{LIOX\_\-PEND}}\item[{\em 
\hypertarget{LIOX_8h_a29a19}{
{\em LIOX\_\-PEND}}
\label{LIOX_8h_a29a19}
}]Transmission begun, waiting for result \index{LIOX_RECEIVED@{LIOX\_\-RECEIVED}!LIOX.h@{LIOX.h}}\index{LIOX.h@{LIOX.h}!LIOX_RECEIVED@{LIOX\_\-RECEIVED}}\item[{\em 
\hypertarget{LIOX_8h_a29a20}{
{\em LIOX\_\-RECEIVED}}
\label{LIOX_8h_a29a20}
}]Result receieved, transaction complete \end{description}
\end{Desc}

