GLAST / LAT > DAQ and FSW > FSW > Doxygen Index> QSSP / dev > qssp / rhel5-32


Interface   Data Structures   File List   Data Fields   Globals  

QSSP_span.c File Reference

Support functions for QSSP_span. More...

#include <QSSP/QSSP_span.h>
#include <QSSP/QSSP_point.h>
#include <QSSP_point_p.h>
#include <LSE/LSEW_ctxTim.h>
#include <EDS/EBF_gem.h>

Functions

__inline void QSSP_spanV0Complete (QSSP_spanV0 *span)
 Completes the derived values of the QSSP_spanV0 structure.
static const unsigned int * qssp_timetone_decode (QSD_timetone *timetone, const QSD_timetone *base, const unsigned int *dat, int flags)
 Decodes one timetone structure based on the differences.
static __inline const unsigned
int * 
qssp_timetones_decode (QSD_timetones *timetones, const QSD_timetones *base, const unsigned int *dat, unsigned int flags)
 Decodes the next set current timetone records into current.
const unsigned int * QSSP_spanV0DecodeTwo (int *diff_p, QSSP_spanV0 *cumulative, QSSP_spanV0 *current, const unsigned int *dat, unsigned char bridge)
 Decodes two headers that are just straight copies.
const unsigned int * QSSP_spanV0DecodeOne (int *diff_p, QSSP_spanV0 *cumulative, QSSP_spanV0 *current, const unsigned int *dat, unsigned char bridge)
 Decodes one header that is just a straight copy.
const unsigned int * QSSP_spanV0DecodeDiff (int *diff_p, QSSP_spanV0 *cumulative, QSSP_spanV0 *current, const unsigned int *dat, unsigned char bridge)
 Decodes the sample point information when it is encoded as a difference from the previous point to the current point.
void QSSP_spanV0Update (QSSP_spanV0 *dst, const QSSP_spanV0 *src)
 Logically combines the source span record with the destination span record.
__inline void QSSP_spanV1Complete (QSSP_spanV1 *span)
 Completes the derived values of the QSSP_spanV1 structure.
const unsigned int * QSSP_spanV1DecodeTwo (int *diff_p, QSSP_spanV1 *cumulative, QSSP_spanV1 *current, const unsigned int *dat, unsigned char bridge)
 Decodes two headers that are just straight copies.
const unsigned int * QSSP_spanV1DecodeOne (int *diff_p, QSSP_spanV1 *cumulative, QSSP_spanV1 *current, const unsigned int *dat, unsigned char bridge)
 Decodes one header that is just a straight copy.
const unsigned int * QSSP_spanV1DecodeDiff (int *diff_p, QSSP_spanV1 *cumulative, QSSP_spanV1 *current, const unsigned int *dat, unsigned char bridge)
 Decodes the sample point information when it is encoded as a difference from the previous point to the current point.
void QSSP_spanV1Update (QSSP_spanV1 *dst, const QSSP_spanV1 *src)
 Logically combines the source span record with the destination span record.


Detailed Description

Support functions for QSSP_span.

Author:
JJRussell - russell@slac.stanford.edu

   CVS $Id: QSSP_span.c,v 1.2 2011/03/29 00:14:57 russell Exp $

Function Documentation

__inline void QSSP_spanV0Complete ( QSSP_spanV0 span  ) 

Completes the derived values of the QSSP_spanV0 structure.

Parameters:
span The sample span structure to complete

References _QSSP_spanV0::esequence, _QSSP_spanV0::etime, _QSSP_spanV0::points, qssp_pointV0_esequence_compute(), and qssp_pointV0_etime_compute().

Referenced by QSSP_spanV0DecodeOne(), QSSP_spanV0DecodeTwo(), QSSP_spanV0Update(), qstd_sampleV0_add(), and qstd_sampleV0_decode().

const unsigned int * QSSP_spanV0DecodeDiff ( int *  diff_p,
QSSP_spanV0 cumulative,
QSSP_spanV0 current,
const unsigned int *  dat,
unsigned char  bridge 
)

Decodes the sample point information when it is encoded as a difference from the previous point to the current point.

Returns:
The next location to continue the decoding
Parameters:
diff_p Pointer to the current sequence number difference
cumulative The cumulative span
current The current span
dat The input data to decode from
bridge The record's bridge word

References _QSSP_pointV0::gemClock, _QSSP_spanV0::points, QSSP_pointV0Complete(), QSSP_spanV0Update(), qssp_timetones_decode(), _QSSP_pointV0::relative, _QSSP_pointV0::sequence, and _QSSP_pointV0::timetones.

Referenced by decode_sampleV0_2().

static const unsigned int QSSP_spanV0DecodeOne ( int *  diff_p,
QSSP_spanV0 cumulative,
QSSP_spanV0 current,
const unsigned int *  dat,
unsigned char  bridge 
)

Decodes one header that is just a straight copy.

Returns:
The next address to decode from
Parameters:
diff_p Pointer to the current sequence number difference
cumulative The cumulative span
current The current span
dat The input data to decode from
bridge The record's bridge word

References _QSSP_spanV0::points, qssp_pointV0_copy(), and QSSP_spanV0Complete().

Referenced by decode_sampleV0_1().

const unsigned int * QSSP_spanV0DecodeTwo ( int *  diff_p,
QSSP_spanV0 cumulative,
QSSP_spanV0 current,
const unsigned int *  dat,
unsigned char  bridge 
)

