GLAST / LAT > DAQ and FSW > FSW > Doxygen Index> EDS / V2-10-1 > ebfio / rad750


Interface   Data Structures   File List   Data Fields   Globals  

LCBP.c File Reference

LCB Virtual Device. More...

#include "EDS/LCBV.h"
#include "EDS/io/LCBP.h"
#include "EDS/io/EBF_pkts.h"
#include "EDS/EBF_pkt.h"
#include "EDS/EBF_evt.h"
#include "EDS/EBF_edw.h"
#include "EDS/EBF_gem.h"
#include "EDS/EBF_gemLocate.h"
#include "PBS/FORK.h"
#include "PBS/TASK.h"
#include "PBS/MBA.h"
#include "PBI/Alias.h"

Classes

struct  _EDM
 EDM control/context handle for the Event Delivery Model. More...
struct  _LCBP_fork
 Event fork task. More...
struct  _LCBP_pktCbp
 Binds an event call back routine with its parameter. More...
struct  _LCBP
 Layout of the control block for the virtual LCB. More...

Typedefs

typedef struct _EDM EDM
 Typedef for struct _EDM.
typedef struct _LCBP_fork LCBP_fork
 Typedef for struct _LCBP_fork.
typedef struct
_LCBP_pktCbp 
LCBP_pktCbp
 Typedef for struct _LCBP_pktCbp.
typedef struct _LCBPLCBP
 Typedef for a pointer to the struct _LCBP.

Functions

 ALIAS_FNC (unsigned int, LCBP_evt_cb_set, LCBP_pktCbSet)
 ALIAS_END (LCBP)
int EDM_construct (EDM *edm)
 Constructor for an EDM handle.
int EDM_wait (EDM *edm, unsigned int edw, EBF_pkt *pkt)
 Standard event handler for EDM.
static unsigned int defaultCb (void *prm, unsigned int edw, EBF_pkt *pkt)
 Default callback routine.
static int evtHandler (LCBP lcb, EBF_pkt *pkt)
 FORK callback dispatch routine.
static unsigned int normal_delivery (LCBP lcb)
 Normal packet delivery.
static unsigned int timed_delivery (LCBP lcb)
 Normal packet delivery.
LCBP LCBP_get ()
 Returns a pointer to the virtual LCB control block.
unsigned int LCBP_create (LCBP lcb)
 Initializes the LCB virtual device control block.
int LCBP_sizeof ()
 Returns the size, in bytes, of a virtual LCB control block.
void LCBP_construct (LCBP lcb)
 Constructs (initializes) the specified virtual LCB control block.
unsigned int LCBP_edm_configure (LCBP lcb, unsigned int style, void *prm)
 Sets the event deliver style.
unsigned int LCBP_edm_reset (LCBP lcb)
 Resets the LCB handle, preparing it for a new set of data. This is generally called when switching to a new event stream.
unsigned int LCBP_pktsDeliver (LCBP lcb)
 Feeds one packet at a time to the user provided callback routine.
unsigned int LCBP_pktsConnect (LCBP lcb, EBF_pkts pkts)
 Connect a stream of packets to the virtual LCB.
EBF_pkts LCBP_pktsQuery (LCBP lcb)
 Returns the current EBF_pkts.
unsigned int LCBP_evt_cb_set (LCBP lcb, unsigned int proto, LCBV_pktCb rtn, void *prm)
 Establishes a callback handler for the specified protocal.
unsigned int LCBP_evt_enable (LCBP lcb, int enable)
 Enables/Disables the flow of events.
unsigned int LCBP_evt_handler_create (LCBP lcb, int priority)
 Creates the event que handler service task.
unsigned int LCBP_evt_que_install (LCBP lcb, FORK_que *que)
 Installs queue from fcb as the task message queue for event traffic.
FORK_que * LCBP_evt_que_get (LCBP lcb, int que_id)
 Installs queue from fcb as the task message queue for event traffic.
unsigned int LCBP_pktsRngFree (LCBP lcb, EBF_pkt *from, EBF_pkt *to)
 Dummy implementation of the corresponds LCBD routine.

Variables

static struct _LCBP Lcbp = { 0 }
 Static instance of the packet LCB control block.


Detailed Description

LCB Virtual Device.

Author:
JJRussell - russell@slac.stanford.edu

   CVS $Id: LCBP.c,v 1.6 2009/05/04 22:15:02 russell Exp $

Function Documentation

static int defaultCb ( void *  prm,
unsigned int  edw,
EBF_pkt pkt 
) [static]

Default callback routine.

Returns:
0, always, indicating to press-on
Parameters:
prm The user parameter (ignored)
edw The event descriptor word (ignored)
pkt The data packet

int EDM_construct ( EDM edm  ) 

Constructor for an EDM handle.

Returns:
Status
Parameters:
edm The target EDM handle

