\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 $<$EFC/EFC\_\-fate.h$>$}\par
{\tt \#include $<$EFC/EFA\_\-def.h$>$}\par
{\tt \#include $<$EDS/EDS\_\-fw.h$>$}\par
{\tt \#include $<$EDS/EBF\_\-siv.h$>$}\par
{\tt \#include $<$EDS\_\-DB/EDS\_\-DB\_\-schema.h$>$}\par
\subsection*{Classes}
\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_b085aa8f718efc7c452fded106411ce9}{EFC\_\-servicesConstruct} )(void $\ast$ctl, const void $\ast$schema)
\begin{CompactList}\small\item\em Constructs the configuration parameters block. \item\end{CompactList}\item 
typedef \hyperlink{EFC__fate_8h_e8a98f2b7cecf2d5fec17c1e0903f2a2}{EFC\_\-fate}($\ast$ \hyperlink{EFC_8h_8d9cf4761d542233f8ad17829709dc9d}{EFC\_\-servicesFilter} )(void $\ast$ctl, int pktBytes, EBF\_\-pkt $\ast$pkt, EBF\_\-siv siv, EDS\_\-fwIxb $\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_33a47ef0b2df684fb20ce96780711741}{EFC\_\-servicesCfgSet} )(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_b07344830ba0c1958f1403f3550833df}{EFC\_\-servicesDestruct} )(void $\ast$ctl)
\begin{CompactList}\small\item\em Destroys this filter's context. \item\end{CompactList}\item 
typedef unsigned int($\ast$ \hyperlink{EFC_8h_4c8fe108f70591372f3e6ef23e1e2b36}{EFC\_\-servicesReport} )(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_39f707b7dd237c03f5dd54174db578a8}{
typedef struct \hyperlink{struct__EFC__services}{\_\-EFC\_\-services} \hyperlink{EFC_8h_39f707b7dd237c03f5dd54174db578a8}{EFC\_\-services}}
\label{EFC_8h_39f707b7dd237c03f5dd54174db578a8}

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

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

\begin{CompactList}\small\item\em Typedef for struct \hyperlink{struct__EFC__classes}{\_\-EFC\_\-classes}. \item\end{CompactList}\item 
typedef struct \hyperlink{struct__EFC__definition}{\_\-EFC\_\-definition} \hyperlink{EFC_8h_5e3c713c2fded2d81d618462581dbad4}{EFC\_\-definition}
\begin{CompactList}\small\item\em Typedef for struct \_\-EFC\_\-defintion. \item\end{CompactList}\item 
typedef enum \hyperlink{EFC_8h_519eff7d08618657f295a3ee892b45ae}{\_\-EFC\_\-OBJECT\_\-K} \hyperlink{EFC_8h_952095bf67328a415c698d75a047d779}{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_519eff7d08618657f295a3ee892b45ae}{\_\-EFC\_\-OBJECT\_\-K} \{ \par
\hyperlink{EFC_8h_519eff7d08618657f295a3ee892b45ae2df05a8f80b7b22960f5a5e43a0647ce}{EFC\_\-OBJECT\_\-K\_\-MODE} =  0, 
\par
\hyperlink{EFC_8h_519eff7d08618657f295a3ee892b45ae2e90f65b1d6471b074adc24cbc3bde90}{EFC\_\-OBJECT\_\-K\_\-FILTER\_\-RTN} =  1, 
\par
\hyperlink{EFC_8h_519eff7d08618657f295a3ee892b45ae8dafd2f6284c3cb8d2c4691649726433}{EFC\_\-OBJECT\_\-K\_\-FILTER\_\-PRM} =  2, 
\par
\hyperlink{EFC_8h_519eff7d08618657f295a3ee892b45aec657eb06096b4292d05afe196470dd3b}{EFC\_\-OBJECT\_\-K\_\-CFGSET\_\-RTN} =  3, 
\par
\hyperlink{EFC_8h_519eff7d08618657f295a3ee892b45aedd26511c12e7af9923f1060012096e45}{EFC\_\-OBJECT\_\-K\_\-REPORT\_\-RTN} =  4, 
\par
\hyperlink{EFC_8h_519eff7d08618657f295a3ee892b45ae6e691f2a7062622f959d97d8dbe8b8b5}{EFC\_\-OBJECT\_\-K\_\-SAMPLER} =  5, 
\par
\hyperlink{EFC_8h_519eff7d08618657f295a3ee892b45ae4a0a8ac945971ef82ebd7cfb8a72f4d7}{EFC\_\-OBJECT\_\-K\_\-EFA} =  6, 
\par
\hyperlink{EFC_8h_519eff7d08618657f295a3ee892b45ae141e6cace1d7064ad52e5ebaf947e49b}{EFC\_\-OBJECT\_\-K\_\-ID} =  7
 \}
