mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2025-02-03 09:44:24 -05:00
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:
parent
8422bf21a6
commit
fecbe8a7fc
@ -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>
|
||||
|
@ -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();
|
||||
}
|
||||
|
18
soundout.cpp
18
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
|
||||
}
|
||||
|
26
txtune.cpp
26
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);
|
||||
|
9
txtune.h
9
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;
|
||||
};
|
||||
|
||||
|
24
txtune.ui
24
txtune.ui
@ -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>
|
||||
|
Loading…
Reference in New Issue
Block a user