mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2025-05-24 10:22:26 -04:00
Several tweaks toward letting someone else Tx to me...
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@2651 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
This commit is contained in:
parent
6b800ad459
commit
5be113d122
@ -50,7 +50,6 @@ program jt9sim
|
|||||||
|
|
||||||
rmsdb=25.
|
rmsdb=25.
|
||||||
rms=10.0**(0.05*rmsdb)
|
rms=10.0**(0.05*rmsdb)
|
||||||
f0=1500.d0 !Center frequency (MHz)
|
|
||||||
fsample=12000.d0 !Sample rate (Hz)
|
fsample=12000.d0 !Sample rate (Hz)
|
||||||
dt=1.d0/fsample !Sample interval (s)
|
dt=1.d0/fsample !Sample interval (s)
|
||||||
twopi=8.d0*atan(1.d0)
|
twopi=8.d0*atan(1.d0)
|
||||||
@ -62,6 +61,11 @@ program jt9sim
|
|||||||
if(minutes.eq.10) nsps=82944
|
if(minutes.eq.10) nsps=82944
|
||||||
if(minutes.eq.30) nsps=252000
|
if(minutes.eq.30) nsps=252000
|
||||||
if(nsps.eq.0) stop 'Bad value for minutes.'
|
if(nsps.eq.0) stop 'Bad value for minutes.'
|
||||||
|
f0=1500.d0 !Center frequency (MHz)
|
||||||
|
if(minutes.eq.5) f0=1100.
|
||||||
|
if(minutes.eq.10) f0=1050.
|
||||||
|
if(minutes.eq.30) f0=1025.
|
||||||
|
|
||||||
ihdr=0 !Temporary ###
|
ihdr=0 !Temporary ###
|
||||||
|
|
||||||
if(msg0(1:3).eq.'sin') read(msg0(4:),*) sinfreq
|
if(msg0(1:3).eq.'sin') read(msg0(4:),*) sinfreq
|
||||||
|
@ -235,6 +235,7 @@ void MainWindow::writeSettings()
|
|||||||
settings.setValue("KB8RQ",m_kb8rq);
|
settings.setValue("KB8RQ",m_kb8rq);
|
||||||
settings.setValue("NB",m_NB);
|
settings.setValue("NB",m_NB);
|
||||||
settings.setValue("NBslider",m_NBslider);
|
settings.setValue("NBslider",m_NBslider);
|
||||||
|
settings.setValue("TxFreq",m_txFreq);
|
||||||
settings.endGroup();
|
settings.endGroup();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -280,6 +281,8 @@ void MainWindow::readSettings()
|
|||||||
ui->NBcheckBox->setChecked(m_NB);
|
ui->NBcheckBox->setChecked(m_NB);
|
||||||
m_NBslider=settings.value("NBslider",40).toInt();
|
m_NBslider=settings.value("NBslider",40).toInt();
|
||||||
ui->NBslider->setValue(m_NBslider);
|
ui->NBslider->setValue(m_NBslider);
|
||||||
|
m_txFreq=settings.value("TxFreq",1500).toInt();
|
||||||
|
ui->TxFreqSpinBox->setValue(m_txFreq);
|
||||||
m_saveAll=ui->actionSave_all->isChecked();
|
m_saveAll=ui->actionSave_all->isChecked();
|
||||||
m_ndepth=settings.value("NDepth",0).toInt();
|
m_ndepth=settings.value("NDepth",0).toInt();
|
||||||
ui->actionF4_sets_Tx6->setChecked(m_kb8rq);
|
ui->actionF4_sets_Tx6->setChecked(m_kb8rq);
|
||||||
@ -1384,3 +1387,10 @@ void MainWindow::on_NBslider_valueChanged(int n)
|
|||||||
{
|
{
|
||||||
m_NBslider=n;
|
m_NBslider=n;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MainWindow::on_TxFreqSpinBox_valueChanged(int n)
|
||||||
|
{
|
||||||
|
m_txFreq=n;
|
||||||
|
soundOutThread.setTxFreq(n);
|
||||||
|
}
|
||||||
|
|
||||||
|
@ -100,20 +100,14 @@ private slots:
|
|||||||
void on_actionErase_wsjtx_tx_log_triggered();
|
void on_actionErase_wsjtx_tx_log_triggered();
|
||||||
void on_actionAFMHot_triggered();
|
void on_actionAFMHot_triggered();
|
||||||
void on_actionBlue_triggered();
|
void on_actionBlue_triggered();
|
||||||
|
|
||||||
void on_actionJT9_2_triggered();
|
void on_actionJT9_2_triggered();
|
||||||
|
|
||||||
void on_actionJT9_1_triggered();
|
void on_actionJT9_1_triggered();
|
||||||
|
|
||||||
void on_actionJT9_5_triggered();
|
void on_actionJT9_5_triggered();
|
||||||
|
|
||||||
void on_actionJT9_30_triggered();
|
void on_actionJT9_30_triggered();
|
||||||
|
|
||||||
void on_actionJT9_10_triggered();
|
void on_actionJT9_10_triggered();
|
||||||
|
|
||||||
void on_NBcheckBox_toggled(bool checked);
|
void on_NBcheckBox_toggled(bool checked);
|
||||||
|
|
||||||
void on_NBslider_valueChanged(int value);
|
void on_NBslider_valueChanged(int value);
|
||||||
|
void on_TxFreqSpinBox_valueChanged(int arg1);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Ui::MainWindow *ui;
|
Ui::MainWindow *ui;
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>602</width>
|
<width>602</width>
|
||||||
<height>515</height>
|
<height>551</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="sizePolicy">
|
<property name="sizePolicy">
|
||||||
@ -41,7 +41,7 @@
|
|||||||
<x>10</x>
|
<x>10</x>
|
||||||
<y>10</y>
|
<y>10</y>
|
||||||
<width>565</width>
|
<width>565</width>
|
||||||
<height>444</height>
|
<height>467</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QVBoxLayout" name="verticalLayout_7">
|
<layout class="QVBoxLayout" name="verticalLayout_7">
|
||||||
@ -543,6 +543,37 @@ p, li { white-space: pre-wrap; }
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QSpinBox" name="TxFreqSpinBox">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>100</width>
|
||||||
|
<height>0</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="suffix">
|
||||||
|
<string> Hz</string>
|
||||||
|
</property>
|
||||||
|
<property name="prefix">
|
||||||
|
<string>Tx +</string>
|
||||||
|
</property>
|
||||||
|
<property name="minimum">
|
||||||
|
<number>1000</number>
|
||||||
|
</property>
|
||||||
|
<property name="maximum">
|
||||||
|
<number>2000</number>
|
||||||
|
</property>
|
||||||
|
<property name="value">
|
||||||
|
<number>1500</number>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<spacer name="verticalSpacer">
|
<spacer name="verticalSpacer">
|
||||||
<property name="orientation">
|
<property name="orientation">
|
||||||
|
@ -84,7 +84,7 @@ void CPlotter::paintEvent(QPaintEvent *) // paintEvent()
|
|||||||
m_paintEventBusy=false;
|
m_paintEventBusy=false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CPlotter::draw(float swide[], int i0, float splot[]) //draw()
|
void CPlotter::draw(float swide[], int i0) //draw()
|
||||||
{
|
{
|
||||||
int j;
|
int j;
|
||||||
float y;
|
float y;
|
||||||
@ -108,7 +108,9 @@ void CPlotter::draw(float swide[], int i0, float splot[]) //draw()
|
|||||||
bool strong0=false;
|
bool strong0=false;
|
||||||
bool strong=false;
|
bool strong=false;
|
||||||
|
|
||||||
|
int iz=XfromFreq(2000.0);
|
||||||
for(int i=0; i<m_w; i++) {
|
for(int i=0; i<m_w; i++) {
|
||||||
|
if(i>iz) swide[i]=0;
|
||||||
strong=false;
|
strong=false;
|
||||||
if(swide[i]<0) {
|
if(swide[i]<0) {
|
||||||
strong=true;
|
strong=true;
|
||||||
@ -142,7 +144,7 @@ void CPlotter::draw(float swide[], int i0, float splot[]) //draw()
|
|||||||
m_line++;
|
m_line++;
|
||||||
if(m_line == 13) {
|
if(m_line == 13) {
|
||||||
UTCstr();
|
UTCstr();
|
||||||
painter1.setPen(Qt::red);
|
painter1.setPen(Qt::white);
|
||||||
painter1.drawText(5,10,m_sutc);
|
painter1.drawText(5,10,m_sutc);
|
||||||
}
|
}
|
||||||
update(); //trigger a new paintEvent
|
update(); //trigger a new paintEvent
|
||||||
|
@ -36,7 +36,7 @@ public:
|
|||||||
qint32 m_tol;
|
qint32 m_tol;
|
||||||
qint32 m_fCal;
|
qint32 m_fCal;
|
||||||
|
|
||||||
void draw(float sw[], int i0, float splot[]); //Update the waterfalls
|
void draw(float sw[], int i0); //Update the waterfalls
|
||||||
void SetRunningState(bool running);
|
void SetRunningState(bool running);
|
||||||
void setPlotZero(int plotZero);
|
void setPlotZero(int plotZero);
|
||||||
int getPlotZero();
|
int getPlotZero();
|
||||||
|
12
soundout.cpp
12
soundout.cpp
@ -14,6 +14,7 @@ typedef struct //Parameters sent to or received from callback function
|
|||||||
{
|
{
|
||||||
int nsps;
|
int nsps;
|
||||||
int ntrperiod;
|
int ntrperiod;
|
||||||
|
int ntxfreq;
|
||||||
bool txOK;
|
bool txOK;
|
||||||
bool txMute;
|
bool txMute;
|
||||||
bool bRestart;
|
bool bRestart;
|
||||||
@ -43,12 +44,12 @@ extern "C" int d2aCallback(const void *inputBuffer, void *outputBuffer,
|
|||||||
int mstr = ms % (1000*udata->ntrperiod );
|
int mstr = ms % (1000*udata->ntrperiod );
|
||||||
if(mstr<1000) return 0;
|
if(mstr<1000) return 0;
|
||||||
ic=(mstr-1000)*12;
|
ic=(mstr-1000)*12;
|
||||||
qDebug() << "Start at:" << 0.001*mstr;
|
// qDebug() << "Start at:" << 0.001*mstr << udata->ntxfreq;
|
||||||
udata->bRestart=false;
|
udata->bRestart=false;
|
||||||
}
|
}
|
||||||
int isym=ic/udata->nsps;
|
int isym=ic/udata->nsps;
|
||||||
if(isym>=85) return 0;
|
if(isym>=85) return 0;
|
||||||
freq=1500.0 + itone[isym]*baud;
|
freq=udata->ntxfreq + itone[isym]*baud;
|
||||||
dphi=twopi*freq/12000.0;
|
dphi=twopi*freq/12000.0;
|
||||||
/*
|
/*
|
||||||
if(ic<10000) qDebug() << "a" << ic << udata->nsps << itone[0]
|
if(ic<10000) qDebug() << "a" << ic << udata->nsps << itone[0]
|
||||||
@ -98,6 +99,7 @@ void SoundOutThread::run()
|
|||||||
|
|
||||||
udata.nsps=m_nsps;
|
udata.nsps=m_nsps;
|
||||||
udata.ntrperiod=m_TRperiod;
|
udata.ntrperiod=m_TRperiod;
|
||||||
|
udata.ntxfreq=m_txFreq;
|
||||||
udata.txOK=false;
|
udata.txOK=false;
|
||||||
udata.txMute=m_txMute;
|
udata.txMute=m_txMute;
|
||||||
udata.bRestart=true;
|
udata.bRestart=true;
|
||||||
@ -127,6 +129,7 @@ void SoundOutThread::run()
|
|||||||
|
|
||||||
udata.nsps=m_nsps;
|
udata.nsps=m_nsps;
|
||||||
udata.ntrperiod=m_TRperiod;
|
udata.ntrperiod=m_TRperiod;
|
||||||
|
udata.ntxfreq=m_txFreq;
|
||||||
udata.txOK=m_txOK;
|
udata.txOK=m_txOK;
|
||||||
udata.txMute=m_txMute;
|
udata.txMute=m_txMute;
|
||||||
msleep(100);
|
msleep(100);
|
||||||
@ -146,3 +149,8 @@ void SoundOutThread::setPeriod(int ntrperiod, int nsps)
|
|||||||
m_TRperiod=ntrperiod;
|
m_TRperiod=ntrperiod;
|
||||||
m_nsps=nsps;
|
m_nsps=nsps;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void SoundOutThread::setTxFreq(int n)
|
||||||
|
{
|
||||||
|
m_txFreq=n;
|
||||||
|
}
|
||||||
|
@ -26,6 +26,7 @@ public:
|
|||||||
public:
|
public:
|
||||||
void setOutputDevice(qint32 n);
|
void setOutputDevice(qint32 n);
|
||||||
void setPeriod(int ntrperiod, int nsps);
|
void setPeriod(int ntrperiod, int nsps);
|
||||||
|
void setTxFreq(int n);
|
||||||
bool quitExecution; //If true, thread exits gracefully
|
bool quitExecution; //If true, thread exits gracefully
|
||||||
|
|
||||||
// Private members
|
// Private members
|
||||||
@ -35,6 +36,7 @@ private:
|
|||||||
bool m_txMute; //Mute temporarily
|
bool m_txMute; //Mute temporarily
|
||||||
qint32 m_TRperiod; //T/R period (s)
|
qint32 m_TRperiod; //T/R period (s)
|
||||||
qint32 m_nsps; //Samples per symbol (at 12000 Hz)
|
qint32 m_nsps; //Samples per symbol (at 12000 Hz)
|
||||||
|
qint32 m_txFreq;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -130,7 +130,7 @@ void WideGraph::dataSink2(float s[], float df3, int ihsym, int ndiskdata,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
ntr0=ntr;
|
ntr0=ntr;
|
||||||
ui->widePlot->draw(swide,i0,splot);
|
ui->widePlot->draw(swide,i0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user