\begin{CompactList}\small\item\em Enumeration of the objects. \item\end{CompactList}\end{CompactItemize}
\subsection*{Functions}
\begin{CompactItemize}
\item 
int \hyperlink{EFC_8h_835e133395b5950f902163874fe946fb}{EFC\_\-sizeof} (const EFC\_\-DB\_\-SchemaFilter $\ast$schema, void $\ast$prm, const \hyperlink{struct__EFC__sizes}{EFC\_\-sizes} $\ast$sizes)
\begin{CompactList}\small\item\em Returns the size, in bytes, of the filter control structure and the associated configuration constants. \item\end{CompactList}\item 
const EDS\_\-fwHandlerServicesX1 $\ast$ \hyperlink{EFC_8h_28e6d310ac4f5a3025fe1727c70be221}{EFC\_\-construct} (\hyperlink{struct__EFC}{EFC} $\ast$efc, unsigned int handler\_\-id, const EFC\_\-DB\_\-SchemaFilter $\ast$schema, unsigned int schema\_\-key, void $\ast$prm, EDS\_\-fw $\ast$edsFw, const \hyperlink{struct__EFC__definition}{EFC\_\-definition} $\ast$definition, unsigned int objects, unsigned int needs)
\begin{CompactList}\small\item\em Resolves all the indirect references in the specified master configuration file and files in both the EFC control structure and the filter specific control structure. This is merely a call-through to the general purpose constructor. \item\end{CompactList}\item 
\hypertarget{EFC_8h_939fd5ed8f4abc44f0c0bcfe42240fbb}{
unsigned int \textbf{EFC\_\-objectsAdd} (EDS\_\-fw $\ast$fw, unsigned int objects)}
\label{EFC_8h_939fd5ed8f4abc44f0c0bcfe42240fbb}

\item 
unsigned int \hyperlink{EFC_8h_ef79b0b8bfe6f47f86abb1505bb9d01a}{EFC\_\-objectsGet} (const \hyperlink{struct__EFC}{EFC} $\ast$efc)
\begin{CompactList}\small\item\em Returns the list of EDS framework objects needed by this filter. \item\end{CompactList}\item 
unsigned int \hyperlink{EFC_8h_276e7314316a9938f13d3cc3bf9d7ba5}{EFC\_\-needsGet} (const \hyperlink{struct__EFC}{EFC} $\ast$efc)
\begin{CompactList}\small\item\em Returns the list of EDS framework needs for this filter. \item\end{CompactList}\item 
void $\ast$ \hyperlink{EFC_8h_9168f815bf26a63f1c372edc382b0a55}{EFC\_\-get} (const \hyperlink{struct__EFC}{EFC} $\ast$efc, \hyperlink{EFC_8h_952095bf67328a415c698d75a047d779}{EFC\_\-OBJECT\_\-K} object)
\begin{CompactList}\small\item\em Returns a pointer to named object. \item\end{CompactList}\item 
int \hyperlink{EFC_8h_e1a8882ff3740b08c0b1546a44f66a49}{EFC\_\-set} (\hyperlink{struct__EFC}{EFC} $\ast$efc, \hyperlink{EFC_8h_952095bf67328a415c698d75a047d779}{EFC\_\-OBJECT\_\-K} object, void $\ast$value)
\begin{CompactList}\small\item\em Sets the named object to the specified value. This is primarily used for backdoor debugging. \item\end{CompactList}\item 
int \hyperlink{EFC_8h_1cff848c7cc2311f2c4f3c3369e361b4}{EFC\_\-filter} (\hyperlink{struct__EFC}{EFC} $\ast$efc, unsigned int pktBytes, EBF\_\-pkt $\ast$pkt, EBF\_\-siv siv, EDS\_\-fwIxb $\ast$ixb, int id)
\begin{CompactList}\small\item\em Calls the filter function for each of the specified events. \item\end{CompactList}\item 
const EFC\_\-DB\_\-Schema $\ast$ \hyperlink{EFC_8h_8fa11116ef429520adc710a39769a96f}{EFC\_\-lookup} (unsigned short int schema\_\-id, unsigned short int instance\_\-id)
\begin{CompactList}\small\item\em Looks up the CDM database associated with the specified {\em schema\_\-id\/} and {\em instance\_\-id\/}. \item\end{CompactList}\item 
int \hyperlink{EFC_8h_c38d3c5f5d28418ab41567e5674e7d91}{EFC\_\-modeAssociate} (\hyperlink{struct__EFC}{EFC} $\ast$efc, int mode, int configuration)
\begin{CompactList}\small\item\em Establish a new configuration to be associated with the indicated mode. \item\end{CompactList}\item 
int \hyperlink{EFC_8h_45d72fd21a77d5eb2a674501a6db12fa}{EFC\_\-modeSelect} (\hyperlink{struct__EFC}{EFC} $\ast$efc, int mode, EDS\_\-cfgInfo $\ast$info)
\begin{CompactList}\small\item\em Selects the operating environment according to the specified mode. \item\end{CompactList}\item 
int \hyperlink{EFC_8h_1507c8954f72ff6723ee3388dbc2cf16}{EFC\_\-start} (\hyperlink{struct__EFC}{EFC} $\ast$efc, unsigned int reason, unsigned int run\_\-id, unsigned int start\_\-time, unsigned int mode)
\begin{CompactList}\small\item\em EDS start run callback routine. \item\end{CompactList}\item 
void \hyperlink{EFC_8h_d800e70ce46cb344a0c29ae49a71b3f8}{EFC\_\-report} (\hyperlink{struct__EFC}{EFC} $\ast$efc, unsigned int list)
\begin{CompactList}\small\item\em Calls back the user to report on the configuration. \item\end{CompactList}\item 
\hypertarget{EFC_8h_93bb7354e683b9bd03d33b2fde215bdb}{
int \textbf{EFC\_\-teardown} (\hyperlink{struct__EFC}{EFC} $\ast$efc)}
\label{EFC_8h_93bb7354e683b9bd03d33b2fde215bdb}

