GLAST / LAT > DAQ and FSW > FSW > Doxygen Index> LSEP / V1-3-5 > lsepw / linux-gcc
#include "LSEP/LSEPW_evt0.h"
#include "LSEP/LSEP_evtCtb0.h"
#include "LSEPW_pvtdef.h"
#include "CDFP.h"
#include "CDFP_def.h"
#include "LSE/CDF_acd.h"
#include "LSE/CDF_tkr.h"
#include "LSE/CDF_dgn.h"
#include "LSE/CDF_err.h"
#include "LSE/CDF_acd_ped.h"
#include "LSE/CDF_acd_std.h"
#include "LSE/CDF_cal_std.h"
#include "LSE/CDF_cal_ped.h"
#include "LSE/CDF_tkr_std.h"
#include "LSE/CDF_tkr_ped.h"
#include "LSE/CDF_tkr_err.h"
#include "LSE/CDF_dgn_ped.h"
#include "LSE/CDF_dgn_std.h"
#include "LSE/CDF_gem.h"
#include "LSE/CDF_esb.h"
#include "EDS/EBF_match.h"
#include "EDS/EBF_dir.h"
#include "EDS/EBF_evt.h"
#include "EDS/EBF_tkr.h"
#include "EDS/EBF_err.h"
#include "EDS/EBF_tem.h"
#include "EDS/EBF_pkt.h"
#include "EDS/EDR_calUnpack.h"
#include "EDS/EDR_acdUnpack.h"
#include "EDS/EDR_errUnpack.h"
#include "EDS/EDR_tkrUnpack.h"
#include "EDS/ACD_unpack.h"
#include "EDS/ACD_rec.h"
#include "EDS/EDR_err.h"
#include "EDS/EDR_tkr.h"
#include "EDS/FFS.h"
#include "EDS/EBF_cid.h"
#include "EDS/EDS_fw.h"
#include "EDS/EBF_gemLocate.h"
#include "EDS/EBF_gem.h"
#include "LDT/BFP.h"
#include "LDT/FCS.h"
#include "PBS/WCT.h"
#include "PBS/MBA.h"
#include <string.h>
#include "LSE/cdf_buf_print.h"
#include "dprintf.h"
Defines | |
#define | calStatsGet(_dir) 0 |
#define | tkrStatsGet(_tkr, _stats) |
#define | display_ids(_calids, _tkrids, _tid, _size) |
Functions | |
unsigned int * | LSEPW_ctbAdd (LSEPW *lsepw, unsigned int *cur, int len32) |
Adds the Physics specific context contribution to the datagram. | |
static __inline unsigned int * | copy (void *dst, const void *src, size_t nbytes) |
Copies the specified number of bytes from the source to the destination. | |
static __inline int | ctb_trim (const EBF_ctb *ctb, unsigned int nbytes) |
Trims the trailing zeroes from the specified contributor. | |
static __inline int | evt_trim (const EBF_evt *evt, unsigned int nbytes) |
Computes the length of the event, in bytes, less the number of trailing zeroes. | |
unsigned int * | dir_raw_copy (unsigned int *dst, EBF_dir *dir) |
Copies the EBF data associated with the EBF directory into designated buffer. | |
static unsigned int | dir_aux_fill (const EDR_tkr *tkr, EBF_dirAuxDsc *aux, const EBF_dirCtbDsc *ctb) |
Callback routine for EBF_dirAuxDscFill, adding the track length to the list of of TEMs. | |
unsigned int * | dir_cmp_copy (unsigned int *dst, EBF_dir *dir, int nskip) |
Copies the EBF data associated with the EBF directory into designated buffer, compressing out the multi-packet headers and trimming the trailing zeroes. | |
static __inline int | reassemble (EBF_dir *dir, int npkts, unsigned int evt_size) |
Reassembles multi-packet events. | |
static unsigned int | dir_evt_checksum (const EBF_dir *dir) |
Calculates the checksum for the event described by dir. | |
static unsigned int * | copy_rsdTbl (unsigned int *cur, const LSEPW_rsdTbl *tbl, unsigned int *rsdBytes) |
Copies the result summary information into the output. | |
static unsigned int * | evt0_add (LSEPW *lsepw, EDS_fwIxb *ixb, unsigned int *beg, unsigned int len32) |
Adds the specified event to the output stream. | |
static unsigned int * | evt1_add (LSEPW *lsepw, EDS_fwIxb *ixb, unsigned int *beg, unsigned int len32) |
Adds the specified event to the output stream. | |
static unsigned int * | evt2_add (LSEPW *lsepw, EDS_fwIxb *ixb, unsigned int *beg, unsigned int len32) |
Adds the specified event to the output stream. | |
static unsigned int * | evt3_add (LSEPW *lsepw, EDS_fwIxb *ixb, unsigned int *beg, unsigned int len32) |
Adds the specified event to the output stream. | |
static __inline void | evt4_hdr_print (unsigned int ebw_mismatch, unsigned int esw_mismatch) |
Prints the header for EVT4/5 debugging. | |
static __inline unsigned int | evt4_toc_ctl_format (unsigned int esw_ui, unsigned int ebw_mismatch, unsigned int esw_mismatch, unsigned int aem_len) |
Composes the Table of Contents word. | |
static unsigned int * | evt4_add (LSEPW *lsepw, EDS_fwIxb *ixb, unsigned int *beg, unsigned int len32) |
Adds the specified event to the output stream. | |
static unsigned int * | evt5_add (LSEPW *lsepw, EDS_fwIxb *ixb, unsigned int *beg, unsigned int len32) |
Adds the specified event to the output stream. | |
static __inline unsigned int | evt8_std_dgn_add (CDFP_ctx *ctx, unsigned int *cur, unsigned int pos, EBF_dir *dir, const EDR_cal *cal, const EDR_tkr *tkr) |
Compression to add in any diagnostic contribution for a standard event. | |
static __inline unsigned int | evt8_ped_dgn_add (CDFP_ctx *ctx, unsigned int *cur, unsigned int pos, EBF_dir *dir, const EDR_cal *cal, const EDR_tkr *tkr) |
Compression to add in any potential diagnostic contribution for a pedestal event. | |
static __inline unsigned int * | complete_event (unsigned int *beg, unsigned int *rsdEnd, unsigned int rsdBytes, unsigned int position) |
Completes the event by filling out the event record header. | |
static unsigned int * | evt8_std_add (CDFP_ctx *ctx, EDS_fwIxb *ixb, unsigned int *beg, unsigned int len32, const CDF_esb *esb) |
Adds the specified event to the output stream. | |
static unsigned int * | evt8_ped_add (CDFP_ctx *ctx, EDS_fwIxb *ixb, unsigned int *beg, unsigned int len32, const CDF_esb *esb) |
Adds the specified event to the output stream. | |
static unsigned int * | beg8_add (CDFP_ctx *cdfp, unsigned int *beg, unsigned int len32) |
Begin datagram callback routine for level 8 formatting. | |
static unsigned int * | evt8_add (CDFP_ctx *ctx, EDS_fwIxb *ixb, unsigned int *beg, unsigned int len32) |
Adds the specified event to the output stream. | |
int | LSEPW_evt0_sizeof (unsigned int level, void *cfg) |
Returns the size, in bytes, of the control structure needed to supprot the specified format level. | |
int | LSEPW_evt0_construct (void *ctxs[16], unsigned int max_level, void *mem, const void *cfg, LSEW_dgmFw *dgmFw, const LSEPW_dgmFwServices *defaults, LSEPW *lsepw) |
Translates the event format level to a set of datagram services and initializes the context parameter. | |
int | LSEPW_evt0_level_set (void *ctxs[16], unsigned int level, LSEW_dgmFw *dgmFw, const LSEPW_dgmFwServices *defaults, LSEPW *lsepw) |
Sets the output compression level. |
CVS $Id: LSEPW_evt0.c,v 1.20 2009/10/01 16:24:28 russell Exp $
static unsigned int beg8_add | ( | CDFP_ctx * | cdfp, | |
unsigned int * | beg, | |||
unsigned int | len32 | |||
) | [static] |
Begin datagram callback routine for level 8 formatting.
cdfp | The Compressed Data Format handle | |
beg | The output buffer | |
len32 | The amount of space, in 32-bit words, available in the output buffer |
static __inline unsigned int * complete_event | ( | unsigned int * | beg, | |
unsigned int * | rsdEnd, | |||
unsigned int | rsdBytes, | |||
unsigned int | position | |||
) | [static] |
Completes the event by filling out the event record header.
beg | Pointer to the beginning of the event | |
rsdEnd | Pointer to the beginning of the rsd table/beg of event | |
rsdBytes | Length, in bytes, of the result summary table | |
position | Length, in bits, of the event portion |
static __inline unsigned int * copy | ( | void * | dst, | |
const void * | src, | |||
size_t | nbytes | |||
) | [static] |
Copies the specified number of bytes from the source to the destination.
dst | The destination | |
src | The source | |
nbytes | The number of bytes to copy. This must be a multiple of 4 bytes |
static unsigned int * copy_rsdTbl | ( | unsigned int * | cur, | |
const LSEPW_rsdTbl * | tbl, | |||
unsigned int * | rsdBytes | |||
) | [static] |
Copies the result summary information into the output.
cur | The current write position | |
tbl | The result summary data table of active descriptors | |
rsdBytes | Returned as the number of bytes in the rsd table. This may be 0, if there is no rsd table data. Note that this is does include the summary words. |
static __inline int ctb_trim | ( | const EBF_ctb * | ctb, | |
unsigned int | nbytes | |||
) | [static] |
Trims the trailing zeroes from the specified contributor.
ctb | Pointer to the beginning of the contributor | |
nbytes | Length of the contributor, in bytes |
static unsigned int dir_aux_fill | ( | const EDR_tkr * | tkr, | |
EBF_dirAuxDsc * | aux, | |||
const EBF_dirCtbDsc * | ctb | |||
) | [static] |
Callback routine for EBF_dirAuxDscFill, adding the track length to the list of of TEMs.
tkr | The unpacked tracker data | |
aux | The auxilliary EBF directory structure to fill. | |
ctb | The EBF contribution descriptor |
unsigned int * dir_cmp_copy | ( | unsigned int * | dst, | |
EBF_dir * | dir, | |||
int | nskip | |||
) |
Copies the EBF data associated with the EBF directory into designated buffer, compressing out the multi-packet headers and trimming the trailing zeroes.
dst | The destination buffer. It is assumed the user has determined the size of the copied buffer and has provided sufficient memory. | |
dir | The directory describing the data to be copied. | |
nskip | The number of bytes to skip on the first packet |
static unsigned int dir_evt_checksum | ( | const EBF_dir * | dir | ) | [static] |
Calculates the checksum for the event described by dir.
dir | The EBF directory describing the event |
The event need not be reassembled prior to calling this routine.
unsigned int * dir_raw_copy | ( | unsigned int * | dst, | |
EBF_dir * | dir | |||
) |
Copies the EBF data associated with the EBF directory into designated buffer.
dst | The destination buffer. It is assumed the user has determined the size of the copied buffer and has provided sufficient memory. | |
dir | The directory describing the data to be copied. |
static unsigned int * evt0_add | ( | LSEPW * | lsepw, | |
EDS_fwIxb * | ixb, | |||
unsigned int * | beg, | |||
unsigned int | len32 | |||
) | [static] |
Adds the specified event to the output stream.
lsepw | Standard event writing context | |
ixb | The information exchanged block | |
beg | The beginning write pointer | |
len32 | The number of 32-bit words available at cur |
static unsigned int * evt1_add | ( | LSEPW * | lsepw, | |
EDS_fwIxb * | ixb, | |||
unsigned int * | beg, | |||
unsigned int | len32 | |||
) | [static] |
Adds the specified event to the output stream.
lsepw | Standard event writing context | |
ixb | The information exchanged block | |
beg | The beginning write pointer | |
len32 | The number of 32-bit words available at cur |
static unsigned int * evt2_add | ( | LSEPW * | lsepw, | |
EDS_fwIxb * | ixb, | |||
unsigned int * | beg, | |||
unsigned int | len32 | |||
) | [static] |
Adds the specified event to the output stream.
lsepw | Standard event writing context | |
ixb | The information exchanged block | |
beg | The current write pointer | |
len32 | The number of 32-bit words available at cur |
static unsigned int * evt3_add | ( | LSEPW * | lsepw, | |
EDS_fwIxb * | ixb, | |||
unsigned int * | beg, | |||
unsigned int | len32 | |||
) | [static] |
Adds the specified event to the output stream.
lsepw | Standard event writing context | |
ixb | The information exchanged block | |
beg | The beginning write pointer | |
len32 | The number of 32-bit words available at cur |
static unsigned int * evt4_add | ( | LSEPW * | lsepw, | |
EDS_fwIxb * | ixb, | |||
unsigned int * | beg, | |||
unsigned int | len32 | |||
) | [static] |
Adds the specified event to the output stream.
lsepw | Standard event writing context | |
ixb | The information exchanged block | |
beg | The beginning write pointer | |
len32 | The number of 32-bit words available at cur |
+--------------+--------+-----------------------------------------+ | Bridge (8)|Style(4)| Event Length (20) | +--------------+--------+-----+-----------------------------------+ | AEM Length(8)| Control (7) | Event Sequence Number (17) | +------------+-+--------------+--+------------+-------------------+ | A C T D E r| TEM 0 Length (10) | A C T D E r| TEM 1 Length (10) | +------------+-------------------+------------+-------------------+ | A C T D E r| TEM 2 Length (10) | A C T D E r| TEM 3 Length (10) | +------------+-------------------+------------+-------------------+ | A C T D E r| TEM 4 Length (10) | A C T D E r| TEM 5 Length (10) | +------------+-------------------+------------+-------------------+ | A C T D E r| TEM 6 Length (10) | A C T D E r| TEM 7 Length (10) | +------------+-------------------+------------+-------------------+ | A C T D E r| TEM 8 Length (10) | A C T D E r| TEM 9 Length (10) | +------------+-------------------+------------+-------------------+ | A C T D E r| TEM A Length (10) | A C T D E r| TEM B Length (10) | +------------+-------------------+------------+-------------------+ | A C T D E r| TEM C Length (10) | A C T D E r| TEM D Length (10) | +------------+-------------------+------------+-------------------+ | A C T D E r| TEM E Length (10) | A C T D E r| TEM F Length (10) | +------------+-------------------+------------+-------------------+ | Optional word(s) | +-----------------------------------------------------------------+ Bridge Word In addition to the normal RSD and ERR bits, if bit 1 is 1, then the optional word immediately follows. The format is Bit 31: If set, 5-bit destination address follows in bits 26-30. Bit 0-25: Must be zero; Control 7 CAL Strobe 1 0: No CAL Strobe 4-Range 1 0: No 4-range readou Zero-Suppress 1 0: Zero-suppressed Marker 3 0-3: Value of the marker field Diagnostic 1 0: All TEMs agree with the expected presence or absence of the diagnostic block 1: Some TEMs disagree with the expected presence or absence. ACTDEr A 1 0/1 TEM Contributor Present/Absent C 1 0/1 Cal Data Present/Absent T 1 0/1 Tkr Data Present/Absent D 1 0/1 Diagnostic Data Absent/Present E 1 0/1 Error Block Absent/Present r 1 Reserved, must be 0.
Note the values in the bits for the 7 control bits that must be in common for each contributor are taken as is from the Event Summary Word. In the fields describing each TEM, the value bits for the Diagnostic and Error fields are taken as is, while the values of CAL/TKR present/absent bits are chosen such that the normal value would be 0. Note also this 6 bit field will be 0 in normal running.
static void evt4_hdr_print | ( | unsigned int | ebw_mismatch, | |
unsigned int | esw_mismatch | |||
) | [static] |
Prints the header for EVT4/5 debugging.
ebw_mismatch | The mismatched fields of the Event Builder Word | |
esw_mismatch | The mismatched fields of the Event Summary Word |
static __inline unsigned int evt4_toc_ctl_format | ( | unsigned int | esw_ui, | |
unsigned int | ebw_mismatch, | |||
unsigned int | esw_mismatch, | |||
unsigned int | aem_len | |||
) | [static] |
Composes the Table of Contents word.
esw_ui | The Event Summary Word | |
ebw_mismatch | The mismatched fields of the Event Builder Word | |
esw_mismatch | The mismatched fields of the Event Summary Word | |
aem_len | The length, in bytes, of the AEM contribution |
static unsigned int * evt5_add | ( | LSEPW * | lsepw, | |
EDS_fwIxb * | ixb, | |||
unsigned int * | beg, | |||
unsigned int | len32 | |||
) | [static] |
Adds the specified event to the output stream.
lsepw | Standard event writing context | |
ixb | The information exchanged block | |
beg | The beginning write pointer | |
len32 | The number of 32-bit words available at cur |
+--------------+--------+----------------------------------------+ | Bridge (8)|Style(4)| Event Length (20) | +-------+------+-------------+--+--------------------------------+ | AEM Length(8)| Control (7) | Event Sequence Number (17) | +--------------+----------------+-----------+---+----------------+ | Tem 0 Len (8)| Tem 1 Len (8) | Tem 2 Len (8) | Tem 3 Len (8) | +--------------+----------------+---------------+----------------+ | Tem 4 Len (8)| Tem 5 Len (8) | Tem 6 Len (8) | Tem 7 Len (8) | +--------------+----------------+---------------+----------------+ | Tem 8 Len (8)| Tem 9 Len (8) | Tem A Len (8) | Tem B Len (8) | +--------------+----------------+---------------+----------------+ | Tem C Len (8)| Tem D Len (8) | Tem E Len (8) | Tem F Len (8) | +--------------+----------------+---------------+----------------+ | CAL Empty Contributors (16) | TKR Empty Contributors (16) | +--------------+----------------+---------------+----------------+ | Optional word(s) | +----------------------------------------------------------------+ Bridge Word In addition to the normal RSD and ERR bits, if bit 1 is 1, then the optional word immediately follows. The format is Bit 31: If set, 5-bit destination address follows in bits 26-30. Bit 0-25: Must be zero; Bridge Word CAL/TKR Empty Contributors Word : 0: Absent 1: Present Control 7 CAL Strobe 1 0: No CAL Strobe 4-Range 1 0: No 4-range readou Zero-Suppress 1 0: Zero-suppressed Marker 3 0-3: Value of the marker field Diagnostic 1 0: No TEMs have the diagnostic bit set 1: All TEMs have the diagnostic bit set Len Length, in 32-bit words of the TEM contribution. If this contributor is not enabled (i.e. is not even in the system), then the value of this word will be 0xff.
static unsigned int * evt8_add | ( | CDFP_ctx * | ctx, | |
EDS_fwIxb * | ixb, | |||
unsigned int * | beg, | |||
unsigned int | len32 | |||
) | [static] |
Adds the specified event to the output stream.
ctx | Context parameter | |
ixb | The information exchanged block | |
beg | The beginning write pointer | |
len32 | The number of 32-bit words available at cur |
static unsigned int * evt8_ped_add | ( | CDFP_ctx * | ctx, | |
EDS_fwIxb * | ixb, | |||
unsigned int * | beg, | |||
unsigned int | len32, | |||
const CDF_esb * | esb | |||
) | [static] |
Adds the specified event to the output stream.
ctx | Context parameter | |
ixb | The information exchanged block | |
beg | The beginning write pointer | |
len32 | The number of 32-bit words available at cur | |
esb | The Event Summary Block |
static __inline unsigned int evt8_ped_dgn_add | ( | CDFP_ctx * | ctx, | |
unsigned int * | cur, | |||
unsigned int | pos, | |||
EBF_dir * | dir, | |||
const EDR_cal * | cal, | |||
const EDR_tkr * | tkr | |||
) | [static] |
Compression to add in any potential diagnostic contribution for a pedestal event.
ctx | Context parameter | |
cur | The current write pointer | |
pos | The current bit position | |
dir | The Event directory | |
cal | The unpacked tracker data, passed to the diagnostic compression routine of the tracker data and hence the beginning of either the diagnostic or the error block. | |
tkr | The unpacked tracker data, passed to the diagnostic compression routine and used to locate the end of the tracker data and hence the beginning of either the diagnostic or the error block. |
static unsigned int * evt8_std_add | ( | CDFP_ctx * | ctx, | |
EDS_fwIxb * | ixb, | |||
unsigned int * | beg, | |||
unsigned int | len32, | |||
const CDF_esb * | esb | |||
) | [static] |
Adds the specified event to the output stream.
ctx | Context parameter | |
ixb | The information exchanged block | |
beg | The beginning write pointer | |
len32 | The number of 32-bit words available at cur | |
esb | The Event Summary Block |
static __inline unsigned int evt8_std_dgn_add | ( | CDFP_ctx * | ctx, | |
unsigned int * | cur, | |||
unsigned int | pos, | |||
EBF_dir * | dir, | |||
const EDR_cal * | cal, | |||
const EDR_tkr * | tkr | |||
) | [static] |
Compression to add in any diagnostic contribution for a standard event.
ctx | Context parameter | |
cur | The current write pointer | |
pos | The current bit position | |
dir | The Event directory | |
cal | The unpacked tracker data, passed to the diagnostic compression routine of the tracker data and hence the beginning of either the diagnostic or the error block. | |
tkr | The unpacked tracker data, passed to the diagnostic compression routine and used to locate the end of the tracker data and hence the beginning of either the diagnostic or the error block. |
static __inline int evt_trim | ( | const EBF_evt * | evt, | |
unsigned int | nbytes | |||
) | [static] |
Computes the length of the event, in bytes, less the number of trailing zeroes.
evt | Pointer to the beginning of the event | |
nbytes | Length of the event in bytes |
unsigned int* LSEPW_ctbAdd | ( | LSEPW * | lsepw, | |
unsigned int * | cur, | |||
int | len32 | |||
) |
Adds the Physics specific context contribution to the datagram.
lsepw | The physics application specific context | |
cur | Pointer to the where to add the informaton | |
len32 | The length, in 32-bit words, of the available space in the datagram |
int LSEPW_evt0_construct | ( | void * | ctxs[16], | |
unsigned int | max_level, | |||
void * | mem, | |||
const void * | cfg, | |||
LSEW_dgmFw * | dgmFw, | |||
const LSEPW_dgmFwServices * | defaults, | |||
LSEPW * | lsepw | |||
) |
Translates the event format level to a set of datagram services and initializes the context parameter.
0,success | ||
-1,Specified | level is not supported | |
-2,Compression | construction failed |
ctxs | The array of contexts to be initialized | |
max_level | The format level, also the initial level selected | |
mem | The memory to carve the contexts from | |
cfg | Additional configuration information | |
dgmFw | The datagram framework handle | |
defaults | The set of default LSEPW datagram services | |
lsepw | The context parameter for the LSEPW datagram services |
int LSEPW_evt0_level_set | ( | void * | ctxs[16], | |
unsigned int | level, | |||
LSEW_dgmFw * | dgmFw, | |||
const LSEPW_dgmFwServices * | defaults, | |||
LSEPW * | lsepw | |||
) |
Sets the output compression level.
0,success | ||
-1,failure |
ctxs | The array of previously initialized user contexts | |
level | The format level | |
dgmFw | The datagram framework handle | |
defaults | The set of default LSEPW datagram services | |
lsepw | The context parameter for the LSEPW datagram services |
int LSEPW_evt0_sizeof | ( | unsigned int | level, | |
void * | cfg | |||
) |
Returns the size, in bytes, of the control structure needed to supprot the specified format level.
level | The maximum format level to support | |
cfg | Level specific configuration parameter |
static __inline int reassemble | ( | EBF_dir * | dir, | |
int | npkts, | |||
unsigned int | evt_size | |||
) | [static] |
Reassembles multi-packet events.
dir | The event directory | |
npkts | The number of packets in the event | |
evt_size | The current event size |