GLAST / LAT > DAQ and FSW > FSW > Doxygen Index> LCBT / V1-6-2 > ssrsim / rhel5-32


Interface   Data Structures   File List   Data Fields   Globals  

TDATA.c File Reference

Module to create and check a self-describing test data packet. More...

#include <LCBT/TDATA.h>
#include <LCBT/LCBT_initBoard.h>
#include <LCBT_printf.h>
#include <PBS/WCT.h>
#include <CCSDS/CCSDS_pkt.h>

Functions

void TDATA_create (unsigned short *ptr, int lenIn16b, int ccsds, TDATA_DTEST testType, unsigned int testParm)
 Create a self describing test data buffer.
void TDATA_setCcsdsParms (unsigned int appId)
 set prameters for all CCSDS packets
int TDATA_compare (unsigned short *ptr, int lenIn16b, int ccsds, int printErrs)
 Analyse a self describing test data buffer for errors.
int TDATA_compareSeq (unsigned short *ptr, int lenIn16b, int seq, int ccsds, int printErrs)
 Analyse a buffer segment of a self describing test data buffer for errors.
unsigned int TDATA_getRandCtxForSeqVal (unsigned int seed)
 Create contex to use with TDATA_getNextSeqVal().
unsigned int TDATA_getNextSeqVal (TDATA_DTEST testType, unsigned int testParm, int idx, unsigned int *randCtx)
 Create a data sequence one word at a time.
char * TDATA_testStr (TDATA_DTEST testType)
 convert test type enum to a string


Detailed Description

Module to create and check a self-describing test data packet.

Author:
Ed Bacho -- ebacho@slac.stanford.edu Self describing test data packet format is :
14 bytes - optional CCSDS header, default AppId=0x3bf 8 bytes header defined as follows unsigned short lenIn16b - length of this heeader plus data buffer to follow (does not include length of the optional CCSDS packet or 32b synch workd before CCSDS) unsigned short where top unsigned byte checksum - checksum of header bottom unsigned byte testType - type of test data packet (see below)

unsigned short testParm - parameter related to test data packet type unsigned short taskId - id of producing task (to differentiate between different senders) 2*lenIn16b bytes of data buffer

The testType and use of testParm is as follows:

testType = TDATA_DTEST_CONSTANT = 1 testParm = 16b constant value to be repeated as data

testType = TDATA_DTEST_INCREMENT = 0 testParm = 16b start value that is incremented on each 16b word

testType = TDATA_DTEST_RANDOM = 2 testParm = seed value for random generator, values are 16b but appear random in all dTypes

testType = TDATA_DTEST_WALK1 = 3 testParm = 8=walk on bytes, 16=walk on 16b words, 32=walk on 32b words

testType = TDATA_DTEST_TRANS01 = 4 testParm = number of bits of 0's before all 1's in each packet

testType = TDATA_DTEST_TRANS10 = 5 testParm = number of bits of 1's before all 0's in each packet

testType = DTEST_TASKID = 6 testParm = (not used)

The data buffer is assumed to be an array of short (16 bit) data words


Function Documentation

int TDATA_compare ( unsigned short *  ptr,
int  lenIn16b,
int  ccsds,
int  printErrs 
)

Analyse a self describing test data buffer for errors.

Parameters:
ptr 
lenIn16b 
ccsds 1=expect CCSDS header on data
printErrs 1=print errors as found
Returns:
number of errors detected This checks a data buffer created with TDATA_create(). The buffer is assumd to be complete. Buffers broken into sequences should use TDATA_compareSeq.
WARNING: Because of the sequence handling, this routine is no longer thread safe. Itassumes a single thread is calling it and that sequences of buffer segments are received in order.

References TDATA_compareSeq().

int TDATA_compareSeq ( unsigned short *  ptr,
int  lenIn16b,
int  seq,
int  ccsds,
int  printErrs 
)

Analyse a buffer segment of a self describing test data buffer for errors.