\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.9 2012/01/04 20:28:08 russell Exp $
\end{verbatim}
\normalsize


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


\subsection{Typedef Documentation}
\hypertarget{EFC_8h_5e3c713c2fded2d81d618462581dbad4}{
\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}{\bf EFC\_\-definition}}}
\label{EFC_8h_5e3c713c2fded2d81d618462581dbad4}


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\_\-definitionC, along with a matching constructor, EFC\_\-constructC was added. With EFC\_\-2.0.0, the qualifying C was dropped and all references to the original version were eliminated. \hypertarget{EFC_8h_952095bf67328a415c698d75a047d779}{
\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}{\bf EFC\_\-OBJECT\_\-K}}}
\label{EFC_8h_952095bf67328a415c698d75a047d779}


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

This enumerates the objects that can be accessed and set via the EFC\_\-objectGet and EFC\_\-objectSet 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_33a47ef0b2df684fb20ce96780711741}{
\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$ {\bf EFC\_\-servicesCfgSet})(void $\ast$ctl, void $\ast$parameters)}}
\label{EFC_8h_33a47ef0b2df684fb20ce96780711741}


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_b085aa8f718efc7c452fded106411ce9}{
\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$ {\bf EFC\_\-servicesConstruct})(void $\ast$ctl, const void $\ast$schema)}}
\label{EFC_8h_b085aa8f718efc7c452fded106411ce9}


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 schema}]The defining configuration schema \end{description}
\end{Desc}
\hypertarget{EFC_8h_b07344830ba0c1958f1403f3550833df}{
\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$ {\bf EFC\_\-servicesDestruct})(void $\ast$ctl)}}
\label{EFC_8h_b07344830ba0c1958f1403f3550833df}


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_8d9cf4761d542233f8ad17829709dc9d}{
\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}{\bf EFC\_\-fate}($\ast$ {\bf EFC\_\-servicesFilter})(void $\ast$ctl, int pktBytes, EBF\_\-pkt $\ast$pkt, EBF\_\-siv siv, EDS\_\-fwIxb $\ast$ixb, unsigned int vetoes, void $\ast$result)}}
\label{EFC_8h_8d9cf4761d542233f8ad17829709dc9d}


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 pktBytes}]Number of bytes in the EBF packet \item[{\em pkt}]The EBF packet \item[{\em siv}]The EBF state information vector \item[{\em EDS\_\-fwIxb}]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_4c8fe108f70591372f3e6ef23e1e2b36}{
\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$ {\bf EFC\_\-servicesReport})(void $\ast$prm, const void $\ast$cfg, const {\bf EFC\_\-sampler} $\ast$sampler, int list)}}
\label{EFC_8h_4c8fe108f70591372f3e6ef23e1e2b36}


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_519eff7d08618657f295a3ee892b45ae}{
\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 {\bf \_\-EFC\_\-OBJECT\_\-K}}}
\label{EFC_8h_519eff7d08618657f295a3ee892b45ae}


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_519eff7d08618657f295a3ee892b45ae2df05a8f80b7b22960f5a5e43a0647ce}{
EFC\_\-OBJECT\_\-K\_\-MODE}
\label{EFC_8h_519eff7d08618657f295a3ee892b45ae2df05a8f80b7b22960f5a5e43a0647ce}
}]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_519eff7d08618657f295a3ee892b45ae2e90f65b1d6471b074adc24cbc3bde90}{
EFC\_\-OBJECT\_\-K\_\-FILTER\_\-RTN}
\label{EFC_8h_519eff7d08618657f295a3ee892b45ae2e90f65b1d6471b074adc24cbc3bde90}
}]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_519eff7d08618657f295a3ee892b45ae8dafd2f6284c3cb8d2c4691649726433}{
EFC\_\-OBJECT\_\-K\_\-FILTER\_\-PRM}
\label{EFC_8h_519eff7d08618657f295a3ee892b45ae8dafd2f6284c3cb8d2c4691649726433}
}]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_519eff7d08618657f295a3ee892b45aec657eb06096b4292d05afe196470dd3b}{
EFC\_\-OBJECT\_\-K\_\-CFGSET\_\-RTN}
\label{EFC_8h_519eff7d08618657f295a3ee892b45aec657eb06096b4292d05afe196470dd3b}
}]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_519eff7d08618657f295a3ee892b45aedd26511c12e7af9923f1060012096e45}{
EFC\_\-OBJECT\_\-K\_\-REPORT\_\-RTN}
\label{EFC_8h_519eff7d08618657f295a3ee892b45aedd26511c12e7af9923f1060012096e45}
}]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_519eff7d08618657f295a3ee892b45ae6e691f2a7062622f959d97d8dbe8b8b5}{
EFC\_\-OBJECT\_\-K\_\-SAMPLER}
\label{EFC_8h_519eff7d08618657f295a3ee892b45ae6e691f2a7062622f959d97d8dbe8b8b5}
}]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_519eff7d08618657f295a3ee892b45ae4a0a8ac945971ef82ebd7cfb8a72f4d7}{
EFC\_\-OBJECT\_\-K\_\-EFA}
\label{EFC_8h_519eff7d08618657f295a3ee892b45ae4a0a8ac945971ef82ebd7cfb8a72f4d7}
}]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_519eff7d08618657f295a3ee892b45ae141e6cace1d7064ad52e5ebaf947e49b}{
EFC\_\-OBJECT\_\-K\_\-ID}
\label{EFC_8h_519eff7d08618657f295a3ee892b45ae141e6cace1d7064ad52e5ebaf947e49b}
}]The id of this event filter/handler \end{description}
\end{Desc}



