Further progress on changes to support the IQ+ XT.

Amplitude and phase adjustments of Tx audio are now working and need to 
be tested.  Still need to implement function of "Tune" button.


git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/map65@3640 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
This commit is contained in:
Joe Taylor 2014-01-16 18:47:28 +00:00
parent 8422bf21a6
commit fecbe8a7fc
6 changed files with 72 additions and 13 deletions

View File

@ -17,7 +17,7 @@
<item>
<widget class="QTabWidget" name="ioTabWidget">
<property name="currentIndex">
<number>0</number>
<number>3</number>
</property>
<widget class="QWidget" name="tab">
<attribute name="title">
@ -1461,7 +1461,7 @@
<attribute name="title">
<string>Si570 Control</string>
</attribute>
<widget class="QWidget" name="">
<widget class="QWidget" name="layoutWidget">
<property name="geometry">
<rect>
<x>40</x>

View File

@ -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();
}

View File

@ -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
}

View File

@ -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);

View File

@ -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;
};

View File

@ -74,13 +74,6 @@
</property>
</widget>
</item>
<item row="0" column="2">
<widget class="QPushButton" name="pbTune">
<property name="text">
<string>Tune</string>
</property>
</widget>
</item>
<item row="1" column="0" colspan="2">
<widget class="QCheckBox" name="cbTxImage">
<property name="text">
@ -251,6 +244,23 @@
</property>
</widget>
</item>
<item row="1" column="2">
<widget class="QPushButton" name="pbTune">
<property name="text">
<string>Tune</string>
</property>
</widget>
</item>
<item row="0" column="2">
<widget class="QLabel" name="labPower">
<property name="text">
<string>100 %</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
</layout>
</widget>
</widget>