GLAST / LAT > DAQ and FSW > FSW > Doxygen Index> GRBU / V0-0-6 > grbu / mv2304


Interface   Data Structures   File List   Data Fields   Globals  

GRBU_pubdefs.h File Reference

Public definitions for GRBU. More...

#include <GRB/GRB_pktdef.h>
#include <GRB/GRB_siu.h>

Typedefs

typedef struct _GRBU_pktMerge GRBU_pktMerge
typedef void(* GRBU_mrgDisposeRtn )(void *prm, GRBU_pktMerge *mrg)
 Signature for a routine to dispose of a GRB merge packet.

Functions

unsigned int GRBU_mergePacket (GRBU_pktMerge *mrg, const GRB_pktHdr *hdr, GRBU_mrgDisposeRtn rtn, void *prm)
 Add a new merge packet to the merge process.
void GRBU_mergeReset (void)
 Reset the merge machine.
unsigned int GRBU_mergeSizeof (void)
 Size of a merge packet structure.
unsigned int GRBU_mergeStart (unsigned int msk, GRB_siuStartRtn start_rtn, void *start_prm, GRB_siuProcessRtn exec_rtn, void *exec_prm, GRB_siuStopRtn stop_rtn, void *stop_prm)
 Start the merging process.


Detailed Description

Public definitions for GRBU.

CVS $Id: GRBU_pubdefs.h,v 1.3 2011/03/26 23:16:12 russell Exp $
Author:
A.P.Waite

Function Documentation

unsigned int GRBU_mergePacket ( GRBU_pktMerge mrg,
const GRB_pktHdr *  hdr,
GRBU_mrgDisposeRtn  rtn,
void *  prm 
)

Add a new merge packet to the merge process.

Parameters:
mrg (in) A merge packet header
hdr (in) Pointer to the header of the real data packet
rtn (in) Callback routine to dispose of the merge packet
prm (in) User parameter to the disposal routine
Return values:
GRBU_ENDMERGE End of merge run
GRBU_NULLPARM NULL parameter in calling sequence
GRBU_SRCOFF No merge packets expected from this source
GRBU_SRCEND Source has sent stop packet, then another packet
GRBU_SUCCESS Success
Receive a new GRB packet and push it through merging.

References _GRBU_pktMerge::dispose_prm, _GRBU_pktMerge::dispose_rtn, _GRBU_MergeControl::have, _GRBU_pktMerge::hdr, merge(), _GRBU_MergeControl::need, _GRBU_Source::queue, _GRBU_MergeControl::src, update(), and _GRBU_MergeControl::want.

unsigned int GRBU_mergeStart ( unsigned int  msk,
GRB_siuStartRtn  start_rtn,
void *  start_prm,
GRB_siuProcessRtn  exec_rtn,
void *  exec_prm,
GRB_siuStopRtn  stop_rtn,
void *  stop_prm 
)

Start the merging process.

Parameters:
msk [in] Mask of sources (CPUs) to merge
start_rtn [in] Callback to inform photon processor of "start"
start_prm [in] User parameter to "start_rtn()"
exec_rtn [in] Callback for each photon
exec_prm [in] User parameter to "start_rtn()"
stop_rtn [in] Callback to inform photon processor of "stop"
stop_prm [in] User parameter to "start_rtn()"
Return values:
GRBU_SRCMSK Invalid source (CPU) mask
GRBU_STARTPRM No photon processing routine provided
GRBU_SUCCESS Success
GRBU_mergeStart() starts a new merge process. It clears out any previous context and resets for the new CPU mask set and callback definitions. The CPU mask set uses the ITC CPU definitions and the provided mask must make sense (i.e. define at least one valid CPU and must not define any invalid CPUs). A photon processing routine must be defined with the exec_rtn parameter. The "start" and "stop" callbacks are optional and will not be called if defined as NULL.

References _GRBU_MergeControl::exec_prm, _GRBU_MergeControl::exec_rtn, GRBU_mergeReset(), _GRBU_MergeControl::have, _GRBU_MergeControl::need, _GRBU_MergeControl::stop_prm, _GRBU_MergeControl::stop_rtn, and _GRBU_MergeControl::want.


Generated on Wed Nov 21 19:30:13 2012 by  doxygen 1.5.8