\subsection{Function Documentation}
\hypertarget{EFC_8h_28e6d310ac4f5a3025fe1727c70be221}{
\index{EFC.h@{EFC.h}!EFC\_\-construct@{EFC\_\-construct}}
\index{EFC\_\-construct@{EFC\_\-construct}!EFC.h@{EFC.h}}
\subsubsection[{EFC\_\-construct}]{\setlength{\rightskip}{0pt plus 5cm}const EDS\_\-fwHandlerServicesX1 EFC\_\-construct ({\bf EFC} $\ast$ {\em efc}, \/  unsigned int {\em id}, \/  const EFC\_\-DB\_\-SchemaFilter $\ast$ {\em schema}, \/  unsigned int {\em schema\_\-key}, \/  void $\ast$ {\em prm}, \/  EDS\_\-fw $\ast$ {\em edsFw}, \/  const {\bf EFC\_\-definition} $\ast$ {\em definition}, \/  unsigned int {\em objects}, \/  unsigned int {\em needs})}}
\label{EFC_8h_28e6d310ac4f5a3025fe1727c70be221}


Resolves all the indirect references in the specified master configuration file and files in both the EFC control structure and the filter specific control structure. This is merely a call-through to the general purpose constructor. 

\begin{Desc}
\item[Returns:]A pointer to the service vector of routines\end{Desc}
\begin{Desc}
\item[Parameters:]
\begin{description}
\item[{\em efc}]The Event Filter Control block to initialize \item[{\em id}]A unique identifier to assign to this EFC handler \item[{\em schema}]Pointer to the schema of the filter configuration file \item[{\em schema\_\-key}]The schema's file resolution key \item[{\em prm}]An optional, modifying parameter \item[{\em edsFw}]The controlling EDS framework handle \item[{\em definition}]The defining information for this filter \item[{\em objects}]The list of EDS framework objects used by this filter \item[{\em needs}]The list of EDS needs for this filter. \end{description}
\end{Desc}


