/* show.h * ====== * * ver 1.00 * * This is a collection of routines * related to showing data on RCP console in real time * for a generalized RCP, "Nasu" * * by Sessai@NIPR */ /* standard headers * ================ */ //#include <stdio.h> //#include <stdlib.h> //#include <sys/types.h> //#include <sys/name.h> /* Headers for the control library * =============================== */ //#include "radops.h" //#include "fitdata.h" //#include "log_error.h" /* global variable(s) * ================== */ int fitOK; /* --------------------------------- * data display routines.. by Sessai * --------------------------------- * void show_data_list * // (FILE *fp,struct rawdata *raw_data,struct fitdata *fit_data, * (FILE *fp,struct rawdata *raw_data,struct fitdata *fit_data,int nrang, * short int start_freq,short int freq_range,int fitOK,int verbose); * void show_raw_parms * (FILE *fp,struct rawdata *raw_data); * void show_fit_parms * (FILE *fp,struct fitdata *fit_data); * */ /* void show_data_list * // (FILE *fp,struct rawdata *raw_data,struct fitdata *fit_data, * (FILE *fp,struct rawdata *raw_data,struct fitdata *fit_data,int nrang, * short int start_freq,short int freq_range,int fitOK,int verbose); * * This is just a routine to show data list on a console(stderr) * which can be used in RCP's to check getting data in real time * * input values * FILE *fp * : output file pointer, e.g. stderr * struct rawdata *raw_data * : put "&raw_dt_buf" in RCP... * struct fitdata *fit_data * : put "&fit_dt_buf" in RCP... * int nrang * : nrang in RCP (NRANG in default.h) * short int start_freq * : start_freq in RCP itself * short int freq_range * : freq_range in RCP itself * int fitOK * : fitOK in RCP * which means * 0 : fit data is NOT ready * 1 : fitacf was succeeded * which is defined in RCP as follows... * fitOK=((f=get_fit(...))!=frame_counter); * int verbose * : verbose mode which you like * 0 : nothing done, nothing displayed... * 1 : only display the FCLR result * 2 : display FCLR and RAW max_pwr0 result * 3 : display FCLR, RAW max_pwr0 and FIT result * 4 : in addtion, show RAW pwr0 bar display! * 5 : in addtion, show FIT qflg-gsct bar display! */ void show_data_list // (FILE *fp,struct rawdata *raw_data,struct fitdata *fit_data, (FILE *fp,struct rawdata *raw_data,struct fitdata *fit_data,int nrang, short int start_freq,short int freq_range,int fitOK,int verbose) { /* static variables to keep the last results!... */ static short int last_max_rp0_range = 0; int min_power,max_rp0_range,k,n; double min_powerF; int max_fp0_range,ngood,ngsct; char fitOKc[2]={'X','@'}; char qfc[3]={'.','o','g'}; /* char qfc[3]={'.','@','G'}; */ char qfcs[90]; char rp0c[13]={'.','0','1','2','3','4','5','6','7','8','9','!','-'}; char rp0cs[90]; char tmpstr[2]; long dumL; static char *bmstr[3]={"Beam","SPBM"," "}; if(verbose <= 0) return; if(verbose >= 3){ min_powerF=0.0; max_fp0_range=0; ngood=0; ngsct=0; strcpy(qfcs,""); tmpstr[1]='\0'; //for(k=0; k<fit_data->prms.NRANG; k++){...} for(k=0; k<nrang; k++){ if(fit_data->rng[k].p_0>min_powerF){ min_powerF = fit_data->rng[k].p_0; max_fp0_range = k; } if(fit_data->rng[k].qflg != 0) ngood++; if(fit_data->rng[k].gsct != 0) ngsct++; if(k%10 == 0){ tmpstr[0]= '0' + k/10; strcat(qfcs,tmpstr); } tmpstr[0]= qfc[ fit_data->rng[k].qflg + fit_data->rng[k].gsct ] ; strcat(qfcs,tmpstr); } //if(raw_data->PARMS.NRANG%10 == 0){...} if(nrang%10 == 0){ //tmpstr[0]= '0' + raw_data->PARMS.NRANG/10; tmpstr[0]= '0' + nrang/10; strcat(qfcs,tmpstr); } if(verbose >= 5){ qfcs[80]=NULL; fprintf(fp,"%s\n",qfcs); } if((fit_data->prms.SCAN==0)||(fit_data->prms.SCAN==1)) strcpy(bmstr[2],bmstr[0]); else strcpy(bmstr[2],bmstr[1]); fprintf(fp, "FIT Last %s%2d %2d:%02d:%02d FP0 %10.3f(R%2d,Q%d)FPL%8.1f(R%2d,Q%d) fit%c%2d(g%d)\n", bmstr[2],fit_data->prms.BMNUM, fit_data->prms.HOUR,fit_data->prms.MINUT,fit_data->prms.SEC, fit_data->rng[last_max_rp0_range].p_0, last_max_rp0_range, fit_data->rng[last_max_rp0_range].qflg, fit_data->rng[max_fp0_range].p_l, max_fp0_range, fit_data->rng[max_fp0_range].qflg, fitOKc[fitOK], ngood, ngsct ); } if((raw_data->PARMS.SCAN==0)||(raw_data->PARMS.SCAN==1)) strcpy(bmstr[2],bmstr[0]); else strcpy(bmstr[2],bmstr[1]); fprintf(fp, "FCLR Now %s%2d %2d:%02d:%02d SF%5d dF%4d TF%5d NS%8ld<%7ld AT%2d ER%2d\n", bmstr[2],raw_data->PARMS.BMNUM, raw_data->PARMS.HOUR,raw_data->PARMS.MINUT,raw_data->PARMS.SEC, start_freq,freq_range, raw_data->PARMS.TFREQ,raw_data->PARMS.NOISE, raw_data->PARMS.LVMAX, raw_data->PARMS.ATTEN * 10,raw_data->PARMS.ERCOD); if(verbose >= 2){ min_power=0L; max_rp0_range=0; strcpy(rp0cs,""); tmpstr[1]='\0'; //for(k=0; k<raw_data->PARMS.NRANG; k++){...} for(k=0; k<nrang; k++){ if(raw_data->pwr0[k]>min_power){ min_power = raw_data->pwr0[k]; max_rp0_range = k; } if(verbose >= 4){ if(k%10 == 0){ strcat(rp0cs," "); } n=0; dumL=raw_data->pwr0[k]; if(dumL<0L){n=12;} else{ while((dumL !=0L) && (n<12)){ dumL = dumL/10L; n++; } } tmpstr[0]=rp0c[n]; strcat(rp0cs,tmpstr); } } if((raw_data->PARMS.SCAN==0)||(raw_data->PARMS.SCAN==1)) strcpy(bmstr[2],bmstr[0]); else strcpy(bmstr[2],bmstr[1]); fprintf(fp, "RAW Now %s%2d %2d:%02d:%02d txp%dk intt%d MRG %2d P0%8ld<%ld st%2d cp%d\n", bmstr[2],raw_data->PARMS.BMNUM, raw_data->PARMS.HOUR,raw_data->PARMS.MINUT,raw_data->PARMS.SEC, raw_data->PARMS.TXPOW, raw_data->PARMS.INTT, max_rp0_range, raw_data->pwr0[max_rp0_range], raw_data->PARMS.MXPWR, raw_data->PARMS.ST_ID, raw_data->PARMS.CP ); last_max_rp0_range = max_rp0_range; if(verbose >= 4){ rp0cs[80]=NULL; fprintf(fp,"%s\n",rp0cs); } } } /* void show_raw_parms * (FILE *fp,struct rawdata *raw_data); * * This is just a modified version of print_param in support.lib. * by Sessai@NIPR * */ void show_raw_parms(FILE *fp,struct rawdata *raw_data) { int i,j; fprintf(fp,"%d/%d/%d %d:%d:%d\n", raw_data->PARMS.YEAR,raw_data->PARMS.MONTH,raw_data->PARMS.DAY, raw_data->PARMS.HOUR,raw_data->PARMS.MINUT,raw_data->PARMS.SEC); fprintf(fp,"stid%2d,",raw_data->PARMS.ST_ID); fprintf(fp,"nparms%d,",raw_data->PARMS.NPARM); fprintf(fp,"txpow%d,",raw_data->PARMS.TXPOW); fprintf(fp,"atten%d,",raw_data->PARMS.ATTEN); fprintf(fp,"intt%d,",raw_data->PARMS.INTT); fprintf(fp,"txpl%d,",raw_data->PARMS.TXPL); fprintf(fp,"mpinc%d,",raw_data->PARMS.MPINC); fprintf(fp,"mppul%d,",raw_data->PARMS.MPPUL); fprintf(fp,"mplgs%d\n",raw_data->PARMS.MPLGS); // fprintf(fp,"nrang%2d,",raw_data->PARMS.NRANG); fprintf(fp,"frang%d,",raw_data->PARMS.FRANG); fprintf(fp,"rsep%d,",raw_data->PARMS.RSEP); fprintf(fp,"bmnum%2d,",raw_data->PARMS.BMNUM); // fprintf(fp,"xcf%d,",raw_data->PARMS.XCF); fprintf(fp,"tfreq%5d,",raw_data->PARMS.TFREQ); fprintf(fp,"scan%d\n",raw_data->PARMS.SCAN); fprintf(fp,"mxpwr%d,",raw_data->PARMS.MXPWR); fprintf(fp,"lvmax%d,",raw_data->PARMS.LVMAX); fprintf(fp,"noise%d,",raw_data->PARMS.NOISE); /* added by Sessai */ fprintf(fp,"cp%d\n",raw_data->PARMS.CP); fprintf(fp,"pulse table = "); for (i=0;i<raw_data->PARMS.MPPUL;i++) fprintf(fp,"%d ",raw_data->PULSE_PATTERN[i]); fprintf(fp,"\n"); fprintf(fp,"lag table = "); for (i=0;i<2;i++) { if(i==1)fprintf(fp," "); for (j=0;j<raw_data->PARMS.MPLGS;j++) fprintf(fp,"%2d ",raw_data->LAG_TABLE[i][j]); fprintf(fp,"\n"); } } /* void show_fit_parms * (FILE *fp,struct fitdata *fit_data); * * This is just a fitdata version of show_raw_parms... * by Sessai@NIPR * */ void show_fit_parms(FILE *fp,struct fitdata *fit_data) { int i,j; fprintf(fp,"%d/%d/%d %d:%d:%d\n", fit_data->prms.YEAR,fit_data->prms.MONTH,fit_data->prms.DAY, fit_data->prms.HOUR,fit_data->prms.MINUT,fit_data->prms.SEC); fprintf(fp,"stid%2d,",fit_data->prms.ST_ID); fprintf(fp,"nparms%d,",fit_data->prms.NPARM); fprintf(fp,"txpow%d,",fit_data->prms.TXPOW); fprintf(fp,"atten%d,",fit_data->prms.ATTEN); fprintf(fp,"intt%d,",fit_data->prms.INTT); fprintf(fp,"txpl%d,",fit_data->prms.TXPL); fprintf(fp,"mpinc%d,",fit_data->prms.MPINC); fprintf(fp,"mppul%d,",fit_data->prms.MPPUL); fprintf(fp,"mplgs%d\n",fit_data->prms.MPLGS); // fprintf(fp,"nrang%2d,",fit_data->prms.NRANG); fprintf(fp,"frang%d,",fit_data->prms.FRANG); fprintf(fp,"rsep%d,",fit_data->prms.RSEP); fprintf(fp,"bmnum%2d,",fit_data->prms.BMNUM); // fprintf(fp,"xcf%d,",fit_data->prms.XCF); fprintf(fp,"tfreq%5d,",fit_data->prms.TFREQ); fprintf(fp,"scan%d\n",fit_data->prms.SCAN); fprintf(fp,"mxpwr%d,",fit_data->prms.MXPWR); fprintf(fp,"lvmax%d,",fit_data->prms.LVMAX); fprintf(fp,"noise%d,",fit_data->prms.NOISE); /* added by Sessai */ fprintf(fp,"cp%d\n",fit_data->prms.CP); }