/* BasyouhuP9901.c - for Japanese Special Time in Jan. & Feb.,1999 ver. 3.00
* ===============
*
* --- based on Sessai's revised version of Rob's normal_scan
* for Radops2000v4.01 which can be used also on Radops v4.10
*
* intt=3 or 2.
* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
* if you cannot, please change it using '-it' option!!!!!!!!!!!
* e.g. '-it 3' for intt=3. !!!!!!!!!!!
* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
*
* (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 1-2 high time resolution special camping beams
* for Geotail conjugate observation...
* (defined in "for loop" code in this program and
* in "BasyouhuP9901.h")
*
* //OLD #define CP_ID 5240
* #define CP_ID 5241
*
* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
* Please Specify your most appropriate FREQUENCIES
* by tuning /radops/usr/include/default.h
* or by giving "-df" and "-nf" option to me!!!!!!!!!!!!!!
* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
*
* ...This is Not the "Nasu"...
*
* by Sessai@NIPR
*/
/*
$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] [-nf night_start_freq/band]
[-dt day_start_hr] [-nt night_start_hr] [-xcf xcount] [-nntp]
[-mode mode(1-4)] [-it intt] [-v verbose(0-9)] [option file]
You MUST specify '-mode mode' option for each special day!!!!!!!!!!!!!!!!!
(If you don not specify it, this RCP will abnormally exit soon!
without doing anything!!! There is no default value!!!!!!!!!!)
-mode 1 for Jan. 24th, 1999 !!!!!!!!!!!!!!!!!!!!!!
-mode 2 for Jan. 25th, 1999 !!!!!!!!!!!!!!!!!!!!!!
-mode 3 for Jan. 29th, 1999 !!!!!!!!!!!!!!!!!!!!!!
-mode 4 for Jan. 30th, 1999 !!!!!!!!!!!!!!!!!!!!!!
-mode 5 for Feb. 4th, 1999 !!!!!!!!!!!!!!!!!!!!!!
-mode 6 for Feb. 9th, 1999 !!!!!!!!!!!!!!!!!!!!!!
-mode 7 for Feb. 20th, 1999 !!!!!!!!!!!!!!!!!!!!!!
-mode 8 for Feb. 25th, 1999 !!!!!!!!!!!!!!!!!!!!!!
If you want to change "intt" to avoid this RCP or your hardware crashing,
you can use '-it' option to overide it.
Please specify your best frequency to get as much echo as possible.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
You can do so using '-df' and '-nf' option (like in normal_scan)
Many thanks for your collaboration...
#endif
#define SIM_FILE "/radops/demo.dat"
//#define CP_ID 5240
#define CP_ID 5241
#include < stdlib.h>
#include < stdio.h>
#include < string.h> // added by Sessai
#include < signal.h>
/* 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 (Jan.,1999)
#include "BasyouhuP9901.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;
#ifndef LEICESTER
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;
#ifdef LEICESTER
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 4 by command_line...
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
// {"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
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;
//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 1.00 1998/12/08 00:00:00 sessai Exp sessai $");
strcpy(combf,"$Id: BasyouhuP9901.c,v 3.00 1999/01/08 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?
#ifdef LEICESTER
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 (argnum < argc) {
if((opt_file=fopen(argv[argnum],"r"))!=NULL) {
//process_file(opt_file,opt,NULL);
process_file2(opt_file,opt,NULL);
fclose(opt_file);
} else {
sprintf(errbuf,"Cannot open option file %s!!!!",argv[argnum]);
report(errbuf);
// exit(1);
}
}
if(optset("mode",opt)){
//if((mode > 4)||(mode <= 0)){...}
if((mode > MODEMAX)||(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;
start_beam=spstbm[mode];
end_beam =spedbm[mode];
sprintf(errbuf,"mode %d selected...",mode);
report(errbuf);
if((optset("it",opt))||(optset("intt",opt))){
sprintf(errbuf,"intt = %d selected by mode...",spintt[mode]);
report(errbuf);
sprintf(errbuf,"BUT intt = %d specified by intt option!!",intt);
report(errbuf);
report("spintt is OVERRIDED!!!...");
sprintf(errbuf,"intt = %d selected!!!!!!!!",intt);
report(errbuf);
} else {
intt=spintt[mode];
sprintf(errbuf,"intt = %d selected by mode...",intt);
report(errbuf);
}
if(sponly[mode]){
report("SpecialBeam(s) Only Mode is selected by mode!!!...");
} else {
report("Basyouhu Special Scan Mode is selected by mode!!!...");
sprintf(errbuf,"start_beam %d selected by mode...",start_beam);
report(errbuf);
sprintf(errbuf," end_beam %d selected by mode...", end_beam);
report(errbuf);
}
spbmnum=0;
while((spbm[mode][0][spbmnum]!=-1)
&&(spbmnum < SPBMNUM))spbmnum++;
sprintf(errbuf,"%d spec_beam(s)(",spbmnum);
{ int i; char tmpchr[33];
for(i=0;i < spbmnum;i++){
strcat(errbuf,itoa(spbm[mode][0][i],tmpchr,10));
if(i < spbmnum-1)strcat(errbuf,",");
}
}
strcat(errbuf,") specified by mode...");
report(errbuf);
strcpy(errbuf,"smr_beams =");
{ int i; char tmpchr[33];
for(i=0;i < 16;i++){
if(spsmbm[mode]&(0x0001 << i)){
strcat(errbuf," ");
strcat(errbuf,itoa(i,tmpchr,10));
}
}
}
strcat(errbuf,".");
report(errbuf);
} else {
report("mode option not specified!!!...");
report("You MUST Specify mode option by -mode option!!!...");
report("Abnormal Exit!!!...");
exit(1);
}
#ifdef NIPR
if(optset("nntp",opt)){
//nntp=1;
report("No NTP mode specified...");
}
#endif
#if 0
if((optset("fr",opt))||(optset("frang",opt))){
day_frang=frang;
night_frang=frang;
sprintf(errbuf,"fixed frang %d specified...",frang);
report(errbuf);
}
if((optset("mp",opt))||(optset("mpinc",opt))){
day_mpinc=mpinc;
night_mpinc=mpinc;
sprintf(errbuf,"fixed mpinc %d specified...",mpinc);
report(errbuf);
}
#endif
txpl = (rsep*20)/3;
#ifdef PULSE_CODE
txpl = 500;
#endif
report("Registering control Program.");
register_program(SCHEDULE_NAME,OUR_NAME);
if(scheduled()) report("Started by scheduler.");
else report("Started manually!");
/* setup communication with the other tasks */
report("Starting drivers.");
start_up(DRIVER_NAME,RADOPS_DIO_NAME,ERRLOG_NAME);
/* set the pulse and lag tables in the parameter block */
report("Setting pulse table.");
set_pulse(&raw_dt_buf,ptab,7);
set_lag_table(&raw_dt_buf,lags,18);
/* close any raw or fit data files that may still be open */
report("Closing any existing files.");
read_clock(&yr,&mon,&day,&hr,&min,&sec,&msec,&usec);
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);
/* open new raw and fit data files */
report("Opening first set of data files.");
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 LEICESTER
//init_freq_bands(); <-- Julian, I moved this also to above, OK?
init_proxy();
#else
//start_freq=day_start_freq;
#endif
#ifdef NIPR
/* read our NTP table... by Sessai */
//if(ntp_read(ERRLOG_NAME)==-1) exit(1);
if(nntp==0){
if(ntp_read(ERRLOG_NAME)==-1) exit(1);
} else report("ignore NTP table...");
#endif
/* show and check our restrict.freq table... by Sessai */
//if(v>=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][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);
#ifdef LEICESTER
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) {
#ifdef LEICESTER
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 {
#ifdef LEICESTER
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;
}
/* 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]){
scan=1;
// for(bi...) loop is just a dummy to avoid vlptm from crashing...
for(bi=0;bi < SPBMMAX;bi++){
spbmc++;
if(spbmc==spbmnum)spbmc=0;
//if(spbm[mode][0][spbmc]==-1)spbmc=0;
bmc=spbm[mode][0][spbmc];
//if((bmc < 0)||(bmc>=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;
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((exit_poll=onebeam(bmc))!=0) break;
spbmc++;
if((spbmc==spbmnum)||(spbm[mode][0][spbmc]==-1))spbmc=0;
if((spbm[mode][0][spbmc] < 0)||(spbm[mode][0][spbmc]>=16))continue;
if(spbmc2==spbm[mode][1][spbmc])scan=0;
else scan=DEFAULT_SP_SCAN;
spbmc2++;
if((exit_poll=onebeam(spbm[mode][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 < spbmnum && spbm[mode][0][i]!=-1){
if(bmc==spbm[mode][0][i]){
bingo++;
break;
}
i++;
}
return bingo;
}
int onebeam(int bmc) {
int status;
static long int tmpAnow=-1,tmpBnow=-1;
bmnum=bmc;
if(v>=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){
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);
//#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 LEICESTER
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");
}
}
#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 */
if((spsmbm[mode]&(0x0001 << fit_dt_buf.prms.BMNUM))&&
(fit_dt_buf.prms.BMNUM!=tmpAnow)&&(fit_dt_buf.prms.BMNUM!=tmpBnow)){
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!");
}
}
/* 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..");
#ifdef LEICESTER
// 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 < argc;c++) {
strcat(cmd_line," ");
strcat(cmd_line,argv[c]);
}
}
sprintf(errbuf,"Command Line:%s",cmd_line);
report(errbuf);
return;
}
/* set the program name on the display */
void set_prg_name(char *argv0) {
#if 0
strcpy(prg_name,"normal_scan");
#else
if(strrchr(argv0,'/')==NULL)
strcpy(prg_name,argv0);
else{
static char tmpstr[64];
strcpy(tmpstr,strrchr(argv0,'/'));
strcpy(prg_name,&tmpstr[1]);
}
sprintf(errbuf,"prg_name=%s",prg_name);
report(errbuf);
#endif
return;
}
void report(char *str) {
// #ifdef REPORT
//log_error(ERRLOG_NAME,"control",str);
log_errorS(ERRLOG_NAME,"control",str,1);
// #endif
}
void reportS(char *str) {
//log_error2(ERRLOG_NAME,"control",str);
log_errorS(ERRLOG_NAME,"control",str,0);
}