int EDM_wait ( EDM edm,
unsigned int  edw,
EBF_pkt pkt 
)

Standard event handler for EDM.

Returns:
Whatever the user's event handler returns
Parameters:
edm The EDM control/context handle
edw The LCB's event descriptor word
pkt The data packet

static int evtHandler ( LCBP  lcb,
EBF_pkt pkt 
) [static]

FORK callback dispatch routine.

Parameters:
lcb The virtual LCB device handle
pkt The data packet

void LCBP_construct ( LCBP  lcb  ) 

Constructs (initializes) the specified virtual LCB control block.

Parameters:
lcb The virtual LCB control block to construct

unsigned int LCBP_create ( LCBP  lcb  ) 

Initializes the LCB virtual device control block.

Returns:
Status
Parameters:
lcb The virtual LCB device handle

unsigned int LCBP_edm_configure ( LCBP  lcb,
unsigned int  style,
void *  prm 
)

Sets the event deliver style.

Returns:
Status
Parameters:
lcb The virtual LCB device handle
style The deliver style
prm Parameter specific to the delivery style

unsigned int LCBP_edm_reset ( LCBP  lcb  ) 

Resets the LCB handle, preparing it for a new set of data. This is generally called when switching to a new event stream.

Returns:
Status
Parameters:
lcb The LCB control/context handle

unsigned int LCBP_evt_cb_set ( LCBP  lcb,
unsigned int  proto,
LCBV_pktCb  rtn,
void *  prm 
)

Establishes a callback handler for the specified protocal.

Return values:
0,Success 
-1,Protocal out-of-range
Parameters:
lcb The virtual LCB device handle
proto The protocol number
rtn The callback routine
prm Parameter to the callback routine

unsigned int LCBP_evt_enable ( LCBP  lcb,
int  enable 
)

Enables/Disables the flow of events.

Return values:
0,Event enable was not set before this call
1,Event enable was set before this call
Anything else, an LCBP error
Parameters:
lcb The virtual LCB device handle
enable Enable (1) / Disable (0) flag

unsigned int LCBP_evt_handler_create ( LCBP  lcb,
int  priority 
)

Creates the event que handler service task.

Returns:
Status
Parameters:
lcb The LCBP driver handle
priority The priority of the task. If specified as -1, then a default value is assigned.

FORK_que* LCBP_evt_que_get ( LCBP  lcb,
int  que_id 
)

Installs queue from fcb as the task message queue for event traffic.

Return values:
Pointer to the fork que or NULL if non-existent
Parameters:
lcb Pointer to private LCBP structure
que_id The FORK que id

unsigned int LCBP_evt_que_install ( LCBP  lcb,
FORK_que *  que 
)

Installs queue from fcb as the task message queue for event traffic.

Return values:
0,currently there is no failure mode
Parameters:
lcb Pointer to private LCBP structure
que The FORK que to use

LCBP LCBP_get ( void   ) 

Returns a pointer to the virtual LCB control block.

Returns:
A pointer to the virtual LCB control block

unsigned int LCBP_pktsConnect ( LCBP  lcb,
EBF_pkts  pkts 
)

Connect a stream of packets to the virtual LCB.

Returns:
Status
Parameters:
lcb The virtual LCB device handle
pkts The vector of packets

unsigned int LCBP_pktsDeliver ( LCBP  lcb  ) 

Feeds one packet at a time to the user provided callback routine.

Returns:
A bit mask of LCBP_PKT_FATE_M from the terminating callback or LCBP_PKT_FATE_M_EOF;
Parameters:
lcb The virtual LCB device handle
The signature and return values are built to match that of the actual LCBP driver. Therefore, the user callback routine should work in both environments. The cavaet is that there obviously non-portable things one can do in the callback, like manipulating the contents of the vector of packets. The point is, that with this routine, at least the capability of writing a portable processing routine exists.

EBF_pkts LCBP_pktsQuery ( LCBP  lcb  ) 

Returns the current EBF_pkts.

Returns:
The current EBF_pkts
Parameters:
lcb The virtual LCB device handle

unsigned int LCBP_pktsRngFree ( LCBP  lcb,
EBF_pkt from,
EBF_pkt to 
)

Dummy implementation of the corresponds LCBD routine.

Returns:
Status
Parameters:
lcb The virtual LCB device handle
from The address to start the free at.
to The address of the last packet to free.

int LCBP_sizeof ( void   ) 

Returns the size, in bytes, of a virtual LCB control block.

Returns:
The size, in bytes, of a virtual LCB control block.

static unsigned int normal_delivery ( LCBP  lcb  )  [static]

Normal packet delivery.

Parameters:
lcb The virtual LCB device handle

static unsigned int timed_delivery ( LCBP  lcb  )  [static]

Normal packet delivery.

Parameters:
lcb The virtual LCB device handle


Generated on Fri Feb 26 09:35:46 2010 by  doxygen 1.5.3