int main(int argc,char *argv[]) { struct RadarParm prm; struct RawData raw; struct OldRawFp *fp; fp=OldRawOpen(argv[1],NULL); if (fp==NULL) { fprintf(stderr,"File not found.\n"); exit(-1); } while(OldRawRead(fp,&prm,&raw) !=-1) { fprintf(stdout,"%.4d-%.2d-%.2d %.2d:%.2d:%.2d\n", prm.time.yr,prm.time.mo,prm.time.dy, prm.time.hr,prm.time.mt,prm.time.sc); } OldRawClose(fp); return 0; }
static IDL_VPTR IDLOldRawRead(int argc,IDL_VPTR *argv) { int s=0; IDL_VPTR vprm=NULL,vraw=NULL;; IDL_FILE_STAT stat; struct OldRawIDLFp *irawfp; struct OldRawFp rawfp; struct RadarIDLParm *iprm=NULL; struct RawIDLData *iraw=NULL; struct RadarParm *prm=NULL; struct RawData *raw=NULL; FILE *ffp=NULL,*ifp=NULL; IDL_ENSURE_STRUCTURE(argv[0]); IDL_EXCLUDE_EXPR(argv[1]); IDL_EXCLUDE_EXPR(argv[2]); irawfp=(struct OldRawIDLFp *) argv[0]->value.s.arr->data; s=IDL_FileEnsureStatus(IDL_MSG_RET,irawfp->rawunit,IDL_EFS_USER); if (s==FALSE) { s=-1; return (IDL_GettmpLong(s)); } IDL_FileFlushUnit(irawfp->rawunit); IDL_FileStat(irawfp->rawunit,&stat); ffp=stat.fptr; if (ffp==NULL) { s=-1; return (IDL_GettmpLong(s)); } if (irawfp->inxunit !=-1) { IDL_FileFlushUnit(irawfp->inxunit); IDL_FileStat(irawfp->inxunit,&stat); ifp=stat.fptr; } if (ifp !=NULL) fflush(ifp); rawfp.rawfp=fileno(ffp); if (ifp !=NULL) rawfp.inxfp=fileno(ifp); else rawfp.inxfp=-1; OldRawIDLToRawFp(irawfp,&rawfp); prm=RadarParmMake(); raw=RawMake(); s=OldRawRead(&rawfp,prm,raw); OldRawRawFpToIDL(&rawfp,irawfp); if (s==-1) { RadarParmFree(prm); RawFree(raw); return (IDL_GettmpLong(s)); } iprm=IDLMakeRadarParm(&vprm); iraw=IDLMakeRawData(&vraw); /* copy data here */ IDLCopyRadarParmToIDL(prm,iprm); IDLCopyRawDataToIDL(prm->nrang,prm->mplgs,prm->xcf,raw,iraw); RadarParmFree(prm); RawFree(raw); IDL_VarCopy(vprm,argv[1]); IDL_VarCopy(vraw,argv[2]); return (IDL_GettmpLong(s)); }
int32 OldRawIDLRead(int argc,char *argv[]) { int n; int x; struct OldRawIDLFp *idlrawfp; struct OldRawFp rawfp; char combftmp[COMBF_SIZE+1]; struct RadarIDLParm *idlprm; struct RawIDLData *idlraw; struct RadarParm prm; struct RawData raw; IDL_FILE_STAT stat; FILE *fp; int s; /* zero out the data structures */ memset(&prm,0,sizeof(struct RadarParm)); memset(&raw,0,sizeof(struct RawData)); memset(&combftmp,0,COMBF_SIZE+1); idlrawfp=(struct OldRawIDLFp *) argv[0]; IDL_FileStat(idlrawfp->rawunit,&stat); /* Find the file pointer */ fp=stat.fptr; if (fp==NULL) return -1; fflush(fp); rawfp.rawfp=fileno(fp); rawfp.inxfp=0; OldRawIDLToRawFp(idlrawfp,&rawfp); s=OldRawRead(&rawfp,&prm,&raw); OldRawRawFpToIDL(&rawfp,idlrawfp); if (s==-1) return -1; /* get the structure pointers */ idlprm=(struct RadarIDLParm *) argv[1]; idlraw=(struct RawIDLData *) argv[2]; /* load up the structures. * * Note: We do not do a direct memcpy as the possibility * exists that the IDL data structure is different from * the C data structure. * */ idlprm->revision.major=prm.revision.major; idlprm->revision.minor=prm.revision.minor; idlprm->origin.code=prm.origin.code; IDL_StrDelete(&idlprm->origin.time,1); IDL_StrDelete(&idlprm->origin.command,1); idlprm->cp=prm.cp; idlprm->stid=prm.stid; idlprm->time.yr=prm.time.yr; idlprm->time.mo=prm.time.mo; idlprm->time.dy=prm.time.dy; idlprm->time.hr=prm.time.hr; idlprm->time.mt=prm.time.mt; idlprm->time.sc=prm.time.sc; idlprm->time.us=prm.time.us; idlprm->txpow=prm.txpow; idlprm->nave=prm.nave; idlprm->atten=prm.atten; idlprm->lagfr=prm.lagfr; idlprm->smsep=prm.smsep; idlprm->ercod=prm.ercod; idlprm->stat.agc=prm.stat.agc; idlprm->stat.lopwr=prm.stat.lopwr; idlprm->noise.search=prm.noise.search; idlprm->noise.mean=prm.noise.mean; idlprm->channel=prm.channel; idlprm->bmnum=prm.bmnum; idlprm->bmazm=prm.bmazm; idlprm->scan=prm.scan; idlprm->rxrise=prm.rxrise; idlprm->intt.sc=prm.intt.sc; idlprm->intt.us=prm.intt.us; idlprm->txpl=prm.txpl; idlprm->mpinc=prm.mpinc; idlprm->mppul=prm.mppul; idlprm->mplgs=prm.mplgs; idlprm->nrang=prm.nrang; idlprm->frang=prm.frang; idlprm->rsep=prm.rsep; idlprm->xcf=prm.xcf; idlprm->tfreq=prm.tfreq; idlprm->offset=prm.offset; idlprm->mxpwr=prm.mxpwr; idlprm->lvmax=prm.lvmax; for (n=0;n<prm.mppul;n++) idlprm->pulse[n]=prm.pulse[n]; for (n=0;n<prm.mplgs;n++) { idlprm->lag[n]=prm.lag[n][0]; idlprm->lag[LAG_SIZE+n]=prm.lag[n][1]; } strncpy(combftmp,prm.combf,COMBF_SIZE); IDL_StrDelete(&idlprm->combf,1); IDL_StrStore(&idlprm->combf,combftmp); idlraw->revision.major=raw.revision.major; idlraw->revision.minor=raw.revision.minor; idlraw->thr=raw.thr; for (n=0;n<prm.nrang;n++) { idlraw->pwr0[n]=raw.pwr0[n]; for (x=0;x<prm.mplgs;x++) { idlraw->acfd[x*MAX_RANGE+n]=raw.acfd[n][x][0]; idlraw->acfd[LAG_SIZE*MAX_RANGE+MAX_RANGE*x+n]=raw.acfd[n][x][1]; if (prm.xcf !=0) { idlraw->xcfd[x*MAX_RANGE+n]=raw.xcfd[n][x][0]; idlraw->xcfd[LAG_SIZE*MAX_RANGE+MAX_RANGE*x+n]=raw.xcfd[n][x][1]; } } } return s; }