1 /* For SIGMET version 1 and version 2 files.
4 * Applied Research Corp.
8 * The structures exactly match the SIGMET documentation.
14 /*Structure identifier, byte 0 of structure_header, III-18 */
15 #define NSIG_INGEST_SUM 3
18 /* Data type, value for byte 22 in ingest data header, III-29 */
19 #define NSIG_DTB_EXH 0
20 #define NSIG_DTB_UCR 1
22 #define NSIG_DTB_VEL 3
23 #define NSIG_DTB_WID 4
24 #define NSIG_DTB_ZDR 5
25 #define NSIG_DTB_UCR2 8
26 #define NSIG_DTB_CR2 9
27 #define NSIG_DTB_VEL2 10
28 #define NSIG_DTB_WID2 11
29 #define NSIG_DTB_ZDR2 12
30 #define NSIG_DTB_KDP 14
31 #define NSIG_DTB_KDP2 15
32 #define NSIG_DTB_PHIDP 16
33 #define NSIG_DTB_VELC 17
34 #define NSIG_DTB_SQI 18
35 #define NSIG_DTB_RHOHV 19
36 #define NSIG_DTB_RHOHV2 20
37 #define NSIG_DTB_DBZ2 21
38 #define NSIG_DTB_VELC2 22
39 #define NSIG_DTB_SQI2 23
40 #define NSIG_DTB_PHIDP2 24
41 #define NSIG_DTB_HCLASS 55
42 #define NSIG_DTB_HCLASS2 56
43 #define NSIG_DTB_ZDRC 57
44 #define NSIG_DTB_ZDRC2 58
45 #define NSIG_DTB_DBTE8 71
46 #define NSIG_DTB_DBZE8 73
48 /* Product type code ,value for byte 12 in product configuration
51 #define NSIG_PROD_PPI 1 /* PPI */
52 #define NSIG_PROD_RHI 2 /* RHI */
53 #define NSIG_PROD_CAPPI 3 /* CAPPI */
54 #define NSIG_PROD_CROSS 4 /* Cross section */
55 #define NSIG_PROD_TOPS 5 /* Echo tops */
56 #define NSIG_PROD_RAIN1 7 /* Precipitation 1 hour */
57 #define NSIG_PROD_TRACK 6 /* Storm track */
58 #define NSIG_PROD_RAINN 8 /* Precipitation n hour */
59 #define NSIG_PROD_VVP 9 /* Velocity Volume processing */
60 #define NSIG_PROD_VIL 10 /* Vertically Integrated Liquid */
61 #define NSIG_PROD_SHEAR 11 /* Wind shear */
62 #define NSIG_PROD_WARN 12 /* Warning (overlay) */
63 #define NSIG_PROD_RTPPI 13 /* Real time PPI */
64 #define NSIG_PROD_RTRHI 14 /* Real time RHI */
65 #define NSIG_PROD_RAW 15 /* Raw data set (no display)*/
66 #define NSIG_PROD_MAX 16 /* Maximum with side panels */
67 #define NSIG_PROD_USER 17 /* Earth projection user product */
68 #define NSIG_PROD_USERV 18 /* Section projection user product */
69 #define NSIG_PROD_OTHER 19 /* Other user product (no display) */
70 #define NSIG_PROD_STATUS 20 /* Status product (no display) */
71 #define NSIG_PROD_SLINE 21 /* Shear Line Product */
72 #define NSIG_PROD_WIND 22 /* Horizontal wind field */
74 #define NSIG_SCAN_PPI 1
75 #define NSIG_SCAN_RHI 2
76 #define NSIG_SCAN_MAN 3
77 #define NSIG_SCAN_CON 4
78 #define NSIG_SCAN_FIL 5
80 #define NSIG_BLOCK 6144
81 #define NSIG_MAX_BIN 1536
83 /* Two byte binary angle is unsigned short */
84 /* Using these typedefs forces non-word alignment. This is because
85 * we don't want any space between members of a structure.
86 * -- A coding trick --
88 typedef unsigned char bang[2];
89 typedef unsigned char twob[2];
90 typedef unsigned char fourb[4];
92 /* Ray header 3.4.2, page III-29 */
93 /* No change for NSIG_VER2 */
95 bang beg_azm; /* Azimuth at beginning of ray (binary angle). */
96 bang beg_elev; /* Elevation at beginning of ray (binary angle). */
97 bang end_azm; /* Azimuth at end of ray (binary angle). */
98 bang end_elev; /* Elevation at end of ray (binary angle). */
99 twob num_bins; /* Actual number of bins in the ray. */
100 twob sec; /* Time in seconds from start of sweep (unsigned). */
102 /*============================================================*/
103 /*============================================================*/
105 /* Extended Header version 0, section 3.4.3, page III-29 */
106 /* No change for NSIG_VER2 */
111 } NSIG_Ext_header_ver0;
112 /*============================================================*/
113 /*============================================================*/
115 /* Extended Header version 1, section 3.4.3, page III-29 */
117 fourb msec; /* Time in milliseconds from the sweep starting time. */
118 twob cal_sig; /* Calibration Signal level. */
119 bang azm; /* Azimuth (binary angle) */
120 bang elev; /* Elevation (binary angle) */
121 bang train_ord; /* Train order (binary angle) */
122 bang elev_ord; /* Elevation order (binary angle) */
123 bang pitch; /* Pitch (binary angle) */
124 bang roll; /* Roll (binary angle) */
125 bang heading; /* Heading (binary angle) */
126 bang azm_rate; /* Azimuth Rate (binary angle/sec) */
127 bang elev_rate; /* Elevation Rate (binary angle/sec) */
128 bang pitch_rate; /* Pitch Rate (binary angle/sec) */
129 bang roll_rate; /* Roll Rate (binary angle/sec) */
133 bang heading_rate; /* Heading Rate (binary angle/sec) */
135 fourb lat; /* Latitude (binary angle) */
136 fourb lon; /* Longitude (binary angle) */
137 twob alt; /* Altitude (meters) */
138 twob vel_e; /* Velocity East (cm/sec) */
139 twob vel_n; /* Velocity North (cm/sec) */
140 twob vel_u; /* Velocity Up (cm/sec) */
144 fourb time_update; /* Time since last update (milliseconds) */
146 twob nav_sys_flag; /* Navigation system OK flag */
147 twob rad_vel_cor; /* Radial velocity correction (velocity units) */
148 } NSIG_Ext_header_ver1;
149 /*============================================================*/
150 /*============================================================*/
155 /*-----------------------------------------------------------------*/
157 * All structure names are prefixed with NSIG_ and have the
158 * first letter of the remainder capitalized.
160 /*-----------------------------------------------------------------*/
162 /* Structure header 3.2.35, page III-18 */
174 } NSIG_Structure_header;
175 /*============================================================*/
176 /*============================================================*/
178 /* Time sturcture 3.2.36, page III-18 */
182 twob msec; /* Fractions of seconds in milliseconds. */
193 /*============================================================*/
194 /*============================================================*/
196 /* ingest data header 3.4.1, page III-28 */
198 NSIG_Structure_header struct_head;
212 twob data_type; /* Data code (See Task_DSP_Info.IDATA) */
217 } NSIG_Ingest_data_header;
218 /*============================================================*/
219 /*============================================================*/
221 /* No change for NSIG_VER2 */
229 } NSIG_Raw_prod_bhdr;
230 /*============================================================*/
231 /*============================================================*/
233 /* Define the color scale conversion */
235 #define COLOR_SCALE_OVERRIDE (0x0200)
236 #define COLOR_SCALE_VARIABLE (0x0100)
237 #define COLOR_LABEL_MASK (0x00ff)
243 twob ilevel_seams[16];
244 } NSIG_Color_scale_def;
246 /*============================================================*/
247 /*============================================================*/
249 /* Product configuration structure 3.5.1.1, page III-35 */
251 NSIG_Structure_header st_head;
254 twob isch; /* Scheduling */
255 #define PSC_HOLD_P 0 /* Do not run at all. */
256 #define PSC_NEXT_P 1 /* Run once on next available data */
257 #define PSC_ALL_P 2 /* Run as data becomes available */
258 #define PSC_AGAIN_P 3 /* Run again on data last used */
260 fourb isch_skip; /* # seconds between runs */
265 NSIG_Ymds_time prod_time;
266 NSIG_Ymds_time file_time;
267 NSIG_Ymds_time schd_time;
268 twob schd_code; /* Not used in Ver 2. */
269 fourb sec_skip; /* Not used in Ver 2. */
284 fourb ixscale, iyscale, izscale; /* Scale in cm/pixel */
296 fourb irange_last_v20; /* Range of last bin in cm (raw only) */
298 twob idata_out; /* Data type of data generated by product gen */
300 /* This section for version 2.1+ products: */
302 twob idata_in; /* Data type used by the generator */
304 twob iradial_smooth; /* Range in km*100 over which radial */
305 /* smoothing should be done. 0:none. */
306 twob iruns; /* # of times this pcf has been run */
307 fourb izr_const; /* Z-R or Z-W constant and exponent */
308 fourb izr_exp; /* in 1/1000 of integers */
309 twob ix_smooth; /* X-Y Smoothing parameters for 2D */
310 twob iy_smooth; /* products. km*100, 0:none */
312 /* ---- Product Specific Parameters ---- */
313 /*The following area conveys information needed for each specific product.*/
315 char psi[80]; /* Do we need these?? -John 8/14/96 */
318 NSIG_Color_scale_def colors;
327 /* The following depends on version 2.0, 2.1 etc check III-34,35 */
328 /* Currently, though, this is not used. */
331 } NSIG_Product_config;
332 /*============================================================*/
333 /*============================================================*/
336 /* product end 3.5.1.2 ,page III-36 */
339 char sprod_sitename[16]; /* Name of product generator site, space padded */
340 char sprod_version[8]; /* Product IRIS version, null terminated */
341 char sing_version[8]; /* Ingest IRIS version, null terminated */
342 NSIG_Ymds_time data_time; /* Oldest data in this file */
345 char part_name[80]; /* Path name of file on disk. */
346 NSIG_Ymds_time data_time; /* Date/time structure. */
348 char site_name[16]; /* Site name. Eg. mit, tog, kwa (upper-case?). */
349 twob ahead_gms; /* # minutes ahead of GMT. */
350 fourb lat; /* Latitude (binary angle format). */
351 fourb lon; /* Longitude (binary angle format). */
352 twob grnd_sea_ht; /* Signed ground height (meters). */
353 twob rad_grnd_ht; /* Radar height above ground (meters). */
357 twob sig_proc; /* Type of signal processor used. */
359 fourb prf; /* PRF (hz). */
360 fourb pulse_wd; /* sample width in microsec/100*/
362 twob sig_proc; /* Type of signal processor used. */
366 twob trg_rate; /* Trigger rate scheme. */
367 twob num_samp; /* number of samples (per ray). */
368 char clutter_file[12]; /* Clutter filter file name. */
369 twob num_filter; /* Number of filter used for the first range bin. */
370 fourb wavelen; /* Wavelength in 1/100 of centimeters. */
371 fourb trunc_ht; /* Truncation height in cm. */
372 fourb rng_f_bin; /* Range of the first bin in cm. */
373 fourb rng_l_bin; /* Range of the last bin in cm. */
374 fourb num_bin; /* Number of output bins. */
375 twob flag; /* Flag word. */
376 #define PH_OVERLAY_P (0x0001) /* Has an overlay \ For picture */
377 #define PH_RINGS_P (0x0002) /* Has range rings/ products only */
379 twob file_up; /* Number of updates to the file. */
380 char label[16][4]; /* Array of labels for color parameter legend. */
382 twob ilog_filter_first; /* Log filter used on first bin */
385 char label_unit[12]; /* Text holding units of the labels. (Ver 2 only) */
387 twob prod_seq; /* Product sequence number. */
388 twob color_num[16]; /* Color numbers for the up to 16 steps. */
389 char color_reject; /* Color used for rejected data. */
393 /* The number of results elements at the end of the file.
394 * Used for warning, shearline, and track only */
397 #define PROD_END_PAD 20
398 char ipad_end[PROD_END_PAD];
400 char color_unscan; /* Color used for unscanned area. */
401 char color_over; /* Color used for overlays. */
403 fourb prod_max_rng; /* Max range of the first product used as input. */
407 /*============================================================*/
408 /*============================================================*/
410 /* Ingest Summary Header 3.3.1 , page III-19 */
412 char file_name[80]; /* Name of file on disk. */
413 twob num_file; /* Number of associated data files extant. */
415 twob isweeps_done ; /* # of sweeps that have been completed */
417 fourb sum_size; /* Total size of all files in bytes. */
418 NSIG_Ymds_time start_time;
422 char drive_name[16]; /* Name of tape drive written to. */
424 twob size_ray_headers; /* Number of bytes in the ray headers. */
425 twob size_ext_ray_headers; /* Number of bytes in extended ray headers. */
427 twob ib_task; /* # bytes in task config table */
429 char siris_version[8]; /* Null terminated */
430 char ipad_132x18[18];
432 twob num_task_conf_tab; /* Number of task configuration table. */
433 twob size_device_status_tab; /* Number of bytes in device status table. */
434 twob gparam_size; /* Number of bytes in each gparam. */
437 char site_name[16]; /* Name of site from setup program. */
438 twob time_zone; /* Time zione of recorded time, +min of GMT */
439 fourb lat_rad; /* Latitude of radar. */
440 fourb lon_rad; /* Longitude of radar. */
441 twob grd_height; /* Height of ground at site (meters) */
442 twob ant_height; /* Height of radar above ground (meters) */
443 twob azm_res; /* Resolution of delta azimuth in sweep. */
444 twob ray_ind; /* Index of first rays from above set of rays.
445 * Or the angle of the first ray.
447 twob num_rays; /* Number of rays in a sweep. */
448 fourb ant_alt; /* Altitude of radar above sea level in cm */
449 fourb vel[3]; /* [0]=east, [1]=north, [2]=up */
450 fourb ant_offset[3]; /* [0]=starboard, [1]=bow, [2]=up */
456 } NSIG_Ingest_summary;
457 /*============================================================*/
458 /*============================================================*/
460 /* rvp5_gparam structure 3.3.4.1, page III-26 */
462 twob revision; /* Revision */
463 twob num_bins; /* Number of range bins */
464 twob cur_trig_p; /* Current trigger period */
465 twob cur_tag1; /* Current TAG00 - TAG15 */
466 twob cur_tag2; /* Current TAG16 - TAG31 */
467 twob l_chan_noise; /* Log channel noise level */
468 twob i_chan_noise; /* I Channel noise level */
469 twob q_chan_noise; /* Q Channel noise level */
470 twob lat_proc_status;/* Latched processor status */
471 twob imm_proc_status;/* Immdiate processor status */
472 twob diag_reg_a; /* Diagnostic register A */
473 twob diag_reg_b; /* Diagnostic register B */
474 twob num_pulses; /* Number of pulses per ray */
475 twob trig_c_low; /* Trigger count (low 16 bits) */
476 twob trig_c_high; /* Trigger count (high 8 bits) */
477 twob num_acq_bins; /* # of properly acquired bins */
478 twob num_pro_bins; /* # of properly processed bins */
479 twob rng_off; /* 25-meter range offset */
480 twob noise_rng; /* Noise range in KM */
481 twob noise_trg; /* Noise trigger period */
482 twob pulse_w_0; /* Pulse width 0 min trig period */
483 twob pulse_w_1; /* Pulse width 1 min trig period */
484 twob pulse_w_2; /* Pulse width 2 min trig period */
485 twob pulse_w_3; /* Pulse width 3 min trig period */
486 twob pulse_w_pat; /* Pulse width bit patterns */
487 twob cur_wave_pw; /* Current waveform/pulsewidth */
488 twob cur_trig_gen; /* Current trigger gen period */
489 twob des_trig_gen; /* Desired trigger gen period */
490 twob prt_start; /* PRT at start of last ray */
491 twob prt_end; /* PRT at end of last ray */
492 twob proc_thr_flag; /* Processing/threshold flags */
493 twob log_con_slope; /* LOG conversion slope */
494 twob log_noise_thr; /* LOG noise threshold */
495 twob clu_cor_thr; /* Clutter correction threshold */
496 twob sqi_thr; /* SQI threshold */
497 twob log_thr_w; /* LOG threshold for width */
498 twob cal_ref; /* Calibration reflectivity */
499 twob q_i_cur_samp; /* Q and I current sample */
500 twob l_cur_samp; /* Log current sample */
501 twob rng_avr_cho; /* Range averaging choice */
511 /*============================================================*/
512 /*============================================================*/
515 NSIG_Structure_header struct_head;
516 NSIG_Rpv5_gparam rpv5;
518 /*============================================================*/
519 /*============================================================*/
521 /* One_device_structure. Sect: 3.3.3.1 */
525 #define DEV_NULL_P (0) /*Not applicable*/
526 #define DEV_OK_P (1) /*OK*/
527 #define DEV_ERROR_P (2) /*Error has occured*/
528 /* The following are only valid for network devices */
529 #define DEV_REMOTE_P (5) /*Remote computer unavailable*/
530 #define DEV_IRIS_P (6) /*Remote IRIS unavailable*/
532 /* This number indicates which process is using the device. */
534 #define PROC_NONE_P (0) /*Noone is using it*/
535 #define PROC_RTDISP_P (1) /*Real time display*/
536 #define PROC_INGEST_P (2) /*Ingest*/
537 #define PROC_INGFIO_P (3) /*Ingest file output*/
538 #define PROC_REINGEST_P (4) /*Reingest !!!tom */
539 #define PROC_OUTFMT_P (5) /*Output Formatter*/
540 #define PROC_PRODUCT_P (6) /*Product generator*/
541 #define PROC_NETWORK_P (7) /*Network !!!tom */
542 #define PROC_QUICK_P (8) /*Quick look menu(part of out)*/
543 #define PROC_TAPE_P (9) /*Tape process*/
544 #define PROC_NORDRAD_P (10) /*NORDRAD process*/
546 /* Node name or user name */
548 /* Number of characters in the name */
550 /* Process mode, see process_status structure */
552 #define MODE_NULL (0)
553 #define MODE_STOPPED (1)
554 #define MODE_IDLE (2)
555 #define MODE_RUNNING (3)
556 #define MODE_EXIT (4)
557 #define MODE_QUICK (5)
558 #define MODE_INIT (6)
559 #define MODE_HOLD (7)
561 /* Used only for antenna device */
562 #define MODE_ANT_NULL (0)
563 #define MODE_ANT_IRIS (1)
564 #define MODE_ANT_LOCAL (2)
565 #define MODE_ANT_MAIN (3)
566 #define MODE_ANT_COMP (4)
567 #define MODE_ANT_SHUT (5)
578 /*============================================================*/
579 /*============================================================*/
584 /* THIS IS WRONG.... but, does it matter for RSL ???? */
585 NSIG_Structure_header struct_head;
586 NSIG_One_device dsp_stat[4];
587 NSIG_One_device ant_stat[4];
588 NSIG_One_device outdev_stat[12];
591 NSIG_Structure_header struct_head;
592 NSIG_One_device dsp_stat[4];
593 NSIG_One_device ant_stat[4];
594 NSIG_One_device outdev_stat[12];
597 } NSIG_Device_status;
598 /*============================================================*/
599 /*============================================================*/
601 /* No change for NSIG_VER2 */
603 fourb startt; /* Start time (seconds within a day) */
604 fourb stopt; /* Stop time (seconds within a day) */
605 fourb skipt; /* Desired skip time (seconds) */
606 fourb time_last; /* Time last run (seconds w/in a day) */
607 fourb time_used; /* Time used on last run (seconds) */
608 fourb day_last; /* Relative day of last run. */
609 twob iflag; /* bit 0=ASAP, bit 1= Mandatory,
610 * bit 2=Late skip, bit 3= Time used has been measured,
611 * bit 4=Stop after running.
614 } NSIG_Task_sched_info;
615 /*============================================================*/
616 /*============================================================*/
620 twob low_prf; /* Hertz */
621 twob low_prf_frac; /* Fraction part, scaled by 2**-16 */
622 twob low_prf_sample_size;
623 twob low_prf_range_averaging; /* In bins */
624 twob thresh_refl_unfolding; /* Threshold for reflectivity unfolding in 1/100 dB */
625 twob thresh_vel_unfolding; /* Threshold for velocity unfolding in 1/100 dB */
626 twob thresh_sw_unfolding; /* Threshold for width unfolding in 1/100 dB */
628 } NSIG_Task_dsp_mode_batch;
630 /*============================================================*/
631 /*============================================================*/
641 } NSIG_Dsp_data_mask;
643 /*============================================================*/
644 /*============================================================*/
647 /* Task dsp info 3.3.2.2, page III-22 */
652 NSIG_Dsp_data_mask data_mask_cur;
653 NSIG_Dsp_data_mask data_mask_orig;
654 NSIG_Task_dsp_mode_batch task_dsp_mode;
660 fourb aux_data_def[32];
669 char filter_name[12];
671 char idop_filter_first; /* Doppler based filter used on first bin */
672 char ilog_filter_first; /* Z based filter used on first bin */
678 twob igas_atten; /* 100000 * db/km */
679 twob clutter_map_flag;
682 twob time_series_playback;
684 char custom_ray_hdr_name[16];
685 #define TASK_DSP_INFO_PAD 120
686 char ipad_end[TASK_DSP_INFO_PAD];
690 } NSIG_Task_dsp_info;
691 /*============================================================*/
692 /*============================================================*/
694 /* task cal info struct: 3.3.2.3, page III-22, rec 2 offset 944 */
695 /* No change for NSIG_VER2 */
697 twob slope; /* 00: Reflectivity slope (4096*dB/ A/D Count) */
698 twob noise; /* 02: Noise threshold (1/16 dB above noise) */
699 twob clutr_corr; /* 04: Clutter correction threshold (1/16 dB) */
700 twob sqi; /* 06: (0-1)*256 */
701 twob power; /* 08: (1/16 dBZ) */
702 char spare1[8]; /* 10: <spare> 8 */
703 twob cal_ref; /* 18: Calibration reflectivity */
704 twob z_flag_unc; /* 20: Threshold flags for Unc. reflectivity */
705 twob z_flag_cor; /* 22: Threshold flags for Cor. reflectivity */
706 twob v_flag; /* 24: Threshold flags for velocity */
707 twob w_flag; /* 26: Threshold flags for width */
708 char spare2[8]; /* 28: <spare> 8 */
709 twob speckle; /* 36: Speckle remover flag. See III-22 */
710 twob slope_2; /* 38: Refl. slope for second processor */
711 twob cal_ref_2; /* 40: Calibration reflectivity for 2nd proc */
712 twob zdr_bias; /* 42: ZDR bias in signed 1/16 dB */
713 char spare3[276]; /* 44: <spare> 276 */
714 } NSIG_Task_calib_info;
715 /*============================================================*/
716 /*============================================================*/
719 /* Task_range_info Structure 3.3.2.4, page III-23 */
721 fourb rng_first; /* 00: Range to first bin [cm] */
722 fourb rng_last; /* 04: Range to last bin [cm] */
724 fourb ibin_last; /* Range of last (input) bin in cm */
727 twob num_bins; /* 08: Number of input bins */
728 twob num_rngbins; /* 10: Number of output range bins */
729 twob var_bin_spacing; /* 12: Variable range bin spacing (0,1) */
730 fourb binstep_in; /* 14: Step between input bins */
731 fourb binstep_out; /* 18: Step between output bins */
732 twob bin_avg_flag; /* 22: Range bin averaging flag */
733 /* 0:No Avg, 1:Avg Pairs, ... */
735 char spare[132]; /* 24: <spare> 132 */
737 char spare[136]; /* 24: <spare> 136 */
739 } NSIG_Task_range_info;
740 /*============================================================*/
741 /*============================================================*/
744 /* Task scan info structure 3.3.2.5, page III-23 */
746 twob ant_scan_mode; /* 1:PPI, 2:RHI, 3:manual, 4:file */
747 twob ang_res; /* Desired angular resolution in 1/100 degree. */
753 twob num_swp; /* Number of sweeps to perform. */
754 bang beg_ang; /* Starting elevation(RHI)/azimuth(PPI) */
755 bang end_ang; /* Ending elevation(RHI)/azimuth(PPI) */
756 bang list[40]; /* List of azimuths(RSI)/elevations(PPI) */
759 union serv_task_scan_info_u
761 struct serv_task_rhi_scan_info rhi;
762 struct serv_task_ppi_scan_info ppi;
763 struct serv_task_file_scan_info fil;
764 struct serv_task_manual_scan_info man;
771 } NSIG_Task_scan_info;
772 /*============================================================*/
773 /*============================================================*/
776 fourb wavelength; /* Wavelength in 1/100 of cm */
777 char serial_num[16]; /* T/R Serial Number */
778 fourb xmit_pwr; /* Transmit Power in watts. */
779 twob flag; /* bit 0: Digital signal simulator in use.
783 twob ipolar; /* Type of polarization, see dsp_lib.h */
784 fourb itrunc; /* Truncation height in cm */
785 char ipad32x18[18]; /* Reserved for polarization description */
790 twob display_parm1; /* Real time display parameter #1 */
791 twob display_parm2; /* Real time display parameter #2 */
792 /* The following 3 members are not used in Ver 2. */
793 twob product_flag; /* Real time product flag */
795 fourb truncation_height;/* Truncation height (cm) */
796 twob nbytes_comments; /* Number of bytes of comments entered. */
798 } NSIG_Task_misc_info;
801 twob major; /* Task major number */
802 twob minor; /* Task minor number */
803 char name[12]; /* Name of task configuration file. */
804 char desc[80]; /* Task description. */
806 fourb ihybrid_count; /* Number of tasks in this hybrid set */
810 twob state; /* Task state: 0=no task, 1=task being modified,
811 * 2=inactive, 3=scheduled, 4=running
818 } NSIG_Task_end_data;
819 /*============================================================*/
820 /*============================================================*/
824 NSIG_Structure_header struct_head;
825 NSIG_Task_sched_info sched_info;
826 NSIG_Task_dsp_info dsp_info;
827 NSIG_Task_calib_info calib_info;
828 NSIG_Task_range_info range_info;
829 NSIG_Task_scan_info scan_info;
830 NSIG_Task_misc_info misc_info;
831 NSIG_Task_end_data end_data;
838 /*============================================================*/
839 /*============================================================*/
843 NSIG_Structure_header struct_head;
844 NSIG_Product_config prod_config;
845 NSIG_Product_end prod_end;
848 /*============================================================*/
849 /*============================================================*/
852 NSIG_Structure_header struct_head;
853 NSIG_Ingest_summary ingest_head;
854 NSIG_Task_config task_config;
855 NSIG_Device_status device_stat;
860 /*============================================================*/
861 /*============================================================*/
864 /* This is the organization of the 2'nd to n'th file on the tape.
865 * This structure is incomplete in that only one data record is
866 * listed. Record 1, Record 2, a data record. As each data record
867 * is ingested, the data replaces the data record part and keeps
868 * the information in Record 1 and 2 unchanged.
870 typedef unsigned char NSIG_Data_record[NSIG_BLOCK];
875 NSIG_Data_record data;
877 /*============================================================*/
878 /*============================================================*/
881 /* This is the first physical file on the TAPE. It is the only
882 * file on the tape that has this organization. All other files
883 * are PRODUCT FILES (NSIG_Product_file). Normally, this is ignored
884 * when reading disk files; there you're only reading PRODUCT FILES.
887 NSIG_Structure_header struct_head;
888 char tape_id_name[16];
894 } NSIG_Tape_header_file;
895 /*============================================================*/
896 /*============================================================*/
898 /* FUNCTION PROTOTYPES */
899 FILE *nsig_open(char *file_name);
900 void swap_nsig_record1(NSIG_Record1 *rec1);
901 void swap_nsig_record2(NSIG_Record2 *rec2);
902 void swap_nsig_raw_prod_bhdr(NSIG_Raw_prod_bhdr *rp);
903 void swap_nsig_ingest_data_header(NSIG_Ingest_data_header *ih);
905 /* Sweep reading structure */
908 unsigned char *range; /* 0..h.num_bins-1 */
910 /*============================================================*/
911 /*============================================================*/
914 NSIG_Raw_prod_bhdr bhdr;
915 NSIG_Ingest_data_header idh;
917 int nparams; /* For freeing. */
919 /*============================================================*/
920 /*============================================================*/
922 /* Each routine in nsig.c is renamed when compiling Ver2 code.
923 * The rename is simple: change nsig_ to nsig2_
926 #define nsig_open nsig2_open
927 #define nsig_read_record nsig2_read_record
928 #define nsig_close nsig2_close
929 #define nsig_endianess nsig2_endianess
930 #define NSIG_I2 NSIG2_I2
931 #define NSIG_I4 NSIG2_I4
932 #define nsig_free_ray nsig2_free_ray
933 #define nsig_free_sweep nsig2_free_sweep
934 #define nsig_read_chunk nsig2_read_chunk
935 #define nsig_read_ext_header_ver0 nsig2_read_ext_header_ver0
936 #define nsig_read_ext_header_ver1 nsig2_read_ext_header_ver1
937 #define nsig_read_ray nsig2_read_ray
938 #define nsig_read_sweep nsig2_read_sweep
939 #define nsig_from_bang nsig2_from_bang
940 #define nsig_from_fourb_ang nsig2_from_fourb_ang
941 #define swap_nsig_structure_header swap_nsig2_structure_header
942 #define swap_nsig_ymds_time swap_nsig2_ymds_time
943 #define swap_nsig_color_scale_def swap_nsig2_color_scale_def
944 #define swap_nsig_product_config swap_nsig2_product_config
945 #define swap_nsig_product_end swap_nsig2_product_end
946 #define swap_nsig_ingest_summary swap_nsig2_ingest_summary
947 #define swap_nsig_task_sched_info swap_nsig2_task_sched_info
948 #define swap_nsig_task_dsp_info swap_nsig2_task_dsp_info
949 #define swap_nsig_task_calib_info swap_nsig2_task_calib_info
950 #define swap_nsig_task_range_info swap_nsig2_task_range_info
951 #define swap_nsig_task_scan_info swap_nsig2_task_scan_info
952 #define swap_nsig_task_misc_info swap_nsig2_task_misc_info
953 #define swap_nsig_task_end_data swap_nsig2_task_end_data
954 #define swap_nsig_task_config swap_nsig2_task_config
955 #define swap_nsig_one_device swap_nsig2_one_device
956 #define swap_nsig_device_status swap_nsig2_device_status
957 #define swap_nsig_gparam swap_nsig2_gparam
958 #define swap_nsig_record1 swap_nsig2_record1
959 #define swap_nsig_record2 swap_nsig2_record2
960 #define swap_nsig_raw_prod_bhdr swap_nsig2_raw_prod_bhdr
961 #define swap_nsig_ingest_data_header swap_nsig2_ingest_data_header
962 #define get_extended_header_info get2_extended_header_info
965 void nsig_free_ray(NSIG_Ray *r);
966 void nsig_free_sweep(NSIG_Sweep **s);
967 NSIG_Sweep **nsig_read_sweep(FILE *fp, NSIG_Product_file *prod_file);
968 int nsig_read_record(FILE *fp, char *nsig_rec);
969 int nsig_endianess(NSIG_Record1 *rec1);
970 short NSIG_I2 (twob x);
971 int NSIG_I4 (fourb x);
972 void nsig_close(FILE *fp);
974 float nsig_from_fourb_ang(fourb ang);
975 float nsig_from_bang(bang in);