Upstream version 2.10C

pull/2/head
Stelios Bounanos 2008-02-15 19:39:23 +00:00
rodzic ccd970fe74
commit 66bbde2415
8 zmienionych plików z 100 dodań i 46 usunięć

Wyświetl plik

@ -4,7 +4,7 @@
AC_COPYRIGHT([Copyright (C) 2007 Stelios Bounanos, M0GLD (m0gld AT enotty DOT net)]) AC_COPYRIGHT([Copyright (C) 2007 Stelios Bounanos, M0GLD (m0gld AT enotty DOT net)])
AC_PREREQ(2.61) AC_PREREQ(2.61)
AC_INIT([fldigi], [2.10B], [w1hkj AT w1hkj DOT com]) AC_INIT([fldigi], [2.10C], [w1hkj AT w1hkj DOT com])
AC_CONFIG_AUX_DIR([build-aux]) AC_CONFIG_AUX_DIR([build-aux])
# define build, build_cpu, build_vendor, build_os # define build, build_cpu, build_vendor, build_os

Wyświetl plik

@ -106,13 +106,6 @@ btnBlackman->value(0);
progdefaults.changed = true; progdefaults.changed = true;
} }
Fl_Counter *cntLowFreqCutoff=(Fl_Counter *)0;
static void cb_cntLowFreqCutoff(Fl_Counter* o, void*) {
progdefaults.LowFreqCutoff=(int)(o->value());
progdefaults.changed = true;
}
colorbox *WF_Palette=(colorbox *)0; colorbox *WF_Palette=(colorbox *)0;
static void cb_WF_Palette(colorbox*, void*) { static void cb_WF_Palette(colorbox*, void*) {
@ -179,6 +172,20 @@ static void cb_btnSavePalette(Fl_Button*, void*) {
savePalette(); savePalette();
} }
Fl_Counter *cntLowFreqCutoff=(Fl_Counter *)0;
static void cb_cntLowFreqCutoff(Fl_Counter* o, void*) {
progdefaults.LowFreqCutoff=(int)(o->value());
progdefaults.changed = true;
}
Fl_Check_Button *btnWFaveraging=(Fl_Check_Button *)0;
static void cb_btnWFaveraging(Fl_Check_Button* o, void*) {
progdefaults.WFaveraging = o->value();
progdefaults.changed = true;
}
Fl_Check_Button *btnUseCursorLines=(Fl_Check_Button *)0; Fl_Check_Button *btnUseCursorLines=(Fl_Check_Button *)0;
static void cb_btnUseCursorLines(Fl_Check_Button* o, void*) { static void cb_btnUseCursorLines(Fl_Check_Button* o, void*) {
@ -1169,10 +1176,9 @@ static const char szBaudRates[] = "300|600|1200|2400|4800|9600|19200|38400|57600
{ Fl_Group* o = tabWaterfall = new Fl_Group(0, 25, 405, 195, "W-fall"); { Fl_Group* o = tabWaterfall = new Fl_Group(0, 25, 405, 195, "W-fall");
o->color((Fl_Color)51); o->color((Fl_Color)51);
o->selection_color((Fl_Color)51); o->selection_color((Fl_Color)51);
o->hide();
{ Fl_Tabs* o = new Fl_Tabs(0, 25, 405, 195); { Fl_Tabs* o = new Fl_Tabs(0, 25, 405, 195);
{ Fl_Group* o = new Fl_Group(0, 50, 400, 170, "Filters/Colors"); { Fl_Group* o = new Fl_Group(0, 50, 400, 170, "Filters/Colors");
{ Fl_Group* o = new Fl_Group(5, 55, 390, 75, "FFT Prefilter"); { Fl_Group* o = new Fl_Group(5, 55, 390, 42, "FFT Prefilter");
o->box(FL_ENGRAVED_BOX); o->box(FL_ENGRAVED_BOX);
o->color((Fl_Color)51); o->color((Fl_Color)51);
o->align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE); o->align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE);
@ -1196,16 +1202,6 @@ static const char szBaudRates[] = "300|600|1200|2400|4800|9600|19200|38400|57600
o->callback((Fl_Callback*)cb_btnTriangular); o->callback((Fl_Callback*)cb_btnTriangular);
if(progdefaults.wfPreFilter==4)o->value(1);else o->value(0); if(progdefaults.wfPreFilter==4)o->value(1);else o->value(0);
} }
{ Fl_Counter* o = cntLowFreqCutoff = new Fl_Counter(155, 97, 94, 21, "Low Freq Cutoff");
o->type(1);
o->minimum(0);
o->maximum(500);
o->step(50);
o->value(300);
o->callback((Fl_Callback*)cb_cntLowFreqCutoff);
o->align(FL_ALIGN_LEFT);
o->value(progdefaults.LowFreqCutoff);
}
o->end(); o->end();
} }
{ Fl_Group* o = new Fl_Group(5, 131, 390, 85); { Fl_Group* o = new Fl_Group(5, 131, 390, 85);
@ -1257,6 +1253,21 @@ static const char szBaudRates[] = "300|600|1200|2400|4800|9600|19200|38400|57600
} }
o->end(); o->end();
} }
{ Fl_Counter* o = cntLowFreqCutoff = new Fl_Counter(117, 103, 70, 20, "Low Freq Cutoff");
o->type(1);
o->minimum(0);
o->maximum(500);
o->step(50);
o->value(300);
o->callback((Fl_Callback*)cb_cntLowFreqCutoff);
o->align(FL_ALIGN_LEFT);
o->value(progdefaults.LowFreqCutoff);
}
{ Fl_Check_Button* o = btnWFaveraging = new Fl_Check_Button(206, 105, 114, 15, "wf averaging");
o->down_box(FL_DOWN_BOX);
o->callback((Fl_Callback*)cb_btnWFaveraging);
o->value(progdefaults.WFaveraging);
}
o->end(); o->end();
} }
{ Fl_Group* o = new Fl_Group(0, 50, 405, 166, "Cursors"); { Fl_Group* o = new Fl_Group(0, 50, 405, 166, "Cursors");
@ -1679,6 +1690,7 @@ fect after a restart.");
{ Fl_Group* o = tabModems = new Fl_Group(0, 25, 401, 195, "Modem"); { Fl_Group* o = tabModems = new Fl_Group(0, 25, 401, 195, "Modem");
o->color((Fl_Color)51); o->color((Fl_Color)51);
o->selection_color((Fl_Color)51); o->selection_color((Fl_Color)51);
o->hide();
{ Fl_Tabs* o = tabsModems = new Fl_Tabs(0, 25, 401, 195); { Fl_Tabs* o = tabsModems = new Fl_Tabs(0, 25, 401, 195);
o->color((Fl_Color)51); o->color((Fl_Color)51);
o->selection_color((Fl_Color)10); o->selection_color((Fl_Color)10);

Wyświetl plik

@ -35,7 +35,7 @@ static const char szBaudRates[] = "300|600|1200|2400|4800|9600|19200|38400|57600
code {} {} code {} {}
Fl_Window {} { Fl_Window {} {
label {fldigi - config} open label {fldigi - config} open
xywh {527 153 400 255} type Double color 45 selection_color 51 align 80 visible xywh {528 602 400 255} type Double color 45 selection_color 51 align 80 visible
} { } {
Fl_Tabs tabsConfigure {open Fl_Tabs tabsConfigure {open
xywh {0 0 405 220} color 47 selection_color 9 xywh {0 0 405 220} color 47 selection_color 9
@ -90,7 +90,7 @@ progdefaults.changed = true;}
} }
Fl_Group tabWaterfall { Fl_Group tabWaterfall {
label {W-fall} open label {W-fall} open
xywh {0 25 405 195} color 51 selection_color 51 hide xywh {0 25 405 195} color 51 selection_color 51
} { } {
Fl_Tabs {} {open Fl_Tabs {} {open
xywh {0 25 405 195} xywh {0 25 405 195}
@ -101,7 +101,7 @@ progdefaults.changed = true;}
} { } {
Fl_Group {} { Fl_Group {} {
label {FFT Prefilter} open label {FFT Prefilter} open
xywh {5 55 390 75} box ENGRAVED_BOX color 51 align 21 xywh {5 55 390 42} box ENGRAVED_BOX color 51 align 21
} { } {
Fl_Check_Button btnBlackman { Fl_Check_Button btnBlackman {
label Blackman label Blackman
@ -151,13 +151,6 @@ progdefaults.changed = true;}
xywh {304 75 90 15} down_box DOWN_BOX xywh {304 75 90 15} down_box DOWN_BOX
code0 {if(progdefaults.wfPreFilter==4)o->value(1);else o->value(0);} code0 {if(progdefaults.wfPreFilter==4)o->value(1);else o->value(0);}
} }
Fl_Counter cntLowFreqCutoff {
label {Low Freq Cutoff}
callback {progdefaults.LowFreqCutoff=(int)(o->value());
progdefaults.changed = true;}
xywh {155 97 94 21} type Simple align 4 minimum 0 maximum 500 step 50 value 300
code0 {o->value(progdefaults.LowFreqCutoff);}
}
} }
Fl_Group {} {open Fl_Group {} {open
xywh {5 131 390 85} box ENGRAVED_FRAME xywh {5 131 390 85} box ENGRAVED_FRAME
@ -228,6 +221,20 @@ progdefaults.changed = true;}
code0 {\#include "colorbox.h"} code0 {\#include "colorbox.h"}
} }
} }
Fl_Counter cntLowFreqCutoff {
label {Low Freq Cutoff}
callback {progdefaults.LowFreqCutoff=(int)(o->value());
progdefaults.changed = true;}
xywh {117 103 70 20} type Simple align 4 minimum 0 maximum 500 step 50 value 300
code0 {o->value(progdefaults.LowFreqCutoff);}
}
Fl_Check_Button btnWFaveraging {
label {wf averaging}
callback {progdefaults.WFaveraging = o->value();
progdefaults.changed = true;} selected
xywh {206 105 114 15} down_box DOWN_BOX
code0 {o->value(progdefaults.WFaveraging);}
}
} }
Fl_Group {} { Fl_Group {} {
label Cursors open label Cursors open
@ -831,7 +838,7 @@ This option takes effect after a restart.} xywh {50 155 180 20} down_box DOWN_BO
} }
Fl_Group tabModems { Fl_Group tabModems {
label Modem open label Modem open
xywh {0 25 401 195} color 51 selection_color 51 xywh {0 25 401 195} color 51 selection_color 51 hide
} { } {
Fl_Tabs tabsModems {open Fl_Tabs tabsModems {open
xywh {0 25 401 195} color 51 selection_color 10 align 9 xywh {0 25 401 195} color 51 selection_color 10 align 9
@ -1158,7 +1165,7 @@ initViewer();}
Fl_Spinner cntChannels { Fl_Spinner cntChannels {
label {\# Channels:} label {\# Channels:}
callback {progdefaults.VIEWERchannels = (int)(o->value()); callback {progdefaults.VIEWERchannels = (int)(o->value());
initViewer();} selected initViewer();}
xywh {190 82 50 25} align 8 xywh {190 82 50 25} align 8
code0 {o->minimum(5);} code0 {o->minimum(5);}
code1 {o->maximum(30);} code1 {o->maximum(30);}

Wyświetl plik

@ -27,14 +27,15 @@ extern Fl_Check_Button *btnBlackman;
extern Fl_Check_Button *btnHamming; extern Fl_Check_Button *btnHamming;
extern Fl_Check_Button *btnHanning; extern Fl_Check_Button *btnHanning;
extern Fl_Check_Button *btnTriangular; extern Fl_Check_Button *btnTriangular;
#include <FL/Fl_Counter.H>
extern Fl_Counter *cntLowFreqCutoff;
#include "colorbox.h" #include "colorbox.h"
extern colorbox *WF_Palette; extern colorbox *WF_Palette;
#include <FL/Fl_Button.H> #include <FL/Fl_Button.H>
extern Fl_Button *btnColor[9]; extern Fl_Button *btnColor[9];
extern Fl_Button *btnLoadPalette; extern Fl_Button *btnLoadPalette;
extern Fl_Button *btnSavePalette; extern Fl_Button *btnSavePalette;
#include <FL/Fl_Counter.H>
extern Fl_Counter *cntLowFreqCutoff;
extern Fl_Check_Button *btnWFaveraging;
extern Fl_Check_Button *btnUseCursorLines; extern Fl_Check_Button *btnUseCursorLines;
extern Fl_Check_Button *btnUseBWTracks; extern Fl_Check_Button *btnUseBWTracks;
extern Fl_Check_Button *btnUseCursorCenterLine; extern Fl_Check_Button *btnUseCursorCenterLine;

Wyświetl plik

@ -85,6 +85,7 @@ struct configuration {
uchar blue; uchar blue;
bool MultiColorWF; bool MultiColorWF;
int wfPreFilter; int wfPreFilter;
bool WFaveraging;
bool UseCursorLines; bool UseCursorLines;
bool UseCursorCenterLine; bool UseCursorCenterLine;
bool UseBWTracks; bool UseBWTracks;

Wyświetl plik

@ -89,6 +89,7 @@ configuration progdefaults = {
255, // uchar blue 255, // uchar blue
0, // bool MultiColorWF; 0, // bool MultiColorWF;
1, // int wfPreFilter == Blackman 1, // int wfPreFilter == Blackman
false, // bool WFaveraging
true, // bool UseCursorLines; true, // bool UseCursorLines;
true, // bool UseCursorCenterLine; true, // bool UseCursorCenterLine;
true, // bool UseBWTracks; true, // bool UseBWTracks;
@ -233,7 +234,7 @@ enum TAG { \
PALETTE0, PALETTE1, PALETTE2, PALETTE3, PALETTE4, PALETTE0, PALETTE1, PALETTE2, PALETTE3, PALETTE4,
PALETTE5, PALETTE6, PALETTE7, PALETTE8, PALETTE5, PALETTE6, PALETTE7, PALETTE8,
VIEWERMARQUEE, VIEWERSHOWFREQ, VIEWERSTART, VIEWERMARQUEE, VIEWERSHOWFREQ, VIEWERSTART,
VIEWERCHANNELS, VIEWERSQUELCH, VIEWERTIMEOUT, VIEWERCHANNELS, VIEWERSQUELCH, VIEWERTIMEOUT, WFAVERAGING
}; };
// , ALT_TEXT_WIDGETS }; // , ALT_TEXT_WIDGETS };
@ -423,6 +424,7 @@ void configuration::writeDefaultsXML()
writeXMLint(f, "VIEWERCHANNELS", VIEWERchannels); writeXMLint(f, "VIEWERCHANNELS", VIEWERchannels);
writeXMLdbl(f, "VIEWERSQUELCH", VIEWERsquelch); writeXMLdbl(f, "VIEWERSQUELCH", VIEWERsquelch);
writeXMLint(f, "VIEWERTIMEOUT", VIEWERtimeout); writeXMLint(f, "VIEWERTIMEOUT", VIEWERtimeout);
writeXMLbool(f,"WFAVERAGEING", WFaveraging);
f << "</FLDIGI_DEFS>\n"; f << "</FLDIGI_DEFS>\n";
f.close(); f.close();
@ -852,6 +854,9 @@ bool configuration::readDefaultsXML()
case VIEWERTIMEOUT : case VIEWERTIMEOUT :
VIEWERtimeout = atoi(xml->getNodeData()); VIEWERtimeout = atoi(xml->getNodeData());
break; break;
case WFAVERAGING :
WFaveraging = atoi(xml->getNodeData());
break;
// case ALT_TEXT_WIDGETS : // case ALT_TEXT_WIDGETS :
// alt_text_widgets = atoi(xml->getNodeData()); // alt_text_widgets = atoi(xml->getNodeData());
// break; // break;
@ -990,6 +995,7 @@ bool configuration::readDefaultsXML()
else if (!strcmp("VIEWERCHANNELS", nodeName)) tag = VIEWERCHANNELS; else if (!strcmp("VIEWERCHANNELS", nodeName)) tag = VIEWERCHANNELS;
else if (!strcmp("VIEWERSQUELCH", nodeName)) tag = VIEWERSQUELCH; else if (!strcmp("VIEWERSQUELCH", nodeName)) tag = VIEWERSQUELCH;
else if (!strcmp("VIEWERTIMEOUT", nodeName)) tag = VIEWERTIMEOUT; else if (!strcmp("VIEWERTIMEOUT", nodeName)) tag = VIEWERTIMEOUT;
else if (!strcmp("WFAVERAGING", nodeName)) tag = WFAVERAGING;
// else if (!strcmp("ALT_TEXT_WIDGETS", nodeName)) tag = ALT_TEXT_WIDGETS; // else if (!strcmp("ALT_TEXT_WIDGETS", nodeName)) tag = ALT_TEXT_WIDGETS;
else tag = IGNORE; else tag = IGNORE;
} }

Wyświetl plik

@ -90,9 +90,15 @@ bool hexout( string s, int retnbr)
rigio.ReadBuffer (replybuff, s.size()); rigio.ReadBuffer (replybuff, s.size());
memset (replybuff, 0, 200); memset (replybuff, 0, 200);
// wait interval before trying to read response
if ((readtimeout = rig.wait) > 0)
while (readtimeout--)
MilliSleep(1);
if (retnbr > 0) { if (retnbr > 0) {
num = rigio.ReadBuffer (replybuff, retnbr > 200 ? 200 : retnbr); num = rigio.ReadBuffer (replybuff, retnbr > 200 ? 200 : retnbr);
// debug code
// if (num) // if (num)
// printhex(replybuff, num); // printhex(replybuff, num);
// else // else

Wyświetl plik

@ -618,33 +618,54 @@ void WFdisp::drawMarker() {
step * RGBsize, RGBwidth); step * RGBsize, RGBwidth);
} }
void WFdisp::update_waterfall() { void WFdisp::update_waterfall() {
// transfer the fft history data into the WF image // transfer the fft history data into the WF image
int sig;
short int *p1, *p2; short int *p1, *p2;
RGBI *p3, *p4; RGBI *p3, *p4;
p1 = tmp_fft_db + offset; p1 = tmp_fft_db + offset;
p3 = fft_img; p3 = fft_img;
for (int row = 0; row < image_height; row++) { for (int row = 0; row < image_height; row++) {
p2 = p1; p2 = p1;
p4 = p3; p4 = p3;
for (int col = 0; col < disp_width; col++) { if (progdefaults.WFaveraging) {
if (step == 4) if (step == 4)
// sig = MAX( MAX ( MAX ( *p2, *(p2+1) ), *(p2+2) ), *(p2+3) ); for (int col = 0; col < disp_width; col++) {
sig = (*p2+ *(p2+1)+ *(p2+2)+ *(p2+3))/4; *(p4++) = mag2RGBI[ (*p2+ *(p2+1)+ *(p2+2)+ *(p2+3))/4 ];
p2 += step;
}
else if (step == 2) else if (step == 2)
// sig = MAX( *p2, *(p2 + 1) ); for (int col = 0; col < disp_width; col++) {
sig = (*p2 + *(p2 + 1))/2; *(p4++) = mag2RGBI[ (*p2 + *(p2+1))/2 ];
p2 += step;
}
else else
sig = *p2; for (int col = 0; col < disp_width; col++) {
*p4 = mag2RGBI[ sig ]; *(p4++) = mag2RGBI[ *p2 ];
p2 += step; p2 += step;
p4++; }
} else {
if (step == 4)
for (int col = 0; col < disp_width; col++) {
*(p4++) = mag2RGBI[ MAX( MAX ( MAX ( *p2, *(p2+1) ), *(p2+2) ), *(p2+3) ) ];
p2 += step;
}
else if (step == 2)
for (int col = 0; col < disp_width; col++) {
*(p4++) = mag2RGBI[ MAX( *p2, *(p2+1) ) ];
p2 += step;
}
else
for (int col = 0; col < disp_width; col++) {
*(p4++) = mag2RGBI[ *p2 ];
p2 += step;
}
} }
p1 += IMAGE_WIDTH; p1 += IMAGE_WIDTH;
p3 += disp_width; p3 += disp_width;
} }
if (progdefaults.UseBWTracks) { if (progdefaults.UseBWTracks) {
RGBI *pos1 = fft_img + (carrierfreq - offset - bandwidth/2) / step; RGBI *pos1 = fft_img + (carrierfreq - offset - bandwidth/2) / step;
RGBI *pos2 = fft_img + (carrierfreq - offset + bandwidth/2) / step; RGBI *pos2 = fft_img + (carrierfreq - offset + bandwidth/2) / step;