References \_\-EFC\_\-definition::classes, construct\_\-efc(), \_\-EFC\_\-definition::services, and \_\-EFC\_\-definition::sizes.

Referenced by EFC\_\-stdConstruct().\hypertarget{EFC_8h_1cff848c7cc2311f2c4f3c3369e361b4}{
\index{EFC.h@{EFC.h}!EFC\_\-filter@{EFC\_\-filter}}
\index{EFC\_\-filter@{EFC\_\-filter}!EFC.h@{EFC.h}}
\subsubsection[{EFC\_\-filter}]{\setlength{\rightskip}{0pt plus 5cm}int EFC\_\-filter ({\bf EFC} $\ast$ {\em efc}, \/  unsigned int {\em pktBytes}, \/  EBF\_\-pkt $\ast$ {\em pkt}, \/  EBF\_\-siv {\em siv}, \/  EDS\_\-fwIxb $\ast$ {\em ixb}, \/  int {\em id})}}
\label{EFC_8h_1cff848c7cc2311f2c4f3c3369e361b4}


Calls the filter function for each of the specified events. 

\begin{Desc}
\item[Returns:]Status\end{Desc}
\begin{Desc}
\item[Parameters:]
\begin{description}
\item[{\em efc}]The event filter control structure \item[{\em pktBytes}]The number bytes in this packet \item[{\em pkt}]The event packet \item[{\em siv}]The state information vector \item[{\em ixb}]The Information Exchange Block \item[{\em id}]The identification of this handler\end{description}
\end{Desc}
\begin{Desc}
\item[]The user will likely not call this routine directly, but use it as the EDS\_\-fw callback routine. The parameter will be the EFC control structure. \end{Desc}


References \_\-EFC::active, \_\-EFC\_\-sampler::classes, copyResult(), \_\-EFA::cur, \_\-EFC::disabled\_\-passes, \_\-EFC::efa, EFA\_\-\_\-preprocess(), EFA\_\-postprocess(), EFA\_\-STATE\_\-K\_\-STARTED, EFC\_\-\_\-fateIsAccepted(), EFC\_\-\_\-fateIsUndecided(), \_\-EFC\_\-samplerPrescaleCtx::enabled, \_\-EFC\_\-samplerClasses::enabled, \_\-EFC::filterPrm, \_\-EFC::filterRtn, getActive(), \_\-EFC::ievt, if\_\-would\_\-have\_\-been\_\-vetoed(), \_\-EFC\_\-samplerPrescaleCtx::in, \_\-EFC::needs\_\-leaked, \_\-EFC::needs\_\-normal, \_\-EFC\_\-samplerPrescaleCtx::out, \_\-EFA::postLeft, \_\-EFC\_\-sampler::prescale, \_\-EFC\_\-samplerPrescaleCtx::prescalers, \_\-EFC::sampler, \_\-EFA::size, \_\-EFA::state, updateDisabledPasses(), updatePrescaler(), and \_\-EFC\_\-classes::vetoes.

Referenced by construct\_\-efc().\hypertarget{EFC_8h_9168f815bf26a63f1c372edc382b0a55}{
\index{EFC.h@{EFC.h}!EFC\_\-get@{EFC\_\-get}}
\index{EFC\_\-get@{EFC\_\-get}!EFC.h@{EFC.h}}
\subsubsection[{EFC\_\-get}]{\setlength{\rightskip}{0pt plus 5cm}void $\ast$ EFC\_\-get (const {\bf EFC} $\ast$ {\em efc}, \/  {\bf EFC\_\-OBJECT\_\-K} {\em object})}}
\label{EFC_8h_9168f815bf26a63f1c372edc382b0a55}


Returns a pointer to named object. 

\begin{Desc}
\item[Returns:]Pointer to the named object, or NULL if the object is non-existent\end{Desc}
\begin{Desc}
\item[Parameters:]
\begin{description}
\item[{\em efc}]The Event Filter handle \item[{\em object}]The object to get. This is one of the following set\begin{itemize}
\item EFC\_\-OBJECT\_\-K\_\-MODE\item EFC\_\-OBJECT\_\-K\_\-FILTER\_\-RTN\item EFC\_\-OBJECT\_\-K\_\-FILTER\_\-PRM\item EFC\_\-OBJECT\_\-K\_\-CFGSET\_\-RTN\item EFC\_\-OBJECT\_\-K\_\-REPORT\_\-RTN\item EFC\_\-OBJECT\_\-K\_\-SAMPLER\item EFC\_\-OBJECT\_\-K\_\-EFA\item EFC\_\-OBJECT\_\-K\_\-ID \end{itemize}
\end{description}
\end{Desc}


