ANITA Event Reader
AnitaPacketUtil.h
1 
10 
11 #ifndef ANITAPACKETUTIL_H
12 #define ANITAPACKETUTIL_H
13 
14 #ifndef ROOT_Rtypes
15 #if !defined(__CINT__) || defined(__MAKECINT__)
16 #include "Rtypes.h"
17 #endif
18 #endif
19 
20 #include "simpleStructs.h"
21 
26 //Generic Header Stuff
28 
32 void fillGenericHeader(void *thePtr, PacketCode_t code, unsigned short numBytes);
33 
35 
39 int checkPacket(void *thePtr);
40 
41 
42 
44 
49 
50 
51 
53 
57 unsigned char getVersionId(PacketCode_t code);
58 
59 
61 
65 int getPacketSize(PacketCode_t code);
66 
67 
68 
70 
74 unsigned int simpleIntCrc(unsigned int *p, unsigned int n);
76 
80 const char *packetCodeAsString(PacketCode_t code);
82 
86 int unzipZippedPacket(ZippedPacket_t *zipPacket, char *output, unsigned int numBytesOut);
88 
92 int zipBuffer(char *input, char *output, unsigned int inputBytes, unsigned int *outputBytes);
94 
98 int unzipBuffer(char *input, char *output, unsigned int inputBytes, unsigned int *outputBytes);
99 //Compressed Waveform Stuff
100 
101 
103 
107 typedef enum {
108  COMPRESS_E_OK = 0,
109  COMPRESS_E_PACK = 0x100,
110  COMPRESS_E_BADSIZE,
111  COMPRESS_E_UNPACK,
112  COMPRESS_E_NO_PEDS,
113  COMPRESS_E_BAD_PEDS,
114  COMPRESS_E_TOO_BIG,
115  COMPRESS_E_BAD_CRC,
116  COMPRESS_E_BAD_CODE
118 
120 
124 namespace AnitaCompress {
125 
126 #define MAX_WAVE_BUFFER NUM_DIGITZED_CHANNELS*MAX_NUMBER_SAMPLES*4
127 
128 
129  unsigned short bifurcate(short input);
130  short unbifurcate(unsigned short input);
131  unsigned char charbifurcate(char input);
132  char charunbifurcate(unsigned char input);
133  unsigned short bitpack(unsigned short bits,unsigned short nwords,
134  unsigned short *in, unsigned char *out);
135  void bitstrip(unsigned short nbits,unsigned short nwords,unsigned short *data);
136  int codepack(int n, unsigned int *in, unsigned char *out);
137  int codeunpack(int m, unsigned char *in, unsigned int *out);
138  unsigned int fibonacci(unsigned short input);
139  unsigned int encodeFibonacci(unsigned short input,int *numBits);
140 
141  unsigned short unfibonacci(unsigned int input);
142 
143 
144  //Now we'll add the wrapper routines that will actually be called
145 
146  CompressErrorCode_t packPedSubbedEvent(PedSubbedEventBody_t *bdPtr,
147  EncodeControlStruct_t *cntlPtr,
148  unsigned char *output,
149  int *numBytes);
150  CompressErrorCode_t unpackToPedSubbedEvent(PedSubbedEventBody_t *bdPtr,
151  unsigned char *input,
152  int numBytes);
153  CompressErrorCode_t unpackOneSurfToPedSubbedEvent(PedSubbedEventBody_t *bdPtr,
154  unsigned char *input,
155  int numBytes);
156  CompressErrorCode_t unpackOneWaveToPedSubbedEvent(PedSubbedEventBody_t *bdPtr,
157  unsigned char *input,
158  int numBytes);
160  unpackToPedSubbedEventWithStats(PedSubbedEventBody_t *bdPtr,
161  unsigned char *input,
162  int numBytes,
163  EncodeControlStruct_t *cntlPtr,
164  int *sizeArray);
165 
166 
167 //And here are it's worker routines
168  void fillMinMaxMeanRMS(SurfChannelPedSubbed_t *chanPtr);
169  unsigned short simpleCrcShort(unsigned short *p, unsigned long n);
170  int encodeChannel(ChannelEncodingType_t encType, SurfChannelFull_t *chanPtr, unsigned char *buffer);
171  CompressErrorCode_t decodeChannel(EncodedSurfChannelHeader_t *encChanHdPtr, unsigned char *input, SurfChannelFull_t *chanPtr);
172  int encodeWaveNone(unsigned char *buffer,SurfChannelFull_t *chanPtr);
173  CompressErrorCode_t decodeWaveNone(unsigned char *input,int numBytes,SurfChannelFull_t *chanPtr);
174 
175  int encodePSChannel(ChannelEncodingType_t encType, SurfChannelPedSubbed_t *chanPtr, unsigned char *buffer) ;
176  CompressErrorCode_t decodePSChannel(EncodedSurfChannelHeader_t *encChanHdPtr,unsigned char *input, SurfChannelPedSubbed_t *chanPtr);
177 
178 
179  int encodePSWaveNone(unsigned char *buffer,SurfChannelPedSubbed_t *chanPtr);
180  CompressErrorCode_t decodePSWaveNone(unsigned char *input,int numBytes,SurfChannelPedSubbed_t *chanPtr);
181 
182  int encodePSWave12bitBinary(unsigned char *buffer,SurfChannelPedSubbed_t *chanPtr);
183  CompressErrorCode_t decodePSWave12bitBinary(unsigned char *input,int numBytes,SurfChannelPedSubbed_t *chanPtr);
184 
185  int encodePSWaveLosslessBinary(unsigned char *buffer,SurfChannelPedSubbed_t *chanPtr,ChannelEncodingType_t *encTypePtr );
186  CompressErrorCode_t decodePSWaveLosslessBinary(unsigned char *input,int numBytes,SurfChannelPedSubbed_t *chanPtr, ChannelEncodingType_t encType);
187 
188  int encodePSWaveLosslessFibonacci(unsigned char *buffer,SurfChannelPedSubbed_t *chanPtr);
189  CompressErrorCode_t decodePSWaveLosslessFibonacci(unsigned char *input,int numBytes,SurfChannelPedSubbed_t *chanPtr);
190 
191  int encodePSWaveLosslessBinFibCombo(unsigned char *buffer,SurfChannelPedSubbed_t *chanPtr, ChannelEncodingType_t *encTypePtr);
192  CompressErrorCode_t decodePSWaveLosslessBinFibCombo(unsigned char *input,int numBytes,SurfChannelPedSubbed_t *chanPtr, ChannelEncodingType_t encType);
193 
194 
195  int encodePSWaveLossyMulawOptimally(unsigned char *buffer,SurfChannelPedSubbed_t *chanPtr,int mulawBits, ChannelEncodingType_t *encTypePtr);
196  int encodePSWaveLossyMuLaw(unsigned char *buffer,SurfChannelPedSubbed_t *chanPtr,ChannelEncodingType_t encType);
197  CompressErrorCode_t decodePSWaveLossyMuLaw(unsigned char *input,int numBytes,SurfChannelPedSubbed_t *chanPtr,ChannelEncodingType_t encType);
198 
199 
200 
201  void getInputAndMuLawBits(ChannelEncodingType_t encType, int *inputPtr,
202  int *mulawPtr) ;
203 
204 
205  ChannelEncodingType_t getEncodingTypeFromInputAndMuLawBits(int inputBits,
206  int mulawBits);
207 
208 
209  ChannelEncodingType_t getBinaryEncType(int bitSize);
210  int getBinaryBitSize(ChannelEncodingType_t encType);
211  ChannelEncodingType_t getBinFibEncType(int bitSize);
212  int getBinFibBitSize(ChannelEncodingType_t encType);
213 
214  const char *compressErrorCodeAsString(CompressErrorCode_t code);
215 
216 #define PACKVALS 4 // no. of 16-bit values packed into each unit
217 #define PACKWDS 3 // no. of 16-bit words the values are packed into
218  void unpack12bit(unsigned short *w, void *srcp);
219  void pack12bit(unsigned short *w, unsigned char *destp);
220 
221 
222  char convertToMuLaw(short input, int inputBits, int mulawBits);
223  unsigned char convertToMuLawUC(short input, int inputBits,int mulawBits);
224  short convertFromMuLawUC(unsigned char input, int outputBits, int mulawBits);
225  short convertFromMuLaw(char input, int outputBits, int mulawBits);
226 
227 
228  unsigned int fibonacci(unsigned short input);
229  unsigned int encodeFibonacci(unsigned short input,int *numBits);
230  unsigned short unfibonacci(unsigned int input);
231 }
232 
233 #endif //ANITAPACKETUTIL_H
AnitaCompress – Tools to unpack compressed waveform data.
void fillGenericHeader(void *thePtr, PacketCode_t code, unsigned short numBytes)
fillGenericHeader – utility function
ChannelEncodingType_t
The encoding enumeration.
int unzipZippedPacket(ZippedPacket_t *zipPacket, char *output, unsigned int numBytesOut)
unzipZippedPacket – utility function
The Generic Header.
unsigned char getVersionId(PacketCode_t code)
getVersionId – utility function
CompressErrorCode_t
CompressErrorCode_t – Enumeration for compression errors.
Pedestal subtracted event format.
int getPacketSize(PacketCode_t code)
getPacketSize – utility function
const char * packetCodeAsString(PacketCode_t code)
packetCodeAsString – utility function
int checkPacket(void *thePtr)
checkPacket – utility function
Zipped packet – Telemetered.
PacketCode_t
The Packet Code.
unsigned int simpleIntCrc(unsigned int *p, unsigned int n)
simpleIntCrc – utility function
A complete pedestal subtracted SURF channel.
int unzipBuffer(char *input, char *output, unsigned int inputBytes, unsigned int *outputBytes)
unzipBuffer – utility function
A complete SURF channel.
int zipBuffer(char *input, char *output, unsigned int inputBytes, unsigned int *outputBytes)
zipBuffer – utility function
int simplePacketCheck(GenericHeader_t *gHdr, PacketCode_t code)
simplePacketCheck – utility function
Channel header for encoded data.