1 // Copyright (c) <2012> <Leif Asbrink>
2 //
3 // Permission is hereby granted, free of charge, to any person
4 // obtaining a copy of this software and associated documentation
5 // files (the "Software"), to deal in the Software without restriction,
6 // including without limitation the rights to use, copy, modify,
7 // merge, publish, distribute, sublicense, and/or sell copies of
8 // the Software, and to permit persons to whom the Software is
9 // furnished to do so, subject to the following conditions:
10 //
11 // The above copyright notice and this permission notice shall be
12 // included in all copies or substantial portions of the Software.
13 //
14 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
16 // OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
18 // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
19 // WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
20 // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
21 // OR OTHER DEALINGS IN THE SOFTWARE.
22 
23 
24 #include "globdef.h"
25 #include "uidef.h"
26 #include "rusage.h"
27 #include "thrdef.h"
28 
29 MIXER_VARIABLES mix1;
30 MIXER_VARIABLES mix2;
31 
32 int refresh_screen_flag;
33 
34 int extio_error;
35 int extio_speed_changed;
36 int extio_command_flag;
37 int extio_running;
38 int extio_show_gui;
39 
40 int sdr;
41 int use_tx;
42 
43 double wg_lowest_freq;
44 double wg_highest_freq;
45 
46 int computation_pause_flag;
47 int screensave_flag;
48 int usb2lpt_flag;
49 
50 int usb2lpt_flag;
51 int asio_flag;
52 int wg_freq_adjustment_mode;
53 int wg_freq_x1;
54 int wg_freq_x2;
55 double expose_time;
56 int no_of_processors;
57 int hyperthread_flag;
58 int cpu_rotate;
59 int thread_rotate_count;
60 long tickspersec;
61 int freq_from_file;
62 float workload;
63 int workload_counter;
64 int mouse_inhibit;
65 double mouse_time_wide;
66 double mouse_time_narrow;
67 double time_info_time;
68 double accumulated_netwait_time;
69 double netstart_time;
70 ROUTINE par_from_keyboard_routine;
71 int baseb_reset_counter;
72 int baseb_control_flag;
73 int all_threads_started;
74 int write_log;
75 int spurcancel_flag;
76 int spurinit_flag;
77 int autospur_point;
78 double recent_time;
79 int internal_generator_flag;
80 double internal_generator_phase1;
81 double internal_generator_phase2;
82 double internal_generator_shift;
83 int internal_generator_key;
84 int internal_generator_att;
85 int internal_generator_noise;
86 int truncate_flag;
87 int rxin_nbits;
88 int hand_key;
89 int kill_all_flag;
90 char lbutton_state;
91 char rbutton_state;
92 char new_lbutton_state;
93 char new_rbutton_state;
94 int no_of_netslaves;
95 int netfft1_blknum;
96 int netraw16_blknum;
97 int netraw18_blknum;
98 int netraw24_blknum;
99 int nettimf2_blknum;
100 int netfft2_blknum;
101 int netbaseb_blknum;
102 int netbasebraw_blknum;
103 int basebnet_block_bytes;
104 int basebrawnet_block_bytes;
105 int next_blkptr_16;
106 int next_blkptr_18;
107 int next_blkptr_24;
108 int next_blkptr_fft1;
109 int next_blkptr_timf2;
110 int next_blkptr_fft2;
111 int next_blkptr_baseb;
112 int next_blkptr_basebraw;
113 int netsend_ptr_16;
114 int netsend_ptr_18;
115 int netsend_ptr_24;
116 int netsend_ptr_fft1;
117 int netsend_ptr_timf2;
118 int netsend_ptr_fft2;
119 int netsend_ptr_fft2;
120 int netsend_ptr_baseb;
121 int netsend_ptr_basebraw;
122 int latest_listsend_time;
123 int net_no_of_errors;
124 int rxin_block_counter;
125 int rx_hware_fqshift;
126 char *msg_filename;
127 
128 int lir_errcod;
129 
130 
131 int font_xsep;
132 int font_ysep;
133 int font_w;
134 int font_h;
135 int font_size;
136 
137 int mouse_task;
138 float min_delay_time;
139 int savefile_repeat_flag;
140 int os_flag;
141 int qz;
142 float tune_yzer;
143 int usercontrol_mode;
144 int workload_reset_flag;
145 int fft2_to_fft1_ratio;
146 float baseband_bw_hz;
147 int baseband_bw_fftxpts;
148 int lir_inkey;
149 char *vga_font;
150 int text_width;
151 int text_height;
152 int screen_last_xpixel;
153 int screen_last_col;
154 int screen_width;
155 int screen_height;
156 int screen_totpix;
157 int uiparm_change_flag;
158 USERINT_PARM ui;
159 SSBPROC_PARM txssb;
160 CWPROC_PARM txcw;
161 int mouse_flag;
162 int mouse_hide_flag;
163 int mouse_x;
164 int new_mouse_x;
165 int mouse_xmax;
166 int mouse_xmin;
167 int mouse_y;
168 int new_mouse_y;
169 int mouse_ymax;
170 int mouse_ymin;
171 int mouse_cursize;
172 int leftpressed;
173 int rightpressed;
174 int mouse_lbutton_x;
175 int mouse_rbutton_x;
176 int mouse_lbutton_y;
177 int mouse_rbutton_y;
178 int mmx_present;
179 int simd_present;
180 int rx_audio_in;
181 int rx_audio_in2;
182 int rx_audio_out;
183 int sdr_att_counter;
184 int sdr_nco_counter;
185 
186 SOUNDCARD_PARM snd[4];
187 
188 int rx_read_bytes;
189 int mixer;
190 int rx_channels;
191 int twice_rxchan;
192 FILE *dmp;
193 FILE *dmp1;
194 FILE *sndlog;
195 FILE *wav_file;
196 float total_wttim;
197 int rx_daout_bytes;
198 int rx_daout_channels;
199 int timinfo_flag;
200 int ampinfo_flag;
201 float measured_da_speed;
202 float measured_ad_speed;
203 int rx_mode;
204 int use_bfo;
205 double diskread_time;
206 double eme_time;
207 int dasync_counter;
208 float dasync_sum;
209 float dasync_avg1;
210 float dasync_avg2;
211 float dasync_avg3;
212 double dasync_time;
213 double dasync_avgtime;
214 double da_start_time;
215 int overrun_count;
216 int wav_write_flag;
217 int wav_read_flag;
218 int audio_dump_flag;
219 int diskread_pause_flag;
220 int current_graph_minh;
221 int current_graph_minw;
222 int calibrate_flag;
223 double old_passband_center;
224 int swmmx_fft1;
225 int swmmx_fft2;
226 int swfloat;
227 int sw_onechan;
228 int memalloc_no;
229 MEMREF_T memalloc_max;
230 MEM_INF *memalloc_mem;
231 int eme_flag;
232 int timf3_oscilloscope_limit;
233 int lir_status;
234 int lir_rxin_status;
235 int lir_rxout_status;
236 int allow_wse_parport;
237 int no_of_rx_overrun_errors;
238 int no_of_rx_underrun_errors;
239 int no_of_tx_overrun_errors;
240 int no_of_tx_underrun_errors;
241 int count_rx_underrun_flag;
242 int show_map65;
243 float hg_map65_gain;
244 
245 DXDATA *dx;
246 MEM_INF fft1mem[MAX_FFT1_ARRAYS];
247 MEM_INF fft3mem[MAX_FFT3_ARRAYS];
248 MEM_INF basebmem[MAX_BASEB_ARRAYS];
249 MEM_INF hiresmem[MAX_HIRES_ARRAYS];
250 MEM_INF afcmem[MAX_AFC_ARRAYS];
251 MEM_INF voicelabmem[MAX_VOICELAB_ARRAYS];
252 MEM_INF txmem[MAX_TXMEM_ARRAYS];
253 MEM_INF blankermem[MAX_BLANKER_ARRAYS];
254 MEM_INF radarmem[MAX_RADAR_ARRAYS];
255 double flowcnt[MAX_FLOWCNT];
256 double flowtime;
257 double old_flowtime;
258 int mailbox[64];
259 
260 NET_RX_STRUCT net_rxdata_16;
261 NET_RX_STRUCT net_rxdata_18;
262 NET_RX_STRUCT net_rxdata_24;
263 NET_RX_STRUCT net_rxdata_fft1;
264 NET_RX_STRUCT net_rxdata_timf2;
265 NET_RX_STRUCT net_rxdata_fft2;
266 NET_RX_STRUCT net_rxdata_baseb;
267 NET_RX_STRUCT net_rxdata_basebraw;
268 
269 SLAVE_MESSAGE slave_msg;
270 
271 char savefile_parname[SAVEFILE_MAX_CHARS+4];  //chars + _ag + ending zero.
272 char savefile_name[SAVEFILE_MAX_CHARS+1];
273 
274 NET_FD netfd;
275 char press_f1_for_info[]="Press F1 or '!' for more info.";
276 char userint_filename[]="par_userint";
277 char network_filename[]="par_network";
278 char *rxpar_filenames[MAX_RX_MODE]={"par_wcw",
279                          "par_cw",
280                          "par_hsms",
281                          "par_ssb",
282                          "par_fm",
283                          "par_am",
284                          "par_qrss",
285                          "par_txtest",
286                          "par_test",
287                          "par_tune",
288                          "par_radar"};
289 char newcomer_rx_modes[MAX_RX_MODE]={0,1,0,1,1,10,0,0,0,0};
290 
291 char *rxmodes[MAX_RX_MODE]={"Weak signal CW",
292                  "Normal CW",
293                  "Meteor scatter CW",
294                  "SSB",
295                  "FM",
296                  "AM",
297                  "QRSS CW",
298                  "TX TEST",
299                  "SOUNDCARD TEST MODE",
300                  "ANALOG HARDWARE TUNE",
301                  "RADAR"};
302 
303 #define A MAX_MIX1
304 #define B MAX_FFT1_VERNR
305 #define C MAX_FFT1_BCKVERNR
306 #define G MAX_FFT2_VERNR
307 #define K 12000
308 
309 #define D 2000
310 #define E 1000000
311 #define F 11025
312 #define H 200
313 #define M 8000
314 #define N 10000
315 #define P 48000
316 #define A1 100
317 #define B5 5000
318 #define Q MAX_FFT1_THREADS
319 int genparm[MAX_GENPARM+2];
320 //        f  f  f w c 2       b b           e      A e   s    m        D     d e  b
321 //    f f f  f  f g o n b  l  a w f f  f  s n   A  F n m p  m i f  b   A  D  e x  g
322 //  f f f t  t  t s r d a  i  c f f f  w  t a   F  C . a u  i x f  a   m  A  f p  .
323 //  f t t 1  1  1 a r f c  m  k a t t  d  2 b   C  d M x r  x 1 t  s   a  s  . a  b
324 //  t 1 1 t  s  a t s f k  .  f c 2 2  a  t l   l  r o s t  1 c 3  t   r  p  m n  l
325 //  1 w v h  t  m l p t v  m  f t w v  t  i A   o  i r p i  r h w  i   g  e  o d  a
326 //  b i e r  o  p i e e e  a  t o i e  t  m F   c  f s u m  e a i  m   i  e  d e  n
327 //  w n r s  r  l m k n r  x  N r n r  N  e C   k  t e r e  d n n  e   n  d  e r  k
328 //                          1  1 1 1 1  1  1 1   1  1 2 2 2  2 2 2  2   2  2  2 3
329 //  0 1 2 3  4  5 6 7 8 9  0  1 2 3 4  5  6 7   8  9 0 1 2  3 4 5  6   7  8  9 0
330 int genparm_min[MAX_GENPARM]=
331  {  0,0,0,0, 0,1, 0,0,0,0,H, 2, 0,0,0, 2, 0,0,  1, 0,0,0,1, 0,1,1, 2,  0,B5, 0,0, 0};
332 int genparm_max[MAX_GENPARM]=
333  {  K,9,B,Q, D,E,99,1,1,C,E,99,10,4,G,16, D,2,800,B5,1,E,H,12,A,9, D,  N, E, H,9,99};
334 int genparm_default[MAX_RX_MODE][MAX_GENPARM]={
335 // Weak signal CW
336  { 25,2,0,0, 4,D, 0,0,0,0,K, 6, 2,2,0, 8,20,1,150,A1,0,0,5, 6,1,2,20,200, P, 1,3, 0},
337 // Normal CW
338  {100,2,0,0, 1,D, 0,0,0,0,K, 6, 2,2,0, 7, 5,0,150,A1,0,0,5, 4,1,2, 5,100, P, 1,3, 0},
339 // Meteor scatter CW
340  {300,2,0,0, 1,D, 0,0,0,0,K, 6, 2,2,0, 7, 5,0,150,A1,0,0,5, 4,1,2, 5,100, P, 1,3, 0},
341 // SSB
342  {100,2,0,0, 1,D, 0,0,0,0,K, 6, 2,2,0, 7, 5,0,150,A1,0,0,5, 4,1,2, 2,100, P, 1,3, 0},
343 // FM
344  {100,2,0,0, 1,D, 0,0,0,0,K, 6, 2,2,0, 7, 5,0,150,A1,0,0,5, 2,1,2, 2,200, P, 1,3, 0},
345 // AM
346  { 50,2,0,0, 8,D, 0,0,0,0,K, 6, 0,2,0, 7, 5,0,350,40,0,0,5, 2,1,2, 2,200, P, 1,3, 0},
347 // QRSS CW
348  { 25,2,0,0, 1,D, 0,0,0,0,K, 6, 2,2,0, 7, 5,0,150,A1,0,0,5, 5,1,2, 2,500, P, 1,3, 0},
349 // Tx test
350  { 50,2,0,0, 1,D, 0,0,0,0,K, 6, 2,2,0, 7, 5,0,150,A1,0,0,5, 4,1,2, 2,500, P, 1,3, 0},
351 // Soundcard test
352  { 83,2,0,0, 1,D, 0,0,0,0,K, 6, 2,2,0, 7, 5,0,150,A1,0,0,5, 4,1,2, 2,500, P, 1,3, 0},
353 // Analog hardware tune
354  { 85,2,0,0, 1,D, 0,0,0,0,K, 6, 2,2,0, 7, 5,0,150,A1,0,0,5, 4,1,2, 2,500, P, 1,3, 0},
355 // Radar
356  {200,2,0,0, 4,D, 0,0,0,0,K, 6, 2,2,0, 8, 5,0,150,A1,0,0,5, 4,1,2, 2,500, P, 1,3, 0}};
357 
358 char *genparm_text[MAX_GENPARM+2]={"First FFT bandwidth (Hz)",          //0
359                       "First FFT window (power of sin)",                //1
360                       "First forward FFT version",                      //2
361                       "First FFT no of b threads",                      //3
362                       "First FFT storage time (s)",                     //4
363                       "First FFT amplitude",                            //5
364                       "Main waterfall saturate limit",                  //6
365                       "Enable correlation spectrum",                    //7
366                       "Enable second FFT",                              //8
367                       "First backward FFT version",                     //9
368                       "Sellim maxlevel",                                //10
369                       "First backward FFT att. N",                      //11
370                       "Second FFT bandwidth factor in powers of 2",     //12
371                       "Second FFT window (power of sin)",               //13
372                       "Second forward FFT version",                     //14
373                       "Second forward FFT att. N",                      //15
374                       "Second FFT storage time (s)",                    //16
375                       "Enable AFC/SPUR/DECODE (2=auto spur)",           //17
376                       "AFC lock range Hz",                              //18
377                       "AFC max drift Hz/minute",                        //19
378                       "Enable Morse decoding",                          //20
379                       "Max no of spurs to cancel",                      //21
380                       "Spur timeconstant (0.1sec)",                     //22
381                       "First mixer bandwidth reduction in powers of 2", //23
382                       "First mixer no of channels",                     //24
383                       "Third FFT window (power of sin)",                //25
384                       "Baseband storage time (s)",                      //26
385                       "Output delay margin (ms)",                       //27
386                       "Output sampling speed (Hz)",                     //28
387                       "Default output mode",                            //29
388                       "Audio expander exponent",                        //30
389                       "Baseband waterfall saturate limit",              //31
390                       "A/D speed",                                      //32
391                       "Check"};
392 
393 
394 char newco_genparm[MAX_GENPARM]={1, //First FFT bandwidth (Hz)            0
395                                  0, //First FFT window (power of sin)     1
396                                  0, //First forward FFT version           2
397                                  0, //First FFT no of threads             3
398                                  1, //First FFT storage time (s)          4
399                                  1, //First FFT amplitude                 5
400                                  0, //Main waterfall saturate limit       6
401                                  0, //Enable correlation spectra          7
402                                  0, //Enable second FFT                   8
403                                  0, //First backward FFT version          9
404                                  0, //Sellim maxlevel                    10
405                                  0, //First backward FFT att. N          11
406                                  0, //Second FFT bandwidth factor...     12
407                                  0, //Second FFT window (power of sin)   13
408                                  0, //Second forward FFT version         14
409                                  0, //Second forward FFT att. N          15
410                                  0, //Second FFT storage time (s)        16
411                                  0, //Enable AFC/SPUR/DECODE (2=auto     17
412                                  0, //AFC lock range Hz                  18
413                                  0, //AFC max drift Hz/minute            19
414                                  0, //Enable Morse decoding              20
415                                  0, //Max no of spurs to cancel          21
416                                  0, //Spur timeconstant (0.1sec)         22
417                                  1, //First mixer bandwidth reduction..  23
418                                  0, //First mixer no of channels         24
419                                  0, //Third FFT window (power of sin)    25
420                                  1, //Baseband storage time (s)          26
421                                  0, //Output delay margin (ms)           27
422                                  1, //Output sampling speed (Hz)         28
423                                  0, //Default output mode                29
424                                  0, //Audio expander exponent            30
425                                  0};//Baseband waterfall saturate limit  31
426 
427 char *ssbprocparm_text[MAX_SSBPROC_PARM]={"Lowest freq",        //1
428                                           "Highest freq",       //2
429                                           "Slope",              //3
430                                           "Bass",               //4
431                                           "Treble",             //5
432                                           "Mic gain",           //6
433                                           "Mic out gain",       //7
434                                           "Mic AGC time",       //8
435                                           "Mic F threshold",    //9
436                                           "Mic T threshold",    //10
437                                           "RF1 gain",           //11
438                                           "Check"};             //12
439 
440 char *cwprocparm_text[MAX_CWPROC_PARM]={"Rise time",        //1
441                                         "Hand key",         //2
442                                         "Tone key",         //3
443                                         "ASCII input",      //4
444                                         "Radar interval",   //5
445                                         "Radar pulse",      //6
446                                         "Check"};           //7
447 
448 char *uiparm_text[MAX_UIPARM]={"vga mode",           //0
449                                "shm mode",           //1
450                                "Screen width (%)",   //2
451                                "Screen height (%)",  //3
452                                "font scale",         //4
453                                "mouse speed",        //5
454                                "Max DMA rate",       //6
455                                "Process priority",   //7
456                                "Native ALSA",        //8
457                                "Rx input mode",      //9
458                                "Rx rf channels",     //10
459                                "Rx ad channels",     //11
460                                "Rx ad speed",        //12
461                                "Rx ad device no",    //13
462                                "Rx ad mode",         //14
463                                "Rx da mode",         //15
464                                "Rx da device no",    //16
465                                "Rx min da speed",    //17
466                                "Rx max da speed",    //18
467                                "Rx max da channels", //19
468                                "Rx max da bytes",    //20
469                                "Rx min da channels", //21
470                                "Rx min da bytes",    //22
471                                "Soundcard Radio",    //23
472                                "Converter Hz",       //24
473                                "Converter MHz",      //25
474                                "Converter mode",     //26
475                                "network flag",       //27
476                                "Tx ad speed",        //28
477                                "Tx da speed",        //29
478                                "Tx ad device no",    //30
479                                "Tx da device no",    //31
480                                "Tx da channels",     //32
481                                "Tx ad channels",     //33
482                                "Tx da bytes",        //34
483                                "Tx ad bytes",        //35
484                                "Tx enable",          //36
485                                "Tx pilot tone dB",   //37
486                                "Tx pilot microsec.", //38
487                                "Operator skil",      //39
488                                "Max blocked CPUs",   //40
489                                "Timer resolution",   //41
490                                "Autostart",          //42
491                                "Rx ad latency",      //43
492                                "Rx da latency",      //44
493                                "Sample shift",       //45
494                                "Min DMA rate",       //46
495                                "Use ExtIO",          //47
496                                "ExtIO type",         //48
497                                "check"};             //49
498 
499 
500 char *ag_intpar_text[MAX_AG_INTPAR]={"ytop",               //1
501                                      "ybottom",            //2
502                                      "xleft",              //3
503                                      "xright",             //4
504                                      "mode",               //5
505                                      "avgnum",             //6
506                                      "window",             //7
507                                      "fit points",         //8
508                                      "delay",              //9
509                                      "check"};             //10
510 
511 char *ag_floatpar_text[MAX_AG_FLOATPAR]={"min S/N",        //1
512                                          "search range",   //2
513                                          "lock_range",     //3
514                                          "freq range"};    //4
515 
516 char *soundcard_radio_names[MAX_SOUNDCARD_RADIO]={"Undef",          //0
517                                                   "Undef reversed", //1
518                                                   "WSE",            //2
519                                                   "SI570",          //3
520                                                   "Soft66",         //4
521                                                   "Elektor",        //5
522                                                   "FCD Pro Plus",   //6
523                                                   "Afedri USB"};    //7
524 
525 char *wg_intpar_text[MAX_WG_INTPAR]={"ytop",               //1
526                                      "ybottom",            //2
527                                      "xleft",              //3
528                                      "xright",             //4
529                                      "yborder",            //5
530                                      "xpoints per pixel",  //6
531                                      "pixels per xpoint",  //7
532                                      "first xpoint",       //8
533                                      "xpoints",            //9
534                                      "avg1num",            //10
535                                      "spek avgnum",        //11
536                                      "waterfall avgnum",   //12
537                                      "spur_inhibit",       //13
538                                      "check"};             //14
539 
540 char *wg_floatpar_text[MAX_WG_FLOATPAR]={"yzero",          //1
541                                          "yrange",         //2
542                                          "wat. db zero",   //3
543                                          "wat. db gain"};  //4
544 
545 char *hg_intpar_text[MAX_HG_INTPAR]={"ytop",                //1
546                                      "ybottom",             //2
547                                      "xleft",               //3
548                                      "xright",              //4
549                                      "mode (dumb)",         //5
550                                      "mode (clever)",       //6
551                                      "timf2 display",       //7
552                                      "timf2 display lines", //8
553                                      "timf2 display hold",  //9
554                                      "spek avgnum",         //10
555                                      "limit (dumb)",        //11
556                                      "limit (clever)",      //12
557                                      "spek gain",           //13
558                                      "spek zero",           //14
559                                      "map65 gain",          //15
560                                      "map65 strong",        //16
561                                      "check"};              //17
562 
563 char *hg_floatpar_text[MAX_HG_FLOATPAR]={"factor (dumb)",          //1
564                                          "factor (clever)",        //2
565                                          "sellim fft1 S/N",        //3
566                                          "sellim fft2 S/N",        //4
567                                          "timf2 display gain wk",  //5
568                                          "timf2 display gain st"}; //6
569 
570 char *bg_intpar_text[MAX_BG_INTPAR]={"ytop",                //1
571                                      "ybottom",             //2
572                                      "xleft",               //3
573                                      "xright",              //4
574                                      "yborder",             //5
575                                      "fft3 avgnum",         //6
576                                      "pixels/point",        //7
577                                      "coh factor",          //8
578                                      "delay points",        //9
579                                      "AGC flag",            //10
580                                      "AGC attack",          //11
581                                      "AGC release",         //12
582                                      "AGC hang",            //13
583                                      "Waterfall avgnum",    //14
584                                      "Mouse wheel step",    //15
585                                      "Oscill ON",           //16
586                                      "Arrow mode",          //17
587                                      "Filter FIR/FFT",      //18
588                                      "Filter shift",        //19
589                                      "FM mode",             //20
590                                      "FM subtract",         //21
591                                      "FM factor",           //22
592                                      "ch2 phase",           //23
593                                      "Squelch level",       //24
594                                      "Squelch time",        //25
595                                      "Squelch point",       //26
596                                      "check"};              //27
597 
598 char *bg_floatpar_text[MAX_BG_FLOATPAR]={"filter flat",          //1
599                                          "filter curved",        //2
600                                          "yzero",                //3
601                                          "yrange",               //4
602                                          "dB/pixel",             //5
603                                          "yfac pwr",             //6
604                                          "yfac log",             //7
605                                          "bandwidth",            //8
606                                          "first freq",           //9
607                                          "BFO freq",             //10
608                                          "Output gain",          //11
609                                          "Waterfall gain",       //12
610                                          "Waterfall zero",       //13
611                                          "Oscill gain"};         //14
612 
613 char *pg_intpar_text[MAX_PG_INTPAR]={"ytop",            //1
614                                      "ybottom",         //2
615                                      "xleft",           //3
616                                      "xright",          //4
617                                      "adapt",           //5
618                                      "avg",             //6
619                                      "check"};          //7
620 
621 char *pg_floatpar_text[MAX_PG_FLOATPAR]={"angle",     //1
622                                          "c1",        //2
623                                          "c2",        //3
624                                          "c3"};       //4
625 
626 
627 
628 char *cg_intpar_text[MAX_CG_INTPAR]={"ytop",             //1
629                                      "ybottom",          //2
630                                      "xleft",            //3
631                                      "xright",           //4
632                                      "Meter graph on",   //5
633                                      "Oscill on"};       //6
634 
635 char *cg_floatpar_text[MAX_CG_FLOATPAR+1]={""};
636 
637 char *mg_intpar_text[MAX_MG_INTPAR]={"ytop",             //1
638                                      "ybottom",          //2
639                                      "xleft",            //3
640                                      "xright",           //4
641                                      "Scale type",       //5
642                                      "Avgnum",           //6
643                                      "Tracks",           //7
644                                      "Check"};           //8
645 
646 char *mg_floatpar_text[MAX_MG_FLOATPAR]={"ygain",             //1
647                                          "yzero",             //2
648                                          "Cal dBm",           //3
649                                          "Cal S/N",           //4
650                                          "Cal S/N sigshift",  //5
651                                          "Cal S-units"};      //6
652 char *eg_intpar_text[MAX_EG_INTPAR]={"ytop",            //1
653                                      "ybottom",         //2
654                                      "xleft",           //3
655                                      "xright",          //4
656                                      "minim"};          //5
657 
658 char *eg_floatpar_text[MAX_EG_FLOATPAR+1]={""};
659 
660 
661 char *fg_intpar_text[MAX_FG_INTPAR]={"ytop",            //1
662                                      "ybottom",         //2
663                                      "xleft",           //3
664                                      "xright",          //4
665                                      "yborder",         //5
666                                      "direction",       //6
667                                      "gain",            //7
668                                      "gain_inc"};       //8
669 
670 char *fg_floatpar_text[MAX_FG_FLOATPAR]={"fq inc",      //1
671                                           "freq"};      //2
672 
673 char *tg_intpar_text[MAX_TG_INTPAR]={"ytop",            //1
674                                      "ybottom",         //2
675                                      "xleft",           //3
676                                      "xright",          //4
677                                      "ssbproc no",      //5
678                                      "direction"};      //6
679 
680 char *tg_floatpar_text[MAX_TG_FLOATPAR]={"level dB",    //1
681                                          "freq",        //2
682                                          "fq inc",      //3
683                                          "band fq"};    //4
684 
685 char *net_intpar_text[MAX_NET_INTPAR]={"send group",       //1
686                                        "receive group",    //2
687                                        "port",             //3
688                                        "send_raw",         //4
689                                        "send_fft1",        //5
690                                        "send_fft2",        //6
691                                        "send_timf2",       //7
692                                        "send_baseb16",     //8
693                                        "send_baseb24",     //9
694                                        "receive_raw",      //10
695                                        "receive_fft1",     //11
696                                        "receive_baseb16",  //12
697                                        "receive_baseb24",  //13
698                                        "receive_timf2",    //14
699                                        "check"};           //15
700 
701 char *rg_intpar_text[MAX_RG_INTPAR]={"ytop",            //1
702                                      "ybottom",         //2
703                                      "xleft",           //3
704                                      "xright"           //4
705                                      };
706 
707 char *rg_floatpar_text[MAX_RG_FLOATPAR]={"Time",        //1
708                                          "Zero",        //2
709                                          "Gain"         //3
710                                          };
711 
712 char modes_man_auto[]={'-','A','M'};
713 char arrow_mode_char[3]={'T', 'P','B'};
714 char *press_any_key={"Press any key"};
715 char *press_enter={"Press ENTER"};
716 char *audiomode_text[4]={
717          "One RF, one audio channel (normal audio)",
718          "One RF, two audio channels (direct conversion)",
719  "Two RF, two audio channels (normal audio, adaptive polarization)",
720  "Two RF, four audio channels (direct conversion, adaptive polarization)"};
721 char remind_parsave[]="(Do not forget to save with ""W"" on the main menu)";
722 char overrun_error_msg[]=" OVERRUN_ERROR ";
723 char underrun_error_msg[]=" UNDERRUN_ERROR ";
724 
725