47 FrFile *iFile = FrFileINew(fname);
50 printf(
" ReadFrFile(): cannot open the input file %s\n", fname);
55 printf(
" ReadFrFile(): no output array specified \n");
65 char *refC = (
char *)&ref;
68 if (tskip<0) tskip=0.;
81 FrAdcData *adc = NULL;
82 FrProcData *proc = NULL;
83 FrSerData *ser = NULL;
84 FrSimData *
sim = NULL;
94 double gt,gt0,gts,gte;
95 gts = FrFileITStart(iFile);
96 gte = FrFileITEnd(iFile);
99 int nskip =
int( tskip/frlen );
102 double fskip = tskip - nskip*frlen;
104 gt = gts + nskip*frlen;
109 iFile->compress = 255;
121 if (!strcasecmp(channel_type,
"adc"))
123 adc = FrAdcDataReadT(iFile,cname,gt+1.
e-7);
124 if (adc == NULL) { failure =
true; }
125 else { datap = adc->data; }
127 else if (!strcasecmp(channel_type,
"proc"))
129 proc = FrProcDataReadT(iFile,cname,gt+1.
e-7);
130 if (proc == NULL) { failure =
true; }
131 else { datap = proc->data; }
135 printf(
" ReadFrFile() error: unknown channel type %s\n",
140 printf(
" ReadFrFile() error: channel %s is not found in file %s\n",
147 if(datap == NULL )
continue;
157 if (!datap->dx[0]==0.) rate = 1./datap->dx[0];
158 nn =
int(tlen * rate);
162 printf(
" ReadFrFile: time interval too short, return no data.\n");
175 iskip =
int(fskip * rate);
176 l =
l < (n - iskip)?
l : n - iskip;
179 bool swap = (refC[0] == 0x34 && datap->compress == 255) ||
180 (refC[0] == 0x12 && datap->compress == 511);
187 unsigned char local[2];
188 char *buf = datap->data;
190 for(
unsigned int i=0;
i<datap->nBytes-3;
i=
i+4) {
201 if( (datap->compress & 0xff) == 255 ){
206 printf(
" ReadFrFile: unCompress returned wrong data length\n");
211 switch(datap->type) {
214 for(
int i=iskip;
i<
n;
i++) {
216 wd.
data[
i]=float(
short(d>0.? d+0.5 : d-0.5));
223 for(
int i=iskip;
i<
l;
i++)
229 switch(datap->type) {
232 for(
int i=0;
i<
l;
i++)
233 out.
data[
i+
k] =
double(datap->dataS[
i+iskip]);
237 for(
int i=0;
i<
l;
i++)
238 out.
data[
i+
k] =
double(datap->dataF[
i+iskip]);
245 if (adc) FrAdcDataFree(adc);
246 if (proc) FrProcDataFree(proc);
247 if (sim) FrSimDataFree(sim);
248 if (ser) FrSerDataFree(ser);
260 if (nn && ((nn-
k)<=0))
break;
263 sprintf(gpstime,
"%9d",
int(gts));
264 sprintf(newgpstime,
"%9d",
int(gte));
265 ptime=strstr(nname, gpstime);
267 if ( ptime != NULL && atoi(ptime) ==
int(gts) &&
268 strlen(gpstime) == strlen(newgpstime) ){
270 strncpy(ptime, newgpstime, strlen( newgpstime ));
276 iFile = FrFileINew(nname);
279 printf(
" ReadFrFile(): cannot open next input file %s\n", nname);
283 gts = FrFileITStart(iFile);
284 iFile->compress = 255;
287 printf(
" ReadFrFile(): next input file");
288 printf(
" %s doesn't provide continuous data\n", nname);
293 gte = FrFileITEnd(iFile);
297 if (out.
size() != size_t(nn))
return false;
330 FrFile *iFile = FrFileINew(fname);
333 printf(
" ReadFrFile(): cannot open the input file %s\n", fname);
337 bool failure =
false;
343 char *refC = (
char *)&ref;
346 if (tskip<0) tskip=0.;
351 char* nname =
new char[strlen(fname)];
358 FrAdcData *adc = NULL;
359 FrProcData *proc = NULL;
360 FrSerData *ser = NULL;
361 FrSimData *
sim = NULL;
362 FrVect *datap = NULL;
371 double gt,gt0,gts,gte;
372 gts = FrFileITStart(iFile);
373 gte = FrFileITEnd(iFile);
376 int nskip =
int( tskip/frlen );
379 double fskip = tskip - nskip*frlen;
381 gt = gts + nskip*frlen;
386 iFile->compress = 255;
398 if (!strcasecmp(channel_type,
"adc"))
400 adc = FrAdcDataReadT(iFile,cname,gt+1.
e-7);
401 if (adc == NULL) { failure =
true; }
402 else { datap = adc->data; }
404 else if (!strcasecmp(channel_type,
"proc"))
406 proc = FrProcDataReadT(iFile,cname,gt+1.
e-7);
407 if (proc == NULL) { failure =
true; }
408 else { datap = proc->data; }
412 printf(
" ReadFrFile() error: unknown channel type %s\n",
417 printf(
" ReadFrFile() error: channel %s is not found in file %s\n",
425 if(datap == NULL )
continue;
434 if (!datap->dx[0]==0.) rate = 1./datap->dx[0];
435 nn =
int(tlen * rate);
439 printf(
" ReadFrFile: time interval too short, return no data.\n");
452 iskip =
int(fskip * rate);
453 l =
l < (n - iskip)?
l : n - iskip;
456 bool swap = (refC[0] == 0x34 && datap->compress == 255) ||
457 (refC[0] == 0x12 && datap->compress == 511);
464 unsigned char local[2];
465 char *buf = datap->data;
467 for(
unsigned int i=0;
i<datap->nBytes-3;
i=
i+4) {
478 if( (datap->compress & 0xff) == 255 ){
483 printf(
" ReadFrFile: unCompress returned wrong data length\n");
488 switch(datap->type) {
491 for(
int i=iskip;
i<
n;
i++) {
493 wd.
data[
i]=float(
short(d>0.? d+0.5 : d-0.5));
500 out->
cpf(wd,
l,iskip,
k);
505 switch(datap->type) {
508 for(
int i=0;
i<
l;
i++)
509 out->
data[
i+
k] = datap->dataS[
i+iskip];
513 for(
int i=0;
i<l;
i++)
514 out->
data[
i+
k] = datap->dataF[
i+iskip];
521 if (adc) FrAdcDataFree(adc);
522 if (proc) FrProcDataFree(proc);
523 if (sim) FrSimDataFree(sim);
524 if (ser) FrSerDataFree(ser);
535 if (out && ((nn-
k)<=0))
break;
538 sprintf(gpstime,
"%9d",
int(gts));
539 sprintf(newgpstime,
"%9d",
int(gte));
540 ptime=strstr(nname, gpstime);
542 if ( ptime != NULL && atoi(ptime) ==
int(gts) &&
543 strlen(gpstime) == strlen(newgpstime) ){
545 strncpy(ptime, newgpstime, strlen( newgpstime ));
551 iFile = FrFileINew(nname);
554 printf(
" ReadFrFile(): cannot open next input file %s\n", nname);
558 gts = FrFileITStart(iFile);
559 iFile->compress = 255;
562 printf(
" ReadFrFile(): next input file");
563 printf(
" %s doesn't provide continuous data\n", nname);
568 gte = FrFileITEnd(iFile);
572 if (out==NULL)
return NULL;
576 for (
int i=
k;
i<nn;
i++) out->
data[
i]=0.;
581 if (out == 0)
return NULL;
virtual void rate(double r)
int unCompress(int *in, wavearray< float > &out)
virtual void start(double s)
virtual size_t size() const
printf("total live time: non-zero lags = %10.1f \, liveTot)
bool ReadFrFile(wavearray< double > &out, double tlen, double tskip, char *cname, char *fname, bool seek, char *channel_type)
strcpy(RunLabel, RUN_LABEL)
sprintf(tfres,"(1/%g)x(%g) (sec)x(Hz)", 2 *df, df)
virtual void resize(unsigned int)
void cpf(const wavearray< DataType_t > &, int=0, int=0, int=0)