version 1.4, 2011/11/15 05:20:00
|
version 1.5, 2012/05/09 03:56:14
|
|
|
serieslist[ARPOWOUT]=arpowseries; | serieslist[ARPOWOUT]=arpowseries; |
serieslist[MAVGOUT]=mavgseries; | serieslist[MAVGOUT]=mavgseries; |
long long histrecnumarr[6]={-1, -1, -1, -1, -1, -1}; | long long histrecnumarr[6]={-1, -1, -1, -1, -1, -1}; |
|
DRMS_RecordSet_t *outrecsetarr[6]={NULL, NULL, NULL, NULL, NULL, NULL}; |
DRMS_Record_t *outrecarr[6]={NULL, NULL, NULL, NULL, NULL, NULL}; | DRMS_Record_t *outrecarr[6]={NULL, NULL, NULL, NULL, NULL, NULL}; |
DRMS_Segment_t *segoutarr[6]={NULL, NULL, NULL, NULL, NULL, NULL}; | DRMS_Segment_t *segoutarr[6]={NULL, NULL, NULL, NULL, NULL, NULL}; |
| |
|
|
| |
// these must be present in the output dataseries and variable, not links or constants | // these must be present in the output dataseries and variable, not links or constants |
// the loop is only necessary if the output series don't all link to the same history series, which they usually will, but just in case... | // the loop is only necessary if the output series don't all link to the same history series, which they usually will, but just in case... |
char *outchecklist[] = {"T_START", "QUALITY", "LMIN", "LMAX"}; |
char *outchecklist[] = {"T_START", "QUALITY", "LMIN", "LMAX", "NDT"}; |
int is, itest, mflip; | int is, itest, mflip; |
char *holdseries=""; | char *holdseries=""; |
|
char *cvsinfo = strdup("$Header$"); |
for (is=0;is<6;is++) | for (is=0;is<6;is++) |
{ | { |
| |
|
|
if (strcmp(holdseries, histlink->info->target_series)) | if (strcmp(holdseries, histlink->info->target_series)) |
{ | { |
holdseries=strdup(histlink->info->target_series); | holdseries=strdup(histlink->info->target_series); |
histrecnumarr[is]=set_history(histlink); |
histrecnumarr[is]=set_history(histlink, cvsinfo); |
if (histrecnumarr[is] < 0) | if (histrecnumarr[is] < 0) |
{ | { |
fprintf(stderr, "ERROR: problem creating record in history dataseries for output dataseries %s\n", serieslist[is]); | fprintf(stderr, "ERROR: problem creating record in history dataseries for output dataseries %s\n", serieslist[is]); |
|
|
fprintf(stderr, "ERROR: input recordset contains no records\n"); | fprintf(stderr, "ERROR: input recordset contains no records\n"); |
return 1; | return 1; |
} | } |
if (inrecset->n > 1) |
|
{ |
|
fprintf(stderr, "ERROR: nrecs > 1 not yet supported.\n"); |
|
return 1; |
|
} |
|
| |
inrec=inrecset->records[0]; | inrec=inrecset->records[0]; |
char *inchecklist[] = {"T_START", "T_STOP", "QUALITY", "LMIN", "LMAX", "T_STEP"}; | char *inchecklist[] = {"T_START", "T_STOP", "QUALITY", "LMIN", "LMAX", "T_STEP"}; |
|
|
return 1; | return 1; |
} | } |
| |
|
for (is=0; is<6; is++) |
|
{ |
|
if (!flagarr[is]) |
|
continue; |
|
|
|
outrecsetarr[is] = drms_create_records(drms_env, inrecset->n, serieslist[is], DRMS_PERMANENT, &status); |
|
|
|
if (status != DRMS_SUCCESS || outrecsetarr[is] == NULL) |
|
{ |
|
fprintf(stderr,"ERROR: couldn't open a record in output dataseries %s, status = %d\n", serieslist[is], status); |
|
return 1; |
|
} |
|
} |
| |
| |
// insert loop over input here |
int irec; |
int irec=0; |
for (irec=0;irec<inrecset->n;irec++) |
|
{ |
| |
inrec = inrecset->records[irec]; | inrec = inrecset->records[irec]; |
| |
|
|
{ | { |
if (!flagarr[is]) | if (!flagarr[is]) |
continue; | continue; |
|
/* |
outrecarr[is] = drms_create_record(drms_env, |
outrecarr[is] = drms_create_record(drms_env, serieslist[is], DRMS_PERMANENT, &status); |
serieslist[is], |
|
DRMS_PERMANENT, |
|
&status); |
|
|
|
if (status != DRMS_SUCCESS) | if (status != DRMS_SUCCESS) |
{ | { |
fprintf(stderr,"ERROR: couldn't open a record in output dataseries %s, status = %d\n", serieslist[is], status); | fprintf(stderr,"ERROR: couldn't open a record in output dataseries %s, status = %d\n", serieslist[is], status); |
return 0; | return 0; |
} | } |
|
*/ |
|
outrec=outrecsetarr[is]->records[irec]; |
if (histrecnumarr[is] > 0) | if (histrecnumarr[is] > 0) |
drms_setlink_static(outrecarr[is], histlinkname, histrecnumarr[is]); |
drms_setlink_static(outrec, histlinkname, histrecnumarr[is]); |
drms_setlink_static(outrecarr[is], srclinkname, inrec->recnum); |
drms_setlink_static(outrec, srclinkname, inrec->recnum); |
| |
if (segoutflag) | if (segoutflag) |
segoutarr[is] = drms_segment_lookup(outrecarr[is], segnameout); |
segoutarr[is] = drms_segment_lookup(outrec, segnameout); |
else | else |
segoutarr[is] = drms_segment_lookupnum(outrecarr[is], 0); |
segoutarr[is] = drms_segment_lookupnum(outrec, 0); |
if (segoutarr[is] == NULL) | if (segoutarr[is] == NULL) |
{ | { |
fprintf(stderr, "ERROR: problem looking up outputput segment in series %s\n", serieslist[is]); | fprintf(stderr, "ERROR: problem looking up outputput segment in series %s\n", serieslist[is]); |
|
|
if (!flagarr[is]) | if (!flagarr[is]) |
continue; | continue; |
| |
outrec=outrecarr[is]; |
outrec=outrecsetarr[is]->records[irec]; |
drms_copykeys(outrec, inrec, 0, kDRMS_KeyClass_Explicit); | drms_copykeys(outrec, inrec, 0, kDRMS_KeyClass_Explicit); |
drms_setkey_int(outrec, "QUALITY", 0); | drms_setkey_int(outrec, "QUALITY", 0); |
drms_setkey_time(outrec, "T_START", tstartout); | drms_setkey_time(outrec, "T_START", tstartout); |
|
|
tnow += UNIX_epoch; | tnow += UNIX_epoch; |
drms_setkey_time(outrec, "DATE", tnow); | drms_setkey_time(outrec, "DATE", tnow); |
| |
drms_close_record(outrec, DRMS_INSERT_RECORD); |
// drms_close_record(outrec, DRMS_INSERT_RECORD); |
| |
} | } |
| |
|
} |
| |
if (inrecset != NULL) |
|
{ |
|
drms_close_records(inrecset, DRMS_FREE_RECORD); | drms_close_records(inrecset, DRMS_FREE_RECORD); |
|
for (is=0;is<6;is++) |
|
{ |
|
if (!flagarr[is]) |
|
continue; |
|
drms_close_records(outrecsetarr[is], DRMS_INSERT_RECORD); |
} | } |
| |
if(ar_coeff) |
if(ar_coeff != NULL) |
free(ar_coeff); | free(ar_coeff); |
| |
if (fftout || fft1out || powout || arpowout || mavgout) | if (fftout || fft1out || powout || arpowout || mavgout) |
|
|
ct=getcputime(&ut, &st); | ct=getcputime(&ut, &st); |
if (verbflag) | if (verbflag) |
{ | { |
// printf("number of records created = %d\n", nsuccess); |
|
fprintf(stdout, "total time spent: %.2f ms wall time, %.2f ms cpu time\n", | fprintf(stdout, "total time spent: %.2f ms wall time, %.2f ms cpu time\n", |
wt-wt0, ct-ct0); | wt-wt0, ct-ct0); |
} | } |