From 00bdbf98dd6b514ebb37b6ccb6ef5935c44cb9d9 Mon Sep 17 00:00:00 2001 From: Cees Bassa Date: Thu, 9 Jun 2022 22:32:57 +0200 Subject: [PATCH] Add cmdline arg for providing frequency list --- rfplot.c | 53 ++++++++++++++++++++++++++++++++--------------------- rftrace.c | 25 +++---------------------- rftrace.h | 6 +++--- 3 files changed, 38 insertions(+), 46 deletions(-) diff --git a/rfplot.c b/rfplot.c index 8dd8110..25c592c 100644 --- a/rfplot.c +++ b/rfplot.c @@ -63,7 +63,7 @@ int main(int argc,char *argv[]) float width=1500; float x=0.0,y=0.0,x0=0.0,y0=0.0,yfit; char c; - char path[128],xlabel[128],ylabel[64],filename[32],tlefile[128]; + char path[128],xlabel[128],ylabel[64],filename[32],tlefile[128],freqlist[128]; int sec,lsec,ssec; char stime[16]; double fmin,fmax,fcen,f; @@ -88,7 +88,13 @@ int main(int argc,char *argv[]) printf("ST_COSPAR environment variable not found.\n"); } env=getenv("ST_TLEDIR"); + if(env==NULL||strlen(env)==0) + env="."; sprintf(tlefile,"%s/bulk.tle",env); + env=getenv("ST_DATADIR"); + if(env==NULL||strlen(env)==0) + env="."; + sprintf(freqlist,"%s/data/frequencies.txt",env); // Set selection sel.n=0; @@ -97,7 +103,7 @@ int main(int argc,char *argv[]) // Read arguments if (argc>1) { - while ((arg=getopt(argc,argv,"p:f:w:s:l:b:z:hc:C:gm:o:S:W:"))!=-1) { + while ((arg=getopt(argc,argv,"p:f:w:s:l:b:z:hc:C:gm:o:S:W:F:"))!=-1) { switch (arg) { case 'p': @@ -124,6 +130,10 @@ int main(int argc,char *argv[]) df0=(double) atof(optarg); break; + case 'F': + strcpy(freqlist,optarg); + break; + case 'W': sel.w=atof(optarg); break; @@ -182,7 +192,7 @@ int main(int argc,char *argv[]) return 0; // Compute traces - t=compute_trace(tlefile,s.mjd,s.nsub,site_id,s.freq*1e-6,s.samp_rate*1e-6,&nsat,graves); + t=compute_trace(tlefile,s.mjd,s.nsub,site_id,s.freq*1e-6,s.samp_rate*1e-6,&nsat,graves,freqlist); printf("Traces for %d objects for location %d\n",nsat,site_id); cpgopen("/xs"); @@ -430,9 +440,9 @@ int main(int argc,char *argv[]) // Identify if (c=='i') { if (graves==0) - identify_trace(tlefile,tf,0); + identify_trace(tlefile,tf,0,freqlist); else - identify_trace_graves(tlefile,tf,0); + identify_trace_graves(tlefile,tf,0,freqlist); redraw=1; continue; } @@ -452,7 +462,7 @@ int main(int argc,char *argv[]) if (c=='I') { printf("Provide satno: "); status=scanf("%d",&satno); - identify_trace(tlefile,tf,satno); + identify_trace(tlefile,tf,satno,freqlist); redraw=1; continue; } @@ -690,7 +700,7 @@ int main(int argc,char *argv[]) // Recompute traces if (c=='R') { - t=compute_trace(tlefile,s.mjd,s.nsub,site_id,s.freq*1e-6,s.samp_rate*1e-6,&nsat,graves); + t=compute_trace(tlefile,s.mjd,s.nsub,site_id,s.freq*1e-6,s.samp_rate*1e-6,&nsat,graves,freqlist); redraw=1; continue; } @@ -892,20 +902,21 @@ void time_axis(double *mjd,int n,float xmin,float xmax,float ymin,float ymax) void usage(void) { printf("rfplot: plot RF observations\n\n"); - printf("-p Input path to file /a/b/c_??????.bin\n"); - printf("-s Number of starting subintegration [0]\n"); - printf("-l Number of subintegrations to plot [3600]\n"); - printf("-b Number of subintegrations to bin [1]\n"); - printf("-z Image scaling upper limit [8.0]\n"); - printf("-f Frequency to zoom into (Hz)\n"); - printf("-w Bandwidth to zoom into (Hz)\n"); - printf("-o Frequency offset to apply (Hz) [0]\n"); - printf("-W Track selection width (in pixels) [100]\n"); - printf("-S Track selection significance [5]\n"); - printf("-C Site ID\n"); - printf("-c TLE catalog\n"); - printf("-g GRAVES data\n"); - printf("-h This help\n"); + printf("-p Input path to file /a/b/c_??????.bin\n"); + printf("-s Number of starting subintegration [0]\n"); + printf("-l Number of subintegrations to plot [3600]\n"); + printf("-b Number of subintegrations to bin [1]\n"); + printf("-z Image scaling upper limit [8.0]\n"); + printf("-f Frequency to zoom into (Hz)\n"); + printf("-w Bandwidth to zoom into (Hz)\n"); + printf("-o Frequency offset to apply (Hz) [0]\n"); + printf("-W Track selection width (in pixels) [100]\n"); + printf("-S Track selection significance [5]\n"); + printf("-C Site ID\n"); + printf("-c TLE catalog\n"); + printf("-F List with frequencies [$ST_DATADIR/data/frequencies.txt]\n"); + printf("-g GRAVES data\n"); + printf("-h This help\n"); return; } diff --git a/rftrace.c b/rftrace.c index a1477ad..05f1156 100644 --- a/rftrace.c +++ b/rftrace.c @@ -165,7 +165,7 @@ struct site get_site(int site_id) } // Identify trace -void identify_trace_graves(char *tlefile,struct trace t,int satno) +void identify_trace_graves(char *tlefile,struct trace t,int satno,char *freqlist) { int i,imode,flag=0,status,imid; struct point *p; @@ -180,12 +180,6 @@ void identify_trace_graves(char *tlefile,struct trace t,int satno) int satnomin; double rmsmin,freqmin,altmin,azimin; double ra,de,azi,alt; - char *env,freqlist[LIM]; - - env=getenv("ST_DATADIR"); - if(env==NULL||strlen(env)==0) - env="."; - sprintf(freqlist,"%s/data/frequencies.txt",env); // Reloop stderr if (freopen("/tmp/stderr.txt","w",stderr)==NULL) @@ -319,7 +313,7 @@ void identify_trace_graves(char *tlefile,struct trace t,int satno) } // Identify trace -void identify_trace(char *tlefile,struct trace t,int satno) +void identify_trace(char *tlefile,struct trace t,int satno,char *freqlist) { int i,imode,flag=0,status; struct point *p; @@ -333,15 +327,9 @@ void identify_trace(char *tlefile,struct trace t,int satno) char nfd[32],nfdmin[32],text[16]; int satnomin; double rmsmin,freqmin; - char *env,freqlist[LIM]; struct timeval tv; char tbuf[30]; - env=getenv("ST_DATADIR"); - if(env==NULL||strlen(env)==0) - env="."; - sprintf(freqlist,"%s/data/frequencies.txt",env); - // Reloop stderr if (freopen("/tmp/stderr.txt","w",stderr)==NULL) fprintf(stderr,"Failed to redirect stderr\n"); @@ -484,7 +472,7 @@ int is_classified(int satno) } // Compute trace -struct trace *compute_trace(char *tlefile,double *mjd,int n,int site_id,float freq,float bw,int *nsat,int graves) +struct trace *compute_trace(char *tlefile,double *mjd,int n,int site_id,float freq,float bw,int *nsat,int graves,char *freqlist) { int i,j,imode,flag,satno,tflag,m,status; struct point *p; @@ -497,14 +485,8 @@ struct trace *compute_trace(char *tlefile,double *mjd,int n,int site_id,float fr char line[LIM],text[8]; struct trace *t; float fmin,fmax; - char *env,freqlist[LIM]; double ra,de,azi,alt; - env=getenv("ST_DATADIR"); - if(env==NULL||strlen(env)==0) - env="."; - sprintf(freqlist,"%s/data/frequencies.txt",env); - // Frequency limits fmin=freq-0.5*bw; fmax=freq+0.5*bw; @@ -673,7 +655,6 @@ void compute_doppler(char *tlefile,double *mjd,int n,int site_id,int satno,int g char line[LIM],text[8]; struct trace *t; float fmin,fmax; - char *env,freqlist[LIM]; double ra,de,azi,alt; double rag,deg,azig,altg; diff --git a/rftrace.h b/rftrace.h index afd0fa1..02b56fc 100644 --- a/rftrace.h +++ b/rftrace.h @@ -4,8 +4,8 @@ struct trace { double *freq,freq0; float *za; }; -struct trace *compute_trace(char *tlefile,double *mjd,int n,int site_id,float fmin,float fmax,int *nsat,int graves); -void identify_trace(char *tlefile,struct trace t,int satno); -void identify_trace_graves(char *tlefile,struct trace t,int satno); +struct trace *compute_trace(char *tlefile,double *mjd,int n,int site_id,float fmin,float fmax,int *nsat,int graves,char *freqlist); +void identify_trace(char *tlefile,struct trace t,int satno,char *freqlist); +void identify_trace_graves(char *tlefile,struct trace t,int satno,char *freqlist); void compute_doppler(char *tlefile,double *mjd,int n,int site_id,int satno,int graves, int skiphigh,char *outfname); int fgetline(FILE *file,char *s,int lim);