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
+
+
+