References \_\-EFC::cfgSetRtn, \_\-EFC::efa, EFC\_\-OBJECT\_\-K\_\-CFGSET\_\-RTN, EFC\_\-OBJECT\_\-K\_\-EFA, EFC\_\-OBJECT\_\-K\_\-FILTER\_\-PRM, EFC\_\-OBJECT\_\-K\_\-FILTER\_\-RTN, EFC\_\-OBJECT\_\-K\_\-ID, EFC\_\-OBJECT\_\-K\_\-MODE, EFC\_\-OBJECT\_\-K\_\-REPORT\_\-RTN, EFC\_\-OBJECT\_\-K\_\-SAMPLER, \_\-EFC::filterPrm, \_\-EFC::filterRtn, \_\-EFC::id, \_\-EFC::mode, \_\-EFC::reportRtn, and \_\-EFC::sampler.

Referenced by EFC\_\-stdConstruct().\hypertarget{EFC_8h_8fa11116ef429520adc710a39769a96f}{
\index{EFC.h@{EFC.h}!EFC\_\-lookup@{EFC\_\-lookup}}
\index{EFC\_\-lookup@{EFC\_\-lookup}!EFC.h@{EFC.h}}
\subsubsection[{EFC\_\-lookup}]{\setlength{\rightskip}{0pt plus 5cm}const EFC\_\-DB\_\-Schema EFC\_\-lookup (unsigned short int {\em schema\_\-id}, \/  unsigned short int {\em instance\_\-id})}}
\label{EFC_8h_8fa11116ef429520adc710a39769a96f}


Looks up the CDM database associated with the specified {\em schema\_\-id\/} and {\em instance\_\-id\/}. 

\begin{Desc}
\item[Returns:]A pointer to the filter schema. If not found NULL.\end{Desc}
\begin{Desc}
\item[Parameters:]
\begin{description}
\item[{\em schema\_\-id}]The schema id of the filter's configuration database \item[{\em instance\_\-id}]The instance id of the filter's configuratin database \end{description}
\end{Desc}
\hypertarget{EFC_8h_c38d3c5f5d28418ab41567e5674e7d91}{
\index{EFC.h@{EFC.h}!EFC\_\-modeAssociate@{EFC\_\-modeAssociate}}
\index{EFC\_\-modeAssociate@{EFC\_\-modeAssociate}!EFC.h@{EFC.h}}
\subsubsection[{EFC\_\-modeAssociate}]{\setlength{\rightskip}{0pt plus 5cm}int EFC\_\-modeAssociate ({\bf EFC} $\ast$ {\em efc}, \/  int {\em mode}, \/  int {\em configuration})}}
\label{EFC_8h_c38d3c5f5d28418ab41567e5674e7d91}


Establish a new configuration to be associated with the indicated mode. 

\begin{Desc}
\item[Return values:]
\begin{description}
\item[{\em The}]old association\end{description}
\end{Desc}
\begin{Desc}
\item[Parameters:]
\begin{description}
\item[{\em efc}]The EFC control context \item[{\em mode}]The mode, must be 0-7 \item[{\em configuration}]One of the active configurations. This number is the index that the configurations where defined\end{description}
\end{Desc}
\begin{Desc}
\item[]Because this command is not given during data-taking, ff the mode being specified is the current mode, this routine does not change the current operating configuration. \end{Desc}


References \_\-EFC\_\-cfg::byMode, \_\-EFC::cfg, \_\-EFC\_\-cfg::db, \_\-EFC\_\-cfgDb::members, and \_\-EFC\_\-cfgDb::valid.

Referenced by construct\_\-efc().\hypertarget{EFC_8h_45d72fd21a77d5eb2a674501a6db12fa}{
\index{EFC.h@{EFC.h}!EFC\_\-modeSelect@{EFC\_\-modeSelect}}
\index{EFC\_\-modeSelect@{EFC\_\-modeSelect}!EFC.h@{EFC.h}}
\subsubsection[{EFC\_\-modeSelect}]{\setlength{\rightskip}{0pt plus 5cm}int EFC\_\-modeSelect ({\bf EFC} $\ast$ {\em efc}, \/  int {\em mode}, \/  EDS\_\-cfgInfo $\ast$ {\em info})}}
\label{EFC_8h_45d72fd21a77d5eb2a674501a6db12fa}


Selects the operating environment according to the specified mode. 

\begin{Desc}
\item[Return values:]
\begin{description}
\item[{\em ==0,success}]\item[{\em !=1,failure}]\end{description}
\end{Desc}
\begin{Desc}
\item[Parameters:]
\begin{description}
\item[{\em efc}]The EFC control context \item[{\em mode}]The new mode, must be 0-7 \item[{\em info}]Returned with information about the newly selected configuration \end{description}
\end{Desc}


