\hypertarget{EFC_8h}{
\section{EFC.h File Reference}
\label{EFC_8h}\index{EFC.h@{EFC.h}}
}
Provides a wrapper in which to run a filter as an EDS callback routine. 

{\tt \#include \char`\"{}EFC/EFC\_\-fate.h\char`\"{}}\par
{\tt \#include \char`\"{}EFC/EFA\_\-def.h\char`\"{}}\par
{\tt \#include \char`\"{}EDS/EDS\_\-fw.h\char`\"{}}\par
{\tt \#include \char`\"{}EDS/EBF\_\-siv.h\char`\"{}}\par
{\tt \#include \char`\"{}EDS\_\-DB/EDS\_\-DB\_\-schema.h\char`\"{}}\par


Include dependency graph for EFC.h:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=143pt]{EFC_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=191pt]{EFC_8h__dep__incl}
\end{center}
\end{figure}
\subsection*{Data Structures}
\begin{CompactItemize}
\item 
struct \hyperlink{struct__EFC__services}{\_\-EFC\_\-services}
\begin{CompactList}\small\item\em The defining services of a standard filter. \item\end{CompactList}\item 
struct \hyperlink{struct__EFC__sizes}{\_\-EFC\_\-sizes}
\begin{CompactList}\small\item\em The defining sizes the filters control block, configuration block and result vector. \item\end{CompactList}\item 
struct \hyperlink{struct__EFC__classes}{\_\-EFC\_\-classes}
\begin{CompactList}\small\item\em Breaks the status word into classes of bits. \item\end{CompactList}\item 
struct \hyperlink{struct__EFC__definition}{\_\-EFC\_\-definition}
\begin{CompactList}\small\item\em The defining values of a standard filter. \item\end{CompactList}\end{CompactItemize}
\subsection*{Typedefs}
\begin{CompactItemize}
\item 
typedef void $\ast$($\ast$ \hyperlink{EFC_8h_a0}{EFC\_\-services\-Construct} )(void $\ast$ctl, const void $\ast$parameters)
\begin{CompactList}\small\item\em Constructs the configuration parameters block. \item\end{CompactList}\item 
typedef \hyperlink{EFC__fate_8h_a1}{EFC\_\-fate}($\ast$ \hyperlink{EFC_8h_a1}{EFC\_\-services\-Filter} )(void $\ast$ctl, int pkt\-Bytes, EBF\_\-pkt $\ast$pkt, EBF\_\-siv siv, EDS\_\-fw\-Ixb $\ast$ixb, unsigned int vetoes, void $\ast$result)
\begin{CompactList}\small\item\em EFC filter routine function signature. \item\end{CompactList}\item 
typedef void $\ast$($\ast$ \hyperlink{EFC_8h_a2}{EFC\_\-services\-Cfg\-Set} )(void $\ast$cfg\_\-ctl, const void $\ast$parameters)
\begin{CompactList}\small\item\em Constructs the configuration parameters block. \item\end{CompactList}\item 
typedef void($\ast$ \hyperlink{EFC_8h_a3}{EFC\_\-services\-Destruct} )(void $\ast$ctl)
\begin{CompactList}\small\item\em Destroys this filter's context. \item\end{CompactList}\item 
typedef unsigned int($\ast$ \hyperlink{EFC_8h_a4}{EFC\_\-services\-Report} )(void $\ast$prm, const void $\ast$cfg, const \hyperlink{struct__EFC__sampler}{EFC\_\-sampler} $\ast$sampler, int which)
\begin{CompactList}\small\item\em Configuration reporting callback routine. \item\end{CompactList}\item 
\hypertarget{EFC_8h_a5}{
typedef \hyperlink{struct__EFC__services}{\_\-EFC\_\-services} \hyperlink{EFC_8h_a5}{EFC\_\-services}}
\label{EFC_8h_a5}

\begin{CompactList}\small\item\em Typedef for struct \hyperlink{struct__EFC__services}{\_\-EFC\_\-services}. \item\end{CompactList}\item 
\hypertarget{EFC_8h_a6}{
typedef \hyperlink{struct__EFC__sizes}{\_\-EFC\_\-sizes} \hyperlink{EFC_8h_a6}{EFC\_\-sizes}}
\label{EFC_8h_a6}

\begin{CompactList}\small\item\em Typedef for struct \hyperlink{struct__EFC__sizes}{\_\-EFC\_\-sizes}. \item\end{CompactList}\item 
\hypertarget{EFC_8h_a7}{
typedef \hyperlink{struct__EFC__classes}{\_\-EFC\_\-classes} \hyperlink{EFC_8h_a7}{EFC\_\-classes}}
\label{EFC_8h_a7}

\begin{CompactList}\small\item\em Typedef for struct \hyperlink{struct__EFC__classes}{\_\-EFC\_\-classes}. \item\end{CompactList}\item 
typedef \hyperlink{struct__EFC__definition}{\_\-EFC\_\-definition} \hyperlink{EFC_8h_a8}{EFC\_\-definition}
\begin{CompactList}\small\item\em Typedef for struct \_\-EFC\_\-defintion. \item\end{CompactList}\item 
typedef enum \hyperlink{EFC_8h_a32}{\_\-EFC\_\-OBJECT\_\-K} \hyperlink{EFC_8h_a9}{EFC\_\-OBJECT\_\-K}
\begin{CompactList}\small\item\em Typedef for enum \_\-EFC\_\-OBJECT\_\-K. \item\end{CompactList}\end{CompactItemize}
\subsection*{Enumerations}
\begin{CompactItemize}
\item 
enum \hyperlink{EFC_8h_a32}{\_\-EFC\_\-OBJECT\_\-K} \{ \par
\hyperlink{EFC_8h_a32a10}{EFC\_\-OBJECT\_\-K\_\-MODE} =  0, 
\par
\hyperlink{EFC_8h_a32a11}{EFC\_\-OBJECT\_\-K\_\-FILTER\_\-RTN} =  1, 
\par
\hyperlink{EFC_8h_a32a12}{EFC\_\-OBJECT\_\-K\_\-FILTER\_\-PRM} =  2, 
\par
\hyperlink{EFC_8h_a32a13}{EFC\_\-OBJECT\_\-K\_\-CFGSET\_\-RTN} =  3, 
\par
\hyperlink{EFC_8h_a32a14}{EFC\_\-OBJECT\_\-K\_\-REPORT\_\-RTN} =  4, 
\par
\hyperlink{EFC_8h_a32a15}{EFC\_\-OBJECT\_\-K\_\-SAMPLER} =  5, 
\par
\hyperlink{EFC_8h_a32a16}{EFC\_\-OBJECT\_\-K\_\-EFA} =  6, 
\par
\hyperlink{EFC_8h_a32a17}{EFC\_\-OBJECT\_\-K\_\-ID} =  7
 \}
\begin{CompactList}\small\item\em Enumeration of the objects. \item\end{CompactList}\end{CompactItemize}
\subsection*{Functions}
\begin{CompactItemize}
\item 
\hypertarget{EFC_8h_a18}{
int {\bf EFC\_\-sizeof} (const EFC\_\-DB\_\-Schema\-Filter $\ast$schema, void $\ast$prm, const \hyperlink{struct__EFC__sizes}{EFC\_\-sizes} $\ast$sizes)}
\label{EFC_8h_a18}

\item 
\hypertarget{EFC_8h_a19}{
const EDS\_\-fw\-Handler\-Services\-X1 $\ast$ {\bf EFC\_\-construct} (EFC $\ast$efc, unsigned int handler\_\-id, const EFC\_\-DB\_\-Schema\-Filter $\ast$schema, unsigned int schema\_\-key, void $\ast$prm, EDS\_\-fw $\ast$eds\-Fw, const \hyperlink{struct__EFC__definition}{EFC\_\-definition} $\ast$definition, unsigned int objects, unsigned int needs)}
\label{EFC_8h_a19}

\item 
\hypertarget{EFC_8h_a20}{
unsigned int {\bf EFC\_\-objects\-Add} (EDS\_\-fw $\ast$fw, unsigned int objects)}
\label{EFC_8h_a20}

\item 
\hypertarget{EFC_8h_a21}{
unsigned int {\bf EFC\_\-objects\-Get} (const EFC $\ast$efc)}
\label{EFC_8h_a21}

\item 
\hypertarget{EFC_8h_a22}{
unsigned int {\bf EFC\_\-needs\-Get} (const EFC $\ast$efc)}
\label{EFC_8h_a22}

\item 
\hypertarget{EFC_8h_a23}{
void $\ast$ {\bf EFC\_\-get} (const EFC $\ast$efc, \hyperlink{EFC_8h_a9}{EFC\_\-OBJECT\_\-K} object)}
\label{EFC_8h_a23}

\item 
\hypertarget{EFC_8h_a24}{
int {\bf EFC\_\-set} (EFC $\ast$efc, \hyperlink{EFC_8h_a9}{EFC\_\-OBJECT\_\-K} object, void $\ast$value)}
\label{EFC_8h_a24}

\item 
\hypertarget{EFC_8h_a25}{
int {\bf EFC\_\-filter} (EFC $\ast$efc, unsigned int pkt\-Bytes, EBF\_\-pkt $\ast$pkt, EBF\_\-siv siv, EDS\_\-fw\-Ixb $\ast$ixb, int id)}
\label{EFC_8h_a25}

\item 
\hypertarget{EFC_8h_a26}{
const EFC\_\-DB\_\-Schema $\ast$ {\bf EFC\_\-lookup} (unsigned short int schema\_\-id, unsigned short int instance\_\-id)}
\label{EFC_8h_a26}

\item 
\hypertarget{EFC_8h_a27}{
int {\bf EFC\_\-mode\-Associate} (EFC $\ast$efc, int mode, int configuration)}
\label{EFC_8h_a27}

\item 
\hypertarget{EFC_8h_a28}{
int {\bf EFC\_\-mode\-Select} (EFC $\ast$efc, int mode, EDS\_\-cfg\-Info $\ast$info)}
\label{EFC_8h_a28}

\item 
\hypertarget{EFC_8h_a29}{
int {\bf EFC\_\-start} (EFC $\ast$efc, unsigned int reason, unsigned int run\_\-id, unsigned int start\_\-time, unsigned int mode)}
\label{EFC_8h_a29}

\item 
\hypertarget{EFC_8h_a30}{
void {\bf EFC\_\-report} (EFC $\ast$efc, unsigned int list)}
\label{EFC_8h_a30}

\item 
\hypertarget{EFC_8h_a31}{
int {\bf EFC\_\-teardown} (EFC $\ast$efc)}
\label{EFC_8h_a31}

\end{CompactItemize}


\subsection{Detailed Description}
Provides a wrapper in which to run a filter as an EDS callback routine. 

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


\footnotesize\begin{verbatim}   CVS $Id: EFC.h,v 1.6 2007/10/10 23:40:42 russell Exp $
\end{verbatim}
\normalsize


\begin{Desc}
\item[]\end{Desc}


\subsection{Typedef Documentation}
\hypertarget{EFC_8h_a8}{
\index{EFC.h@{EFC.h}!EFC_definition@{EFC\_\-definition}}
\index{EFC_definition@{EFC\_\-definition}!EFC.h@{EFC.h}}
\subsubsection[EFC\_\-definition]{\setlength{\rightskip}{0pt plus 5cm}\hyperlink{struct__EFC__definition}{EFC\_\-definition}}}
\label{EFC_8h_a8}


Typedef for struct \_\-EFC\_\-defintion. 

The original definition of an EFC\_\-definition did not contain that information. In order to stay backwards compatible, an augmented version, EFC\_\-definition\-C, along with a matching constructor, EFC\_\-construct\-C was added. With EFC\_\-2.0.0, the qualifying C was dropped and all references to the original version were eliminated.\hypertarget{EFC_8h_a9}{
\index{EFC.h@{EFC.h}!EFC_OBJECT_K@{EFC\_\-OBJECT\_\-K}}
\index{EFC_OBJECT_K@{EFC\_\-OBJECT\_\-K}!EFC.h@{EFC.h}}
\subsubsection[EFC\_\-OBJECT\_\-K]{\setlength{\rightskip}{0pt plus 5cm}\hyperlink{EFC_8h_a9}{EFC\_\-OBJECT\_\-K}}}
\label{EFC_8h_a9}


Typedef for enum \_\-EFC\_\-OBJECT\_\-K. 

This enumerates the objects that can be accessed and set via the EFC\_\-object\-Get and EFC\_\-object\-Set routines.

These routines allow access to the private EFC structure and is meant to be used mainly in a debugging environment. However, there may be uses for this outside of that arena, so it was decided to exposed this as a general interface. With that said, one should realize that this facility should be used with caution.

The one very legitimate use is to get a pointer to the filter specific parameter. This would be called immediately after EFC\_\-construct completes. Fetching this value will all the user to complete initialization of the structure. This was omitted from the first implementation by oversight and by the fact that the early filters did not need it.\hypertarget{EFC_8h_a2}{
\index{EFC.h@{EFC.h}!EFC_servicesCfgSet@{EFC\_\-servicesCfgSet}}
\index{EFC_servicesCfgSet@{EFC\_\-servicesCfgSet}!EFC.h@{EFC.h}}
\subsubsection[EFC\_\-servicesCfgSet]{\setlength{\rightskip}{0pt plus 5cm}void $\ast$($\ast$ \hyperlink{EFC_8h_a2}{EFC\_\-services\-Cfg\-Set})(void $\ast$ctl, void $\ast$parameters)}}
\label{EFC_8h_a2}


Constructs the configuration parameters block. 

\begin{Desc}
\item[Returns:]Status\end{Desc}
\begin{Desc}
\item[Parameters:]
\begin{description}
\item[{\em ctl}]The target filter's control block \item[{\em parameters}]The defining parameters\end{description}
\end{Desc}
\hypertarget{EFC_8h_a0}{
\index{EFC.h@{EFC.h}!EFC_servicesConstruct@{EFC\_\-servicesConstruct}}
\index{EFC_servicesConstruct@{EFC\_\-servicesConstruct}!EFC.h@{EFC.h}}
\subsubsection[EFC\_\-servicesConstruct]{\setlength{\rightskip}{0pt plus 5cm}void $\ast$($\ast$ \hyperlink{EFC_8h_a0}{EFC\_\-services\-Construct})(void $\ast$ctl, const void $\ast$parameters)}}
\label{EFC_8h_a0}


Constructs the configuration parameters block. 

\begin{Desc}
\item[Returns:]Status\end{Desc}
\begin{Desc}
\item[Parameters:]
\begin{description}
\item[{\em ctl}]The target filter's control block \item[{\em parameters}]The defining parameters\end{description}
\end{Desc}
\hypertarget{EFC_8h_a3}{
\index{EFC.h@{EFC.h}!EFC_servicesDestruct@{EFC\_\-servicesDestruct}}
\index{EFC_servicesDestruct@{EFC\_\-servicesDestruct}!EFC.h@{EFC.h}}
\subsubsection[EFC\_\-servicesDestruct]{\setlength{\rightskip}{0pt plus 5cm}void($\ast$ \hyperlink{EFC_8h_a3}{EFC\_\-services\-Destruct})(void $\ast$ctl)}}
\label{EFC_8h_a3}


Destroys this filter's context. 

\begin{Desc}
\item[Parameters:]
\begin{description}
\item[{\em ctl}]The target filter's control block\end{description}
\end{Desc}
\hypertarget{EFC_8h_a1}{
\index{EFC.h@{EFC.h}!EFC_servicesFilter@{EFC\_\-servicesFilter}}
\index{EFC_servicesFilter@{EFC\_\-servicesFilter}!EFC.h@{EFC.h}}
\subsubsection[EFC\_\-servicesFilter]{\setlength{\rightskip}{0pt plus 5cm}\hyperlink{EFC__fate_8h_a1}{EFC\_\-fate}($\ast$ \hyperlink{EFC_8h_a1}{EFC\_\-services\-Filter})(void $\ast$ctl, int pkt\-Bytes, EBF\_\-pkt $\ast$pkt, EBF\_\-siv siv, EDS\_\-fw\-Ixb $\ast$ixb, unsigned int vetoes, void $\ast$result)}}
\label{EFC_8h_a1}


EFC filter routine function signature. 

\begin{Desc}
\item[Returns:]The filtering fate\end{Desc}
\begin{Desc}
\item[Parameters:]
\begin{description}
\item[{\em ctl}]The target filter's control block \item[{\em pkt\-Bytes}]Number of bytes in the EBF packet \item[{\em pkt}]The EBF packet \item[{\em siv}]The EBF state information vector \item[{\em EDS\_\-fw\-Ixb}]The framework's information exchange block \item[{\em vetoes}]The list of active vetoes \item[{\em result}]The result vector to fill\end{description}
\end{Desc}
\hypertarget{EFC_8h_a4}{
\index{EFC.h@{EFC.h}!EFC_servicesReport@{EFC\_\-servicesReport}}
\index{EFC_servicesReport@{EFC\_\-servicesReport}!EFC.h@{EFC.h}}
\subsubsection[EFC\_\-servicesReport]{\setlength{\rightskip}{0pt plus 5cm}unsigned int($\ast$ \hyperlink{EFC_8h_a4}{EFC\_\-services\-Report})(void $\ast$prm, const void $\ast$cfg, const \hyperlink{struct__EFC__sampler}{EFC\_\-sampler} $\ast$sampler, int list)}}
\label{EFC_8h_a4}


Configuration reporting callback routine. 

\begin{Desc}
\item[Returns:]The bit list of the remaining ones to print, 0 terminates it\end{Desc}
\begin{Desc}
\item[Parameters:]
\begin{description}
\item[{\em prm}]User context parameter \item[{\em cfg}]The configuration to report on \item[{\em sampler}]The sampler structure that is paired with this configuration \item[{\em list}]The bit list of what is remaining, by implication, this is 0 when done\end{description}
\end{Desc}


\subsection{Enumeration Type Documentation}
\hypertarget{EFC_8h_a32}{
\index{EFC.h@{EFC.h}!_EFC_OBJECT_K@{\_\-EFC\_\-OBJECT\_\-K}}
\index{_EFC_OBJECT_K@{\_\-EFC\_\-OBJECT\_\-K}!EFC.h@{EFC.h}}
\subsubsection[\_\-EFC\_\-OBJECT\_\-K]{\setlength{\rightskip}{0pt plus 5cm}enum \hyperlink{EFC_8h_a32}{\_\-EFC\_\-OBJECT\_\-K}}}
\label{EFC_8h_a32}


Enumeration of the objects. 

\begin{Desc}
\item[Enumerator: ]\par
\begin{description}
\index{EFC_OBJECT_K_MODE@{EFC\_\-OBJECT\_\-K\_\-MODE}!EFC.h@{EFC.h}}\index{EFC.h@{EFC.h}!EFC_OBJECT_K_MODE@{EFC\_\-OBJECT\_\-K\_\-MODE}}\item[{\em 
\hypertarget{EFC_8h_a32a10}{
EFC\_\-OBJECT\_\-K\_\-MODE}
\label{EFC_8h_a32a10}
}]The configuration mode \index{EFC_OBJECT_K_FILTER_RTN@{EFC\_\-OBJECT\_\-K\_\-FILTER\_\-RTN}!EFC.h@{EFC.h}}\index{EFC.h@{EFC.h}!EFC_OBJECT_K_FILTER_RTN@{EFC\_\-OBJECT\_\-K\_\-FILTER\_\-RTN}}\item[{\em 
\hypertarget{EFC_8h_a32a11}{
EFC\_\-OBJECT\_\-K\_\-FILTER\_\-RTN}
\label{EFC_8h_a32a11}
}]The filter routine \index{EFC_OBJECT_K_FILTER_PRM@{EFC\_\-OBJECT\_\-K\_\-FILTER\_\-PRM}!EFC.h@{EFC.h}}\index{EFC.h@{EFC.h}!EFC_OBJECT_K_FILTER_PRM@{EFC\_\-OBJECT\_\-K\_\-FILTER\_\-PRM}}\item[{\em 
\hypertarget{EFC_8h_a32a12}{
EFC\_\-OBJECT\_\-K\_\-FILTER\_\-PRM}
\label{EFC_8h_a32a12}
}]The filter parameter \index{EFC_OBJECT_K_CFGSET_RTN@{EFC\_\-OBJECT\_\-K\_\-CFGSET\_\-RTN}!EFC.h@{EFC.h}}\index{EFC.h@{EFC.h}!EFC_OBJECT_K_CFGSET_RTN@{EFC\_\-OBJECT\_\-K\_\-CFGSET\_\-RTN}}\item[{\em 
\hypertarget{EFC_8h_a32a13}{
EFC\_\-OBJECT\_\-K\_\-CFGSET\_\-RTN}
\label{EFC_8h_a32a13}
}]The configuration set routine \index{EFC_OBJECT_K_REPORT_RTN@{EFC\_\-OBJECT\_\-K\_\-REPORT\_\-RTN}!EFC.h@{EFC.h}}\index{EFC.h@{EFC.h}!EFC_OBJECT_K_REPORT_RTN@{EFC\_\-OBJECT\_\-K\_\-REPORT\_\-RTN}}\item[{\em 
\hypertarget{EFC_8h_a32a14}{
EFC\_\-OBJECT\_\-K\_\-REPORT\_\-RTN}
\label{EFC_8h_a32a14}
}]The report routine \index{EFC_OBJECT_K_SAMPLER@{EFC\_\-OBJECT\_\-K\_\-SAMPLER}!EFC.h@{EFC.h}}\index{EFC.h@{EFC.h}!EFC_OBJECT_K_SAMPLER@{EFC\_\-OBJECT\_\-K\_\-SAMPLER}}\item[{\em 
\hypertarget{EFC_8h_a32a15}{
EFC\_\-OBJECT\_\-K\_\-SAMPLER}
\label{EFC_8h_a32a15}
}]The sampling parameters \index{EFC_OBJECT_K_EFA@{EFC\_\-OBJECT\_\-K\_\-EFA}!EFC.h@{EFC.h}}\index{EFC.h@{EFC.h}!EFC_OBJECT_K_EFA@{EFC\_\-OBJECT\_\-K\_\-EFA}}\item[{\em 
\hypertarget{EFC_8h_a32a16}{
EFC\_\-OBJECT\_\-K\_\-EFA}
\label{EFC_8h_a32a16}
}]The event analysis structure \index{EFC_OBJECT_K_ID@{EFC\_\-OBJECT\_\-K\_\-ID}!EFC.h@{EFC.h}}\index{EFC.h@{EFC.h}!EFC_OBJECT_K_ID@{EFC\_\-OBJECT\_\-K\_\-ID}}\item[{\em 
\hypertarget{EFC_8h_a32a17}{
EFC\_\-OBJECT\_\-K\_\-ID}
\label{EFC_8h_a32a17}
}]The id of this event filter/handler \end{description}
\end{Desc}