Parameters:
ptr The buffer segment to be compared
lenIn16b length of this seqment
seq sequence number of this buffer segment where seq=0 is the first
ccsds 1=expect CCSDS header on data
printErrs 1=print errors as found
Returns:
number of errors detected This checks a data buffer created with TDATA_create(). However this routine will alloc one to check the buffer when it is broken into a number segments (as done by the EBM, Event Builder Module). The sequence number of the segment must be specified and seq=0 MUST be first. Info about the buffer is stored staticly on seq=0 and used when seq!=0.
WARNING: Because of the sequence handling, this routine is no longer thread safe. It assumes a single thread is calling it and that sequences of buffer segments are received in order.

References EPRINTF, TDATA_DTEST_CONSTANT, TDATA_DTEST_INCREMENT, TDATA_DTEST_RANDOM, TDATA_DTEST_TASKID, TDATA_DTEST_TRANS01, TDATA_DTEST_TRANS10, and TDATA_DTEST_WALK1.

Referenced by TDATA_compare().

void TDATA_create ( unsigned short *  ptr,
int  lenIn16b,
int  ccsds,
TDATA_DTEST  testType,
unsigned int  testParm 
)

Create a self describing test data buffer.

Parameters:
ptr 
lenIn16b - total length of buffer including 8 byte header, data, and optional 14 byte CCSDS
ccsds 1=put CCSDS header on data sent out as event
testType Specifies the data sequence for test
testParm Parm to use with testType
Returns:
none This creates a data buffer with an 8 byte header that describes the data so that TDATA_compare() can compare and determine if the data has been corrupted.
The testType and use of testParm is as follows:

testType = TDATA_DTEST_CONSTANT testParm = 16b constant value to be repeated as data

testType = TDATA_DTEST_INCREMENT testParm = 16b start value that is incremented on each 16b word

testType = TDATA_DTEST_RANDOM testParm = seed value for ranom generator, values are 16b but appear random in all dTypes

testType = TDATA_DTEST_WALK1 testParm = 8=walk on bytes, 16=walk on 16b words, 32=walk on 32b words

testType = TDATA_DTEST_TRANS01 testParm = number of bits of 0's before all 1's in each packet

testType = TDATA_DTEST_TRANS10 testParm = number of bits of 1's before all 0's in each packet

References TDATA_DTEST_CONSTANT, TDATA_DTEST_INCREMENT, TDATA_DTEST_RANDOM, TDATA_DTEST_TASKID, TDATA_DTEST_TRANS01, TDATA_DTEST_TRANS10, and TDATA_DTEST_WALK1.

unsigned int TDATA_getNextSeqVal ( TDATA_DTEST  testType,
unsigned int  testParm,
int  idx,
unsigned int *  randCtx 
)

Create a data sequence one word at a time.

Parameters:
testType type of data sequence
testParm parm for data sequence
idx index into sequence
randCtx if testType==TDATA_DTEST_RANDOM, supply pointer to int returned from TDATA_getRandCtxForSeqVal()
Returns:
data value in sequence Create a data sequence one word at a time. TDATA_initSeq() needs to be called first.

References TDATA_DTEST_CONSTANT, TDATA_DTEST_INCREMENT, TDATA_DTEST_RANDOM, TDATA_DTEST_TASKID, TDATA_DTEST_TRANS01, TDATA_DTEST_TRANS10, and TDATA_DTEST_WALK1.

unsigned int TDATA_getRandCtxForSeqVal ( unsigned int  seed  ) 

Create contex to use with TDATA_getNextSeqVal().

Parameters:
seed seed value for random number generator
Returns:
contex to be used for random number generator

void TDATA_setCcsdsParms ( unsigned int  appId  ) 

set prameters for all CCSDS packets

Parameters:
appId set the AppId fiels within CCSDS header
Returns:
none

Referenced by SSRSIM_init().

char* TDATA_testStr ( TDATA_DTEST  testType  ) 

convert test type enum to a string

Parameters:
testType enum to turn to string
Returns:
string of given enum

References TDATA_DTEST_CONSTANT, TDATA_DTEST_INCREMENT, TDATA_DTEST_RANDOM, TDATA_DTEST_TASKID, TDATA_DTEST_TRANS01, TDATA_DTEST_TRANS10, and TDATA_DTEST_WALK1.


Generated on Fri Mar 25 12:46:16 2011 by  doxygen 1.5.8