GLAST/LAT > DAQ and FSW > FSW > Doxygen Index > LSEP / V1-2-1

Constituent: lsepw     Tag: sun-gcc


Interface   Data Structures   File List   Data Fields   Globals  

LSEPW_evt0.c File Reference

Event Version 0 formatting routines. More...

#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_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_dgn.h"
#include "LSE/CDF_err.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_pkt.h"
#include "EDS/EDR_calUnpack.h"
#include "EDS/EDR_acdUnpack.h"
#include "EDS/EDR_tkrUnpack.h"
#include "EDS/ACD_unpack.h"
#include "EDS/ACD_rec.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 "PBS/WCT.h"
#include "PBS/MBA.h"
#include <string.h>
#include "LSE/cdf_buf_print.h"
#include "dprintf.h"

Include dependency graph for LSEPW_evt0.c:


Defines

#define calStatsGet(_dir)   0
#define tkrStatsGet(_tkr, _stats)
#define display_ids(_calids, _tkrids, _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 __inline void dir_aux_fill (EBF_dir *dir, const EDR_tkr *tkr)
 Completes the auxilliary description area for the specified map 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 * copy_rsdTbl (unsigned int *cur, const EDS_rsdTbl *tbl)
 Copies the result summary information into the output.
static unsigned int * evt0_add (void *ctx, EDS_fwIxb *ixb, unsigned int *beg, unsigned int len32)
 Adds the specified event to the output stream.
static unsigned int * evt1_add (void *ctx, EDS_fwIxb *ixb, unsigned int *beg, unsigned int len32)
 Adds the specified event to the output stream.
static unsigned int * evt2_add (void *ctx, EDS_fwIxb *ixb, unsigned int *beg, unsigned int len32)
 Adds the specified event to the output stream.