References \_\-EFC\_\-cfg::byMode, \_\-EFC::cfg, \_\-EFC::cfgSetRtn, \_\-EFC\_\-cfg::db, \_\-EFC::efa, EFA\_\-notify(), \_\-EFC::filterPrm, \_\-EFC::id, \_\-EFC\_\-cfgDbMember::idx, \_\-EFC::key, \_\-EFC\_\-cfgDbMember::key, \_\-EFC\_\-cfgDb::members, \_\-EFC::mode, \_\-EFC\_\-cfgDbMember::prms, \_\-EFC\_\-cfgDbMember::sampler, and \_\-EFC::sampler.

Referenced by construct\_\-efc().\hypertarget{EFC_8h_276e7314316a9938f13d3cc3bf9d7ba5}{
\index{EFC.h@{EFC.h}!EFC\_\-needsGet@{EFC\_\-needsGet}}
\index{EFC\_\-needsGet@{EFC\_\-needsGet}!EFC.h@{EFC.h}}
\subsubsection[{EFC\_\-needsGet}]{\setlength{\rightskip}{0pt plus 5cm}unsigned int EFC\_\-needsGet (const {\bf EFC} $\ast$ {\em efc})}}
\label{EFC_8h_276e7314316a9938f13d3cc3bf9d7ba5}


Returns the list of EDS framework needs for this filter. 

\begin{Desc}
\item[Returns:]The list of EDS framework needs for this filter\end{Desc}
\begin{Desc}
\item[Parameters:]
\begin{description}
\item[{\em efc}]The EFC control context \end{description}
\end{Desc}


References \_\-EFC::needs.

Referenced by construct\_\-efc().\hypertarget{EFC_8h_ef79b0b8bfe6f47f86abb1505bb9d01a}{
\index{EFC.h@{EFC.h}!EFC\_\-objectsGet@{EFC\_\-objectsGet}}
\index{EFC\_\-objectsGet@{EFC\_\-objectsGet}!EFC.h@{EFC.h}}
\subsubsection[{EFC\_\-objectsGet}]{\setlength{\rightskip}{0pt plus 5cm}unsigned int EFC\_\-objectsGet (const {\bf EFC} $\ast$ {\em efc})}}
\label{EFC_8h_ef79b0b8bfe6f47f86abb1505bb9d01a}


Returns the list of EDS framework objects needed by this filter. 

\begin{Desc}
\item[Returns:]The list of EDS framework objects needed by this filter\end{Desc}
\begin{Desc}
\item[Parameters:]
\begin{description}
\item[{\em efc}]The EFC control context \end{description}
\end{Desc}


References \_\-EFC::objects.

Referenced by construct\_\-efc().\hypertarget{EFC_8h_d800e70ce46cb344a0c29ae49a71b3f8}{
\index{EFC.h@{EFC.h}!EFC\_\-report@{EFC\_\-report}}
\index{EFC\_\-report@{EFC\_\-report}!EFC.h@{EFC.h}}
\subsubsection[{EFC\_\-report}]{\setlength{\rightskip}{0pt plus 5cm}void EFC\_\-report ({\bf EFC} $\ast$ {\em efc}, \/  unsigned int {\em list})}}
\label{EFC_8h_d800e70ce46cb344a0c29ae49a71b3f8}


Calls back the user to report on the configuration. 

\begin{Desc}
\item[Parameters:]
\begin{description}
\item[{\em efc}]The Event Filter Control Block \item[{\em list}]The bit list of which ones to report on. If 0, then report only on the current one \end{description}
\end{Desc}


References \_\-EFC::cfg, \_\-EFC\_\-cfg::db, \_\-EFC\_\-cfgDb::members, \_\-EFC::mode, \_\-EFC\_\-cfgDbMember::prms, \_\-EFC::reportRtn, \_\-EFC::sampler, \_\-EFC\_\-cfgDbMember::sampler, and \_\-EFC\_\-cfgDb::valid.\hypertarget{EFC_8h_e1a8882ff3740b08c0b1546a44f66a49}{
\index{EFC.h@{EFC.h}!EFC\_\-set@{EFC\_\-set}}
\index{EFC\_\-set@{EFC\_\-set}!EFC.h@{EFC.h}}
\subsubsection[{EFC\_\-set}]{\setlength{\rightskip}{0pt plus 5cm}int EFC\_\-set ({\bf EFC} $\ast$ {\em efc}, \/  {\bf EFC\_\-OBJECT\_\-K} {\em object}, \/  void $\ast$ {\em value})}}
\label{EFC_8h_e1a8882ff3740b08c0b1546a44f66a49}


