/* BasyouhuP200003.c - for Japanese Special Time in Mar.,2000 ver. 1.01 * ================= * * --- based on Sessai's revised version of Rob's normal_scan * for Radops2000v4.01 which can be used also on Radops v4.10A * * intt=3 * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! * if you cannot, please change it using '-it' option!!!!!!!!!!! * e.g. '-it 4' for intt=4. !!!!!!!!!!! * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! * * (rsep=45km,frang=180km,mpinc=2400 as usual) * No GPS Synchronization (wb_min=0,wb_sec=0) * Special Basyouhu Scan for high speed global scan * and 3 high time resolution special camping beams * for high time resolution cusp observation * (defined in "for loop" code in this program and in "BasyouhuP200001.h") * * #define CP_ID 5248 * * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! * Please Specify your 2 most appropriate FREQUENCIES * or by giving "-df" "-nf" option to me * -df is a freq to be used for day time * -nf is a freq to be used for night time * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! * * If you want to reduce the amount of smr files, you can specify * '-smrsep smrsepsec' option. 'smrsepsec' is minimum separation * in seconds bewteen the last recording time and the next recording time * for each smr beam. (The default value is just 0(L)(second).) (v.1.01) * * ...This is Not the "Nasu"... * * by Sessai@NIPR */ /* $Log: BasyouhuP200003.c,v $ Revision 1.01 2000/02/14 00:00:00 sessai Add smrsep option to reduce smr records And fix a bug in usage message Revision 1.00 2000/01/24 00:00:00 sessai initial version based on BasyouhuP200002 ver1.01 */ /* $Log: BasyouhuP200002.c,v $ Revision 1.00 1999/12/21 00:00:00 sessai initial version based on BasyouhuP200001 ver1.01 */ /* $Log: BasyouhuP200001.c,v $ Revision 1.01 1999/12/14 12:00:00 sessai Added more TIGER support. Revision 1.00 1999/12/06 00:00:00 sessai initial version based on BasyouhuC9908 ver1.00 */ /* $Log: BasyouhuC9908.c,v $ Revision 1.00 1999/07/06 00:00:00 sessai initial version based on BasyouhuC9905 ver1.01 */ /* $Log: BasyouhuC9905.c,v $ Revision 1.01 1999/04/26 00:00:00 sessai change special beam selection in BasyouhuC9905.h Revision 1.00 1999/04/01 00:00:00 sessai initial version based on BasyouhuC9903 ver1.01 */ /* $Log: BasyouhuC9903.c,v $ Revision 1.01 1999/02/25 00:00:00 sessai bug fix about Leicester freq_band part Revision 1.00 1999/02/01 00:00:00 sessai initial version based on BasyouhuP9901 ver3.00 */ /* $Log: BasyouhuP9901.c,v $ Revision 3.00 1999/01/08 00:00:00 sessai introduce MODEMAX in BasyouhuP9901.h now this can be used both for Jan. and Feb., 1999 ST Revision 2.00 1998/12/16 00:00:00 sessai actually no change in BasyouhuP9901.c only BasyouhuP9901.h has been modified due to modification of sounding modes Revision 1.00 1998/12/08 00:00:00 sessai initial version */ /* ---- Sessai's normal_scan history record ---- */ /* Sessai revised Dec. 1,1997 - fixed missing usr_resS1 * Sessai version Nov. 1,1997 -many fixes to Rob's v.2.10 */ /* ---- Rob's normal_scan rcs record ---- */ /* $Log: normal_scan.c,v $ Revision 2.10 1997/06/10 20:24:57 root Removed redundant header entry. ............ */ #ifdef __USAGE %C [-df day_start_freq/band] [-df day_start_freq/band] [-dt day_start_hr] [-nt night_start_hr] [-xcf xcount] [-it intt] [-v verbose(0-9)] [-smrsep smrsepsec] [-force_mode mode] [-force_submode smode] [option file] Please specify the 2 best frequencies to get as much echo as possible!!!!! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Specify them by '-df' & '-nf' options -df day_start_freq/band one freq/band for day time -nf night_start_freq/band one freq/band for night time If you want to change day/night boundary, you can specify them by '-dt' and '-nt' options as in normal_scan. If you want to change "intt" to avoid this RCP or your hardware crashing, you can use '-it' option to overide it. mode 1 for Mar.5, 2 for Mar.16, 3 for Mar.21, and 4 for Mar.26 ST days. (submode=2 exists only if it's allocated by BasyouhuP200003.h file...) mode and submode will be selected AUTOMATICALLY by this RCP by reading current time on this PC. You can change and force mode and submode by '-force_mode'/'-force_submode' options. BUT these are ONLY for testing! NOT for the real ST days!!! If you specify verbose level >=2, then you can get records on time/beam/scan values in your errlog file (which will be useful for testing...). If you want to reduce the amount of smr files, you can specify '-smrsep smrsepsec' option. 'smrsepsec' is minimum separation in seconds bewteen the last recording time and the next recording time for each smr beam. (The default value is just 0(L)(second).) Many thanks for your collaboration... #endif #define SIM_FILE "/radops/demo.dat" //#define CP_ID 5246 #define CP_ID 5248 #include #include #include // added by Sessai #include #include // new in ver.1.01 /* Headers for the control library * =============================== */ #include "message.h" #include "radops.h" #include "fitdata.h" #include "task_write.h" #include "user_int.h" #include "get_status.h" #include "log_error.h" #include "sample.h" #include "read_raw.h" /* Header for the support library * =============================== */ #include "support.h" #include "sync.h" #include "summary_control.h" #include "option.h" /* the normal_scan headers */ #include "radar_id.h" #include "default.h" #define DEFAULT_INTT 3 #define DEFAULT_RSEP 45 #define DEFAULT_FRANG 180 #define DEFAULT_MPINC 2400 #define DEFAULT_FREQ_RANGE 300 #define DEFAULT_FREQ_STEP 5 #define DEFAULT_SP_SCAN -32768 #define DEFAULT_WB_MIN 0 /* registered names of the tasks to receive data */ #include "task_names.h" //#include "task_names0.h" char prg_name[32]; /* this is the program name displayed by display */ char cmd_line[256]; char errbuf[256]; //short int v=0; short int v=1; #include "option2.h" #include "sync2.h" #ifdef NIPR #include "ntp.h" int nntp=0; #endif //#include "set_summary.h" #include "forbid_freq_check.h" #include "show.h" // for Basyouhu Special (Mar,2000) #include "BasyouhuP200003.h" // newly revised one! /* The main program */ int f=0; int frame_counter=0; short int start_freq,end_freq,freq_range=DEFAULT_FREQ_RANGE; short int start_beam,end_beam,skip_beam; short int spbmc=-1; short int spbmc2; short int spbmnum; short int day_start_hr=DAY_START; short int night_start_hr=NIGHT_START; #if !defined(LEICESTER) && !defined(TIGER) short int day_start_freq=DAY_FREQ; short int night_start_freq=NIGHT_FREQ; #endif short int day_frang=DAY_FRANG; short int night_frang=NIGHT_FRANG; short int day_mpinc=DAY_MPINC; short int night_mpinc=NIGHT_MPINC; short int day_night_flag; short int count=0,xcount=XCF; #if defined(LEICESTER) || defined(TIGER) short int day_start_band=DAY_BAND; short int night_start_band=NIGHT_BAND; #include "freq_band.h" #endif // moved from main(), Julian, OK? <------- Julian, Look and check here!! #ifdef PULSE_CODE #include "pulse_code.h" #endif FILE *sim_file=NULL; short int wb_min=DEFAULT_WB_MIN,wb_sec=0; //short int wb_st_hr=0;wb_st_min=0,wb_st_sec=0; short int mode=0; // shuold be set between 1 and MODEMAX short int smode=0; // shuold be set between 1 and SUBMODEMAX short int force_mode=0; short int force_smode=0; short int last_mode=-1; short int last_smode=-1; #if defined(LEICESTER) || defined(TIGER) short int df1=DAY_BAND; short int df2=DAY_BAND; short int nf1=NIGHT_BAND; short int nf2=NIGHT_BAND; short int df=DAY_BAND; short int nf=NIGHT_BAND; #else short int df1=DAY_FREQ; short int df2=DAY_FREQ; short int nf1=NIGHT_FREQ; short int nf2=NIGHT_FREQ; short int df=DAY_FREQ; short int nf=NIGHT_FREQ; #endif short int stf[2][2]={1,2,3,4}; //stf[day_night_flag][0/1]={df1,df2,nf1,nf2}; short int fnc=0; short int fsc=0; #ifdef DEBUG short int dum1; long int dum2; #endif // new in ver.1.01 time_t smrsep=0L; time_t smlast[16]={0L,0L,0L,0L,0L,0L,0L,0L,0L,0L,0L,0L,0L,0L,0L,0L}; time_t nowc; struct timespec rtc; void main(int argc,char *argv[]) { int exit_poll=0; int argnum=0; // Julian, I moved these below up to global part above! OK? // I need this for making a function "onebeam()" below...... //#ifdef PULSE_CODE // #include "pulse_code.h" //#endif struct option opt[] = { {"dt", 's', 0, &day_start_hr}, {"nt", 's', 0, &night_start_hr}, //#ifdef LEICESTER // {"df", 's', 0, &day_start_band}, // {"nf", 's', 0, &night_start_band}, //#else // {"df", 's', 0, &day_start_freq}, // {"nf", 's', 0, &night_start_freq}, //#endif // {"df1", 's', 0, &df1}, // {"df2", 's', 0, &df2}, // {"nf1", 's', 0, &nf1}, // {"nf2", 's', 0, &nf2}, {"df", 's', 0, &df}, {"nf", 's', 0, &nf}, // {"dr", 's', 0, &day_frang}, // {"nr", 's', 0, &night_frang}, // {"fr", 's', 0, &frang}, {"xcf",'s', 0, &xcount}, // {"dm", 's', 0, &day_mpinc}, // {"nm", 's', 0, &night_mpinc}, // {"mp", 's', 0, &mpinc}, // {"mpinc", 's', 0, &mpinc}, // {"sb", 's', 0, &start_beam}, // {"eb", 's', 0, &end_beam}, {"it", 's', 0, &intt}, {"intt", 's', 0, &intt}, {"rs", 's', 0, &rsep}, {"rsep", 's', 0, &rsep}, // {"nwb", NULL, 0, NULL}, // {"wb", 's', 0, &wb_min}, // {"wbs", 's', 0, &wb_sec}, {"v", 's', 0, &v}, #ifdef NIPR {"nntp", NULL, 0, &nntp}, // Sessai to specify ignoring NTP.tbl!!! #endif // {"mode", 's', 0, &mode}, // should be given like 1,2,...,MODEMAX // {"submode", 's', 0, &smode}, // should be given like 1,2,...,SUBMODEMAX {"force_mode", 's', 0, &force_mode}, {"force_submode", 's', 0, &force_smode}, {"smrsep", 'l', 0, &smrsep}, // new in ver.1.01 (long int!!) 0}; //FILE *sim_file=NULL; FILE *opt_file=NULL; //int status,c; int bmc; // beam number counter int bm_scan_sign=1; // +1 when start_beam<=end_beam, otherwise -1 //int first_beam=1; long int tmpA,tmpB,tmpP; /* define the pulse sequence and the lag table */ short int ptab[7] = {0,9,12,20,22,26,27}; short int lags[2][18] ={ {0,26,20,9,22,22,20,20,12,0,12,9,0,9,12,12,9,9}, {0,27,22,12,26,27,26,27,20,9,22,20,12,22,26,27,26,27}}; /* set up the default parameters */ #ifdef DISCRETIONARY cp =-CP_ID; #else cp=CP_ID; #endif intt = DEFAULT_INTT; //rsep = DEFAULT_RSEP; rsep = SPRSEP; //freq_range=DEFAULT_FREQ_RANGE; //mpinc = day_mpinc; //frang = day_frang; mpinc = DEFAULT_MPINC; frang = DEFAULT_FRANG; nrang = NRANG; max_atten = MAX_ATTEN; prot_atten= PROT_ATTEN; rxnarrow=RXNARROW; rxwide=RXWIDE; rsep_switch=RSEP_SWITCH; //strcpy(combf,"$Id: normal_scan.c,v 2.10 1997/06/10 20:24:57 root Exp root $"); //strcpy(combf,"$Id: Nasumiso.c,v 1.00 1997/12/24 00:00:00 sessai Exp sessai $"); //strcpy(combf,"$Id: Basyouhu.c,v 1.00 1998/01/17 00:00:00 sessai Exp sessai $"); //strcpy(combf,"$Id: BasyouhuP9901.c,v 3.00 1999/01/08 00:00:00 sessai Exp sessai $"); //strcpy(combf,"$Id: BasyouhuC9903.c,v 1.01 1999/02/25 00:00:00 sessai Exp sessai $"); //strcpy(combf,"$Id: BasyouhuC9905.c,v 1.01 1999/04/26 00:00:00 sessai Exp sessai $"); //strcpy(combf,"$Id: BasyouhuC9908.c,v 1.01 1999/07/06 00:00:00 sessai Exp sessai $"); //strcpy(combf,"$Id: BasyouhuP200001.c,v 1.00 1999/12/06 00:00:00 sessai Exp sessai $"); //strcpy(combf,"$Id: BasyouhuP200001.c,v 1.01 1999/12/14 12:00:00 sessai Exp sessai $"); //strcpy(combf,"$Id: BasyouhuP200002.c,v 1.00 1999/12/21 00:00:00 sessai Exp sessai $"); //strcpy(combf,"$Id: BasyouhuP200002.c,v 1.01 2000/01/21 00:00:00 sessai Exp sessai $"); //strcpy(combf,"$Id: BasyouhuP200003.c,v 1.00 2000/01/24 00:00:00 sessai Exp sessai $"); strcpy(combf,"$Id: BasyouhuP200003.c,v 1.01 2000/02/14 00:00:00 sessai Exp sessai $"); // added by Sessai on Dec. 1, 1997 #ifdef BACKWARDS usr_resS1 = -1; /* backwards scan */ #else usr_resS1 = 1; /* forward scan */ #endif // I moved these from down below..., Julian, OK? #if defined(LEICESTER) || defined(TIGER) init_freq_bands(); //init_proxy(); #else start_freq=day_start_freq; #endif report("================================"); report("Control Program started."); sprintf(errbuf,"%d %s %c",SD_RADAR_ID,SD_RADAR_NAME,SD_RADAR_CODE); report(errbuf); /* set the program name on the display */ // strcpy(prg_name,"normal_scan"); set_prg_name(argv[0]); /* build the command line string */ set_cmd_line(argc,argv); /* decode the command line parameters */ //argnum=process_option(argc,argv,opt,NULL); argnum=process_option2(argc,argv,opt,NULL); if (argnumMODEMAX)||(mode<=0)){ // sprintf(errbuf,"mode %d specified...",mode); // report(errbuf); // report("mode MUST be among 1,2,...,MODEMAX !!!"); // report("Abnormal Exit!!!..."); // exit(1); // } // sprintf(errbuf,"mode %d specified by -mode option...",mode); // report(errbuf); // mode=mode-1; // } else { // report("mode option not specified!!!..."); // report("You MUST Specify mode option by -mode option!!!..."); // report("Abnormal Exit!!!..."); // exit(1); // } if(optset("force_mode",opt)){ if(force_mode>MODEMAX)force_mode=MODEMAX; if(force_mode<=0)force_mode=1; sprintf(errbuf,"mode %d by -force_mode option...", force_mode); report(errbuf); mode=force_mode-1; } else { //mode=0; sprintf(errbuf,"mode option not specified..."); report(errbuf); sprintf(errbuf,"automatical set_mode applied!"); report(errbuf); sprintf(errbuf,"spdadte[MODEMAX]="); { int i; char tmpchr[33]; for(i=0;iSUBMODEMAX)force_smode=SUBMODEMAX; if(force_smode<=0)force_smode=1; sprintf(errbuf,"submode %d by -force_smode option...", force_smode); report(errbuf); smode=force_smode-1; } else { //smode=0; sprintf(errbuf,"smode option not specified..."); report(errbuf); sprintf(errbuf,"automatical set_mode2 applied!"); report(errbuf); sprintf(errbuf,"sptgate[SUBMODEMAX]="); { int i; char tmpchr[33]; for(i=0;i=1){ show_forbid_freq(ERRLOG_NAME); //check_forbid_freq(ERRLOG_NAME,freq_range, // day_start_freq,night_start_freq); //} /* setup default summary beams added by Sessai */ //set_default_summary(ERRLOG_NAME,SUMMARY_NAME); get_summary(SUMMARY_NAME,&tmpA,&tmpB,&tmpP); sprintf(errbuf,"sd_summary b%ld,%ld,p%ld so far",tmpA,tmpB,tmpP); report(errbuf); put_summary(SUMMARY_NAME,spbm[mode][smode][0][0],SP_SMR_B,SP_SMR_P); #ifdef DEBUG report("Opening Simulated data file."); sim_file=fopen(SIM_FILE,"r"); #endif //#ifdef REPORT sprintf(errbuf,"day/night start hour %d/%d",day_start_hr,night_start_hr); report(errbuf); #if defined(LEICESTER) || defined(TIGER) sprintf(errbuf,"day/night start band %d/%d",day_start_band,night_start_band); report(errbuf); #else sprintf(errbuf,"day/night start freq %d/%d",day_start_freq,night_start_freq); report(errbuf); #endif sprintf(errbuf,"day/night frang %d/%d",day_frang,night_frang); report(errbuf); sprintf(errbuf,"day/night mpinc %d/%d",day_mpinc,night_mpinc); report(errbuf); sprintf(errbuf,"intt %d, rsep %d, nrang %d",intt,rsep,nrang); report(errbuf); sprintf(errbuf,"wb_min %d, wb_sec %d",wb_min,wb_sec); report(errbuf); sprintf(errbuf,"start_beam %d, end_beam %d",start_beam,end_beam); report(errbuf); //#endif report("Entering main loop..."); do { int bi,bj; read_clock(&yr,&mon,&day,&hr,&min,&sec,&msec,&usec); if(v>=1)fprintf(stderr,"%d/%02d/%02d %02d:%02d:%02d.%03d%03d...", yr,mon,day,hr,min,sec,msec,usec); /* check if we need to open new files */ if (test_hour(2) !=0) { report("Opening new set of data files."); task_close(RAWWRITE,yr,mon,day,hr,min,sec); task_close(FITACF,yr,mon,day,hr,min,sec); task_close(ECHO_DATA,yr,mon,day,hr,min,sec); task_open(RAWWRITE,cmd_line,yr,mon,day,hr,min,sec); task_open(FITACF,cmd_line,yr,mon,day,hr,min,sec); task_open(ECHO_DATA,cmd_line,yr,mon,day,hr,min,sec); } #ifdef NIPR /* NTP_check... by Sessai */ //if( ntp_check(hr,min,sec,msec) ) continue; ////else if(v>=1) fprintf(stderr,"go...\n"); if(nntp==0){ if( ntp_check(hr,min,sec,msec) ) continue; } #endif if(v>=1) fprintf(stderr,"go...\n"); /* check to see if we need to update the day and night params */ day_night_flag=day_or_night(day_start_hr,night_start_hr); if (day_night_flag == NIGHT_FLAG) { #if defined(LEICESTER) || defined(TIGER) start_freq=lsfreq[night_start_band]; freq_range=lfreq_range[night_start_band]; #else start_freq=night_start_freq; #endif frang = night_frang; mpinc = night_mpinc; } else { #if defined(LEICESTER) || defined(TIGER) start_freq=lsfreq[day_start_band]; freq_range=lfreq_range[day_start_band]; #else start_freq=day_start_freq; #endif frang = day_frang; mpinc = day_mpinc; } //set_mode(yr,mon,day,hr,min,sec); if(optset("force_mode",opt)==0) set_mode1(yr,mon,day); if(optset("force_submode",opt)==0) set_mode2(hr,min,sec); if((optset("it",opt))==0&&(optset("intt",opt)==0)) intt=spintt[mode][smode]; start_beam=spstbm[mode][smode]; end_beam =spedbm[mode][smode]; /* record beam numbers if not usual */ if ((start_beam != START_BEAM) || (end_beam != END_BEAM)) { usr_resS2=start_beam; usr_resS3=end_beam; } /* test whether we should perform xcf */ if (xcount > 0) { ++count; if(count == xcount) { xcf = 1; count = 0; } else xcf= 0; } else xcf = 0; // skip_beam=calc_skip2(wb_min,wb_sec); if(sponly[mode][smode]){ scan=1; // for(bi...) loop is just a dummy to avoid vlptm from crashing... for(bi=0;bi=16))continue; if((exit_poll=onebeam(bmc))!=0) break; scan=DEFAULT_SP_SCAN; } } else { bm_scan_sign=((start_beam>end_beam) ? -1 : 1); //if( (start_beam+bm_scan_sign*skip_beam-end_beam)*bm_scan_sign >0 ) skip_beam=0; spbmc2=0; fnc=(fnc+1)%2; for(bi=0;bi<2;bi++){ for(bj=0+bi;bj<4;bj+=2){ for(bmc=start_beam+bm_scan_sign*bj; (end_beam-bmc)*bm_scan_sign>=0;bmc+=bm_scan_sign*4) { if(bmc==start_beam) scan=1; else { scan=0; if(one_of_spec(bmc))continue; } #if defined(LEICESTER) || defined(TIGER) start_freq=lsfreq[stf[day_night_flag][fnc]]; freq_range=lfreq_range[stf[day_night_flag][fnc]]; #else start_freq=stf[day_night_flag][fnc]; #endif if((exit_poll=onebeam(bmc))!=0) break; spbmc++; //if((spbmc==spbmnum)||(spbm[mode][smode][0][spbmc]==-1))spbmc=0; if((spbmc==spbmnum)||(spbm[mode][smode][0][spbmc]==-1)){ fsc=(fsc+1)%2; spbmc=0; } if((spbm[mode][smode][0][spbmc]<0)||(spbm[mode][smode][0][spbmc]>=16))continue; if(spbmc2==spbm[mode][smode][1][spbmc])scan=0; else scan=DEFAULT_SP_SCAN; spbmc2++; #if defined(LEICESTER) || defined(TIGER) start_freq=lsfreq[stf[day_night_flag][fsc]]; freq_range=lfreq_range[stf[day_night_flag][fsc]]; #else start_freq=stf[day_night_flag][fsc]; #endif if((exit_poll=onebeam(spbm[mode][smode][0][spbmc]))!=0) break; } if(exit_poll) break; } if(exit_poll) break; } } /* wait on two minute boundary */ if (exit_poll==0) { read_clock(&yr,&mon,&day,&hr,&min,&sec,&msec,&usec); if(v>=1)fprintf(stderr, "%d/%02d/%02d %02d:%02d:%02d.%03d%03d...wb%d:%02d...\n", yr,mon,day,hr,min,sec,msec,usec,wb_min,wb_sec); wait_boundary2(wb_min,wb_sec); } } while (exit_poll==0); report("Shutdown detected."); /* get the last outstanding record from fitacf */ if ((f=get_fit(FITBUFFER_NAME,&fit_dt_buf))!=frame_counter) { sprintf(errbuf,"Received fit data block %d",f); report(errbuf); task_write_fit(ECHO_DATA,&fit_dt_buf,1); frame_counter=f; /* count the number of fit data frames */ } else report("No fit data waiting."); /* close files and exit */ report("Closing data files."); task_close(RAWWRITE,yr,mon,day,hr,min,sec); task_close(FITACF,yr,mon,day,hr,min,sec); task_close(ECHO_DATA,yr,mon,day,hr,min,sec); /* back to the previous sd_summary setting... by Sessai */ //put_summary(SUMMARY_NAME,SMR_BEAM_A,SMR_BEAM_B,SMR_PWR); put_summary(SUMMARY_NAME,tmpA,tmpB,tmpP); report("Exiting control program."); report("================================"); exit(0); } int one_of_spec(int bmc){ int i,bingo; i=0; bingo=0; while(i=2){ if(scan==0||scan==1) fprintf(stderr,"Beam%02d:",bmnum); else fprintf(stderr,"SPBM%02d:",bmnum); } end_freq=start_freq+freq_range; /* set the radar parameter block up */ set_block(&raw_dt_buf); set_time(&raw_dt_buf); if(v>=2)fprintf(stderr,"%02d:%02d:%02d:", raw_dt_buf.PARMS.HOUR,raw_dt_buf.PARMS.MINUT,raw_dt_buf.PARMS.SEC); //////////////////////////////////////////////////////////////////////////// //#ifdef DEBUG //if(v>=1){...} if(v>=2){ //sprintf(errbuf,"%02d:%02d:%02d:B%d:scan%d", // raw_dt_buf.PARMS.HOUR,raw_dt_buf.PARMS.MINUT, // raw_dt_buf.PARMS.SEC,bmnum,scan); sprintf(errbuf,"%02d:%02d:%02d:B%d,F%d,scan%d", raw_dt_buf.PARMS.HOUR,raw_dt_buf.PARMS.MINUT, raw_dt_buf.PARMS.SEC,bmnum,start_freq,scan); //#ifdef NIPR reportS(errbuf); // new in control.lib! //#else // report(errbuf); //#endif } //#endif //////////////////////////////////////////////////////////////////////////// if(v>=3)fprintf(stderr,"fclr.."); status=fclr(&raw_dt_buf,start_freq,end_freq,DEFAULT_FREQ_STEP); #ifdef DEBUG dum1=raw_dt_buf.PARMS.TFREQ; dum2=raw_dt_buf.PARMS.NOISE; #endif #if defined(LEICESTER) || defined(TIGER) read_uconts(); #endif #ifdef PULSE_CODE if (status==0) status=pulse_code(&raw_dt_buf,nbaud,code); #else if (status==0) { if(v>=3)fprintf(stderr,"Tx%d..",raw_dt_buf.PARMS.INTT); status=radar(&raw_dt_buf); } #endif else report("fclr failed! NoTx!."); if(v>=3)fprintf(stderr,"gs.."); get_status(RADOPS_DIO_NAME,&raw_dt_buf,0); #ifdef DEBUG if (sim_file !=NULL) { if (read_raw_data(sim_file,&raw_dt_buf) !=0) { if(v>=3)fprintf(stderr,"reached end of sim. file!.."); fclose(sim_file); sim_file=fopen(SIM_FILE,"r"); } raw_dt_buf.PARMS.TFREQ=dum1; raw_dt_buf.PARMS.NOISE=dum2; } #endif /* send the raw data to the other tasks */ if(v>=3)fprintf(stderr,"twr.."); task_write_raw(RAWWRITE,&raw_dt_buf,1); task_write_raw(FITACF,&raw_dt_buf,1); task_write_raw(ECHO_DATA,&raw_dt_buf,1); task_write_aux(ECHO_DATA,prg_name,strlen(prg_name)+1); if(v>=3)fprintf(stderr,"gf.."); if ((f=get_fit(FITBUFFER_NAME,&fit_dt_buf))!=frame_counter) { if(v>=3)fprintf(stderr,"%2d(%d)..",fit_dt_buf.prms.BMNUM,f); /* set summary beam again if needed */ // new in ver.1.01 //if((spsmbm[mode][smode]&(0x0001<=smrsep){ //printf("nowc-smlast[]=%lu>=smrsep%lu ! do it!\n",nowc-smlast[(short int)fit_dt_buf.prms.BMNUM],smrsep); smlast[(short int)fit_dt_buf.prms.BMNUM]=nowc; if((fit_dt_buf.prms.BMNUM!=tmpAnow)&&(fit_dt_buf.prms.BMNUM!=tmpBnow)){ // new in ver.1.01 if(v>=3)fprintf(stderr,"ps%d..",fit_dt_buf.prms.BMNUM); if(put_summary(SUMMARY_NAME, fit_dt_buf.prms.BMNUM,SP_SMR_B,SP_SMR_P)==0){ tmpAnow=fit_dt_buf.prms.BMNUM; tmpBnow=SP_SMR_B; } else { if(v>=3)report("psFAILED!"); } // new in ver.1.01 } } else { if((tmpAnow!=-1L)||(tmpBnow!=-1L)){ //printf("bm=%lu,tmpAnow=%lu,tmpBnow=%lu,do ps-1-1...\n",fit_dt_buf.prms.BMNUM,tmpAnow,tmpBnow); put_summary(SUMMARY_NAME,-1L,-1L,SP_SMR_P); tmpAnow=-1L; tmpBnow=-1L; } } } else { if((tmpAnow!=-1L)||(tmpBnow!=-1L)){ //printf("bm=%lu,tmpAnow=%lu,tmpBnow=%lu,do ps-1-1...\n",fit_dt_buf.prms.BMNUM,tmpAnow,tmpBnow); put_summary(SUMMARY_NAME,-1L,-1L,SP_SMR_P); tmpAnow=-1L; tmpBnow=-1L; } } // new in ver.1.01 /* send fit data to echo_data */ if(v>=3)fprintf(stderr,"twf.."); task_write_fit(ECHO_DATA,&fit_dt_buf,1); frame_counter=f; /* count the number of fit data frames */ } else report("No fit data waiting."); if(v>=3)fprintf(stderr,"EO1B\n"); if(v>=4)show_data_list(stderr,&raw_dt_buf,&fit_dt_buf,nrang, start_freq,freq_range,fitOK,v-3); //if(v>=3)fprintf(stderr,"ui.."); #if defined(LEICESTER) || defined(TIGER) // exit_poll=user_int(&raw_dt_buf,...) status=user_int(&raw_dt_buf, "start_beam i end_beam i \ day_start_band i night_start_band i \ day_frang i night_frang i day_mpinc i \ night_mpinc i start_freq i end_freq i", &start_beam,&end_beam, &day_start_band,&night_start_band, &day_frang,&night_frang, &day_mpinc,&night_mpinc,&start_freq,&end_freq); #else // exit_poll=user_int(&raw_dt_buf,...) status=user_int(&raw_dt_buf, "start_beam i end_beam i \ day_start_freq i night_start_freq i \ day_frang i night_frang i day_mpinc i \ night_mpinc i start_freq i end_freq i", &start_beam,&end_beam, &day_start_freq,&night_start_freq, &day_frang,&night_frang, &day_mpinc,&night_mpinc,&start_freq,&end_freq); #endif set_vars(&raw_dt_buf); return status; } /* build the command line string */ void set_cmd_line(int argc,char *argv[]) { strcpy(cmd_line,argv[0]); if(argc>1){ int c; for (c=1;c