1 // ---------------------------------------------------------------------
2 // status.cxx
3 //
4 // Copyright (C) 2007-2010
5 // Dave Freese, W1HKJ
6 // Copyright (C) 2008-2010
7 // Stelios Bounanos, M0GLD
8 //
9 // This file is part of fldigi.
10 //
11 // Fldigi is free software: you can redistribute it and/or modify
12 // it under the terms of the GNU General Public License as published by
13 // the Free Software Foundation, either version 3 of the License, or
14 // (at your option) any later version.
15 //
16 // Fldigi is distributed in the hope that it will be useful,
17 // but WITHOUT ANY WARRANTY; without even the implied warranty of
18 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 // GNU General Public License for more details.
20 //
21 // You should have received a copy of the GNU General Public License
22 // along with fldigi. If not, see <http://www.gnu.org/licenses/>.
23 // ---------------------------------------------------------------------
24 //
25 // Save all floating point values as integers
26 //
27 // int_fval = fval * NNN where NNN is a factor of 10
28 //
29 // restore using fval = int_fval / NNN
30 //
31 // A work around for a bug in class preferences. Read/Write of floating
32 // point values fails on read if locale is not EN_...
33 //
34 //----------------------------------------------------------------------
35 #include <config.h>
36
37 #include <iostream>
38 #include <fstream>
39 #include <string>
40
41 #include <FL/Fl_Preferences.H>
42
43 #include "gettext.h"
44 #include "main.h"
45 #include "globals.h"
46
47 #include "status.h"
48 #include "configuration.h"
49 #include "confdialog.h"
50 #include "fl_digi.h"
51 #include "debug.h"
52
53 #include "waterfall.h"
54
55 #include "modem.h"
56 #include "psk.h"
57 #include "cw.h"
58 #include "mfsk.h"
59 #include "rtty.h"
60 #include "olivia.h"
61 #include "dominoex.h"
62 #include "feld.h"
63 #include "throb.h"
64 #include "wwv.h"
65 #include "analysis.h"
66
67 #include "rigsupport.h"
68
69 #include "Viewer.h"
70
71 #include "lgbook.h"
72 #include "logsupport.h"
73 #include "qso_db.h"
74 #include "dx_dialog.h"
75 #include "contest.h"
76
77 #include "misc.h"
78 #include "data_io.h"
79 #include "psm/psm.h"
80
81 #include "spectrum_viewer.h"
82
83 #define STATUS_FILENAME "status"
84
85 status progStatus = {
86 MODE_PSK31, // trx_mode lastmode;
87 mode_info[MODE_PSK31].sname, // lastmode_name
88 50, // int mainX;
89 50, // int mainY;
90 WMIN, // int mainW;
91 HMIN, // int mainH;
92 false, // bool WF_UI;
93 false, // bool NO_RIGLOG;
94 false, // bool Rig_Log_UI;
95 false, // bool Rig_Contest_UI;
96 false, // bool DOCKEDSCOPE;
97 false, // bool tbar_is_docked;
98 // 50, // int RxTextHeight;
99 WMIN/2, // int tiled_group_x;
100 false, // bool show_channels;
101 50, // int rigX;
102 50, // int rigY;
103 560, // int rigW
104 80, // int rigH
105 1000, // int carrier;
106 14070000, // int noCATfreq;
107 "USB", // string noCATmode;
108 "3000", // string noCATwidth;
109 1, // int mag;
110 0, // int offset;
111 NORMAL, // WFdisp::WFspeed
112 -20, // reflevel
113 -2000, // int_reflevel
114 70, // ampspan
115 7000, // int_ampspan
116 30, // uint VIEWERnchars
117 50, // uint VIEWERxpos
118 50, // uint VIEWERypos
119 200, // uint VIEWERwidth
120 400, // uint VIEDWERheight
121 3.0, // double VIEWER_psksquelch
122 300, // int int_VIEWER_psksquelch
123 -6.0, // double VIEWER_rttysquelch
124 -600, // int int_VIEWER_rttysquelch
125 3.0, // double VIEWER_cwsquelch
126 300, // int int_VIEWER_cwsquelch
127 false, // bool VIEWERvisible
128 50, // unsigned int fsqMONITORxpos;
129 50, // unsigned int fsqMONITORypos;
130 600, // unsigned int fsqMONITORwidth;
131 400, // unsigned int fsqMONITORheight;
132 100, // int tile_x
133 200, // int tile_w;
134 90, // int tile_y;
135 150, // int tile_h;
136 0.5, // double tile_y_ratio;
137 0.5, // double fsq_ratio;
138 0.5, // double ifkp_ratio;
139 500, // int int_tile_y_ratio;
140 500, // int int_fsq_ratio;
141 500, // int int_ifkp_ratio;
142 false, // bool LOGenabled
143 5.0, // double sldrSquelchValue
144 500, // int int_sldrSquelchValue
145 5.0, // double sldrPwrSquelchValue
146 500, // int int_sldrPwrSquelchValue
147 true, // bool afconoff
148 true, // bool sqlonoff
149 50, // int scopeX;
150 50, // int scopeY;
151 false, // bool scopeVisible;
152 172, // int scopeW;
153 172, // int scopeH;
154
155 10, // int svX;
156 10, // int svY;
157 550, // int svW;
158 400, // int svH;
159 false, // bool x_graticule;
160 false, // bool y_graticule;
161 true, // bool xy_graticule;
162
163 -1, // int repeatMacro;
164 0, // float repeatIdleTime;
165 0, // int timer
166 0, // int timerMacro
167 false, // bool skip_sked_macro
168 "macros.mdf", // string LastMacroFile;
169 0, // int n_rsids
170 false, // bool spot_recv
171 false, // bool spot_log
172 false, // bool contest
173
174 false, // bool quick_entry
175 true, // bool rx_scroll_hints;
176 true, // bool rx_word_wrap
177 true, // bool tx_word_wrap
178 false, // bool cluster_connected; // not saved
179
180 50, // int logbook_x;
181 50, // int logbook_y;
182 590, // int logbook_w;
183 490, // int logbook_h;
184 false, // bool logbook_reverse;
185 85, // int logbook_browser_col_0;
186 47, // int logbook_browser_col_1;
187 100, // int logbook_browser_col_2;
188 110, // int logbook_browser_col_3;
189 120, // int logbook_browser_col_4;
190 103, // int logbook_browser_col_5;
191
192 50, // int dxdialog_x;
193 50, // int dxdialog_y;
194 625, // int dxdialog_w;
195 395, // int dxdialog_h;
196
197 progdefaults.contestiatones,
198 progdefaults.contestiabw,
199 progdefaults.contestiasmargin,
200 progdefaults.contestiasinteg,
201 progdefaults.contestia8bit,
202
203 progdefaults.oliviatones,
204 progdefaults.oliviabw,
205 progdefaults.oliviasmargin,
206 progdefaults.oliviasinteg,
207 progdefaults.olivia8bit,
208
209 progdefaults.rtty_shift,
210 progdefaults.rtty_custom_shift,
211 progdefaults.rtty_baud,
212 progdefaults.rtty_bits,
213 progdefaults.rtty_parity,
214 progdefaults.rtty_stop,
215 progdefaults.rtty_reverse,
216 progdefaults.rtty_crcrlf,
217 progdefaults.rtty_autocrlf,
218 progdefaults.rtty_autocount,
219 progdefaults.rtty_afcspeed,
220 false, // bool rtty_filter_changed
221 progdefaults.PreferXhairScope,
222 true, // bool shaped_rtty
223 progdefaults.UOSrx,
224 progdefaults.UOStx,
225 DEFAULT_XMLPRC_IP_ADDRESS,
226 DEFAULT_XMLRPC_IP_PORT,
227 DEFAULT_ARQ_IP_ADDRESS,
228 DEFAULT_ARQ_IP_PORT,
229 DEFAULT_KISS_IP_ADDRESS,
230 DEFAULT_KISS_IP_IO_PORT,
231 DEFAULT_KISS_IP_OUT_PORT,
232 progdefaults.kiss_dual_port_enabled,
233 progdefaults.data_io_enabled,
234 progdefaults.ax25_decode_enabled,
235 progdefaults.enableBusyChannel,
236 progdefaults.busyChannelSeconds,
237 progdefaults.kpsql_attenuation,
238 progdefaults.csma_enabled,
239 progdefaults.kiss_tcp_io,
240 progdefaults.kiss_tcp_listen,
241 progdefaults.kpsql_enabled,
242 progdefaults.csma_persistance,
243 progdefaults.csma_slot_time,
244 progdefaults.csma_transmit_delay,
245 progdefaults.psm_flush_buffer_timeout,
246 progdefaults.psm_minimum_bandwidth,
247 progdefaults.psm_minimum_bandwidth_margin,
248 progdefaults.psm_use_histogram,
249 progdefaults.psm_histogram_offset_threshold,
250 progdefaults.psm_hit_time_window,
251 progdefaults.tx_buffer_timeout,
252 progdefaults.kiss_io_modem_change_inhibit,
253 true,
254 0.0,
255 0,
256 progdefaults.psk8DCDShortFlag,
257
258 "CQ", // string browser_search;
259
260 false, // meters
261
262 false, // fsq_rx_abort
263 false, // ifkp_rx_abort
264
265 //----------------------------------------------------------------------
266 // winkeyer status values
267 //----------------------------------------------------------------------
268
269 "NONE", // string WK_serial_port_name;
270 1200, // int WK_comm_baudrate;
271 2, // int WK_stopbits;
272 2, // int WK_comm_retries;
273 5, // int WK_comm_wait;
274 50, // int WK_comm_timeout;
275 false, // bool WK_comm_echo;
276
277 // wkeyer defaults
278 0xC4, // unsigned char WK_mode_register;
279 18, // unsigned char WK_speed_wpm;
280 6, // unsigned char WK_sidetone;
281 50, // unsigned char WK_weight;
282 0, // unsigned char WK_lead_in_time;
283 0, // unsigned char WK_tail_time;
284 10, // unsigned char WK_min_wpm;
285 25, // unsigned char WK_max_wpm;
286 0, // unsigned char WK_first_extension;
287 0, // unsigned char WK_key_compensation;
288 0, // unsigned char WK_farnsworth_wpm;
289 50, // unsigned char WK_paddle_setpoint;
290 50, // unsigned char WK_dit_dah_ratio;
291 7, // unsigned char WK_pin_configuration;
292 255, // unsigned char WK_dont_care;
293
294 false, // bool WK_cut_zeronine;
295 18, // unsigned char WK_cmd_wpm;
296 false, // bool WK_use_pot
297 false, // bool WK_online;
298 2, // int WK_version;
299
300 0, // int WKFSK_mode;
301 0, // int WKFSK_baud;
302 0, // int WKFSK_stopbits;
303 0, // int WKFSK_ptt;
304 0, // int WKFSK_polarity;
305 0, // int WKFSK_sidetone;
306 0, // int WKFSK_auto_crlf;
307 0, // int WKFSK_diddle;
308 0, // int WKFSK_diddle_char;
309 0, // int WKFSK_usos;
310 1, // int WKFSK_monitor;
311
312 false, // bool Nav_online;
313 false, // bool Nav_config_online;
314
315 false, // bool nanoCW_online;
316 false, // bool nanoFSK_online;
317
318 false, // bool useCW_KEYLINE;
319
320 //----------------------------------------------------------------------
321 // FMT saved controls
322 1500.0, // double FMT_ref_freq;
323 1500000, // int int_FMT_ref_freq;
324 1500.0, // double FMT_unk_fre;
325 1500000, // int int_FMT_unk_fre;
326 1, // int FMT_trk_speed;
327 1, // int FMT_trk_scale;
328 2, // int FMT_rec_interval
329 //----------------------------------------------------------------------
330 046, // debug_mask
331
332 // 046
333 // 0000000000010110
334 // ||||||||||||||_ARQ control
335 // |||||||||||||__Audio
336 // ||||||||||||___Modem
337 // |||||||||||____Rig Control
338 // ||||||||||_____Xmlrpc
339 // |||||||||______Spotter
340 // ||||||||_______Data Sources
341 // |||||||________Synop
342 // ||||||_________KML
343 // |||||__________KISS control
344 // ||||___________Mac Logger
345 // |||____________Field Day Logger
346 // ||_____________N3FJP Logger
347 // |______________Other
348 3, // debug_level : INFO(3)
349 //----------------------------------------------------------------------
350 1, // int vumeter_shown
351 //----------------------------------------------------------------------
352 false // bool bLastStateRead;
353 };
354
saveLastState()355 void status::saveLastState()
356 {
357 int mX = fl_digi_main->x();
358 int mY = fl_digi_main->y();
359 if (mX >= 0 && mX >= 0) {
360 mainX = mX;
361 mainY = mY;
362 }
363 mainW = fl_digi_main->w();
364 mainH = fl_digi_main->h();
365
366 carrier = wf->Carrier();
367 mag = wf->Mag();
368 offset = wf->Offset();
369 speed = wf->Speed();
370 reflevel = progdefaults.wfRefLevel;
371 ampspan = progdefaults.wfAmpSpan;
372
373 logbook_x = dlgLogbook->x();
374 logbook_y = dlgLogbook->y();
375 logbook_w = dlgLogbook->w();
376 logbook_h = dlgLogbook->h();
377 logbook_reverse = cQsoDb::reverse;
378 logbook_col_0 = wBrowser->columnWidth(0);
379 logbook_col_1 = wBrowser->columnWidth(1);
380 logbook_col_2 = wBrowser->columnWidth(2);
381 logbook_col_3 = wBrowser->columnWidth(3);
382 logbook_col_4 = wBrowser->columnWidth(4);
383 logbook_col_5 = wBrowser->columnWidth(5);
384
385 dxdialog_x = dxcluster_viewer->x();
386 dxdialog_y = dxcluster_viewer->y();
387 dxdialog_w = dxcluster_viewer->w();
388 dxdialog_h = dxcluster_viewer->h();
389
390 if (!bWF_only) {
391 // RxTextHeight = (ReceiveText->h() * 100) / text_panel->h();//VTgroup->h();
392 quick_entry = ReceiveText->get_quick_entry();
393 rx_scroll_hints = ReceiveText->get_scroll_hints();
394 rx_word_wrap = ReceiveText->get_word_wrap();
395 tx_word_wrap = TransmitText->get_word_wrap();
396
397 tile_w = text_panel->w();
398 tile_y = progdefaults.rxtx_swap ? TransmitText->h() : ReceiveText->h();
399 tile_h = text_panel->h();
400 tile_y_ratio = 1.0 * tile_y / text_group->h();
401 if (text_panel->w() != ReceiveText->w())
402 tile_x = mvgroup->w();
403 fsq_ratio = 1.0 * fsq_rx_text->h() / fsq_group->h();
404 ifkp_ratio = 1.0 * ifkp_rx_text->h() / ifkp_group->h();
405 int_tile_y_ratio = round(tile_y_ratio * 1000);
406 int_fsq_ratio = round(fsq_ratio * 1000);
407 int_ifkp_ratio = round (ifkp_ratio * 1000);
408 }
409
410 VIEWERvisible = dlgViewer->visible();
411 VIEWERnchars = brwsViewer->numchars();
412 if (VIEWERvisible) {
413 VIEWERxpos = dlgViewer->x();
414 VIEWERypos = dlgViewer->y();
415 VIEWERwidth = dlgViewer->w();
416 VIEWERheight = dlgViewer->h();
417 }
418
419 scopeVisible = scopeview->visible();
420 scopeX = scopeview->x();
421 scopeY = scopeview->y();
422 scopeW = scopeview->w();
423 scopeH = scopeview->h();
424
425 if (spectrum_viewer) {
426 svX = spectrum_viewer->x();
427 svY = spectrum_viewer->y();
428 svW = spectrum_viewer->w();
429 svH = spectrum_viewer->h();
430 }
431
432 contestiatones = progdefaults.contestiatones;
433 contestiabw = progdefaults.contestiabw;
434 contestiamargin = progdefaults.contestiasmargin;
435 contestiainteg = progdefaults.contestiasinteg;
436 contestia8bit = progdefaults.contestia8bit;
437
438 oliviatones = progdefaults.oliviatones;
439 oliviabw = progdefaults.oliviabw;
440 oliviamargin = progdefaults.oliviasmargin;
441 oliviainteg = progdefaults.oliviasinteg;
442 olivia8bit = progdefaults.olivia8bit;
443
444 rtty_shift = progdefaults.rtty_shift;
445 rtty_custom_shift = progdefaults.rtty_custom_shift;
446 rtty_baud = progdefaults.rtty_baud;
447 rtty_bits = progdefaults.rtty_bits;
448 rtty_parity = progdefaults.rtty_parity;
449 rtty_stop = progdefaults.rtty_stop;
450 rtty_reverse = progdefaults.rtty_reverse;
451 rtty_crcrlf = progdefaults.rtty_crcrlf;
452 rtty_autocrlf = progdefaults.rtty_autocrlf;
453 rtty_autocount = progdefaults.rtty_autocount;
454 rtty_afcspeed = progdefaults.rtty_afcspeed;
455 PreferXhairScope = progdefaults.PreferXhairScope;
456 UOSrx = progdefaults.UOSrx;
457 UOStx = progdefaults.UOStx;
458
459 xmlrpc_address = progdefaults.xmlrpc_address;
460 xmlrpc_port = progdefaults.xmlrpc_port;
461 arq_address = progdefaults.arq_address;
462 arq_port = progdefaults.arq_port;
463 kiss_address = progdefaults.kiss_address;
464 kiss_io_port = progdefaults.kiss_io_port;
465 kiss_out_port = progdefaults.kiss_out_port;
466 kiss_dual_port_enabled = progdefaults.kiss_dual_port_enabled;
467 data_io_enabled = progdefaults.data_io_enabled;
468 ax25_decode_enabled = progdefaults.ax25_decode_enabled;
469 enableBusyChannel = progdefaults.enableBusyChannel;
470 busyChannelSeconds = progdefaults.busyChannelSeconds;
471 kpsql_attenuation = progdefaults.kpsql_attenuation;
472 csma_enabled = progdefaults.csma_enabled;
473 kiss_tcp_io = progdefaults.kiss_tcp_io;
474 kiss_tcp_listen = progdefaults.kiss_tcp_listen;
475 kpsql_enabled = progdefaults.kpsql_enabled;
476 csma_persistance = progdefaults.csma_persistance;
477 csma_slot_time = progdefaults.csma_slot_time;
478 csma_transmit_delay = progdefaults.csma_transmit_delay;
479
480 psm_flush_buffer_timeout = progdefaults.psm_flush_buffer_timeout;
481 psm_minimum_bandwidth = progdefaults.psm_minimum_bandwidth;
482 psm_minimum_bandwidth_margin = progdefaults.psm_minimum_bandwidth_margin;
483 psm_use_histogram = progdefaults.psm_use_histogram;
484 psm_histogram_offset_threshold = progdefaults.psm_histogram_offset_threshold;
485 psm_hit_time_window = progdefaults.psm_hit_time_window;
486 tx_buffer_timeout = progdefaults.tx_buffer_timeout;
487 kiss_io_modem_change_inhibit = progdefaults.kiss_io_modem_change_inhibit;
488 squelch_value = 0;
489 int_squelch_value = 0;
490
491 Fl_Preferences spref(HomeDir.c_str(), "w1hkj.com", PACKAGE_TARNAME);
492
493 spref.set("version", PACKAGE_VERSION);
494 spref.set("dual_channels", "YES");
495
496 spref.set("mode_name", mode_info[lastmode].sname);
497 spref.set("squelch_enabled", sqlonoff);
498
499 spref.set("int_squelch_level", (int)round(sldrSquelchValue * 100));
500 spref.set("int_pwr_squelch_level", (int)round(sldrPwrSquelchValue * 100));
501 spref.set("afc_enabled", afconoff);
502
503 spref.set("psk8DCDShortFlag", psk8DCDShortFlag);
504
505 spref.set("log_enabled", LOGenabled);
506
507 spref.set("wf_carrier", carrier);
508 spref.set("wf_mag", mag);
509 spref.set("wf_offset", offset);
510 spref.set("wf_speed", speed);
511
512 spref.set("int_wf_reflevel", (int)round(reflevel * 100));
513 spref.set("int_wf_ampspan", (int)round(ampspan * 100));
514
515 spref.set("noCATfreq", noCATfreq);
516 spref.set("noCATmode", noCATmode.c_str());
517 spref.set("noCATwidth", noCATwidth.c_str());
518
519 spref.set("main_x", mainX);
520 spref.set("main_y", mainY);
521 spref.set("main_w", mainW);
522
523 if (!bWF_only) {
524 spref.set("main_h", mainH);
525 // spref.set("rx_text_height", RxTextHeight);
526 spref.set("tiled_group_x", tiled_group_x);
527 spref.set("show_channels", show_channels);
528 }
529
530 spref.set("wf_ui", WF_UI);
531 spref.set("riglog_ui", Rig_Log_UI);
532 spref.set("rigcontest_ui", Rig_Contest_UI);
533 spref.set("noriglog", NO_RIGLOG);
534 spref.set("docked_scope", DOCKEDSCOPE);
535 spref.set("tbar_is_docked", tbar_is_docked);
536
537 spref.set("rigctl_x", rigX);
538 spref.set("rigctl_y", rigY);
539 spref.set("rigctl_w", rigW);
540 spref.set("rigctl_h", rigH);
541
542 spref.set("viewer_visible", VIEWERvisible);
543 spref.set("viewer_x", static_cast<int>(VIEWERxpos));
544 spref.set("viewer_y", static_cast<int>(VIEWERypos));
545 spref.set("viewer_w", static_cast<int>(VIEWERwidth));
546 spref.set("viewer_h", static_cast<int>(VIEWERheight));
547
548 spref.set("int_viewer_psksq", (int)round(VIEWER_psksquelch * 100));
549 spref.set("int_viewer_rttysq", (int)round(VIEWER_rttysquelch * 100));
550 spref.set("int_viewer_cwsq", (int)round(VIEWER_cwsquelch * 100));
551
552 spref.set("viewer_nchars", static_cast<int>(VIEWERnchars));
553
554 spref.set("fsq_monitor_x", static_cast<int>(fsqMONITORxpos));
555 spref.set("fsq_monitor_y", static_cast<int>(fsqMONITORypos));
556 spref.set("fsq_monitor_w", static_cast<int>(fsqMONITORwidth));
557 spref.set("fsq_monitor_h", static_cast<int>(fsqMONITORheight));
558
559 spref.set("tile_x", tile_x);
560 spref.set("tile_y", tile_y);
561 spref.set("tile_w", tile_w);
562 spref.set("tile_h", tile_h);
563
564 spref.set("int_tile_y_ratio", int_tile_y_ratio);
565 spref.set("int_fsq_ratio", int_fsq_ratio);
566 spref.set("int_ifkp_ratio", int_ifkp_ratio);
567
568 spref.set("scope_visible", scopeVisible);
569 spref.set("scope_x", scopeX);
570 spref.set("scope_y", scopeY);
571 spref.set("scope_w", scopeW);
572 spref.set("scope_h", scopeH);
573
574 spref.set("svX", svX);
575 spref.set("svY", svY);
576 spref.set("svW", svW);
577 spref.set("svH", svH);
578 spref.set("x_graticule", x_graticule);
579 spref.set("y_graticule", y_graticule);
580 spref.set("xy_graticule", xy_graticule);
581
582 spref.set("last_macro_file", LastMacroFile.c_str());
583
584 spref.set("spot_recv", spot_recv);
585 spref.set("spot_log", spot_recv);
586
587 spref.set("contest", contest);
588 spref.set("quick_entry", quick_entry);
589 spref.set("rx_scroll_hints", rx_scroll_hints);
590 spref.set("rx_word_wrap", rx_word_wrap);
591 spref.set("tx_word_wrap", tx_word_wrap);
592
593 spref.set("logbook_x", logbook_x);
594 spref.set("logbook_y", logbook_y);
595 spref.set("logbook_w", logbook_w);
596 spref.set("logbook_h", logbook_h);
597 spref.set("logbook_reverse", logbook_reverse);
598 spref.set("logbook_col_0", logbook_col_0);
599 spref.set("logbook_col_1", logbook_col_1);
600 spref.set("logbook_col_2", logbook_col_2);
601 spref.set("logbook_col_3", logbook_col_3);
602 spref.set("logbook_col_4", logbook_col_4);
603 spref.set("logbook_col_5", logbook_col_5);
604
605 spref.set("dxdialog_x", dxdialog_x);
606 spref.set("dxdialog_y", dxdialog_y);
607 spref.set("dxdialog_w", dxdialog_w);
608 spref.set("dxdialog_h", dxdialog_h);
609
610 spref.set("contestiatones", contestiatones);
611 spref.set("contestiabw", contestiabw);
612 spref.set("contestiamargin", contestiamargin);
613 spref.set("contestiainteg", contestiainteg);
614 spref.set("contestia8bit", contestia8bit);
615
616 spref.set("oliviaiatones", oliviatones);
617 spref.set("oliviaiabw", oliviabw);
618 spref.set("oliviaiamargin", oliviamargin);
619 spref.set("oliviaiainteg", oliviainteg);
620 spref.set("oliviaia8bit", olivia8bit);
621
622 spref.set("rtty_shift", rtty_shift);
623 spref.set("rtty_custom_shift", rtty_custom_shift);
624 spref.set("rtty_baud", rtty_baud);
625 spref.set("rtty_bits", rtty_bits);
626 spref.set("rtty_parity", rtty_parity);
627 spref.set("rtty_stop", rtty_stop);
628 spref.set("rtty_reverse", rtty_reverse);
629 spref.set("rtty_crcrlf", rtty_crcrlf);
630 spref.set("rtty_autocrlf", rtty_autocrlf);
631 spref.set("rtty_autocount", rtty_autocount);
632 spref.set("rtty_afcspeed", rtty_afcspeed);
633 spref.set("preferxhairscope", PreferXhairScope);
634 spref.set("shaped_rtty", shaped_rtty);
635 spref.set("uosrx", UOSrx);
636 spref.set("uostx", UOStx);
637
638 if(!xmlrpc_address_override_flag) {
639 spref.set("xmlrpc_address", xmlrpc_address.c_str());
640 spref.set("xmlrpc_port", xmlrpc_port.c_str());
641 }
642
643 if(!arq_address_override_flag) {
644 spref.set("arq_address", arq_address.c_str());
645 spref.set("arq_port", arq_port.c_str());
646 }
647
648 if(!kiss_address_override_flag) {
649 spref.set("kiss_address", kiss_address.c_str());
650 spref.set("kiss_io_port", kiss_io_port.c_str());
651 spref.set("kiss_out_port", kiss_out_port.c_str());
652 spref.set("kiss_dual_port_enabled", kiss_dual_port_enabled);
653 }
654
655 if(!override_data_io_enabled)
656 spref.set("data_io_enabled", data_io_enabled);
657
658 spref.set("ax25_decode_enabled", ax25_decode_enabled);
659 spref.set("enableBusyChannel", enableBusyChannel);
660 spref.set("busyChannelSeconds", busyChannelSeconds);
661 spref.set("kpsql_attenuation", kpsql_attenuation);
662 spref.set("csma_enabled", csma_enabled);
663 spref.set("kiss_tcp_io", kiss_tcp_io);
664 spref.set("kiss_tcp_listen", kiss_tcp_listen);
665 spref.set("kpsql_enabled", kpsql_enabled);
666 spref.set("csma_persistance", csma_persistance);
667 spref.set("csma_slot_time", csma_slot_time);
668 spref.set("csma_transmit_delay", csma_transmit_delay);
669
670 spref.set("psm_flush_buffer_timeout", psm_flush_buffer_timeout);
671 spref.set("psm_minimum_bandwidth", psm_minimum_bandwidth);
672 spref.set("psm_minimum_bandwidth_margin", psm_minimum_bandwidth_margin);
673 spref.set("psm_use_histogram", psm_use_histogram);
674 spref.set("psm_histogram_offset_threshold", psm_histogram_offset_threshold);
675 spref.set("psm_hit_time_window", psm_hit_time_window);
676 spref.set("tx_buffer_timeout", tx_buffer_timeout);
677 spref.set("kiss_io_modem_change_inhibit", kiss_io_modem_change_inhibit);
678
679 spref.set("browser_search", browser_search.c_str());
680
681 spref.set("meters", meters);
682
683 //----------------------------------------------------------------------
684 // WinKeyer prefs set
685
686 spref.set("WK_serial_port_name", WK_serial_port_name.c_str());
687
688 spref.set("WK_mode_register", WK_mode_register);
689 spref.set("WK_speed_wpm", WK_speed_wpm);
690 spref.set("WK_cut_zeronine", WK_cut_zeronine);
691 spref.set("WK_cmd_wpm", WK_cmd_wpm);
692 spref.set("WK_sidetone", WK_sidetone);
693 spref.set("WK_weight", WK_weight);
694 spref.set("WK_lead_in_time", WK_lead_in_time);
695 spref.set("WK_tail_time", WK_tail_time);
696 spref.set("WK_min_wpm", WK_min_wpm);
697 spref.set("WK_rng_wpm", WK_rng_wpm);
698 spref.set("WK_1st_ext", WK_first_extension);
699 spref.set("WK_key_comp", WK_key_compensation);
700 spref.set("WK_farnsworth", WK_farnsworth_wpm);
701 spref.set("WK_paddle_set", WK_paddle_setpoint);
702 spref.set("WK_dit_dah_ratio", WK_dit_dah_ratio);
703 spref.set("WK_pin_config", WK_pin_configuration);
704 spref.set("WK_use_pot", WK_use_pot);
705
706 spref.set("WK_online", WK_online);
707 spref.set("WK_version", WK_version);
708
709 spref.set("WKFSK_mode", WKFSK_mode);
710 spref.set("WKFSK_baud", WKFSK_baud);
711 spref.set("WKFSK_stopbits", WKFSK_stopbits);
712 spref.set("WKFSK_ptt", WKFSK_ptt);
713 spref.set("WKFSK_polarity", WKFSK_polarity);
714 spref.set("WKFSK_sidetone", WKFSK_sidetone);
715 spref.set("WKFSK_auto_crlf", WKFSK_auto_crlf);
716 spref.set("WKFSK_diddle", WKFSK_diddle);
717 spref.set("WKFSK_diddle_char", WKFSK_diddle_char);
718 spref.set("WKFSK_usos", WKFSK_usos);
719 spref.set("WKFSK_monitor", WKFSK_monitor);
720
721 spref.set("Nav_online", Nav_online);
722 spref.set("Nav_config_online", Nav_config_online);
723
724 spref.set("nanoCW_online", nanoCW_online);
725 spref.set("nanoFSK_online", nanoFSK_online);
726
727 spref.set("useCW_KEYLINE", useCW_KEYLINE);
728
729 //----------------------------------------------------------------------
730 // FMT saved controls
731 spref.set("int_FMT_ref_freq", (int)round(FMT_ref_freq * 1000));
732 spref.set("int_FMT_unk_freq", (int)round(FMT_unk_freq * 1000));
733
734 spref.set("FMT_rec_interval", FMT_rec_interval);
735 spref.set("FMT_trk_scale", FMT_trk_scale);
736 spref.set("FMT_minutes", FMT_minutes);
737 //----------------------------------------------------------------------
738
739 debug_mask = debug::mask;
740 spref.set("debug_mask", debug_mask);
741
742 debug_level = debug::level;
743 spref.set("debug_level", debug_level);
744 //----------------------------------------------------------------------
745 spref.set("vumeter_shown", vumeter_shown);
746 }
747
loadLastState()748 void status::loadLastState()
749 {
750 Fl_Preferences spref(HomeDir.c_str(), "w1hkj.com", PACKAGE_TARNAME);
751
752 int i;
753 char strbuff[1000];
754 char version[64]; version[sizeof(version)-1] = '\0';
755
756 // Skip loading the rest of the status variables if we didn't read a
757 // version name/value pair; or this is not a file that supports dual
758 // channel browsers.
759 bLastStateRead = spref.get("version", version, "", sizeof(version)-1);
760 if (!bLastStateRead)
761 return;
762 bLastStateRead = spref.get("dual_channels", version, "", sizeof(version) - 1);
763 if (!bLastStateRead)
764 return;
765
766 memset(strbuff, 0, sizeof(strbuff));
767 spref.get("mode_name", strbuff, mode_info[MODE_PSK31].sname, sizeof(strbuff) - 1);
768 mode_name = strbuff;
769 lastmode = MODE_PSK31;
770 for (i = 0; i < NUM_MODES;i++) {
771 if (mode_name == mode_info[i].sname) {
772 lastmode = (trx_mode) i;
773 break;
774 }
775 }
776
777 spref.get("squelch_enabled", i, sqlonoff); sqlonoff = i;
778 spref.get("int_squelch_level", i, int_sldrSquelchValue); int_sldrSquelchValue = i;
779 sldrSquelchValue = int_sldrSquelchValue / 100.0;
780 spref.get("int_pwr_squelch_level", i, int_sldrPwrSquelchValue); int_sldrPwrSquelchValue = i;
781 sldrPwrSquelchValue = int_sldrPwrSquelchValue / 100.0;
782
783 spref.get("afc_enabled", i, afconoff); afconoff = i;
784
785 // spref.get("rx_text_height", RxTextHeight, RxTextHeight);
786 spref.get("tiled_group_x", tiled_group_x, tiled_group_x);
787 spref.get("show_channels", i, show_channels); show_channels = i;
788
789 spref.get("log_enabled", i, LOGenabled); LOGenabled = i;
790
791 spref.get("wf_carrier", carrier, carrier);
792 spref.get("wf_mag", mag, mag);
793 spref.get("wf_offset", offset, offset);
794 spref.get("wf_speed", speed, speed);
795
796 spref.get("int_wf_reflevel", int_reflevel, int_reflevel);
797 reflevel = int_reflevel / 100.0;
798 progdefaults.wfRefLevel = reflevel;
799 spref.get("int_wf_ampspan", int_ampspan, int_ampspan);
800 ampspan = int_ampspan / 100.0;
801 progdefaults.wfAmpSpan = ampspan;
802
803 spref.get("noCATfreq", noCATfreq, noCATfreq);
804
805 memset(strbuff, 0, sizeof(strbuff));
806 spref.get("noCATmode", strbuff, "USB", sizeof(strbuff) - 1);
807 noCATmode = strbuff;
808
809 memset(strbuff, 0, sizeof(strbuff));
810 spref.get("noCATwidth", strbuff, "3000", sizeof(strbuff) - 1);
811 noCATwidth = strbuff;
812
813 spref.get("main_x", mainX, mainX);
814 if (mainX > Fl::w())
815 mainX = 0;
816
817 spref.get("main_y", mainY, mainY);
818 if (mainY > Fl::h())
819 mainY = 0;
820
821 spref.get("main_w", mainW, mainW);
822 if (mainW < WMIN) mainW = WMIN;
823 if (mainW > Fl::w()) mainW = Fl::w();
824
825 spref.get("main_h", mainH, mainH);
826 // if (mainH < HMIN) mainH = HMIN;
827 if (mainH > Fl::w()) mainH = Fl::h();
828
829 spref.get("wf_ui", i, WF_UI); WF_UI = i;
830 spref.get("riglog_ui", i, Rig_Log_UI); Rig_Log_UI = i;
831 spref.get("rigcontest_ui", i, Rig_Contest_UI); Rig_Contest_UI = i;
832 spref.get("noriglog", i, NO_RIGLOG); NO_RIGLOG = i;
833 spref.get("docked_scope", i, DOCKEDSCOPE); DOCKEDSCOPE = i;
834 spref.get("tbar_is_docked", i, tbar_is_docked); tbar_is_docked = i;
835
836 spref.get("rigctl_x", rigX, rigX);
837 spref.get("rigctl_y", rigY, rigY);
838 spref.get("rigctl_w", rigW, rigW);
839 spref.get("rigctl_h", rigH, rigH);
840
841 spref.get("viewer_visible", i, VIEWERvisible); VIEWERvisible = i;
842 spref.get("viewer_x", i, VIEWERxpos); VIEWERxpos = i;
843 spref.get("viewer_y", i, VIEWERypos); VIEWERypos = i;
844 spref.get("viewer_w", i, VIEWERwidth); VIEWERwidth = i;
845 spref.get("viewer_h", i, VIEWERheight); VIEWERheight = i;
846
847 spref.get("int_viewer_psksq", int_VIEWER_psksquelch, int_VIEWER_psksquelch);
848 VIEWER_psksquelch = int_VIEWER_psksquelch / 100.0;
849 spref.get("int_viewer_rttysq", int_VIEWER_rttysquelch, int_VIEWER_rttysquelch);
850 VIEWER_rttysquelch = int_VIEWER_rttysquelch / 100.0;
851 spref.get("int_viewer_cwsq", int_VIEWER_cwsquelch, int_VIEWER_cwsquelch);
852 VIEWER_cwsquelch = int_VIEWER_cwsquelch / 100.0;
853
854 spref.get("viewer_nchars", i, VIEWERnchars); VIEWERnchars = i;
855
856 spref.get("fsq_monitor_x", i, fsqMONITORxpos); fsqMONITORxpos = i;
857 spref.get("fsq_monitor_y", i, fsqMONITORypos); fsqMONITORypos = i;
858 spref.get("fsq_monitor_w", i, fsqMONITORwidth); fsqMONITORwidth = i;
859 spref.get("fsq_monitor_h", i, fsqMONITORheight); fsqMONITORheight = i;
860
861 spref.get("tile_x", tile_x, tile_x);
862 spref.get("tile_y", tile_y, tile_y);
863 spref.get("tile_w", tile_w, tile_w);
864 spref.get("tile_h", tile_h, tile_h);
865
866 spref.get("int_tile_y_ratio", int_tile_y_ratio, int_tile_y_ratio);
867 spref.get("int_fsq_ratio", int_fsq_ratio, int_fsq_ratio);
868 spref.get("int_ifkp_ratio", int_ifkp_ratio, int_ifkp_ratio);
869
870 tile_y_ratio = int_tile_y_ratio / 1000.0;
871 fsq_ratio = int_fsq_ratio / 1000.0;
872 ifkp_ratio = int_ifkp_ratio / 1000.0;
873
874 spref.get("scope_visible", i, scopeVisible); scopeVisible = i;
875 spref.get("scope_x", scopeX, scopeX);
876 spref.get("scope_y", scopeY, scopeY);
877 spref.get("scope_w", scopeW, scopeW);
878 spref.get("scope_h", scopeH, scopeH);
879
880 spref.get("svX", svX, svX);
881 spref.get("svY", svY, svY);
882 spref.get("svW", svW, svW);
883 spref.get("svH", svH, svH);
884 spref.get("x_graticule", i, x_graticule); x_graticule = i;
885 spref.get("y_graticule", i, y_graticule); y_graticule = i;
886 spref.get("xy_graticule",i, xy_graticule); xy_graticule = i;
887
888 memset(strbuff, 0, sizeof(strbuff));
889 spref.get("last_macro_file", strbuff, "macros.mdf", sizeof(strbuff) - 1);
890 LastMacroFile = strbuff;
891
892 spref.get("spot_recv", i, spot_recv); spot_recv = i;
893 spref.get("spot_log", i, spot_log); spot_log = i;
894
895 spref.get("contest", i, contest); contest = i;
896 spref.get("quick_entry", i, quick_entry); quick_entry = i;
897 spref.get("rx_scroll_hints", i, rx_scroll_hints); rx_scroll_hints = i;
898 spref.get("rx_word_wrap", i, rx_word_wrap); rx_word_wrap = i;
899 spref.get("tx_word_wrap", i, tx_word_wrap); tx_word_wrap = i;
900
901 spref.get("logbook_x", logbook_x, logbook_x);
902 spref.get("logbook_y", logbook_y, logbook_y);
903 spref.get("logbook_w", logbook_w, logbook_w);
904 spref.get("logbook_h", logbook_h, logbook_h);
905 spref.get("logbook_reverse", i, logbook_reverse); logbook_reverse = i;
906 spref.get("logbook_col_0", logbook_col_0, logbook_col_0);
907 spref.get("logbook_col_1", logbook_col_1, logbook_col_1);
908 spref.get("logbook_col_2", logbook_col_2, logbook_col_2);
909 spref.get("logbook_col_3", logbook_col_3, logbook_col_3);
910 spref.get("logbook_col_4", logbook_col_4, logbook_col_4);
911 spref.get("logbook_col_5", logbook_col_5, logbook_col_5);
912
913 spref.get("dxdialog_x", dxdialog_x, dxdialog_x);
914 spref.get("dxdialog_y", dxdialog_y, dxdialog_y);
915 spref.get("dxdialog_w", dxdialog_w, dxdialog_w);
916 spref.get("dxdialog_h", dxdialog_h, dxdialog_h);
917
918 spref.get("contestiatones", contestiatones, contestiatones);
919 spref.get("contestiabw", contestiabw, contestiabw);
920 spref.get("contestiamargin", contestiamargin, contestiamargin);
921 spref.get("contestiainteg", contestiainteg, contestiainteg);
922 spref.get("contestia8bit", i, contestia8bit); contestia8bit = i;
923
924 spref.get("oliviaiatones", oliviatones, oliviatones);
925 spref.get("oliviaiabw", oliviabw, oliviabw);
926 spref.get("oliviaiamargin", oliviamargin, oliviamargin);
927 spref.get("oliviaiainteg", oliviainteg, oliviainteg);
928 spref.get("oliviaia8bit", i, olivia8bit); olivia8bit = i;
929
930 spref.get("rtty_shift", rtty_shift, rtty_shift);
931 spref.get("rtty_custom_shift", rtty_custom_shift, rtty_custom_shift);
932 spref.get("rtty_baud", rtty_baud, rtty_baud);
933 spref.get("rtty_bits", rtty_bits, rtty_bits);
934 spref.get("rtty_parity", rtty_parity, rtty_parity);
935 spref.get("rtty_stop", rtty_stop, rtty_stop);
936 spref.get("rtty_reverse", i, rtty_reverse); rtty_reverse = i;
937 spref.get("rtty_crcrlf", i, rtty_crcrlf); rtty_crcrlf = i;
938 spref.get("rtty_autocrlf", i, rtty_autocrlf); rtty_autocrlf = i;
939 spref.get("rtty_autocount", rtty_autocount, rtty_autocount);
940 spref.get("rtty_afcspeed", rtty_afcspeed, rtty_afcspeed);
941 spref.get("preferxhairscope", i, PreferXhairScope); PreferXhairScope = i;
942 spref.get("shaped_rtty", i, shaped_rtty); shaped_rtty = i;
943 spref.get("uosrx", i, UOSrx); UOSrx = i;
944 spref.get("uostx", i, UOStx); UOStx = i;
945
946 if(!xmlrpc_address_override_flag) {
947 memset(strbuff, 0, sizeof(strbuff));
948 spref.get("xmlrpc_address", strbuff, xmlrpc_address.c_str(), sizeof(strbuff) - 1);
949 xmlrpc_address = strbuff;
950 }
951 if (!xmlrpc_port_override_flag) {
952 memset(strbuff, 0, sizeof(strbuff));
953 spref.get("xmlrpc_port", strbuff, xmlrpc_port.c_str(), sizeof(strbuff) - 1);
954 xmlrpc_port = strbuff;
955 }
956
957 if(!arq_address_override_flag) {
958 memset(strbuff, 0, sizeof(strbuff));
959 spref.get("arq_address", strbuff, arq_address.c_str(), sizeof(strbuff) - 1);
960 arq_address = strbuff;
961 }
962 if(!arq_port_override_flag) {
963 memset(strbuff, 0, sizeof(strbuff));
964 spref.get("arq_port", strbuff, arq_port.c_str(), sizeof(strbuff) - 1);
965 arq_port = strbuff;
966 }
967
968 if(!kiss_address_override_flag) {
969 memset(strbuff, 0, sizeof(strbuff));
970 spref.get("kiss_address", strbuff, kiss_address.c_str(), sizeof(strbuff) - 1);
971 kiss_address = strbuff;
972
973
974 memset(strbuff, 0, sizeof(strbuff));
975 spref.get("kiss_io_port", strbuff, kiss_io_port.c_str(), sizeof(strbuff) - 1);
976 kiss_io_port = strbuff;
977
978 memset(strbuff, 0, sizeof(strbuff));
979 spref.get("kiss_out_port", strbuff, kiss_out_port.c_str(), sizeof(strbuff) - 1);
980 kiss_out_port = strbuff;
981
982 spref.get("kiss_dual_port_enabled", i, kiss_dual_port_enabled); kiss_dual_port_enabled = i;
983 }
984
985 if(!override_data_io_enabled) {
986 spref.get("data_io_enabled", i, data_io_enabled); data_io_enabled = i;
987 }
988
989 spref.get("ax25_decode_enabled", i, ax25_decode_enabled); ax25_decode_enabled = i;
990 spref.get("enableBusyChannel", i, enableBusyChannel); enableBusyChannel = i;
991 spref.get("busyChannelSeconds", i, busyChannelSeconds); busyChannelSeconds = i;
992 spref.get("kpsql_attenuation", i, kpsql_attenuation); kpsql_attenuation = i;
993 spref.get("csma_enabled", i, csma_enabled); csma_enabled = i;
994 spref.get("kiss_tcp_io", i, kiss_tcp_io); kiss_tcp_io = i;
995 spref.get("kiss_tcp_listen", i, kiss_tcp_listen); kiss_tcp_listen = i;
996 spref.get("kpsql_enabled", i, kpsql_enabled); kpsql_enabled = i;
997
998 spref.get("csma_persistance", i, csma_persistance); csma_persistance = i;
999 spref.get("csma_slot_time", i, csma_slot_time); csma_slot_time = i;
1000 spref.get("csma_transmit_delay", i, csma_transmit_delay); csma_transmit_delay = i;
1001
1002 spref.get("psm_flush_buffer_timeout", i, psm_flush_buffer_timeout); psm_flush_buffer_timeout = i;
1003 spref.get("psm_minimum_bandwidth", i, psm_minimum_bandwidth); psm_minimum_bandwidth = i;
1004 spref.get("psm_minimum_bandwidth_margin", i, psm_minimum_bandwidth_margin); psm_minimum_bandwidth_margin = i;
1005 spref.get("psm_use_histogram", i, psm_use_histogram); psm_use_histogram = i;
1006 spref.get("psm_histogram_offset_threshold", i, psm_histogram_offset_threshold); psm_histogram_offset_threshold = i;
1007 spref.get("psm_hit_time_window", i, psm_hit_time_window); psm_hit_time_window = i;
1008
1009 spref.get("tx_buffer_timeout", i, tx_buffer_timeout); tx_buffer_timeout = i;
1010
1011 spref.get("kiss_io_modem_change_inhibit", i, kiss_io_modem_change_inhibit); kiss_io_modem_change_inhibit = i;
1012
1013 spref.get("psk8DCDShortFlag", i, psk8DCDShortFlag); psk8DCDShortFlag = i;
1014
1015 memset(strbuff, 0, sizeof(strbuff));
1016 spref.get("browser_search", strbuff, browser_search.c_str(), sizeof(strbuff) - 1);
1017 browser_search = strbuff;
1018 seek_re.recompile(browser_search.c_str());
1019
1020 spref.get("meters", i, meters); meters = i;
1021
1022 //----------------------------------------------------------------------
1023 // WinKeyer prefs get
1024 //----------------------------------------------------------------------
1025
1026 spref.get("WK_serial_port_name", strbuff, "NONE", 199);
1027 WK_serial_port_name = strbuff;
1028 if (WK_serial_port_name.find("tty") == 0)
1029 WK_serial_port_name.insert(0, "/dev/");
1030
1031 spref.get("WK_mode_register", i, WK_mode_register); WK_mode_register = i;
1032 spref.get("WK_speed_wpm", i, WK_speed_wpm); WK_speed_wpm = i;
1033 spref.get("WK_cmd_wpm", i, WK_cmd_wpm); WK_cmd_wpm = i;
1034 spref.get("WK_cut_zeronine", i, WK_cut_zeronine); WK_cut_zeronine = i;
1035 spref.get("WK_sidetone", i, WK_sidetone); WK_sidetone = i;
1036 spref.get("WK_weight", i, WK_weight); WK_weight = i;
1037 spref.get("WK_lead_in_time", i, WK_lead_in_time); WK_lead_in_time = i;
1038 spref.get("WK_tail_time", i, WK_tail_time); WK_tail_time = i;
1039 spref.get("WK_min_wpm", i, WK_min_wpm); WK_min_wpm = i;
1040 spref.get("WK_rng_wpm", i, WK_rng_wpm); WK_rng_wpm = i;
1041 spref.get("WK_1st_ext", i, WK_first_extension); WK_first_extension = i;
1042 spref.get("WK_key_comp", i, WK_key_compensation); WK_key_compensation = i;
1043 spref.get("WK_farnsworth", i, WK_farnsworth_wpm); WK_farnsworth_wpm = i;
1044 spref.get("WK_paddle_set", i, WK_paddle_setpoint); WK_paddle_setpoint = i;
1045 spref.get("WK_dit_dah_ratio", i, WK_dit_dah_ratio); WK_dit_dah_ratio = i;
1046 spref.get("WK_pin_config", i, WK_pin_configuration); WK_pin_configuration = i;
1047 spref.get("WK_use_pot", i, WK_use_pot); WK_use_pot = i;
1048
1049 spref.get("WK_online", i, WK_online); WK_online = i;
1050 spref.get("WK_version", WK_version, WK_version);
1051
1052 spref.get("WKFSK_mode", WKFSK_mode, WKFSK_mode);
1053 spref.get("WKFSK_baud", WKFSK_baud, WKFSK_baud);
1054 spref.get("WKFSK_stopbits", WKFSK_stopbits, WKFSK_stopbits);
1055 spref.get("WKFSK_ptt", WKFSK_ptt, WKFSK_ptt);
1056 spref.get("WKFSK_polarity", WKFSK_polarity, WKFSK_polarity);
1057 spref.get("WKFSK_sidetone", WKFSK_sidetone, WKFSK_sidetone);
1058 spref.get("WKFSK_auto_crlf", WKFSK_auto_crlf, WKFSK_auto_crlf);
1059 spref.get("WKFSK_diddle", WKFSK_diddle, WKFSK_diddle);
1060 spref.get("WKFSK_diddle_char", WKFSK_diddle_char, WKFSK_diddle_char);
1061 spref.get("WKFSK_diddle_char", WKFSK_diddle_char, WKFSK_diddle_char);
1062 spref.get("WKFSK_monitor", WKFSK_monitor, WKFSK_monitor);
1063
1064 spref.get("Nav_online", i, Nav_online); Nav_online = i;
1065 spref.get("Nav_config_online", i, Nav_config_online); Nav_config_online = i;
1066
1067 spref.get("nanoCW_online", i, nanoCW_online); nanoCW_online = i;
1068 spref.get("nanoFSK_online", i, nanoFSK_online); nanoFSK_online = i;
1069
1070 spref.get("useCW_KEYLINE", i, useCW_KEYLINE); useCW_KEYLINE = i;
1071
1072 //----------------------------------------------------------------------
1073 // FMT saved controls
1074 spref.get("int_FMT_ref_freq", int_FMT_ref_freq, int_FMT_ref_freq);
1075 FMT_ref_freq = int_FMT_ref_freq / 1000.0;
1076 spref.get("int_FMT_unk_freq", int_FMT_unk_freq, int_FMT_unk_freq);
1077 FMT_unk_freq = int_FMT_unk_freq / 1000.0;
1078
1079 spref.get("FMT_rec_interval", FMT_rec_interval, FMT_rec_interval);
1080 spref.get("FMT_trk_scale", FMT_trk_scale, FMT_trk_scale);
1081 spref.get("FMT_minutes", FMT_minutes, FMT_minutes);
1082 //----------------------------------------------------------------------
1083 spref.get("debug_level", debug_level, debug_level);
1084 spref.get("debug_mask", debug_mask, debug_mask);
1085 //----------------------------------------------------------------------
1086 spref.get("vumeter_shown", vumeter_shown, vumeter_shown);
1087 //----------------------------------------------------------------------
1088
1089 set_debug_mask(debug_mask);
1090 }
1091
initLastState()1092 void status::initLastState()
1093 {
1094 if (!bLastStateRead)
1095 loadLastState();
1096
1097 // RTTY
1098 if (lastmode == MODE_RTTY ) {
1099 progdefaults.rtty_shift = rtty_shift;
1100 selShift->index(progdefaults.rtty_shift);
1101 if (rtty_shift == selShift->lsize() - 1) {
1102 selCustomShift->deactivate();
1103 }
1104 else { // Custom shift
1105 selCustomShift->activate();
1106 }
1107 selBaud->index((progdefaults.rtty_baud = rtty_baud));
1108 selBits->index((progdefaults.rtty_bits = rtty_bits));
1109 selParity->index((progdefaults.rtty_parity = rtty_parity));
1110 selStopBits->index((progdefaults.rtty_stop = rtty_stop));
1111 btnCRCRLF->value(progdefaults.rtty_crcrlf = rtty_crcrlf);
1112 btnAUTOCRLF->value(progdefaults.rtty_autocrlf = rtty_autocrlf);
1113 cntrAUTOCRLF->value(progdefaults.rtty_autocount = rtty_autocount);
1114 chkUOSrx->value(progdefaults.UOSrx = UOSrx);
1115 chkUOStx->value(progdefaults.UOStx = UOStx);
1116 i_listbox_rtty_afc_speed->index(progdefaults.rtty_afcspeed = rtty_afcspeed);
1117 btnPreferXhairScope->value(progdefaults.PreferXhairScope = PreferXhairScope);
1118
1119 if (mvsquelch) {
1120 mvsquelch->range(-12.0, 6.0);
1121 mvsquelch->value(VIEWER_rttysquelch);
1122 }
1123 if (sldrViewerSquelch) {
1124 sldrViewerSquelch->range(-12.0, 6.0);
1125 sldrViewerSquelch->value(VIEWER_rttysquelch);
1126 }
1127 }
1128
1129 if (lastmode >= MODE_PSK_FIRST && lastmode <= MODE_PSK_LAST) {
1130 if (mvsquelch) {
1131 mvsquelch->range(-3.0, 6.0);
1132 mvsquelch->value(VIEWER_psksquelch);
1133 }
1134 if (sldrViewerSquelch) {
1135 sldrViewerSquelch->range(-3.0, 6.0);
1136 sldrViewerSquelch->value(VIEWER_psksquelch);
1137 }
1138 }
1139
1140 // OLIVIA
1141 if (lastmode == MODE_OLIVIA) {
1142 i_listbox_olivia_tones->index(progdefaults.oliviatones = oliviatones);
1143 i_listbox_olivia_bandwidth->index(progdefaults.oliviabw = oliviabw);
1144 cntOlivia_smargin->value(progdefaults.oliviasmargin = oliviamargin);
1145 cntOlivia_sinteg->value(progdefaults.oliviasinteg = oliviainteg);
1146 btnOlivia_8bit->value(progdefaults.olivia8bit = olivia8bit);
1147 }
1148
1149 // CONTESTIA
1150 if (lastmode == MODE_CONTESTIA) {
1151 i_listbox_contestia_tones->index(progdefaults.contestiatones = contestiatones);
1152 i_listbox_contestia_bandwidth->index(progdefaults.contestiabw = contestiabw);
1153 cntContestia_smargin->value(progdefaults.contestiasmargin = contestiamargin);
1154 cntContestia_sinteg->value(progdefaults.contestiasinteg = contestiainteg);
1155 btnContestia_8bit->value(progdefaults.contestia8bit = contestia8bit);
1156 }
1157
1158 init_modem_sync(lastmode);
1159
1160 wf->opmode();
1161 wf->Mag(mag);
1162 wf->Offset(offset);
1163 wf->Speed(speed);
1164 wf->setRefLevel();
1165 wf->setAmpSpan();
1166
1167 btnAFC->value(afconoff);
1168
1169 if(override_data_io_enabled != DISABLED_IO) {
1170 data_io_enabled = override_data_io_enabled;
1171 progdefaults.data_io_enabled = data_io_enabled;
1172 data_io_enabled = data_io_enabled;
1173 }
1174
1175 if(data_io_enabled == KISS_IO) {
1176 data_io_enabled = KISS_IO;
1177 progdefaults.data_io_enabled = KISS_IO;
1178 } else {
1179 data_io_enabled = ARQ_IO;
1180 progdefaults.data_io_enabled = ARQ_IO;
1181 data_io_enabled = ARQ_IO;
1182 kpsql_enabled = false;
1183 }
1184
1185 btnSQL->value(sqlonoff);
1186 btnPSQL->value(kpsql_enabled);
1187
1188 if(kpsql_enabled)
1189 sldrSquelch->value(sldrPwrSquelchValue);
1190 else
1191 sldrSquelch->value(sldrSquelchValue);
1192
1193 if (arq_address_override_flag)
1194 arq_address = progdefaults.arq_address = override_arq_address;
1195 if (arq_port_override_flag)
1196 arq_port = progdefaults.arq_port = override_arq_port;
1197
1198 if(kiss_address_override_flag) {
1199 if(!override_kiss_address.empty())
1200 kiss_address = progdefaults.kiss_address = override_kiss_address;
1201 if(!override_kiss_io_port.empty())
1202 kiss_io_port = progdefaults.kiss_io_port = override_kiss_io_port;
1203 if(!override_kiss_out_port.empty())
1204 kiss_out_port = progdefaults.kiss_out_port = override_kiss_out_port;
1205 if(override_kiss_dual_port_enabled > -1)
1206 kiss_dual_port_enabled = progdefaults.kiss_dual_port_enabled = override_kiss_dual_port_enabled;
1207 }
1208
1209 if (xmlrpc_address_override_flag)
1210 xmlrpc_address = progdefaults.xmlrpc_address = override_xmlrpc_address;
1211 if (xmlrpc_port_override_flag)
1212 xmlrpc_port = progdefaults.xmlrpc_port = override_xmlrpc_port;
1213
1214 txtArq_ip_address->value(arq_address.c_str());
1215 txtArq_ip_port_no->value(arq_port.c_str());
1216
1217 txtXmlrpc_ip_address->value(xmlrpc_address.c_str());
1218 txtXmlrpc_ip_port_no->value(xmlrpc_port.c_str());
1219
1220 txtKiss_ip_address->value(kiss_address.c_str());
1221 txtKiss_ip_io_port_no->value(kiss_io_port.c_str());
1222 txtKiss_ip_out_port_no->value(kiss_out_port.c_str());
1223
1224 btnEnable_dual_port->value(kiss_dual_port_enabled);
1225 progdefaults.kiss_dual_port_enabled = kiss_dual_port_enabled;
1226
1227 btnEnable_csma->value(csma_enabled);
1228 progdefaults.csma_enabled = csma_enabled;
1229
1230 btnEnable_ax25_decode->value(ax25_decode_enabled);
1231 progdefaults.ax25_decode_enabled = ax25_decode_enabled;
1232
1233 cntKPSQLAttenuation->value(kpsql_attenuation);
1234 progdefaults.kpsql_attenuation = kpsql_attenuation;
1235
1236 kiss_io_set_button_state(0);
1237
1238 if (bWF_only)
1239 fl_digi_main->resize(mainX, mainY, mainW, Hmenu + Hwfall + Hstatus);
1240 else {
1241 fl_digi_main->resize(mainX, mainY, mainW, mainH);
1242
1243 set_macroLabels();
1244
1245 UI_select();
1246 }
1247
1248 if (VIEWERvisible)
1249 openViewer();
1250
1251 if (scopeview) {
1252 scopeview->resize(scopeX, scopeY, scopeW, scopeH);
1253 digiscope->resize(0,0,scopeW,scopeH);
1254 if (scopeVisible)
1255 scopeview->show();
1256 }
1257
1258 cQsoDb::reverse = logbook_reverse;
1259 if (cQsoDb::reverse) {
1260 qsodb.SortByDate(progdefaults.sort_date_time_off);
1261 loadBrowser();
1262 }
1263
1264 dlgLogbook->resize(logbook_x, logbook_y, logbook_w, logbook_h);
1265
1266 wBrowser->columnWidth(0, logbook_col_0);
1267 wBrowser->columnWidth(1, logbook_col_1);
1268 wBrowser->columnWidth(2, logbook_col_2);
1269 wBrowser->columnWidth(3, logbook_col_3);
1270 wBrowser->columnWidth(4, logbook_col_4);
1271 wBrowser->columnWidth(5, logbook_col_5);
1272
1273 dxcluster_viewer->resize(dxdialog_x, dxdialog_y, dxdialog_w, dxdialog_h);
1274
1275 ReceiveText->set_all_entry(quick_entry);
1276 ReceiveText->set_scroll_hints(rx_scroll_hints);
1277 ReceiveText->set_word_wrap(rx_word_wrap, true);
1278 TransmitText->set_word_wrap(tx_word_wrap, true);
1279
1280 disable_config_p2p_io_widgets();
1281 update_csma_io_config(CSMA_ALL);
1282
1283 // config_WK
1284 choice_WK_keyer_mode->add("Iambic B");
1285 choice_WK_keyer_mode->add("Iambic A");
1286 choice_WK_keyer_mode->add("Ultimatic");
1287 choice_WK_keyer_mode->add("Bug Mode");
1288 choice_WK_keyer_mode->index((WK_mode_register & 0x30) >> 4);
1289
1290 choice_WK_output_pins->add("Key 1");
1291 choice_WK_output_pins->add("Key 2");
1292 choice_WK_output_pins->add("Key 1 & 2");
1293 choice_WK_output_pins->index(((WK_pin_configuration & 0x06) >> 2) - 1);
1294
1295 choice_WK_sidetone->add("4000");
1296 choice_WK_sidetone->add("2000");
1297 choice_WK_sidetone->add("1333");
1298 choice_WK_sidetone->add("1000");
1299 choice_WK_sidetone->add("800");
1300 choice_WK_sidetone->add("666");
1301 choice_WK_sidetone->add("571");
1302 choice_WK_sidetone->add("500");
1303 choice_WK_sidetone->add("444");
1304 choice_WK_sidetone->add("400");
1305 choice_WK_sidetone->index((WK_sidetone & 0x0F) - 1);
1306
1307 choice_WK_hang->add("Wait 1.0");
1308 choice_WK_hang->add("Wait 1.33");
1309 choice_WK_hang->add("Wait 1.66");
1310 choice_WK_hang->add("Wait 2.0");
1311 choice_WK_hang->index((WK_pin_configuration & 0x30) >> 4);
1312
1313 cntr_WK_tail->minimum(0);
1314 cntr_WK_tail->maximum(250);
1315 cntr_WK_tail->step(10);
1316 cntr_WK_tail->value(WK_tail_time);
1317
1318 cntr_WK_leadin->minimum(0);
1319 cntr_WK_leadin->maximum(250);
1320 cntr_WK_leadin->step(10);
1321 cntr_WK_leadin->value(WK_lead_in_time);
1322
1323 cntr_WK_weight->minimum(10);
1324 cntr_WK_weight->maximum(90);
1325 cntr_WK_weight->step(1);
1326 cntr_WK_weight->value(WK_weight);
1327
1328 cntr_WK_sample->minimum(10);
1329 cntr_WK_sample->maximum(90);
1330 cntr_WK_sample->step(1);
1331 cntr_WK_sample->value(WK_paddle_setpoint);
1332
1333 cntr_WK_first_ext->minimum(0);
1334 cntr_WK_first_ext->maximum(250);
1335 cntr_WK_first_ext->step(1);
1336 cntr_WK_first_ext->value(WK_first_extension);
1337
1338 cntr_WK_comp->minimum(0);
1339 cntr_WK_comp->maximum(250);
1340 cntr_WK_comp->step(1);
1341 cntr_WK_comp->value(WK_key_compensation);
1342
1343 cntr_WK_ratio->minimum(2.0);
1344 cntr_WK_ratio->maximum(4.0);
1345 cntr_WK_ratio->step(0.1);
1346 cntr_WK_ratio->value(WK_dit_dah_ratio * 3 / 50.0);
1347
1348 cntr_WK_cmd_wpm->minimum(10);
1349 cntr_WK_cmd_wpm->maximum(30);
1350 cntr_WK_cmd_wpm->step(1);
1351 cntr_WK_cmd_wpm->value(WK_cmd_wpm);
1352
1353 cntr_WK_farnsworth->minimum(10);
1354 cntr_WK_farnsworth->maximum(99);
1355 cntr_WK_farnsworth->step(1);
1356 cntr_WK_farnsworth->value(WK_farnsworth_wpm);
1357
1358 cntr_WK_rng_wpm->minimum(10);
1359 cntr_WK_rng_wpm->maximum(40);
1360 cntr_WK_rng_wpm->step(1);
1361 cntr_WK_rng_wpm->value(WK_rng_wpm);
1362
1363 cntr_WK_min_wpm->minimum(5);
1364 cntr_WK_min_wpm->maximum(89);
1365 cntr_WK_min_wpm->step(1);
1366 cntr_WK_min_wpm->value(WK_min_wpm);
1367
1368 btn_WK_sidetone_on->value(WK_sidetone);
1369 btn_WK_cut_zeronine->value(WK_cut_zeronine);
1370
1371 btn_WK_ptt_on->value((WK_pin_configuration & 0x01) == 0x01);
1372 btn_WK_tone_on->value((WK_pin_configuration & 0x02) == 0x02);
1373
1374 btn_WK_ct_space->value((WK_mode_register & 0x01) == 0x01);
1375 btn_WK_auto_space->value((WK_mode_register & 0x02) == 0x02);
1376 btn_WK_serial_echo->value((WK_mode_register & 0x04) == 0x04);
1377 btn_WK_swap->value((WK_mode_register & 0x08) == 0x08);
1378 btn_WK_paddle_echo->value((WK_mode_register & 0x40) == 0x40);
1379 btn_WK_paddledog->value((WK_mode_register & 0x80) == 0x80);
1380
1381 select_WK_CommPort->value(WK_serial_port_name.c_str());
1382 }
1383