diff --git a/devsetup.ui b/devsetup.ui index 33f671456..0d323aa0a 100644 --- a/devsetup.ui +++ b/devsetup.ui @@ -17,7 +17,7 @@ - 0 + 3 @@ -1461,7 +1461,7 @@ Si570 Control - + 40 diff --git a/mainwindow.cpp b/mainwindow.cpp index 0709418f7..ab970ed3a 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -18,6 +18,7 @@ short int iwave[2*60*11025]; //Wave file for Tx audio int nwave; //Length of Tx waveform bool btxok; //True if OK to transmit bool bTune; +bool bIQxt; double outputLatency; //Latency in seconds int txPower; int iqAmp; @@ -1515,6 +1516,7 @@ void MainWindow::guiUpdate() } if(nsec != m_sec0) { //Once per second +// qDebug() << txPower << iqAmp << iqPhase; soundInThread.setForceCenterFreqMHz(g_pWideGraph->m_dForceCenterFreq); soundInThread.setForceCenterFreqBool(g_pWideGraph->m_bForceCenterFreq); @@ -1578,6 +1580,7 @@ void MainWindow::guiUpdate() } iptt0=iptt; btxok0=btxok; + bIQxt=m_bIQxt; } void MainWindow::ba2msg(QByteArray ba, char message[]) //ba2msg() @@ -2121,5 +2124,6 @@ void MainWindow::on_actionTx_Tune_triggered() } g_pTxTune->set_iqAmp(iqAmp); g_pTxTune->set_iqPhase(iqPhase); + g_pTxTune->set_txPower(txPower); g_pTxTune->show(); } diff --git a/soundout.cpp b/soundout.cpp index 3543d8a51..4d4f7daaa 100644 --- a/soundout.cpp +++ b/soundout.cpp @@ -12,12 +12,12 @@ extern short int iwave[2*60*11025]; //Wave file for Tx audio extern int nwave; extern bool btxok; extern bool bTune; +extern bool bIQxt; extern int iqAmp; extern int iqPhase; extern int txPower; extern double outputLatency; - typedef struct //Parameters sent to or received from callback function { int nTRperiod; @@ -41,15 +41,18 @@ extern "C" int d2aCallback(const void *inputBuffer, void *outputBuffer, int nsec; int nTRperiod=udata->nTRperiod; - // Get System time qint64 ms = QDateTime::currentMSecsSinceEpoch() % 86400000; tsec = 0.001*ms; nsec = ms/1000; + qreal dPhase=iqPhase/5729.57795131; + qreal amp=1.0 + 0.0001*iqAmp; + qreal xAmp=txPower*295.00*qSqrt(2.0 - amp*amp); + qreal yAmp=txPower*295.00*amp; static int nsec0=0; if(nsec!=nsec0) { - qDebug() << txPower << iqAmp << iqPhase << bTune; +// qDebug() << txPower << iqAmp << iqPhase << amp << xAmp << yAmp << dPhase << bTune; nsec0=nsec; } @@ -76,6 +79,15 @@ extern "C" int d2aCallback(const void *inputBuffer, void *outputBuffer, short int i2b=iwave[ic++]; if(ic > nwave) {i2a=0; i2b=0;} // i2 = 500.0*(i2/32767.0 + 5.0*gran()); //Add noise (tests only!) +// if(bIQxt) { + if(1) { + qreal phi=qAtan2(qreal(i2a),qreal(i2b)) + dPhase; + i2a=xAmp*qCos(phi); + i2b=yAmp*qSin(phi); +// qDebug() << xAmp << yAmp << phi << i2a << i2b; + } +// i2a=0.01*txPower*i2a; +// i2b=0.01*txPower*i2b; *wptr++ = i2a; //left *wptr++ = i2b; //right } diff --git a/txtune.cpp b/txtune.cpp index a36788869..43bf969e8 100644 --- a/txtune.cpp +++ b/txtune.cpp @@ -19,9 +19,25 @@ TxTune::~TxTune() delete ui; } +void TxTune::accept() +{ + QDialog::accept(); +} + +void TxTune::reject() +{ + set_iqAmp(m_saveAmp); + set_iqPhase(m_savePha); + set_txPower(m_saveTxPower); + QDialog::reject(); +} + void TxTune::on_pwrSlider_valueChanged(int n) { - txPower=0.01*n; + txPower=n; + QString t; + t.sprintf("%d \%",n); + ui->labPower->setText(t); } void TxTune::on_ampSlider_valueChanged(int n) @@ -61,6 +77,7 @@ void TxTune::on_finePhaSlider_valueChanged(int n) void TxTune::set_iqAmp(int n) { + m_saveAmp=n; m_iqAmp1=n/10; m_iqAmp2=n%10; ui->ampSlider->setValue(m_iqAmp1); @@ -69,12 +86,19 @@ void TxTune::set_iqAmp(int n) void TxTune::set_iqPhase(int n) { + m_savePha=n; m_iqPha1=n/10; m_iqPha2=n%10; ui->phaSlider->setValue(m_iqPha1); ui->finePhaSlider->setValue(m_iqPha2); } +void TxTune::set_txPower(int n) +{ + m_saveTxPower=n; + ui->pwrSlider->setValue(n); +} + void TxTune::on_cbTxImage_toggled(bool b) { ui->ampSlider->setEnabled(b); diff --git a/txtune.h b/txtune.h index 7f69c7b0c..5b59072df 100644 --- a/txtune.h +++ b/txtune.h @@ -15,6 +15,10 @@ public: explicit TxTune(QWidget *parent = 0); ~TxTune(); +public slots: + void accept(); + void reject(); + private slots: void on_pwrSlider_valueChanged(int n); void on_ampSlider_valueChanged(int n); @@ -27,12 +31,17 @@ private slots: public: void set_iqAmp(int n); void set_iqPhase(int n); + void set_txPower(int n); private: qint32 m_iqAmp1; qint32 m_iqAmp2; qint32 m_iqPha1; qint32 m_iqPha2; + qint32 m_saveAmp; + qint32 m_savePha; + qint32 m_saveTxPower; + Ui::TxTune *ui; }; diff --git a/txtune.ui b/txtune.ui index 11a9c1ae4..995d0bfe0 100644 --- a/txtune.ui +++ b/txtune.ui @@ -74,13 +74,6 @@ - - - - Tune - - - @@ -251,6 +244,23 @@ + + + + Tune + + + + + + + 100 % + + + Qt::AlignCenter + + +