static unsigned int * evt3_add (void *ctx, 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 (void *ctx, EDS_fwIxb *ixb, unsigned int *beg, unsigned int len32)
 Adds the specified event to the output stream.
static unsigned int * evt5_add (void *ctx, EDS_fwIxb *ixb, unsigned int *beg, unsigned int len32)
 Adds the specified event to the output stream.
static __inline unsigned int evt8_dgnerr_add (CDFP_ctx *ctx, unsigned int *cur, unsigned int pos, EBF_dir *dir, const EDR_tkr *tkr)
 Common routine (between pedestal and standard level 8 compression) to add in any potential diagnostic and/or error contribution.
static __inline unsigned int * complete_event (unsigned int *beg, 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 *ctx, unsigned int level, 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 *ctx, unsigned int level, LSEW_dgmFw *dgmFw, const LSEPW_dgmFwServices *defaults, LSEPW *lsepw)
 Sets the output compression level.

Detailed Description

Event Version 0 formatting routines.

Author:
JJRussell - russell@slac.stanford.edu
   CVS $Id: LSEPW_evt0.c,v 1.14 2007/04/08 22:09:45 russell Exp $

Function Documentation

static unsigned int beg8_add CDFP_ctx cdfp,
unsigned int *  beg,
unsigned int  len32
[static]
 

Begin datagram callback routine for level 8 formatting.

Parameters:
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  rsdBytes,
unsigned int  position
[static]
 

Completes the event by filling out the event record header.

Returns:
Pointer to the next location to be written
Parameters:
beg Pointer to the beginning of the event
position Length, in bits, of the event portion
rsdBytes Length, in bytes, of the result summary data

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.

Returns:
Pointer to the next destination
Parameters:
dst The destination
src The source
nbytes The number of bytes to copy. This must be a multiple of 4 bytes
Convenience routine to copy the specified number of bytes from the source address to the destination. This differs from memcpy in that it returns the address of the next destination address rather than the input source address. The code for appending data to a current destination address is cleaner with this return code.

static unsigned int * copy_rsdTbl unsigned int *  cur,
const EDS_rsdTbl *  tbl
[static]
 

Copies the result summary information into the output.

Returns:
Pointer to the next write location
Parameters:
cur The current write position
tbl The result summary data table

static __inline int ctb_trim const EBF_ctb *  ctb,
unsigned int  nbytes
[static]
 

Trims the trailing zeroes from the specified contributor.

Returns:
The length of the contributor, in bytes, lees the number of trailing zeros
Parameters:
ctb Pointer to the beginning of the contributor
nbytes Length of the contributor, in bytes

static __inline void dir_aux_fill EBF_dir *  dir,
const EDR_tkr *  tkr
[static]
 

Completes the auxilliary description area for the specified map of TEMs.

Parameters:
dir The target directory structure
tkr The unpacked tracker data

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.

Parameters:
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
This is a raw copy of the packet descriptors. The directory must described an event with truncated packet but that was not have been previously reassembled

unsigned int * dir_raw_copy unsigned int *  dst,
EBF_dir *  dir
 

Copies the EBF data associated with the EBF directory into designated buffer.

Parameters:
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.
This is a raw copy of the packet descriptors. The directory must described an event with truncated packet but that was not have been previously reassembled

static unsigned int * evt0_add void *  ctx,
EDS_fwIxb *  ixb,
unsigned int *  beg,
unsigned int  len32
[static]
 

Adds the specified event to the output stream.

Returns:
32-bit aligned pointer to the next write location
Parameters:
ctx Context parameter, unused
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 void *  ctx,
EDS_fwIxb *  ixb,
unsigned int *  beg,
unsigned int  len32
[static]
 

Adds the specified event to the output stream.

Returns:
32-bit aligned pointer to the next write location
Parameters:
ctx w Context parameter, unused
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 void *  ctx,
EDS_fwIxb *  ixb,
unsigned int *  beg,
unsigned int  len32
[static]
 

Adds the specified event to the output stream.

Returns:
32-bit aligned pointer to the next write location
Parameters:
ctx Context parameter, unused
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 void *  ctx,
EDS_fwIxb *  ixb,
unsigned int *  beg,
unsigned int  len32
[static]
 

Adds the specified event to the output stream.

Returns:
32-bit aligned pointer to the next write location
Parameters:
ctx Context parameter, unused
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 void *  ctx,
EDS_fwIxb *  ixb,
unsigned int *  beg,
unsigned int  len32
[static]
 

Adds the specified event to the output stream.

Returns:
32-bit aligned pointer to the next write location
Parameters:
ctx Context parameter, unused
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.

Parameters:
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.

Returns:
The Table of Contents word
Parameters:
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 void *  ctx,
EDS_fwIxb *  ixb,
unsigned int *  beg,
unsigned int  len32
[static]
 

Adds the specified event to the output stream.

Returns:
32-bit aligned pointer to the next write location
Parameters:
ctx Context parameter, unused
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.

Returns:
32-bit aligned pointer to the next write location
Parameters:
ctx Context parameter
ixb The information exchanged block
beg The beginning write pointer
len32 The number of 32-bit words available at cur

static __inline unsigned int evt8_dgnerr_add CDFP_ctx ctx,
unsigned int *  cur,
unsigned int  pos,
EBF_dir *  dir,
const EDR_tkr *  tkr
[static]
 

Common routine (between pedestal and standard level 8 compression) to add in any potential diagnostic and/or error contribution.

Returns:
The next bit position to write to
Parameters:
ctx Context parameter
cur The current write pointer
pos The current bit position
dir The Event directory
tkr The unpacked tracker data, 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_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.

Returns:
32-bit aligned pointer to the next write location
Parameters:
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 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.

Returns:
32-bit aligned pointer to the next write location
Parameters:
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 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.

Returns:
The length of the event, in bytes, less the number of trailing zeroes
Parameters:
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.

Parameters:
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 *  ctx,
unsigned int  level,
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.

Return values:
0,success 
-1,Specified level is not supported
-2,Compression construction failed
Parameters:
ctx Pointer to the event 0 context parameter to be initialized
level The format level
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 *  ctx,
unsigned int  level,
LSEW_dgmFw *  dgmFw,
const LSEPW_dgmFwServices defaults,
LSEPW lsepw
 

Sets the output compression level.

Return values:
0,success 
-1,failure 
Parameters:
ctx Pointer to the event 0 context parameter to be initialized
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.

Returns:
The size, in bytes, of the compression structure
Parameters:
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.

Returns:
The new event size, or -1 if the event could not be reassembled.
Parameters:
dir The event directory
npkts The number of packets in the event
evt_size The current event size


Generated on Mon Apr 9 04:01:30 2007 by  doxygen 1.4.4