mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2025-09-04 22:27:50 -04:00
Add optional real-time CFOM to QMAP receiving.
This commit is contained in:
parent
e211bae779
commit
889531fda6
@ -71,7 +71,8 @@ void Astro::astroUpdate(QDateTime t, QString mygrid, QString hisgrid,
|
|||||||
&dgrd, &poloffset, &xnr, 6, 6);
|
&dgrd, &poloffset, &xnr, 6, 6);
|
||||||
|
|
||||||
datcom_.ndop00=ndop00; //Send self Doppler to decoder, via datcom
|
datcom_.ndop00=ndop00; //Send self Doppler to decoder, via datcom
|
||||||
// qDebug() << "aa" << isec << datcom_.fcenter << nfreq << ndop00;
|
m_ndop00=ndop00;
|
||||||
|
|
||||||
snprintf(cc, sizeof(cc),
|
snprintf(cc, sizeof(cc),
|
||||||
"Az: %6.1f\n"
|
"Az: %6.1f\n"
|
||||||
"El: %6.1f\n"
|
"El: %6.1f\n"
|
||||||
@ -199,3 +200,7 @@ void Astro::on_cbOnOff_clicked(bool checked)
|
|||||||
if(checked) ui->cbAutoCycle->setChecked(false);
|
if(checked) ui->cbAutoCycle->setChecked(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int Astro::getSelfDop()
|
||||||
|
{
|
||||||
|
return m_ndop00;
|
||||||
|
}
|
||||||
|
@ -17,6 +17,8 @@ public:
|
|||||||
void astroUpdate(QDateTime t, QString mygrid, QString hisgrid,
|
void astroUpdate(QDateTime t, QString mygrid, QString hisgrid,
|
||||||
int fQSO, int nsetftx, int ntxFreq, QString azelDir, double xavg);
|
int fQSO, int nsetftx, int ntxFreq, QString azelDir, double xavg);
|
||||||
void setFontSize(int n);
|
void setFontSize(int n);
|
||||||
|
int getSelfDop();
|
||||||
|
|
||||||
~Astro ();
|
~Astro ();
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
@ -27,6 +29,8 @@ private:
|
|||||||
Ui::Astro *ui;
|
Ui::Astro *ui;
|
||||||
QString m_settings_filename;
|
QString m_settings_filename;
|
||||||
QString m_AzElDir0;
|
QString m_AzElDir0;
|
||||||
|
|
||||||
|
qint32 m_ndop00=0;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -5,6 +5,7 @@ set (libq65_FSRCS
|
|||||||
astro.f90
|
astro.f90
|
||||||
astro0.f90
|
astro0.f90
|
||||||
astrosub.f90
|
astrosub.f90
|
||||||
|
cfom.f90
|
||||||
chkstat.f90
|
chkstat.f90
|
||||||
dcoord.f90
|
dcoord.f90
|
||||||
decode0.f90
|
decode0.f90
|
||||||
|
30
qmap/libqmap/cfom.f90
Normal file
30
qmap/libqmap/cfom.f90
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
subroutine cfom(dd,k0,k,ndop0)
|
||||||
|
|
||||||
|
parameter(NMAX=60*96000)
|
||||||
|
real dd(2,NMAX)
|
||||||
|
complex*16 w,wstep
|
||||||
|
complex*8 c
|
||||||
|
real*8 twopi,dphi
|
||||||
|
logical first
|
||||||
|
data first/.true./
|
||||||
|
save
|
||||||
|
|
||||||
|
if(first) then
|
||||||
|
twopi=8.d0*atan(1.d0)
|
||||||
|
w=1.d0
|
||||||
|
first=.false.
|
||||||
|
endif
|
||||||
|
|
||||||
|
dop0=0.5*ndop0
|
||||||
|
dphi=dop0*twopi/96000.0
|
||||||
|
wstep=cmplx(cos(dphi),sin(dphi))
|
||||||
|
|
||||||
|
do j=k0+1,k
|
||||||
|
w=w*wstep
|
||||||
|
c=w*cmplx(dd(1,j),dd(2,j))
|
||||||
|
dd(1,j)=real(c)
|
||||||
|
dd(2,j)=aimag(c)
|
||||||
|
enddo
|
||||||
|
|
||||||
|
return
|
||||||
|
end subroutine cfom
|
@ -327,6 +327,7 @@ void MainWindow::dataSink(int k)
|
|||||||
static int nsum=0;
|
static int nsum=0;
|
||||||
static int ndiskdat;
|
static int ndiskdat;
|
||||||
static int nb;
|
static int nb;
|
||||||
|
static int k0=0;
|
||||||
static float px=0.0;
|
static float px=0.0;
|
||||||
static uchar lstrong[1024];
|
static uchar lstrong[1024];
|
||||||
static float slimit;
|
static float slimit;
|
||||||
@ -344,6 +345,15 @@ void MainWindow::dataSink(int k)
|
|||||||
if(m_NB) nb=1;
|
if(m_NB) nb=1;
|
||||||
nfsample=96000;
|
nfsample=96000;
|
||||||
if(!m_fs96000) nfsample=95238;
|
if(!m_fs96000) nfsample=95238;
|
||||||
|
|
||||||
|
|
||||||
|
if(ui->cbCFOM->isChecked()) {
|
||||||
|
int ndop00=0;
|
||||||
|
if(m_astro_window) ndop00=m_astro_window->getSelfDop();
|
||||||
|
cfom_(datcom_.d4, &k0, &k, &ndop00);
|
||||||
|
}
|
||||||
|
k0=k;
|
||||||
|
|
||||||
symspec_(&k, &ndiskdat, &nb, &m_NBslider, &nfsample,
|
symspec_(&k, &ndiskdat, &nb, &m_NBslider, &nfsample,
|
||||||
&px, s, &nkhz, &ihsym, &nzap, &slimit, lstrong);
|
&px, s, &nkhz, &ihsym, &nzap, &slimit, lstrong);
|
||||||
|
|
||||||
@ -838,9 +848,11 @@ void MainWindow::decode() //decode()
|
|||||||
int nmin=m_path.mid(i0-2,2).toInt();
|
int nmin=m_path.mid(i0-2,2).toInt();
|
||||||
double uth=nhr + nmin/60.0;
|
double uth=nhr + nmin/60.0;
|
||||||
int nfreq=(int)datcom_.fcenter;
|
int nfreq=(int)datcom_.fcenter;
|
||||||
int ndop00;
|
int ndop00=0;
|
||||||
astrosub00_(&nyear, &month, &nday, &uth, &nfreq, m_myGrid.toLatin1(),&ndop00,6);
|
if(ui->cbCFOM->isChecked()) {
|
||||||
datcom_.ndop00=ndop00; //Send self Doppler to decoder, via datcom
|
astrosub00_(&nyear, &month, &nday, &uth, &nfreq, m_myGrid.toLatin1(),&ndop00,6);
|
||||||
|
}
|
||||||
|
datcom_.ndop00=ndop00; //Send self Doppler (or 0, if using CFOM) to decoder
|
||||||
fname=m_path.mid(i0-11,11);
|
fname=m_path.mid(i0-11,11);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -981,7 +993,9 @@ void MainWindow::guiUpdate()
|
|||||||
ui->labFreq->setText(t1);
|
ui->labFreq->setText(t1);
|
||||||
|
|
||||||
if(nsec != m_sec0) { //Once per second
|
if(nsec != m_sec0) { //Once per second
|
||||||
// qDebug() << "AAA" << nsec << m_fAdd;
|
|
||||||
|
// qDebug() << "AAA" << nsec;
|
||||||
|
|
||||||
static int n60z=99;
|
static int n60z=99;
|
||||||
int n60=nsec%60;
|
int n60=nsec%60;
|
||||||
int itest[5];
|
int itest[5];
|
||||||
|
@ -206,6 +206,9 @@ extern "C" {
|
|||||||
const char* mygrid, int* ndop00, int len1);
|
const char* mygrid, int* ndop00, int len1);
|
||||||
|
|
||||||
void q65c_(int* itimer);
|
void q65c_(int* itimer);
|
||||||
|
|
||||||
|
void cfom_(float d4[], int* k0, int* k, int* ndop0);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // MAINWINDOW_H
|
#endif // MAINWINDOW_H
|
||||||
|
@ -40,26 +40,6 @@
|
|||||||
<layout class="QFormLayout" name="formLayout">
|
<layout class="QFormLayout" name="formLayout">
|
||||||
<item row="1" column="0">
|
<item row="1" column="0">
|
||||||
<layout class="QGridLayout" name="gridLayout">
|
<layout class="QGridLayout" name="gridLayout">
|
||||||
<item row="0" column="3" colspan="2">
|
|
||||||
<widget class="QPushButton" name="EraseButton">
|
|
||||||
<property name="minimumSize">
|
|
||||||
<size>
|
|
||||||
<width>50</width>
|
|
||||||
<height>0</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string>&Erase</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="3" column="3">
|
|
||||||
<widget class="QCheckBox" name="NBcheckBox">
|
|
||||||
<property name="text">
|
|
||||||
<string>NB</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="0" column="5">
|
<item row="0" column="5">
|
||||||
<widget class="QPushButton" name="DecodeButton">
|
<widget class="QPushButton" name="DecodeButton">
|
||||||
<property name="minimumSize">
|
<property name="minimumSize">
|
||||||
@ -73,18 +53,12 @@
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="1" column="1" rowspan="3">
|
<item row="0" column="1">
|
||||||
<widget class="QLabel" name="labUTC">
|
<widget class="QLabel" name="labFreq">
|
||||||
<property name="minimumSize">
|
|
||||||
<size>
|
|
||||||
<width>140</width>
|
|
||||||
<height>0</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
<property name="maximumSize">
|
<property name="maximumSize">
|
||||||
<size>
|
<size>
|
||||||
<width>165</width>
|
<width>16777215</width>
|
||||||
<height>60</height>
|
<height>35</height>
|
||||||
</size>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
<property name="font">
|
<property name="font">
|
||||||
@ -96,14 +70,44 @@
|
|||||||
<enum>QFrame::Panel</enum>
|
<enum>QFrame::Panel</enum>
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string> 2023 Feb 02
|
<string>1296.080</string>
|
||||||
01:23:45 </string>
|
|
||||||
</property>
|
</property>
|
||||||
<property name="alignment">
|
<property name="alignment">
|
||||||
<set>Qt::AlignCenter</set>
|
<set>Qt::AlignCenter</set>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item row="3" column="4" colspan="2">
|
||||||
|
<widget class="QSlider" name="NBslider">
|
||||||
|
<property name="enabled">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="maximumSize">
|
||||||
|
<size>
|
||||||
|
<width>80</width>
|
||||||
|
<height>16777215</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="minimum">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="maximum">
|
||||||
|
<number>100</number>
|
||||||
|
</property>
|
||||||
|
<property name="value">
|
||||||
|
<number>40</number>
|
||||||
|
</property>
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
<item row="1" column="2" colspan="2">
|
<item row="1" column="2" colspan="2">
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||||
<item>
|
<item>
|
||||||
@ -189,28 +193,45 @@
|
|||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
<item row="0" column="1">
|
<item row="2" column="4" colspan="2">
|
||||||
<widget class="QLabel" name="labFreq">
|
<widget class="QSpinBox" name="sbOffset">
|
||||||
<property name="maximumSize">
|
<property name="toolTip">
|
||||||
<size>
|
<string><html><head/><body><p>Select offset announced by calling station, or use commonly used value for the band in use. Manually set WSJT-X TX and RX offset to same value.</p></body></html></string>
|
||||||
<width>16777215</width>
|
|
||||||
<height>35</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
<property name="font">
|
|
||||||
<font>
|
|
||||||
<pointsize>16</pointsize>
|
|
||||||
</font>
|
|
||||||
</property>
|
|
||||||
<property name="frameShape">
|
|
||||||
<enum>QFrame::Panel</enum>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string>1296.080</string>
|
|
||||||
</property>
|
</property>
|
||||||
<property name="alignment">
|
<property name="alignment">
|
||||||
<set>Qt::AlignCenter</set>
|
<set>Qt::AlignCenter</set>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="suffix">
|
||||||
|
<string> Hz</string>
|
||||||
|
</property>
|
||||||
|
<property name="prefix">
|
||||||
|
<string>Offset </string>
|
||||||
|
</property>
|
||||||
|
<property name="minimum">
|
||||||
|
<number>500</number>
|
||||||
|
</property>
|
||||||
|
<property name="maximum">
|
||||||
|
<number>2000</number>
|
||||||
|
</property>
|
||||||
|
<property name="singleStep">
|
||||||
|
<number>100</number>
|
||||||
|
</property>
|
||||||
|
<property name="value">
|
||||||
|
<number>1500</number>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="3" colspan="2">
|
||||||
|
<widget class="QPushButton" name="EraseButton">
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>50</width>
|
||||||
|
<height>0</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>&Erase</string>
|
||||||
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="0" column="0" rowspan="4">
|
<item row="0" column="0" rowspan="4">
|
||||||
@ -229,6 +250,37 @@
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item row="1" column="1" rowspan="3">
|
||||||
|
<widget class="QLabel" name="labUTC">
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>140</width>
|
||||||
|
<height>0</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="maximumSize">
|
||||||
|
<size>
|
||||||
|
<width>165</width>
|
||||||
|
<height>60</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="font">
|
||||||
|
<font>
|
||||||
|
<pointsize>16</pointsize>
|
||||||
|
</font>
|
||||||
|
</property>
|
||||||
|
<property name="frameShape">
|
||||||
|
<enum>QFrame::Panel</enum>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string> 2023 Feb 02
|
||||||
|
01:23:45 </string>
|
||||||
|
</property>
|
||||||
|
<property name="alignment">
|
||||||
|
<set>Qt::AlignCenter</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
<item row="0" column="2">
|
<item row="0" column="2">
|
||||||
<widget class="QPushButton" name="monitorButton">
|
<widget class="QPushButton" name="monitorButton">
|
||||||
<property name="sizePolicy">
|
<property name="sizePolicy">
|
||||||
@ -254,34 +306,10 @@
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="3" column="4" colspan="2">
|
<item row="3" column="3">
|
||||||
<widget class="QSlider" name="NBslider">
|
<widget class="QCheckBox" name="NBcheckBox">
|
||||||
<property name="enabled">
|
<property name="text">
|
||||||
<bool>false</bool>
|
<string>NB</string>
|
||||||
</property>
|
|
||||||
<property name="sizePolicy">
|
|
||||||
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
|
||||||
<horstretch>0</horstretch>
|
|
||||||
<verstretch>0</verstretch>
|
|
||||||
</sizepolicy>
|
|
||||||
</property>
|
|
||||||
<property name="maximumSize">
|
|
||||||
<size>
|
|
||||||
<width>80</width>
|
|
||||||
<height>16777215</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
<property name="minimum">
|
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<property name="maximum">
|
|
||||||
<number>100</number>
|
|
||||||
</property>
|
|
||||||
<property name="value">
|
|
||||||
<number>40</number>
|
|
||||||
</property>
|
|
||||||
<property name="orientation">
|
|
||||||
<enum>Qt::Horizontal</enum>
|
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
@ -304,33 +332,32 @@
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="2" column="4" colspan="2">
|
<item row="2" column="2" colspan="2">
|
||||||
<widget class="QSpinBox" name="sbOffset">
|
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
||||||
<property name="toolTip">
|
<item>
|
||||||
<string><html><head/><body><p>Select offset announced by calling station, or use commonly used value for the band in use. Manually set WSJT-X TX and RX offset to same value.</p></body></html></string>
|
<spacer name="horizontalSpacer">
|
||||||
</property>
|
<property name="orientation">
|
||||||
<property name="alignment">
|
<enum>Qt::Horizontal</enum>
|
||||||
<set>Qt::AlignCenter</set>
|
</property>
|
||||||
</property>
|
<property name="sizeType">
|
||||||
<property name="suffix">
|
<enum>QSizePolicy::Fixed</enum>
|
||||||
<string> Hz</string>
|
</property>
|
||||||
</property>
|
<property name="sizeHint" stdset="0">
|
||||||
<property name="prefix">
|
<size>
|
||||||
<string>Offset </string>
|
<width>20</width>
|
||||||
</property>
|
<height>20</height>
|
||||||
<property name="minimum">
|
</size>
|
||||||
<number>500</number>
|
</property>
|
||||||
</property>
|
</spacer>
|
||||||
<property name="maximum">
|
</item>
|
||||||
<number>2000</number>
|
<item>
|
||||||
</property>
|
<widget class="QCheckBox" name="cbCFOM">
|
||||||
<property name="singleStep">
|
<property name="text">
|
||||||
<number>100</number>
|
<string>Apply CFOM</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="value">
|
</widget>
|
||||||
<number>1500</number>
|
</item>
|
||||||
</property>
|
</layout>
|
||||||
</widget>
|
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
@ -421,7 +448,7 @@ p, li { white-space: pre-wrap; }
|
|||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>640</width>
|
<width>640</width>
|
||||||
<height>22</height>
|
<height>21</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<widget class="QMenu" name="menuFile">
|
<widget class="QMenu" name="menuFile">
|
||||||
|
Loading…
x
Reference in New Issue
Block a user