int changepars(void) { extern int cluster; extern int shortqsonr; extern int searchflg; extern int demode; extern int contest; extern int announcefilter; extern int showscore_flag; extern int zonedisplay; extern int trxmode; extern char hiscall[]; extern int rit; extern int trx_control; extern int editor; extern int packetinterface; extern int nopacket; extern int cqdelay; extern int ctcomp; extern char *config_file; extern int miniterm; extern int total; #ifdef HAVE_LIBHAMLIB extern freq_t outfreq; #else extern int outfreq; #endif extern int simulator; extern int cwkeyer; extern char synclogfile[]; extern char sc_volume[]; extern int cwstart; char parameterstring[20]; char parameters[51][19]; char cmdstring[80]; int i, k, x, nopar = 0; int maxpar = 50; int volumebuffer; int currentmode = 0; int rc; strcpy(parameters[0], "SPOT"); strcpy(parameters[1], "MAP"); strcpy(parameters[2], "CLOFF"); strcpy(parameters[3], "CLUSTER"); strcpy(parameters[4], "SHORT"); strcpy(parameters[5], "LONG"); strcpy(parameters[6], "MESSAGE"); strcpy(parameters[7], "LIST"); strcpy(parameters[8], "CHECK"); strcpy(parameters[9], "NOCHECK"); strcpy(parameters[10], "TONE"); strcpy(parameters[11], "EDIT"); strcpy(parameters[12], "VIEW"); strcpy(parameters[13], "HELP"); strcpy(parameters[14], "DEMODE"); strcpy(parameters[15], "CONTEST"); strcpy(parameters[16], "FILTER"); strcpy(parameters[17], "SCORE"); strcpy(parameters[18], "WRITE"); strcpy(parameters[19], "EXIT"); strcpy(parameters[20], "TXFILE"); strcpy(parameters[21], "ZONES"); strcpy(parameters[22], "CTY"); strcpy(parameters[23], "MODE"); strcpy(parameters[24], "SET"); strcpy(parameters[25], "MULTI"); strcpy(parameters[26], "PROP"); strcpy(parameters[27], "RITCLEAR"); strcpy(parameters[28], "TRXCONTROL"); strcpy(parameters[29], "CFG"); //strcpy(parameters[30], "CWMODE"); strcpy(parameters[30], "CW"); strcpy(parameters[31], "SSBMODE"); strcpy(parameters[32], "DIGIMODE"); strcpy(parameters[33], "PACKET"); strcpy(parameters[34], "SIMULATOR"); strcpy(parameters[35], "INFO"); strcpy(parameters[36], "FREQ"); strcpy(parameters[37], "RECONNECT"); strcpy(parameters[38], "QUIT"); strcpy(parameters[39], "CQDELAY"); strcpy(parameters[40], "ADIF"); strcpy(parameters[41], "SYNC"); strcpy(parameters[42], "RESCORE"); strcpy(parameters[43], "SCVOLUME"); strcpy(parameters[44], "SCAN"); strcpy(parameters[45], "DEBUG"); strcpy(parameters[46], "MINITERM"); strcpy(parameters[47], "RTTY"); strcpy(parameters[48], "SOUND"); strcpy(parameters[49], "CWMODE"); strcpy(parameters[50], "CHARS"); nopar = 0; attroff(A_STANDOUT); attron(COLOR_PAIR(C_HEADER)); mvprintw(12, 29, "PARAMETER? "); refreshp(); mvprintw(12, 29, " "); mvprintw(12, 29, ""); refreshp(); echo(); getstr(parameterstring); noecho(); for (k = 0; parameterstring[k]; k++) parameterstring[k] = toupper(parameterstring[k]); for (i = 0; i <= maxpar; i++) { if (strncmp(parameterstring, parameters[i], 3) == 0) { break; } } switch (i) { case 0: /* SPOTS) */ { /* SPOTS not supported anymore * - default to MAP*/ cluster = MAP; break; } case 1: /* BANDMAP */ { cluster = MAP; break; } case 2: /* CLOFF */ { cluster = NOCLUSTER; break; } case 3: /* CLUSTER */ { cluster = CLUSTER; announcefilter = FILTER_ALL; break; } case 4: /* SHORTNR */ { shortqsonr = SHORTCW; break; } case 5: /* LONGNR */ { shortqsonr = LONGCW; break; } case 6: /* MESSAGE */ { message_change(i); break; } case 7: /* LIST */ { listmessages(); break; } case 8: /* CHECK */ { searchflg = SEARCHWINDOW; break; } case 9: /* NOCHECK */ { searchflg = 0; break; } case 10: /* TONE */ { set_tone(); break; } case 11: /* EDIT */ { logedit(); break; } case 12: /* VIEW */ { logview(); break; } case 13: /* HELP */ { show_help(); break; } case 14: /* DEMODE */ { if (demode == SEND_DE) demode = 0; else demode = SEND_DE; mvprintw(13, 29, "DE-mode is %d", demode); refreshp(); sleep(1); break; } case 15: /* CONTEST */ { if (contest == CONTEST) contest = 0; else { contest = CONTEST; searchflg = SEARCHWINDOW; } mvprintw(13, 29, "CONTEST-mode is %d", contest); refreshp(); sleep(1); break; } case 16: /* FILTER */ { announcefilter++; if (announcefilter > 3) announcefilter = 0; mvprintw(13, 29, "FILTER-mode is %d", announcefilter); refreshp(); sleep(1); break; } case 17: /* SCORE */ { if (showscore_flag == 0) showscore_flag = 1; else { showscore_flag = 0; } mvprintw(13, 29, "Show score-mode is %d", showscore_flag); refreshp(); sleep(1); break; } case 18: /* WRITE CABRILLO FILE */ { int old_cluster = cluster; cluster = NOCLUSTER; write_cabrillo(); cluster = old_cluster; break; } case 19: /* EXIT */ case 38: /* QUIT */ { writeparas(); clear(); cleanup_telnet(); endwin(); puts("\n\nThanks for using TLF.. 73\n"); exit(0); break; } case 20: /* TXFILE */ { break; } case 21: /* ZONES */ { if (zonedisplay == 0) zonedisplay = 1; else { zonedisplay = 0; } break; } case 22: /* COUNTRIES */ { show_mults(); refreshp(); sleep(1); break; } case 23: /* MODE */ { if (trxmode == CWMODE) trxmode = SSBMODE; else if (trxmode == SSBMODE) trxmode = DIGIMODE; else trxmode = CWMODE; if (trxmode == CWMODE) { mvprintw(13, 29, "TRXMODE = CW"); } else if (trxmode == SSBMODE) mvprintw(13, 29, "TRXMODE = SSB"); else mvprintw(13, 29, "TRXMODE = DIG"); refreshp(); sleep(1); break; } case 24: /* SET PARAMETERS */ case 29: /* CFG PARAMETERS */ { clear(); if (editor == EDITOR_JOE) { strcpy(cmdstring, "joe "); } else if (editor == EDITOR_VI) { strcpy(cmdstring, "vi "); } else if (editor == EDITOR_MC) { strcpy(cmdstring, "mcedit "); } else { strcpy(cmdstring, "e3 "); } strcat(cmdstring, config_file); rc = system(cmdstring); read_logcfg(); read_rules(); /* also reread rules file */ writeparas(); mvprintw(24, 0, "Logcfg.dat loaded, parameters written.."); refreshp(); clear_display(); break; } case 25: /* MULTI */ { multiplierinfo(); break; } case 26: /* PROPAGATION */ { muf(); clear_display(); break; } case 27: /* RITCLEAR */ { if (rit == RITCLEAR) rit = 0; else { rit = RITCLEAR; } if (rit == RITCLEAR) { mvprintw(13, 29, "RIT clear on"); } else { mvprintw(13, 29, "RIT clear off"); } refreshp(); sleep(1); break; } case 28: /* trx ctl */ { if (trx_control == 1) trx_control = 0; else { trx_control = 1; } if (trx_control == 1) { mvprintw(13, 29, "TRX control on"); } else { mvprintw(13, 29, "TRX control off"); } refreshp(); sleep(1); break; } case 30: /* CW */ case 49: { if (cwkeyer == MFJ1278_KEYER) { sendmessage("MODE CW\015K\015"); } trxmode = CWMODE; if (trx_control == 1) outfreq = SETCWMODE; break; } case 31: /* SSBMODE */ { trxmode = SSBMODE; outfreq = SETSSBMODE; break; } case 32: /* DIGIMODE */ { trxmode = DIGIMODE; break; } case 33: /* PACKET */ { if ((nopacket == 0) && (packetinterface > 0)) packet(); break; } case 34: /* SIMULATOR */ { if (simulator == 0) { simulator = 1; if (ctcomp == 1) { mvprintw(13, 19, "The simulator only works in TRmode. Switching to TRmode"); ctcomp = 0; } else mvprintw(13, 29, "Simulator on"); refreshp(); if (cwkeyer == NET_KEYER) { if (netkeyer(K_WORDMODE, NULL) < 0) { mvprintw(24, 0, "keyer not active; switching to SSB"); trxmode = SSBMODE; clear_display(); } } } else { simulator = 0; mvprintw(13, 29, "Simulator off"); refreshp(); if (cwkeyer == NET_KEYER) { if (netkeyer(K_RESET, NULL) < 0) { mvprintw(24, 0, "keyer not active; switching to SSB"); trxmode = SSBMODE; clear_display(); } } } break; } case 35: /* INFO */ { int currentterm = miniterm; miniterm = 0; networkinfo(); miniterm = currentterm; if (currentmode == DIGIMODE) trxmode = DIGIMODE; break; } case 36: /* CLOFF */ { cluster = FREQWINDOW; break; } case 37: /* RECONNECT */ { if ((nopacket == 0) && (packetinterface > 0)) { cleanup_telnet(); init_packet(); packet(); } break; } case 39: /* CQDELAY */ { mvprintw(12, 29, "CQD: pgup/dwn", cqdelay); refreshp(); x = 1; while (x) { x = key_get(); switch (x) { // <Page-Up>, increase autoCQ delay by 1/2 second. case KEY_PPAGE: { if (cqdelay <= 60) { cqdelay++; attron(COLOR_PAIR(C_HEADER) | A_STANDOUT); mvprintw(0, 19, " "); mvprintw(0, 19, "%i", cqdelay); break; } } // <Page-Down>, decrease autoCQ delay by 1/2 second. case KEY_NPAGE: { if (cqdelay >= 1) { cqdelay--; attron(COLOR_PAIR(C_HEADER) | A_STANDOUT); mvprintw(0, 19, " "); mvprintw(0, 19, "%i", cqdelay); break; } default: x = 0; } } } attron(modify_attr(COLOR_PAIR(NORMCOLOR))); mvprintw(12, 29 + strlen(hiscall), ""); break; } case 40: /* ADIF */ { write_adif(); break; } case 41: /* SYNC */ { if (strlen(synclogfile) > 0) synclog(synclogfile); scroll_log(); /** \todo register return value */ total = 0; readcalls(); if (qtcdirection > 0) { readqtccalls(); } clear_display(); break; } case 42: /* RESCORE */ { /** \todo register return value */ total = 0; readcalls(); if (qtcdirection > 0) { readqtccalls(); } clear_display(); break; } case 43: /* SCVOLUME - set soundcard volume */ { volumebuffer = atoi(sc_volume); mvprintw(12, 29, "Vol: pgup/dwn"); refreshp(); usleep(500000); mvprintw(12, 29, "Vol: "); mvprintw(12, 29, "Vol: %d", volumebuffer); x = 1; while (x) { x = key_get(); switch (x) { // <Page-Up>, increase volume by 5%. case KEY_PPAGE: { if (volumebuffer < 95) volumebuffer += 5; break; } // <Page-Down>, decrease volume by 5%. case KEY_NPAGE: { if (volumebuffer >= 5) volumebuffer -= 5; break; } default: x = 0; } attron(COLOR_PAIR(COLOR_GREEN) | A_STANDOUT); mvprintw(12, 34, " "); mvprintw(12, 34, "%d", volumebuffer); if (volumebuffer >= 0 && volumebuffer <= 99) sprintf(sc_volume, "%d", volumebuffer); netkeyer(K_STVOLUME, sc_volume); } clear_display(); break; } case 44: /* SCAN */ { int currentterm = miniterm; miniterm = 0; testaudio(); clear_display(); miniterm = currentterm; break; } case 45: /* DEBUG */ { debug_tty(); clear_display(); break; } case 46: /* MINITERM ON/OFF */ { if (miniterm == 1) miniterm = 0; else miniterm = 1; break; } case 47: /* RTTY Initialize mode (MFJ1278B controller) */ { sendmessage("MODE VB\015K\015"); trxmode = DIGIMODE; break; } case 48: /* SOUND */ { clear_display(); record(); clear_display(); break; } case 50: /* CHARS */ { mvprintw(13, 29, "Autosend: (0, 2..5, m)?"); refreshp(); x = 1; /* wait for correct input or ESC */ while ((x != 0) && !((x >= 2) && (x <= 5)) && !(x == 'm' - '0') ) { x = key_get(); if (x == 27) break; x = x - '0'; } /* remember new setting */ if (x != 27) { if (x == 0 || (x >= 2 && x <= 5)) cwstart = x; else cwstart = -1; } if (cwstart > 0) mvprintw(13,29, "Autosend now: %1d ", cwstart); else { if (cwstart < 0 ) mvprintw(13,29, "Autosend now: Manual "); else mvprintw(13,29, "Autosend now: OFF "); } refreshp(); break; } default: { nopar = 1; } } if (nopar != 1) { mvprintw(12, 29, "OK ! "); writeparas(); } else { if ((nopacket == 0) && (packetinterface > 0)) packet(); } refreshp(); attron(modify_attr(COLOR_PAIR(NORMCOLOR))); mvprintw(12, 29, " "); mvprintw(12, 29, ""); refreshp(); hiscall[0] = '\0'; return (0); }
/** load all databases * * \return EXIT_FAILURE if not successful */ int databases_load() { int status; showmsg("reading country data"); readctydata(); /* read ctydb.dat */ showmsg("reading configuration data"); status = read_logcfg(); /* read the configuration file */ status |= read_rules(); /* read the additional contest rules in "rules/contestname" */ if (status != PARSE_OK) { showmsg("Problems in logcfg.dat or rule file detected! Continue Y/(N)?"); if (toupper(key_get()) != 'Y') { showmsg("73..."); return EXIT_FAILURE; } } if (*call == '\0') { showmsg ("WARNING: No callsign defined in logcfg.dat! exiting...\n\n\n"); return EXIT_FAILURE; } if (multlist == 1) { showmsg("reading multiplier data "); if (strlen(multsfile) == 0) { mvprintw(9, 0, "No multiplier file specified, exiting.. !!\n"); refreshp(); sleep(5); exit(1); } } init_and_load_multipliers(); showmsg("reading callmaster data"); load_callmaster(); if (*exchange_list != '\0') { showmsg("reading initial exchange file"); main_ie_list = make_ie_list(exchange_list); if (main_ie_list == NULL) { showmsg("Problems in initial exchange file detected! Continue Y/(N)?"); if (toupper(key_get()) != 'Y') { showmsg("73..."); return EXIT_FAILURE; } } } /* make sure logfile is there and has the right format */ if (checklogfile_new(logfile) != 0) { showmsg("Can not access logfile. Giving up"); return EXIT_FAILURE; } if (qtcdirection > 0) { if (checkqtclogfile() != 0) { showmsg("QTC's giving up"); return EXIT_FAILURE; } readqtccalls(); } // unset QTC_RECV_LAZY if mode is DIGIMODE if (trxmode == DIGIMODE) { qtc_recv_lazy = 0; } return 0; }