29 FrFile *iFile = FrFileINew(fname);
32 printf(
" ReadFrFile(): cannot open the input file %s\n", fname);
37 printf(
" ReadFrFile(): no output array specified \n");
47 char *refC = (
char *)&ref;
50 if (tskip<0) tskip=0.;
63 FrAdcData *adc = NULL;
64 FrProcData *proc = NULL;
65 FrSerData *ser = NULL;
66 FrSimData *
sim = NULL;
76 double gt,gt0,gts,gte;
77 gts = FrFileITStart(iFile);
78 gte = FrFileITEnd(iFile);
81 int nskip =
int( tskip/frlen );
84 double fskip = tskip - nskip*frlen;
86 gt = gts + nskip*frlen;
91 iFile->compress = 255;
103 if (!strcasecmp(channel_type,
"adc"))
105 adc = FrAdcDataReadT(iFile,cname,gt+1.
e-7);
106 if (adc == NULL) { failure =
true; }
107 else { datap = adc->data; }
109 else if (!strcasecmp(channel_type,
"proc"))
111 proc = FrProcDataReadT(iFile,cname,gt+1.
e-7);
112 if (proc == NULL) { failure =
true; }
113 else { datap = proc->data; }
117 printf(
" ReadFrFile() error: unknown channel type %s\n",
122 printf(
" ReadFrFile() error: channel %s is not found in file %s\n",
129 if(datap == NULL )
continue;
139 if (!datap->dx[0]==0.) rate = 1./datap->dx[0];
140 nn =
int(tlen * rate);
144 printf(
" ReadFrFile: time interval too short, return no data.\n");
157 iskip =
int(fskip * rate);
158 l =
l < (n - iskip)?
l : n - iskip;
161 bool swap = (refC[0] == 0x34 && datap->compress == 255) ||
162 (refC[0] == 0x12 && datap->compress == 511);
169 unsigned char local[2];
170 char *buf = datap->data;
172 for(
unsigned int i=0;
i<datap->nBytes-3;
i=
i+4) {
183 if( (datap->compress & 0xff) == 255 ){
188 printf(
" ReadFrFile: unCompress returned wrong data length\n");
193 switch(datap->type) {
196 for(
int i=iskip;
i<
n;
i++) {
198 wd.
data[
i]=float(
short(d>0.? d+0.5 : d-0.5));
205 for(
int i=iskip;
i<
l;
i++)
211 switch(datap->type) {
214 for(
int i=0;
i<
l;
i++)
215 out.
data[
i+
k] =
double(datap->dataS[
i+iskip]);
219 for(
int i=0;
i<
l;
i++)
220 out.
data[
i+
k] =
double(datap->dataF[
i+iskip]);
227 if (adc) FrAdcDataFree(adc);
228 if (proc) FrProcDataFree(proc);
229 if (sim) FrSimDataFree(sim);
230 if (ser) FrSerDataFree(ser);
242 if (nn && ((nn-
k)<=0))
break;
245 sprintf(gpstime,
"%9d",
int(gts));
246 sprintf(newgpstime,
"%9d",
int(gte));
247 ptime=strstr(nname, gpstime);
249 if ( ptime != NULL && atoi(ptime) ==
int(gts) &&
250 strlen(gpstime) == strlen(newgpstime) ){
252 strncpy(ptime, newgpstime, strlen( newgpstime ));
258 iFile = FrFileINew(nname);
261 printf(
" ReadFrFile(): cannot open next input file %s\n", nname);
265 gts = FrFileITStart(iFile);
266 iFile->compress = 255;
269 printf(
" ReadFrFile(): next input file");
270 printf(
" %s doesn't provide continuous data\n", nname);
275 gte = FrFileITEnd(iFile);
279 if (out.
size() != size_t(nn))
return false;
312 FrFile *iFile = FrFileINew(fname);
315 printf(
" ReadFrFile(): cannot open the input file %s\n", fname);
319 bool failure =
false;
325 char *refC = (
char *)&ref;
328 if (tskip<0) tskip=0.;
333 char* nname =
new char[strlen(fname)];
340 FrAdcData *adc = NULL;
341 FrProcData *proc = NULL;
342 FrSerData *ser = NULL;
343 FrSimData *
sim = NULL;
344 FrVect *datap = NULL;
353 double gt,gt0,gts,gte;
354 gts = FrFileITStart(iFile);
355 gte = FrFileITEnd(iFile);
358 int nskip =
int( tskip/frlen );
361 double fskip = tskip - nskip*frlen;
363 gt = gts + nskip*frlen;
368 iFile->compress = 255;
380 if (!strcasecmp(channel_type,
"adc"))
382 adc = FrAdcDataReadT(iFile,cname,gt+1.
e-7);
383 if (adc == NULL) { failure =
true; }
384 else { datap = adc->data; }
386 else if (!strcasecmp(channel_type,
"proc"))
388 proc = FrProcDataReadT(iFile,cname,gt+1.
e-7);
389 if (proc == NULL) { failure =
true; }
390 else { datap = proc->data; }
394 printf(
" ReadFrFile() error: unknown channel type %s\n",
399 printf(
" ReadFrFile() error: channel %s is not found in file %s\n",
407 if(datap == NULL )
continue;
416 if (!datap->dx[0]==0.) rate = 1./datap->dx[0];
417 nn =
int(tlen * rate);
421 printf(
" ReadFrFile: time interval too short, return no data.\n");
434 iskip =
int(fskip * rate);
435 l =
l < (n - iskip)?
l : n - iskip;
438 bool swap = (refC[0] == 0x34 && datap->compress == 255) ||
439 (refC[0] == 0x12 && datap->compress == 511);
446 unsigned char local[2];
447 char *buf = datap->data;
449 for(
unsigned int i=0;
i<datap->nBytes-3;
i=
i+4) {
460 if( (datap->compress & 0xff) == 255 ){
465 printf(
" ReadFrFile: unCompress returned wrong data length\n");
470 switch(datap->type) {
473 for(
int i=iskip;
i<
n;
i++) {
475 wd.
data[
i]=float(
short(d>0.? d+0.5 : d-0.5));
482 out->
cpf(wd,
l,iskip,
k);
487 switch(datap->type) {
490 for(
int i=0;
i<
l;
i++)
491 out->
data[
i+
k] = datap->dataS[
i+iskip];
495 for(
int i=0;
i<l;
i++)
496 out->
data[
i+
k] = datap->dataF[
i+iskip];
503 if (adc) FrAdcDataFree(adc);
504 if (proc) FrProcDataFree(proc);
505 if (sim) FrSimDataFree(sim);
506 if (ser) FrSerDataFree(ser);
517 if (out && ((nn-
k)<=0))
break;
520 sprintf(gpstime,
"%9d",
int(gts));
521 sprintf(newgpstime,
"%9d",
int(gte));
522 ptime=strstr(nname, gpstime);
524 if ( ptime != NULL && atoi(ptime) ==
int(gts) &&
525 strlen(gpstime) == strlen(newgpstime) ){
527 strncpy(ptime, newgpstime, strlen( newgpstime ));
533 iFile = FrFileINew(nname);
536 printf(
" ReadFrFile(): cannot open next input file %s\n", nname);
540 gts = FrFileITStart(iFile);
541 iFile->compress = 255;
544 printf(
" ReadFrFile(): next input file");
545 printf(
" %s doesn't provide continuous data\n", nname);
550 gte = FrFileITEnd(iFile);
554 if (out==NULL)
return NULL;
558 for (
int i=
k;
i<nn;
i++) out->
data[
i]=0.;
563 if (out == 0)
return NULL;
virtual size_t size() const
printf("total live time: non-zero lags = %10.1f \n", liveTot)
virtual void rate(double r)
int unCompress(int *in, wavearray< float > &out)
virtual void start(double s)
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)