Sets the named object to the specified value. This is primarily used for backdoor debugging. 

\begin{Desc}
\item[Return values:]
\begin{description}
\item[{\em 0,Named}]object is settable \item[{\em -1,Named}]object is not setteable\end{description}
\end{Desc}
\begin{Desc}
\item[Parameters:]
\begin{description}
\item[{\em efc}]The Event Filter handle \item[{\em object}]The object to set. The following objects are supported EFC\_\-OBJECT\_\-K\_\-MODE EFC\_\-OBJECT\_\-K\_\-FILTER\_\-RTN EFC\_\-OBJECT\_\-K\_\-FILTER\_\-PRM EFC\_\-OBJECT\_\-K\_\-CFGSET\_\-RTN EFC\_\-OBJECT\_\-K\_\-REPORT\_\-RTN \item[{\em value}]The new value \end{description}
\end{Desc}


References \_\-EFC::cfgSetRtn, EFC\_\-OBJECT\_\-K\_\-CFGSET\_\-RTN, EFC\_\-OBJECT\_\-K\_\-FILTER\_\-PRM, EFC\_\-OBJECT\_\-K\_\-FILTER\_\-RTN, EFC\_\-OBJECT\_\-K\_\-MODE, EFC\_\-OBJECT\_\-K\_\-REPORT\_\-RTN, \_\-EFC::filterPrm, \_\-EFC::filterRtn, \_\-EFC::mode, and \_\-EFC::reportRtn.\hypertarget{EFC_8h_835e133395b5950f902163874fe946fb}{
\index{EFC.h@{EFC.h}!EFC\_\-sizeof@{EFC\_\-sizeof}}
\index{EFC\_\-sizeof@{EFC\_\-sizeof}!EFC.h@{EFC.h}}
\subsubsection[{EFC\_\-sizeof}]{\setlength{\rightskip}{0pt plus 5cm}int EFC\_\-sizeof (const EFC\_\-DB\_\-SchemaFilter $\ast$ {\em schema}, \/  void $\ast$ {\em prm}, \/  const {\bf EFC\_\-sizes} $\ast$ {\em sizes})}}
\label{EFC_8h_835e133395b5950f902163874fe946fb}


Returns the size, in bytes, of the filter control structure and the associated configuration constants. 

\begin{Desc}
\item[Returns:]The size, in bytes, of the filter control structure and the associated configuration constants.\end{Desc}
\begin{Desc}
\item[Parameters:]
\begin{description}
\item[{\em schema}]Pointer to the schema of the filter configuration file \item[{\em prm}]An optional, modifying parameter \item[{\em sizes}]The sizes of the filter's various blocks\end{description}
\end{Desc}
\begin{Desc}
\item[Warning:]This is a usually a good sized object so use an appropriate allocator. \end{Desc}


References \_\-EFC\_\-sizes::cfg, and \_\-EFC\_\-sizes::ctl.

Referenced by EFC\_\-stdConstruct(), and EFC\_\-stdSizeof().\hypertarget{EFC_8h_1507c8954f72ff6723ee3388dbc2cf16}{
\index{EFC.h@{EFC.h}!EFC\_\-start@{EFC\_\-start}}
\index{EFC\_\-start@{EFC\_\-start}!EFC.h@{EFC.h}}
\subsubsection[{EFC\_\-start}]{\setlength{\rightskip}{0pt plus 5cm}int EFC\_\-start ({\bf EFC} $\ast$ {\em efc}, \/  unsigned int {\em reason}, \/  unsigned int {\em run\_\-id}, \/  unsigned int {\em start\_\-time}, \/  unsigned int {\em mode})}}
\label{EFC_8h_1507c8954f72ff6723ee3388dbc2cf16}


EDS start run callback routine. 

\begin{Desc}
\item[Returns:]Status\end{Desc}
\begin{Desc}
\item[Parameters:]
\begin{description}
\item[{\em efc}]The event filter control handle \item[{\em reason}]Suggested use is to indicate why the post stream is being started \item[{\em run\_\-id}]Suggested use is to identify the block of events between when EDS\_\-fwStart is called and EDS\_\-fwFlush is called with a stop reason \item[{\em start\_\-time}]The run start time rounded to the nearest second \item[{\em mode}]This must be the running mode. Note that a call to EDS\_\-selectMode still must be done. \end{description}
\end{Desc}


References \_\-EFC::efa, and EFA\_\-start().

Referenced by construct\_\-efc().