Upstream version 2.0pre2

pull/2/head
Stelios Bounanos 2007-10-15 23:32:59 +01:00
rodzic f9e9820662
commit a9831c865c
15 zmienionych plików z 144 dodań i 97 usunięć

Wyświetl plik

@ -1,7 +1,7 @@
Change Log:
1.38 1) Increased TxPPM to +/- 50000 to match the RxPPM range
2.0 1) Increased TxPPM to +/- 50000 to match the RxPPM range
2) Changed all audio i/o to separate 2 channel control (stereo)
3) Added right channel CW QRQ signal
4) Added right channel pseudo FSK signal
@ -73,7 +73,7 @@ Change Log:
this will cause fldigi to enter the TUNE mode for a very brief
100 milliseconds.
27) Abandoned the original fldigi.def configuration file and changed to
an xml based configuration file. New file is $HOME/.fldigi/fldigi_cfg.xml
an xml based configuration file. New file is $HOME/.fldigi/fldigi_def.xml
You may delete all occurances of
$HOME/.fldigi/fldigi.def, and
$HOME/.fldigi/FLDIGI_XML.DEF

Wyświetl plik

@ -652,8 +652,8 @@ int rtty::tx_process()
return 0;
}
// send idle character if c == 0
if (!c) {
// send idle character if c == -1
if (c == -1) {
send_idle();
txmode = LETTERS;
return 0;

Wyświetl plik

@ -86,6 +86,8 @@ Fl_Double_Window *fl_digi_main=(Fl_Double_Window *)0;
cMixer mixer;
bool useCheckButtons = false;
Fl_Button *btnTune = (Fl_Button *)0;
Fl_Tile_check *TiledGroup = 0;
ReceiveWidget *ReceiveText = 0;
@ -102,6 +104,8 @@ Fl_Button *btnMacro[10];
Fl_Button *btnAltMacros;
Fl_Light_Button *afconoff;
Fl_Light_Button *sqlonoff;
Fl_Check_Button *chk_afconoff;
Fl_Check_Button *chk_sqlonoff;
Fl_Input *inpFreq;
Fl_ComboBox *cboBand;
Fl_Button *btnSideband;
@ -1074,7 +1078,8 @@ void cb_cboBand(Fl_Widget *w, void *d)
void afconoff_cb(Fl_Widget *w, void *vi)
{
FL_LOCK_D();
Fl_Light_Button *b = (Fl_Light_Button *)w;
Fl_Button *b = (Fl_Button *)w;
// Fl_Light_Button *b = (Fl_Light_Button *)w;
int v = b->value();
FL_UNLOCK_D();
active_modem->set_afcOnOff( v ? true : false );
@ -1084,7 +1089,8 @@ void afconoff_cb(Fl_Widget *w, void *vi)
void sqlonoff_cb(Fl_Widget *w, void *vi)
{
FL_LOCK_D();
Fl_Light_Button *b = (Fl_Light_Button *)w;
Fl_Button *b = (Fl_Button *)w;
// Fl_Light_Button *b = (Fl_Light_Button *)w;
int v = b->value();
FL_UNLOCK_D();
active_modem->set_sqlchOnOff( v ? true : false );
@ -1488,23 +1494,37 @@ void create_fl_digi_main() {
WARNstatus->labelcolor(FL_RED);
WARNstatus->align(FL_ALIGN_CENTER | FL_ALIGN_INSIDE);
afconoff = new Fl_Light_Button(
WNOM - bwAfcOnOff - bwSqlOnOff,
Hmenu+Hrcvtxt+Hxmttxt+Hwfall,
bwAfcOnOff, Hstatus, "Afc");
afconoff->callback(afconoff_cb, 0);
afconoff->value(1);
afconoff->selection_color(FL_DARK_GREEN);
afconoff->tooltip("AFC on/off");
sqlonoff = new Fl_Light_Button(
WNOM - bwSqlOnOff,
Hmenu+Hrcvtxt+Hxmttxt+Hwfall,
bwSqlOnOff, Hstatus, "Sql");
sqlonoff->callback(sqlonoff_cb, 0);
sqlonoff->value(1);
sqlonoff->selection_color(FL_DARK_GREEN);
sqlonoff->tooltip("SQL on/off");
if (useCheckButtons) {
chk_afconoff = new Fl_Check_Button(
WNOM - bwAfcOnOff - bwSqlOnOff,
Hmenu+Hrcvtxt+Hxmttxt+Hwfall,
bwAfcOnOff, Hstatus, "Afc");
chk_afconoff->callback(afconoff_cb, 0);
chk_afconoff->value(1);
chk_afconoff->tooltip("AFC on/off");
chk_sqlonoff = new Fl_Check_Button(
WNOM - bwSqlOnOff,
Hmenu+Hrcvtxt+Hxmttxt+Hwfall,
bwSqlOnOff, Hstatus, "Sql");
chk_sqlonoff->callback(sqlonoff_cb, 0);
chk_sqlonoff->value(1);
chk_sqlonoff->tooltip("SQL on/off");
} else {
afconoff = new Fl_Light_Button(
WNOM - bwAfcOnOff - bwSqlOnOff,
Hmenu+Hrcvtxt+Hxmttxt+Hwfall,
bwAfcOnOff, Hstatus, "Afc");
afconoff->callback(afconoff_cb, 0);
afconoff->value(1);
afconoff->tooltip("AFC on/off");
sqlonoff = new Fl_Light_Button(
WNOM - bwSqlOnOff,
Hmenu+Hrcvtxt+Hxmttxt+Hwfall,
bwSqlOnOff, Hstatus, "Sql");
sqlonoff->callback(sqlonoff_cb, 0);
sqlonoff->value(1);
sqlonoff->tooltip("SQL on/off");
}
Fl_Group::current()->resizable(StatusBar);
hpack->end();
@ -1714,51 +1734,51 @@ void put_rx_data(int *data, int len)
FHdisp->data(data, len);
}
char get_tx_char(void)
int get_tx_char(void)
{
char chr;
static bool lfpending = false;
static bool ctlpending = false;
if (pskmail_text_available == true)
if (pskmail_text_available)
return pskmail_get_char();
if (lfpending == true) {
lfpending = false;
return '\n';
}
chr = TransmitText->nextChar();
if (chr == '\n') {
lfpending = true;
return '\r';
}
if (ctlpending == true) {
switch (chr) {
case 0x00:
break;
case 'r':
case 'R' :
chr = 0x03;
ctlpending = false;
QUEUE_SYNC(CMP_CB(&TransmitWidget::clear, TransmitText)); //TransmitText->clear();
break;
case '^' :
ctlpending = false;
break;
default :
ctlpending = false;
chr = 0x00;
}
return chr;
}
if (chr == '^') {
ctlpending = true;
chr = 0x00;
}
return chr;
}
int c;
static int pending = -1;
if (pending >= 0) {
c = pending;
pending = -1;
return c;
}
enum { STATE_CHAR, STATE_CTRL };
static int state = STATE_CHAR;
switch (c = TransmitText->nextChar()) {
case '\n':
pending = '\n';
return '\r';
case '^':
if (state == STATE_CTRL)
break;
state = STATE_CTRL;
return -1;
case 'r': case 'R':
if (state != STATE_CTRL)
break;
QUEUE_SYNC(CMP_CB(&TransmitWidget::clear, TransmitText));
state = STATE_CHAR;
c = 3; // ETX
break;
case -1:
break;
default:
if (state == STATE_CTRL) {
state = STATE_CHAR;
pending = c;
return '^';
}
}
pending = -1;
return c;
}
void put_echo_char(unsigned int data)
{

Wyświetl plik

@ -538,7 +538,7 @@ int dominoex::tx_process()
break;
case TX_STATE_DATA:
i = get_tx_char();
if (i == 0)
if (i == -1)
sendsecondary();
else if (i == 3)
txstate = TX_STATE_END;

Wyświetl plik

@ -445,7 +445,7 @@ void feld::tx_char(char c)
int feld::tx_process()
{
char c;
int c;
bool hdkey;
FL_LOCK_D();
@ -486,7 +486,7 @@ int feld::tx_process()
// if TX buffer empty
// send idle character
if (c == 0)
if (c == -1)
if (progdefaults.FELD_IDLE == true)
c = '.';
else {

Wyświetl plik

@ -38,6 +38,8 @@
#include <FL/Fl_Progress.H>
#include <FL/Fl_Input.H>
#include <FL/Fl_Tile.H>
#include <FL/Fl_Light_Button.H>
#include <FL/Fl_Check_Button.H>
#include "combo.h"
#include "TextView.h"
@ -82,7 +84,12 @@ extern Fl_Button *qsoSave;
extern Fl_Button *btnMacroTimer;
extern Fl_Slider *valRcvMixer;
extern Fl_Slider *valXmtMixer;
extern Fl_Light_Button *afconoff;
extern Fl_Light_Button *sqlonoff;
extern Fl_Check_Button *chk_afconoff;
extern Fl_Check_Button *chk_sqlonoff;
extern bool useCheckButtons;
extern bool altMacros;
extern waterfall *wf;
@ -115,7 +122,7 @@ extern void put_Status2(const char *msg);
extern void put_WARNstatus(double);
extern void put_rx_data(int *data, int len);
extern char get_tx_char();
extern int get_tx_char();
extern int get_secondary_char();
extern void put_echo_char(unsigned int data);
extern void resetRTTY();

Wyświetl plik

@ -2,6 +2,6 @@
#define _VERSION_H
#define FLDIGI_NAME "fldigi"
#define FLDIGI_VERSION "2.0"
#define FLDIGI_VERSION "2.0pre2"
#endif

Wyświetl plik

@ -393,7 +393,6 @@ void generate_option_help(void) {
<< " -to, -tooltips or -not, -notooltips"
<< "Enable or disable tooltips\n";
help << "\nAdditional options:\n"
<< setw(width) << setiosflags(ios::left)
@ -409,7 +408,11 @@ void generate_option_help(void) {
<< setw(width) << setiosflags(ios::left)
<< "" << "``minimal'', widget sizes will be adjusted\n"
<< setw(width) << setiosflags(ios::left)
<< "" << "for a minimal screen footprint.\n";
<< "" << "for a minimal screen footprint.\n"
<< setw(width) << setiosflags(ios::left)
<< " --usechkbtns"
<< "Use check buttons for AFC / SQL\n";
option_help = help.str();
@ -423,7 +426,7 @@ int parse_args(int argc, char **argv, int& idx)
enum { ZERO, RX_IPC_KEY, TX_IPC_KEY, CONFIG_DIR, FAST_TEXT, FONT,
WFALL_WIDTH, WFALL_HEIGHT, WINDOW_WIDTH, WINDOW_HEIGHT, PROFILE,
HELP, VERSION };
USE_CHECK, HELP, VERSION };
const char shortopts[] = "+";
static struct option longopts[] = {
@ -431,13 +434,14 @@ int parse_args(int argc, char **argv, int& idx)
{ "tx-ipc-key", 1, 0, TX_IPC_KEY },
{ "config-dir", 1, 0, CONFIG_DIR },
{ "fast-text", 0, 0, FAST_TEXT },
{ "font", 1, 0, FONT },
{ "font", 1, 0, FONT },
{ "wfall-width", 1, 0, WFALL_WIDTH },
{ "wfall-height", 1, 0, WFALL_HEIGHT },
{ "window-width", 1, 0, WINDOW_WIDTH },
{ "window-height", 1, 0, WINDOW_HEIGHT },
{ "profile", 1, 0, PROFILE },
{ "usechkbtns", 0, 0, USE_CHECK },
{ "help", 0, 0, HELP },
{ "version", 0, 0, VERSION },
@ -520,6 +524,10 @@ int parse_args(int argc, char **argv, int& idx)
}
idx += 2;
return 2;
case USE_CHECK:
useCheckButtons = true;
idx += 1;
return 1;
case HELP:
cerr << option_help;

Wyświetl plik

@ -750,11 +750,11 @@ int mfsk::tx_process()
flushtx();
startpic = false;
txstate = TX_STATE_PICTURE_START;
} else if (xmtbyte == -1)
sendidle();
else if ( xmtbyte == 0x03 || stopflag) {
txstate = TX_STATE_FLUSH;
}
else if ( xmtbyte == 0x03 || stopflag)
txstate = TX_STATE_FLUSH;
else if (xmtbyte == -1)
sendidle();
else
sendchar(xmtbyte);
break;

Wyświetl plik

@ -178,6 +178,8 @@ int olivia::tx_process()
Tx->Stop();
} else {
/* Replace un-representable characters with a dot */
if (c == -1)
c = 0;
if (c > (olivia_esc ? 255 : 127))
c = '.';
if (c > 127) {
@ -186,7 +188,7 @@ int olivia::tx_process()
}
Tx->PutChar(c);
}
}
}
if (Tx->GetChar(ch) > 0)
if ((c = unescape(ch)) != -1)

Wyświetl plik

@ -638,7 +638,7 @@ int psk::tx_process()
return -1; /* we're done */
}
if (!c)
if (c == -1)
tx_bit(0);
else {
tx_char(c);

Wyświetl plik

@ -187,17 +187,20 @@ void modem::set_samplerate(int smprate)
samplerate = smprate;
}
//mbuffer<double, 512 * 2, 2> _mdm_scdbl;
void modem::ModulateXmtr(double *buffer, int len)
{
scard->write_samples(buffer, len);
return;
// if (progdefaults.viewXmtSignal)
// for (int i = 0; i < len; i++) {
// scdata[scptr] = buffer[i] * 0.01;
// _mdm_scdbl[scptr] = buffer[i] * 0.1;
// scptr++;
// if (scptr == 512) {
// wf->sig_data(scdata, 512);
// QUEUE(CMP_CB(&waterfall::sig_data, wf, _mdm_scdbl.c_array(), 512)); //wf->sig_data(scdata, 512);
// scptr = 0;
// _mdm_scdbl.next(); // change buffers
// }
// }
}
@ -208,11 +211,12 @@ void modem::ModulateStereo(double *left, double *right, int len)
return;
// if (progdefaults.viewXmtSignal)
// for (int i = 0; i < len; i++) {
// scdata[scptr] = left[i] * 0.01;
// _mdm_scdbl[scptr] = left[i] * 0.1;
// scptr++;
// if (scptr == 512) {
// wf->sig_data(scdata, 512);
// QUEUE(CMP_CB(&waterfall::sig_data, wf, _mdm_scdbl.c_array(), 512)); //wf->sig_data(scdata, 512);
// scptr = 0;
// _mdm_scdbl.next(); // change buffers
// }
// }
}

Wyświetl plik

@ -1182,14 +1182,14 @@ waterfall::waterfall(int x0, int y0, int w0, int h0, char *lbl) :
xmtlock = new Fl_Light_Button(xpos, buttonrow, bwXmtLock, BTN_HEIGHT, "Lk");
xmtlock->callback(xmtlock_cb, 0);
xmtlock->value(0);
xmtlock->selection_color(FL_DARK_RED);
xmtlock->selection_color(FL_RED);
xmtlock->tooltip("Xmt freq locked");
xpos = xpos + bwXmtLock + wSpace;
btnRev = new Fl_Light_Button(xpos, buttonrow, bwRev, BTN_HEIGHT, "Rv");
btnRev->callback(btnRev_cb, 0);
btnRev->value(0);
btnRev->selection_color(FL_DARK_GREEN);
btnRev->selection_color(FL_GREEN);
btnRev->tooltip("Reverse");
reverse = false;
@ -1241,8 +1241,14 @@ int waterfall::handle(int event) {
break;
bool toggle = !active_modem->get_afcOnOff();
active_modem->set_afcOnOff(toggle);
extern Fl_Light_Button *afconoff;
afconoff->value(toggle);
// extern Fl_Light_Button *afconoff;
// extern Fl_Check_Button *chk_afconoff;
// extern bool useCheckButtons;
// extern Fl_Light_Button *afconoff;
if (useCheckButtons)
chk_afconoff->value(toggle);
else
afconoff->value(toggle);
break;
}
break;

Wyświetl plik

@ -728,7 +728,7 @@ void FTextEdit::clear(void)
///
int FTextEdit::nextChar(void)
{
char c;
int c;
if (bkspaces) {
--bkspaces;
@ -739,11 +739,11 @@ int FTextEdit::nextChar(void)
c = 0x03;
}
else if (insert_position() <= txpos) // empty buffer or cursor inside transmitted text
c = '\0';
c = -1;
else {
if ((c = tbuf->character(txpos))) {
++txpos;
QUEUE(CMP_CB(FTextEdit::changed_cb, 0, 0, 0, 0,
QUEUE(CMP_CB(FTextEdit::changed_cb, txpos, 0, 0, 0,
static_cast<const char *>(0), this));
}
}
@ -994,10 +994,10 @@ void FTextEdit::changed_cb(int pos, int nins, int ndel, int nsty, const char *dt
FTextEdit *e = reinterpret_cast<FTextEdit *>(arg);
if (nins == 0 && ndel == 0) {
if (pos == 0 && nsty == 0) { // update transmitted text style
if (nsty == 0) { // update transmitted text style
char s[] = { FTEXT_DEF + XMIT, '\0' };
e->sbuf->replace(e->txpos - 1, e->txpos, s);
e->redisplay_range(e->txpos - 1, e->txpos);
e->sbuf->replace(pos - 1, pos, s);
e->redisplay_range(pos - 1, pos);
}
else if (nsty > 0) // restyled, e.g. selected, text
return e->buffer_modified_cb(pos, nins, ndel, nsty, dtext,

Wyświetl plik

@ -1129,11 +1129,11 @@ int TextEdit::nextChar()
PauseBreak = false;
return 0x03;
}
if (buff.empty()) return 0;
if (xmtidx == buff.length()) return 0;
if (buff.empty()) return -1;
if (xmtidx == buff.length()) return -1;
if (attr[xmtidx] == -1) {
xmtidx++;
if (xmtidx == buff.length()) return 0;
if (xmtidx == buff.length()) return -1;
}
FL_LOCK_D();
QUEUE(CMP_CB(&TextEdit::update_xmit_text, this, xmtidx));