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

Constituent: lsepw     Tag: linux-gcc


Interface   Data Structures   File List   Data Fields   Globals  

LSEPW_evt0.c File Reference

Event Version 0 formatting routines. More...

#include "dprintf.h"
#include "LSEPW_pvtdef.h"
#include "LSEP/LSEPW_evt0.h"
#include "LSEP/LSEP_evtCtb0.h"
#include "LSEP/CDF_vector.h"
#include "LSEP/CDF_cal.h"
#include "LSEP/CDF_gem_acd.h"
#include "LSEP/CDF_tkr.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/FFS.h"
#include "EDS/EBF_cid.h"
#include "EDS/EDS_fw.h"
#include "EDS/EBF_gemLocate.h"
#include "EDS/EBF_gem.h"
#include "PBS/WCT.h"
#include "PBS/MBA.h"
#include <string.h>
#include "EDS/EDR_cal.h"
#include "EDS/EDR_tkr.h"

Include dependency graph for LSEPW_evt0.c:


Data Structures

struct  _TkrStats
 Debugging structure to hold the number of strips, TOTs and length, in bytes, of the TKR data. More...

Typedefs

typedef _TkrStats TkrStats
 Typedef for struct _TkrStats.

Functions

static void tkrStatsGet (const EDR_tkr *tkr, TkrStats *stats)
 This is used to get the number of strips, TOTs and length, in bytes, of the TKR data.
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.
unsigned int * dir_cmp_copy (unsigned int *dst, EBF_dir *dir)
 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 (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 *cur, 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 unsigned int * evt6_add (LSEPW *lsepw, EDS_fwIxb *ixb, unsigned int *beg, unsigned int len32)
 Adds the specified event to the output stream.
LSEW_dgmFwEvtAdder LSEPW_evt0AdderGet (unsigned int level)
 Translates the event format level to an event add routine.

Detailed Description

Event Version 0 formatting routines.

Author:
JJRussell - russell@slac.stanford.edu
   CVS $Id: LSEPW_evt0.c,v 1.7 2005/12/05 18:24:41 russell Exp $

Function Documentation

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

unsigned int * dir_cmp_copy unsigned int *  dst,
EBF_dir *  dir
 

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.
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 LSEPW lsepw,
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:
lsepw 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 * evt1_add LSEPW lsepw,
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:
lsepw 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 * evt2_add LSEPW lsepw,
EDS_fwIxb *  ixb,
unsigned int *  cur,
unsigned int  len32
[static]
 

Adds the specified event to the output stream.

Returns:
32-bit aligned pointer to the next write location
Parameters:
lsepw Context parameter
ixb The information exchanged block
cur 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.

Returns:
32-bit aligned pointer to the next write location
Parameters:
lsepw 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 * evt4_add LSEPW lsepw,
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:
lsepw Context parameter
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) |
    +------------+-------------------+------------+-------------------+

      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 LSEPW lsepw,
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:
lsepw Context parameter
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)  |
    +--------------+----------------+---------------+----------------+

      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 * evt6_add LSEPW lsepw,
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:
lsepw Context parameter
ixb The information exchanged block
beg The beginning write pointer
len32 The number of 32-bit words available at cur

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

LSEW_dgmFwEvtAdder LSEPW_evt0AdderGet unsigned int  level  ) 
 

Translates the event format level to an event add routine.

Returns:
Pointer to the event adding routine if valid, else NULL
Parameters:
level The format level

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

static void tkrStatsGet const EDR_tkr *  tkr,
TkrStats stats
[static]
 

This is used to get the number of strips, TOTs and length, in bytes, of the TKR data.

Parameters:
tkr The unpacked tracker data
stats Structure filled in with the number of strips, TOTS and length, in bytes of the TKR data


Generated on Tue Dec 6 20:26:04 2005 by  doxygen 1.4.4