Decodes two headers that are just straight copies.

Returns:
The next address to decode from
Parameters:
diff_p Pointer to the current sequence number difference
cumulative The cumulative span
current The current span
dat The input data to decode from
bridge The record's bridge word

References _QSSP_spanV0::points, qssp_pointV0_copy(), and QSSP_spanV0Complete().

Referenced by decode_sampleV0_0().

void QSSP_spanV0Update ( QSSP_spanV0 dst,
const QSSP_spanV0 src 
)

Logically combines the source span record with the destination span record.

Parameters:
dst The destination span record
src The source span recode
Updatine a span record involves three operations
  • Replacing the end point in the destination span record with the end point in the source span record
  • Recalculating the delta time and delta sequence values
  • Adding the incremental fields. For V0 there are no such fields

References _QSSP_spanV0::points, and QSSP_spanV0Complete().

Referenced by QSSP_spanV0DecodeDiff().

__inline void QSSP_spanV1Complete ( QSSP_spanV1 span  ) 

Completes the derived values of the QSSP_spanV1 structure.

Parameters:
span The sample span structure to complete

References _QSSP_spanV1::esequence, _QSSP_spanV1::etime, _QSSP_spanV1::points, qssp_pointV0_esequence_compute(), and qssp_pointV0_etime_compute().

Referenced by QSSP_spanV1DecodeOne(), QSSP_spanV1DecodeTwo(), QSSP_spanV1Update(), and span_transfer().

const unsigned int * QSSP_spanV1DecodeDiff ( int *  diff_p,
QSSP_spanV1 cumulative,
QSSP_spanV1 current,
const unsigned int *  dat,
unsigned char  bridge 
)

Decodes the sample point information when it is encoded as a difference from the previous point to the current point.

Returns:
The next location to continue the decoding
Parameters:
diff_p Pointer to the current sequence number difference
cumulative The cumulative span
current The current span
dat The input data to decode from
bridge The record's bridge word

References _QSSP_pointV0::gemClock, _QSSP_spanV1::points, QSSP_pointV0Complete(), QSSP_spanV1Update(), qssp_timetones_decode(), _QSSP_pointV0::relative, _QSSP_pointV0::sequence, and _QSSP_pointV0::timetones.

static const unsigned int QSSP_spanV1DecodeOne ( int *  diff_p,
QSSP_spanV1 cumulative,
QSSP_spanV1 current,
const unsigned int *  dat,
unsigned char  bridge 
)

Decodes one header that is just a straight copy.

Returns:
The next address to decode from
Parameters:
diff_p Pointer to the current sequence number difference
cumulative The cumulative span
current The current span
dat The input data to decode from
bridge The record's bridge word

References _QSSP_spanV1::points, qssp_pointV0_copy(), and QSSP_spanV1Complete().

const unsigned int * QSSP_spanV1DecodeTwo ( int *  diff_p,
QSSP_spanV1 cumulative,
QSSP_spanV1 current,
const unsigned int *  dat,
unsigned char  bridge 
)

Decodes two headers that are just straight copies.

Returns:
The next address to decode from
Parameters:
diff_p Pointer to the current sequence number difference
cumulative The cumulative span
current The current span
dat The input data to decode from
bridge The record's bridge word

References _QSSP_spanV1::points, qssp_pointV0_copy(), and QSSP_spanV1Complete().

void QSSP_spanV1Update ( QSSP_spanV1 dst,
const QSSP_spanV1 src 
)

Logically combines the source span record with the destination span record.

Parameters:
dst The destination span record
src The source span recode
Updatine a span record involves two operations
  • Replacing the end point in the destination span record with the end point in the source span record
  • Adding the incremental fields, such as the elapsed time and counts field

References _QSSP_spanV1::nerror, _QSSP_spanV1::nmissed, _QSSP_spanV1::ntotal, _QSSP_spanV1::nused, _QSSP_spanV1::points, and QSSP_spanV1Complete().

Referenced by add_samples(), and QSSP_spanV1DecodeDiff().

static const unsigned int * qssp_timetone_decode ( QSD_timetone *  timetone,
const QSD_timetone *  base,
const unsigned int *  dat,
int  flags 
) [static]

Decodes one timetone structure based on the differences.

Returns:
The next address to decode from
Parameters:
timetone The target timetone record
base The base timetone record. The decoded differences will be added to this structure
dat The data to be decoded
flags Flags used to interpret the data to be decoded
  • Bit 0 indicates the absolute Spectrum-Astro Epoch time in seconds is encoded in the the data
  • Bit 1 indicates the time actual timetone flags are stored in the data

Referenced by qssp_timetones_decode().

static __inline const unsigned int * qssp_timetones_decode ( QSD_timetones *  timetones,
const QSD_timetones *  base,
const unsigned int *  dat,
unsigned int  flags 
) [static]

Decodes the next set current timetone records into current.

Returns:
A pointer to the next 32-bit word to decode
Parameters:
timetones The timetone structure to receive the decoded data
base The base timetone structure. This is needed because the timetones are stored in a differential format
dat The data stream
flags Two 2-bit decoding flags, stored left-justified, the first set for the previous timetone record and the second set for the current timetone record. See
See also:
qssp_timetone_decode for their meanings

References qssp_timetone_decode().

Referenced by QSSP_spanV0DecodeDiff(), and QSSP_spanV1DecodeDiff().


Generated on Mon Mar 28 17:15:55 2011 by  doxygen 1.5.8