mirror of
				https://github.com/saitohirga/WSJT-X.git
				synced 2025-11-04 05:50:31 -05:00 
			
		
		
		
	git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@3544 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
		
			
				
	
	
		
			711 lines
		
	
	
		
			22 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			711 lines
		
	
	
		
			22 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
#include "devsetup.h"
 | 
						|
 | 
						|
#include "ui_devsetup.h"
 | 
						|
 | 
						|
#include <iterator>
 | 
						|
#include <algorithm>
 | 
						|
#include <tr1/functional>
 | 
						|
 | 
						|
#include <QDebug>
 | 
						|
#include <QSettings>
 | 
						|
#include <QAudioDeviceInfo>
 | 
						|
#include <QAudioInput>
 | 
						|
#include <QMap>
 | 
						|
 | 
						|
extern double dFreq[16];
 | 
						|
qint32  g2_iptt;
 | 
						|
qint32  g2_COMportOpen;
 | 
						|
 | 
						|
//----------------------------------------------------------- DevSetup()
 | 
						|
DevSetup::DevSetup(QWidget *parent)
 | 
						|
  : QDialog(parent)
 | 
						|
  , ui (new Ui::DevSetup)
 | 
						|
  , m_audioInputDevices (QAudioDeviceInfo::availableDevices (QAudio::AudioInput))
 | 
						|
  , m_audioOutputDevices (QAudioDeviceInfo::availableDevices (QAudio::AudioOutput))
 | 
						|
{
 | 
						|
  ui->setupUi(this);	                              //setup the dialog form
 | 
						|
  m_restartSoundIn=false;
 | 
						|
  m_restartSoundOut=false;
 | 
						|
  m_firstCall=true;
 | 
						|
  g2_iptt=0;
 | 
						|
  m_test=0;
 | 
						|
  m_bRigOpen=false;
 | 
						|
  g2_COMportOpen=0;
 | 
						|
}
 | 
						|
 | 
						|
DevSetup::~DevSetup()
 | 
						|
{
 | 
						|
}
 | 
						|
 | 
						|
void DevSetup::initDlg()
 | 
						|
{
 | 
						|
  QString m_appDir = QApplication::applicationDirPath();
 | 
						|
  QString inifile = m_appDir + "/wsjtx.ini";
 | 
						|
  QSettings settings(inifile, QSettings::IniFormat);
 | 
						|
  settings.beginGroup("Common");
 | 
						|
  QString catPortDriver = settings.value("CATdriver","None").toString();
 | 
						|
  settings.endGroup();
 | 
						|
 | 
						|
  //
 | 
						|
  // load combo boxes with audio setup choices
 | 
						|
  //
 | 
						|
  loadAudioDevices (m_audioInputDevices, ui->comboBoxSndIn, m_audioInputDevice, QAudioDeviceInfo::defaultInputDevice ());
 | 
						|
  loadAudioDevices (m_audioOutputDevices, ui->comboBoxSndOut, m_audioOutputDevice, QAudioDeviceInfo::defaultOutputDevice ());
 | 
						|
 | 
						|
  {
 | 
						|
    using namespace std::tr1;
 | 
						|
    using namespace std::tr1::placeholders;
 | 
						|
 | 
						|
    function<void (int)> cb (bind (&DevSetup::updateAudioChannels, this, ui->comboBoxSndIn, _1, ui->audioInputChannel, false));
 | 
						|
    connect (ui->comboBoxSndIn, static_cast<void (QComboBox::*)(int)> (&QComboBox::currentIndexChanged), cb);
 | 
						|
    cb = bind (&DevSetup::updateAudioChannels, this, ui->comboBoxSndOut, _1, ui->audioOutputChannel, true);
 | 
						|
    connect (ui->comboBoxSndOut, static_cast<void (QComboBox::*)(int)> (&QComboBox::currentIndexChanged), cb);
 | 
						|
 | 
						|
    updateAudioChannels (ui->comboBoxSndIn, ui->comboBoxSndIn->currentIndex (), ui->audioInputChannel, false);
 | 
						|
    updateAudioChannels (ui->comboBoxSndOut, ui->comboBoxSndOut->currentIndex (), ui->audioOutputChannel, true);
 | 
						|
 | 
						|
    ui->audioInputChannel->setCurrentIndex (m_audioInputChannel);
 | 
						|
    ui->audioOutputChannel->setCurrentIndex (m_audioOutputChannel);
 | 
						|
  }
 | 
						|
 | 
						|
  enumerateRigs ();
 | 
						|
 | 
						|
  QPalette pal(ui->myCallEntry->palette());
 | 
						|
  if(m_myCall=="") {
 | 
						|
    pal.setColor(QPalette::Base,"#ffccff");
 | 
						|
  } else {
 | 
						|
    pal.setColor(QPalette::Base,Qt::white);
 | 
						|
  }
 | 
						|
  ui->myCallEntry->setPalette(pal);
 | 
						|
  ui->myGridEntry->setPalette(pal);
 | 
						|
  ui->myCallEntry->setText(m_myCall);
 | 
						|
  ui->myGridEntry->setText(m_myGrid);
 | 
						|
 | 
						|
  ui->idIntSpinBox->setValue(m_idInt);
 | 
						|
  ui->pttMethodComboBox->setCurrentIndex(m_pttMethodIndex);
 | 
						|
  ui->saveDirEntry->setText(m_saveDir);
 | 
						|
  ui->cbID73->setChecked(m_After73);
 | 
						|
  ui->cbPSKReporter->setChecked(m_pskReporter);
 | 
						|
  ui->cbSplit->setChecked(m_bSplit and m_catEnabled);
 | 
						|
  ui->cbXIT->setChecked(m_bXIT);
 | 
						|
  ui->cbXIT->setVisible(false);
 | 
						|
 | 
						|
  enableWidgets();
 | 
						|
 | 
						|
  ui->catPortComboBox->setCurrentIndex(m_catPortIndex);
 | 
						|
  ui->serialRateComboBox->setCurrentIndex(m_serialRateIndex);
 | 
						|
  ui->dataBitsComboBox->setCurrentIndex(m_dataBitsIndex);
 | 
						|
  ui->stopBitsComboBox->setCurrentIndex(m_stopBitsIndex);
 | 
						|
  ui->handshakeComboBox->setCurrentIndex(m_handshakeIndex);
 | 
						|
  ui->rbData->setChecked(m_pttData);
 | 
						|
  ui->pollSpinBox->setValue(m_poll);
 | 
						|
 | 
						|
  // PY2SDR -- Per OS serial port names
 | 
						|
  m_tmp=m_pttPort;
 | 
						|
  ui->pttComboBox->clear();
 | 
						|
  ui->catPortComboBox->clear();
 | 
						|
  ui->pttComboBox->addItem("None");
 | 
						|
  ui->catPortComboBox->addItem("None");
 | 
						|
#ifdef WIN32
 | 
						|
  for ( int i = 1; i < 100; i++ ) {
 | 
						|
    ui->pttComboBox->addItem("COM" + QString::number(i));
 | 
						|
    ui->catPortComboBox->addItem("COM" + QString::number(i));
 | 
						|
  }
 | 
						|
  ui->pttComboBox->addItem("USB");
 | 
						|
  ui->catPortComboBox->addItem("USB");
 | 
						|
#else
 | 
						|
  ui->catPortComboBox->addItem("/dev/ttyS0");
 | 
						|
  ui->catPortComboBox->addItem("/dev/ttyS1");
 | 
						|
  ui->catPortComboBox->addItem("/dev/ttyS2");
 | 
						|
  ui->catPortComboBox->addItem("/dev/ttyS3");
 | 
						|
  ui->catPortComboBox->addItem("/dev/ttyS4");
 | 
						|
  ui->catPortComboBox->addItem("/dev/ttyS5");
 | 
						|
  ui->catPortComboBox->addItem("/dev/ttyS6");
 | 
						|
  ui->catPortComboBox->addItem("/dev/ttyS7");
 | 
						|
  ui->catPortComboBox->addItem("/dev/ttyUSB0");
 | 
						|
  ui->catPortComboBox->addItem("/dev/ttyUSB1");
 | 
						|
  ui->catPortComboBox->addItem("/dev/ttyUSB2");
 | 
						|
  ui->catPortComboBox->addItem("/dev/ttyUSB3");
 | 
						|
  ui->catPortComboBox->addItem(catPortDriver);
 | 
						|
 | 
						|
  ui->pttComboBox->addItem("/dev/ttyS0");
 | 
						|
  ui->pttComboBox->addItem("/dev/ttyS1");
 | 
						|
  ui->pttComboBox->addItem("/dev/ttyS2");
 | 
						|
  ui->pttComboBox->addItem("/dev/ttyS3");
 | 
						|
  ui->pttComboBox->addItem("/dev/ttyS4");
 | 
						|
  ui->pttComboBox->addItem("/dev/ttyS5");
 | 
						|
  ui->pttComboBox->addItem("/dev/ttyS6");
 | 
						|
  ui->pttComboBox->addItem("/dev/ttyS7");
 | 
						|
  ui->pttComboBox->addItem("/dev/ttyUSB0");
 | 
						|
  ui->pttComboBox->addItem("/dev/ttyUSB1");
 | 
						|
  ui->pttComboBox->addItem("/dev/ttyUSB2");
 | 
						|
  ui->pttComboBox->addItem("/dev/ttyUSB3");
 | 
						|
#endif
 | 
						|
  ui->pttComboBox->setCurrentIndex(m_tmp);
 | 
						|
  ui->catPortComboBox->setCurrentIndex(m_catPortIndex);
 | 
						|
 | 
						|
  int n=m_macro.length();
 | 
						|
  if(n>=1) ui->macro1->setText(m_macro[0].toUpper());
 | 
						|
  if(n>=2) ui->macro2->setText(m_macro[1].toUpper());
 | 
						|
  if(n>=3) ui->macro3->setText(m_macro[2].toUpper());
 | 
						|
  if(n>=4) ui->macro4->setText(m_macro[3].toUpper());
 | 
						|
  if(n>=5) ui->macro5->setText(m_macro[4].toUpper());
 | 
						|
  if(n>=6) ui->macro6->setText(m_macro[5].toUpper());
 | 
						|
  if(n>=7) ui->macro7->setText(m_macro[6].toUpper());
 | 
						|
  if(n>=8) ui->macro8->setText(m_macro[7].toUpper());
 | 
						|
  if(n>=8) ui->macro9->setText(m_macro[8].toUpper());
 | 
						|
  if(n>=10) ui->macro10->setText(m_macro[9].toUpper());
 | 
						|
 | 
						|
  ui->f1->setText(m_dFreq[0]);
 | 
						|
  ui->f2->setText(m_dFreq[1]);
 | 
						|
  ui->f3->setText(m_dFreq[2]);
 | 
						|
  ui->f4->setText(m_dFreq[3]);
 | 
						|
  ui->f5->setText(m_dFreq[4]);
 | 
						|
  ui->f6->setText(m_dFreq[5]);
 | 
						|
  ui->f7->setText(m_dFreq[6]);
 | 
						|
  ui->f8->setText(m_dFreq[7]);
 | 
						|
  ui->f9->setText(m_dFreq[8]);
 | 
						|
  ui->f10->setText(m_dFreq[9]);
 | 
						|
  ui->f11->setText(m_dFreq[10]);
 | 
						|
  ui->f12->setText(m_dFreq[11]);
 | 
						|
  ui->f13->setText(m_dFreq[12]);
 | 
						|
  ui->f14->setText(m_dFreq[13]);
 | 
						|
  ui->f15->setText(m_dFreq[14]);
 | 
						|
  ui->f16->setText(m_dFreq[15]);
 | 
						|
 | 
						|
  ui->AntDescription1->setText(m_antDescription[0]);
 | 
						|
  ui->AntDescription2->setText(m_antDescription[1]);
 | 
						|
  ui->AntDescription3->setText(m_antDescription[2]);
 | 
						|
  ui->AntDescription4->setText(m_antDescription[3]);
 | 
						|
  ui->AntDescription5->setText(m_antDescription[4]);
 | 
						|
  ui->AntDescription6->setText(m_antDescription[5]);
 | 
						|
  ui->AntDescription7->setText(m_antDescription[6]);
 | 
						|
  ui->AntDescription8->setText(m_antDescription[7]);
 | 
						|
  ui->AntDescription9->setText(m_antDescription[8]);
 | 
						|
  ui->AntDescription10->setText(m_antDescription[9]);
 | 
						|
  ui->AntDescription11->setText(m_antDescription[10]);
 | 
						|
  ui->AntDescription12->setText(m_antDescription[11]);
 | 
						|
  ui->AntDescription13->setText(m_antDescription[12]);
 | 
						|
  ui->AntDescription14->setText(m_antDescription[13]);
 | 
						|
  ui->AntDescription15->setText(m_antDescription[14]);
 | 
						|
  ui->AntDescription16->setText(m_antDescription[15]);
 | 
						|
 | 
						|
  ui->Band1->setText(m_bandDescription[0]);
 | 
						|
  ui->Band2->setText(m_bandDescription[1]);
 | 
						|
  ui->Band3->setText(m_bandDescription[2]);
 | 
						|
  ui->Band4->setText(m_bandDescription[3]);
 | 
						|
  ui->Band5->setText(m_bandDescription[4]);
 | 
						|
  ui->Band6->setText(m_bandDescription[5]);
 | 
						|
  ui->Band7->setText(m_bandDescription[6]);
 | 
						|
  ui->Band8->setText(m_bandDescription[7]);
 | 
						|
  ui->Band9->setText(m_bandDescription[8]);
 | 
						|
  ui->Band10->setText(m_bandDescription[9]);
 | 
						|
  ui->Band11->setText(m_bandDescription[10]);
 | 
						|
  ui->Band12->setText(m_bandDescription[11]);
 | 
						|
  ui->Band13->setText(m_bandDescription[12]);
 | 
						|
  ui->Band14->setText(m_bandDescription[13]);
 | 
						|
  ui->Band15->setText(m_bandDescription[14]);
 | 
						|
  ui->Band16->setText(m_bandDescription[15]);
 | 
						|
 | 
						|
}
 | 
						|
 | 
						|
//------------------------------------------------------- accept()
 | 
						|
void DevSetup::accept()
 | 
						|
{
 | 
						|
  // Called when OK button is clicked.
 | 
						|
  // Check to see whether SoundInThread must be restarted,
 | 
						|
  // and save user parameters.
 | 
						|
 | 
						|
  m_restartSoundIn = false;
 | 
						|
  m_restartSoundOut = false;
 | 
						|
 | 
						|
  if (m_audioInputDevice != m_audioInputDevices[ui->comboBoxSndIn->currentIndex ()])
 | 
						|
    {
 | 
						|
      m_audioInputDevice = m_audioInputDevices[ui->comboBoxSndIn->currentIndex ()];
 | 
						|
      m_restartSoundIn = true;
 | 
						|
    }
 | 
						|
 | 
						|
  if (m_audioOutputDevice != m_audioOutputDevices[ui->comboBoxSndOut->currentIndex ()])
 | 
						|
    {
 | 
						|
      m_audioOutputDevice = m_audioOutputDevices[ui->comboBoxSndOut->currentIndex ()];
 | 
						|
      m_restartSoundOut = true;
 | 
						|
    }
 | 
						|
 | 
						|
  if (m_audioInputChannel != static_cast<AudioDevice::Channel> (ui->audioInputChannel->currentIndex ()))
 | 
						|
    {
 | 
						|
      m_audioInputChannel = static_cast<AudioDevice::Channel> (ui->audioInputChannel->currentIndex ());
 | 
						|
      m_restartSoundIn = true;
 | 
						|
    }
 | 
						|
  Q_ASSERT (m_audioInputChannel <= AudioDevice::Right);
 | 
						|
 | 
						|
  if (m_audioOutputChannel != static_cast<AudioDevice::Channel> (ui->audioOutputChannel->currentIndex ()))
 | 
						|
    {
 | 
						|
      m_audioOutputChannel = static_cast<AudioDevice::Channel> (ui->audioOutputChannel->currentIndex ());
 | 
						|
      m_restartSoundOut = true;
 | 
						|
    }
 | 
						|
  Q_ASSERT (m_audioOutputChannel <= AudioDevice::Both);
 | 
						|
 | 
						|
  m_myCall=ui->myCallEntry->text();
 | 
						|
  m_myGrid=ui->myGridEntry->text();
 | 
						|
  m_idInt=ui->idIntSpinBox->value();
 | 
						|
  m_pttMethodIndex=ui->pttMethodComboBox->currentIndex();
 | 
						|
  m_pttPort=ui->pttComboBox->currentIndex();
 | 
						|
  m_saveDir=ui->saveDirEntry->text();
 | 
						|
 | 
						|
  m_macro.clear();
 | 
						|
  m_macro.append(ui->macro1->text());
 | 
						|
  m_macro.append(ui->macro2->text());
 | 
						|
  m_macro.append(ui->macro3->text());
 | 
						|
  m_macro.append(ui->macro4->text());
 | 
						|
  m_macro.append(ui->macro5->text());
 | 
						|
  m_macro.append(ui->macro6->text());
 | 
						|
  m_macro.append(ui->macro7->text());
 | 
						|
  m_macro.append(ui->macro8->text());
 | 
						|
  m_macro.append(ui->macro9->text());
 | 
						|
  m_macro.append(ui->macro10->text());
 | 
						|
 | 
						|
  m_dFreq.clear();
 | 
						|
  m_dFreq.append(ui->f1->text());
 | 
						|
  m_dFreq.append(ui->f2->text());
 | 
						|
  m_dFreq.append(ui->f3->text());
 | 
						|
  m_dFreq.append(ui->f4->text());
 | 
						|
  m_dFreq.append(ui->f5->text());
 | 
						|
  m_dFreq.append(ui->f6->text());
 | 
						|
  m_dFreq.append(ui->f7->text());
 | 
						|
  m_dFreq.append(ui->f8->text());
 | 
						|
  m_dFreq.append(ui->f9->text());
 | 
						|
  m_dFreq.append(ui->f10->text());
 | 
						|
  m_dFreq.append(ui->f11->text());
 | 
						|
  m_dFreq.append(ui->f12->text());
 | 
						|
  m_dFreq.append(ui->f13->text());
 | 
						|
  m_dFreq.append(ui->f14->text());
 | 
						|
  m_dFreq.append(ui->f15->text());
 | 
						|
  m_dFreq.append(ui->f16->text());
 | 
						|
 | 
						|
  m_antDescription.clear();
 | 
						|
  m_antDescription.append(ui->AntDescription1->text());
 | 
						|
  m_antDescription.append(ui->AntDescription2->text());
 | 
						|
  m_antDescription.append(ui->AntDescription3->text());
 | 
						|
  m_antDescription.append(ui->AntDescription4->text());
 | 
						|
  m_antDescription.append(ui->AntDescription5->text());
 | 
						|
  m_antDescription.append(ui->AntDescription6->text());
 | 
						|
  m_antDescription.append(ui->AntDescription7->text());
 | 
						|
  m_antDescription.append(ui->AntDescription8->text());
 | 
						|
  m_antDescription.append(ui->AntDescription9->text());
 | 
						|
  m_antDescription.append(ui->AntDescription10->text());
 | 
						|
  m_antDescription.append(ui->AntDescription11->text());
 | 
						|
  m_antDescription.append(ui->AntDescription12->text());
 | 
						|
  m_antDescription.append(ui->AntDescription13->text());
 | 
						|
  m_antDescription.append(ui->AntDescription14->text());
 | 
						|
  m_antDescription.append(ui->AntDescription15->text());
 | 
						|
  m_antDescription.append(ui->AntDescription16->text());
 | 
						|
 | 
						|
  m_bandDescription.clear();
 | 
						|
  m_bandDescription.append(ui->Band1->text());
 | 
						|
  m_bandDescription.append(ui->Band2->text());
 | 
						|
  m_bandDescription.append(ui->Band3->text());
 | 
						|
  m_bandDescription.append(ui->Band4->text());
 | 
						|
  m_bandDescription.append(ui->Band5->text());
 | 
						|
  m_bandDescription.append(ui->Band6->text());
 | 
						|
  m_bandDescription.append(ui->Band7->text());
 | 
						|
  m_bandDescription.append(ui->Band8->text());
 | 
						|
  m_bandDescription.append(ui->Band9->text());
 | 
						|
  m_bandDescription.append(ui->Band10->text());
 | 
						|
  m_bandDescription.append(ui->Band11->text());
 | 
						|
  m_bandDescription.append(ui->Band12->text());
 | 
						|
  m_bandDescription.append(ui->Band13->text());
 | 
						|
  m_bandDescription.append(ui->Band14->text());
 | 
						|
  m_bandDescription.append(ui->Band15->text());
 | 
						|
  m_bandDescription.append(ui->Band16->text());
 | 
						|
 | 
						|
 | 
						|
  if(m_bRigOpen) {
 | 
						|
    rig->close();
 | 
						|
    if(m_rig<9900) delete rig;
 | 
						|
    m_bRigOpen=false;
 | 
						|
  }
 | 
						|
 | 
						|
  QDialog::accept();
 | 
						|
}
 | 
						|
 | 
						|
//------------------------------------------------------- reject()
 | 
						|
void DevSetup::reject()
 | 
						|
{
 | 
						|
  if(m_bRigOpen) rig->close();
 | 
						|
  QDialog::reject();
 | 
						|
}
 | 
						|
 | 
						|
void DevSetup::msgBox(QString t)                             //msgBox
 | 
						|
{
 | 
						|
  msgBox0.setText(t);
 | 
						|
  msgBox0.exec();
 | 
						|
}
 | 
						|
 | 
						|
void DevSetup::on_myCallEntry_editingFinished()
 | 
						|
{
 | 
						|
  QString t=ui->myCallEntry->text();
 | 
						|
  ui->myCallEntry->setText(t.toUpper());
 | 
						|
}
 | 
						|
 | 
						|
void DevSetup::on_myGridEntry_editingFinished()
 | 
						|
{
 | 
						|
  QString t=ui->myGridEntry->text();
 | 
						|
  t=t.mid(0,4).toUpper()+t.mid(4,2).toLower();
 | 
						|
  ui->myGridEntry->setText(t);
 | 
						|
}
 | 
						|
 | 
						|
void DevSetup::setEnableAntennaDescriptions(bool enable)
 | 
						|
{
 | 
						|
    ui->AntDescription1->setEnabled(enable);
 | 
						|
    ui->AntDescription2->setEnabled(enable);
 | 
						|
    ui->AntDescription3->setEnabled(enable);
 | 
						|
    ui->AntDescription4->setEnabled(enable);
 | 
						|
    ui->AntDescription5->setEnabled(enable);
 | 
						|
    ui->AntDescription6->setEnabled(enable);
 | 
						|
    ui->AntDescription7->setEnabled(enable);
 | 
						|
    ui->AntDescription8->setEnabled(enable);
 | 
						|
    ui->AntDescription9->setEnabled(enable);
 | 
						|
    ui->AntDescription10->setEnabled(enable);
 | 
						|
    ui->AntDescription11->setEnabled(enable);
 | 
						|
    ui->AntDescription12->setEnabled(enable);
 | 
						|
    ui->AntDescription13->setEnabled(enable);
 | 
						|
    ui->AntDescription14->setEnabled(enable);
 | 
						|
    ui->AntDescription15->setEnabled(enable);
 | 
						|
    ui->AntDescription16->setEnabled(enable);
 | 
						|
    if (enable)
 | 
						|
        ui->AntDescriptionColumnLabel->setText("Antenna description");
 | 
						|
    else
 | 
						|
        ui->AntDescriptionColumnLabel->setText("Antenna description (enable PSK Reporter)");
 | 
						|
}
 | 
						|
 | 
						|
void DevSetup::on_cbPSKReporter_clicked(bool b)
 | 
						|
{
 | 
						|
  m_pskReporter=b;
 | 
						|
  setEnableAntennaDescriptions(m_pskReporter);
 | 
						|
}
 | 
						|
 | 
						|
void DevSetup::on_pttMethodComboBox_activated(int index)
 | 
						|
{
 | 
						|
  m_pttMethodIndex=index;
 | 
						|
  enableWidgets();
 | 
						|
}
 | 
						|
 | 
						|
void DevSetup::on_catPortComboBox_activated(int index)
 | 
						|
{
 | 
						|
  m_catPortIndex=index;
 | 
						|
  m_catPort=ui->catPortComboBox->itemText(index);
 | 
						|
}
 | 
						|
 | 
						|
void DevSetup::on_cbEnableCAT_toggled(bool b)
 | 
						|
{
 | 
						|
  m_catEnabled=b;
 | 
						|
  enableWidgets();
 | 
						|
  ui->cbSplit->setChecked(m_bSplit and m_catEnabled);
 | 
						|
}
 | 
						|
 | 
						|
void DevSetup::on_serialRateComboBox_activated(int index)
 | 
						|
{
 | 
						|
  m_serialRateIndex=index;
 | 
						|
  m_serialRate=ui->serialRateComboBox->itemText(index).toInt();
 | 
						|
}
 | 
						|
 | 
						|
void DevSetup::on_handshakeComboBox_activated(int index)
 | 
						|
{
 | 
						|
  m_handshakeIndex=index;
 | 
						|
  m_handshake=ui->handshakeComboBox->itemText(index);
 | 
						|
}
 | 
						|
 | 
						|
void DevSetup::on_handshakeComboBox_currentIndexChanged(int index)
 | 
						|
{
 | 
						|
  ui->RTSCheckBox->setEnabled(index != 2);
 | 
						|
}
 | 
						|
 | 
						|
void DevSetup::on_dataBitsComboBox_activated(int index)
 | 
						|
{
 | 
						|
  m_dataBitsIndex=index;
 | 
						|
  m_dataBits=ui->dataBitsComboBox->itemText(index).toInt();
 | 
						|
}
 | 
						|
 | 
						|
void DevSetup::on_stopBitsComboBox_activated(int index)
 | 
						|
{
 | 
						|
  m_stopBitsIndex=index;
 | 
						|
  m_stopBits=ui->stopBitsComboBox->itemText(index).toInt();
 | 
						|
}
 | 
						|
 | 
						|
void DevSetup::on_rigComboBox_activated(int index)
 | 
						|
{
 | 
						|
  m_rig = ui->rigComboBox->itemData (index).toInt ();
 | 
						|
  enableWidgets();
 | 
						|
}
 | 
						|
 | 
						|
void DevSetup::on_cbID73_toggled(bool checked)
 | 
						|
{
 | 
						|
  m_After73=checked;
 | 
						|
}
 | 
						|
 | 
						|
void DevSetup::on_testCATButton_clicked()
 | 
						|
{
 | 
						|
  openRig();
 | 
						|
  if(!m_catEnabled) return;
 | 
						|
  QString t;
 | 
						|
  double fMHz=rig->getFreq(RIG_VFO_CURR)/1000000.0;
 | 
						|
  if(fMHz>0.0) {
 | 
						|
    t.sprintf("Rig control appears to be working.\nDial Frequency:  %.6f MHz",
 | 
						|
              fMHz);
 | 
						|
  } else {
 | 
						|
    t.sprintf("Rig control error %d\nFailed to read frequency.",
 | 
						|
              int(1000000.0*fMHz));
 | 
						|
    if(m_poll>0) {
 | 
						|
      m_catEnabled=false;
 | 
						|
      ui->cbEnableCAT->setChecked(false);
 | 
						|
    }
 | 
						|
  }
 | 
						|
  msgBox(t);
 | 
						|
}
 | 
						|
 | 
						|
void DevSetup::openRig()
 | 
						|
{
 | 
						|
  QString t;
 | 
						|
  int ret;
 | 
						|
 | 
						|
  if(!m_catEnabled) return;
 | 
						|
  if(m_bRigOpen) {
 | 
						|
    rig->close();
 | 
						|
    if(m_rig<9900) delete rig;
 | 
						|
    m_bRigOpen=false;
 | 
						|
  }
 | 
						|
 | 
						|
  rig = new Rig();
 | 
						|
 | 
						|
  if(m_rig<9900) {
 | 
						|
    if (!rig->init(m_rig)) {
 | 
						|
      msgBox("Rig init failure");
 | 
						|
      m_catEnabled=false;
 | 
						|
      return;
 | 
						|
    }
 | 
						|
    QString sCATport=m_catPort;
 | 
						|
#ifdef WIN32
 | 
						|
    sCATport="\\\\.\\" + m_catPort;    //Allow COM ports above 9
 | 
						|
#endif
 | 
						|
    rig->setConf("rig_pathname", sCATport.toLatin1().data());
 | 
						|
    char buf[80];
 | 
						|
    sprintf(buf,"%d",m_serialRate);
 | 
						|
    rig->setConf("serial_speed",buf);
 | 
						|
    sprintf(buf,"%d",m_dataBits);
 | 
						|
    rig->setConf("data_bits",buf);
 | 
						|
    sprintf(buf,"%d",m_stopBits);
 | 
						|
    rig->setConf("stop_bits",buf);
 | 
						|
    rig->setConf("serial_handshake",m_handshake.toLatin1().data());
 | 
						|
    rig->setConf("dtr_state",m_bDTR ? "ON" : "OFF");
 | 
						|
    if(ui->RTSCheckBox->isEnabled()) {
 | 
						|
      rig->setConf("rts_state",m_bRTS ? "ON" : "OFF");
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  ret=rig->open(m_rig);
 | 
						|
  if(ret==RIG_OK) {
 | 
						|
    m_bRigOpen=true;
 | 
						|
  } else {
 | 
						|
    t="Open rig failed";
 | 
						|
    msgBox(t);
 | 
						|
    m_catEnabled=false;
 | 
						|
    ui->cbEnableCAT->setChecked(false);
 | 
						|
    return;
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
void DevSetup::on_testPTTButton_clicked()
 | 
						|
{
 | 
						|
  m_test=1-m_test;
 | 
						|
  if(m_pttMethodIndex==1 or m_pttMethodIndex==2) {
 | 
						|
    ptt(m_pttPort,m_test,&g2_iptt,&g2_COMportOpen);
 | 
						|
  }
 | 
						|
  if(m_pttMethodIndex==0 and !m_bRigOpen) {
 | 
						|
//    on_testCATButton_clicked();
 | 
						|
    openRig();
 | 
						|
  }
 | 
						|
  if(m_pttMethodIndex==0 and m_bRigOpen) {
 | 
						|
    if(m_test==0) rig->setPTT(RIG_PTT_OFF, RIG_VFO_CURR);
 | 
						|
    if(m_test==1) {
 | 
						|
      if(m_pttData) rig->setPTT(RIG_PTT_ON_DATA, RIG_VFO_CURR);
 | 
						|
      if(!m_pttData) rig->setPTT(RIG_PTT_ON_MIC, RIG_VFO_CURR);
 | 
						|
    }
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
void DevSetup::on_DTRCheckBox_toggled(bool checked)
 | 
						|
{
 | 
						|
  m_bDTR=checked;
 | 
						|
}
 | 
						|
 | 
						|
void DevSetup::on_RTSCheckBox_toggled(bool checked)
 | 
						|
{
 | 
						|
  m_bRTS=checked;
 | 
						|
}
 | 
						|
 | 
						|
void DevSetup::on_rbData_toggled(bool checked)
 | 
						|
{
 | 
						|
  m_pttData=checked;
 | 
						|
}
 | 
						|
 | 
						|
void DevSetup::on_pollSpinBox_valueChanged(int n)
 | 
						|
{
 | 
						|
  m_poll=n;
 | 
						|
}
 | 
						|
 | 
						|
void DevSetup::on_pttComboBox_currentIndexChanged(int index)
 | 
						|
{
 | 
						|
  m_pttPort=index;
 | 
						|
  enableWidgets();
 | 
						|
}
 | 
						|
 | 
						|
void DevSetup::on_pttMethodComboBox_currentIndexChanged(int index)
 | 
						|
{
 | 
						|
  m_pttMethodIndex=index;
 | 
						|
  bool b=m_pttMethodIndex==1 or m_pttMethodIndex==2;
 | 
						|
  ui->pttComboBox->setEnabled(b);
 | 
						|
}
 | 
						|
 | 
						|
void DevSetup::enableWidgets()
 | 
						|
{
 | 
						|
  ui->cbEnableCAT->setChecked(m_catEnabled);
 | 
						|
  ui->rigComboBox->setEnabled(m_catEnabled);
 | 
						|
  ui->testCATButton->setEnabled(m_catEnabled);
 | 
						|
  ui->label_4->setEnabled(m_catEnabled);
 | 
						|
  ui->label_47->setEnabled(m_catEnabled);
 | 
						|
  ui->cbSplit->setEnabled(m_catEnabled);
 | 
						|
  if(m_rig==9999) {                    //No Split Tx with HRD
 | 
						|
    ui->cbSplit->setChecked(false);
 | 
						|
    ui->cbSplit->setEnabled(false);
 | 
						|
  }
 | 
						|
  ui->cbXIT->setEnabled(m_catEnabled);
 | 
						|
 | 
						|
  bool bSerial=m_catEnabled and (m_rig<9900);
 | 
						|
  ui->catPortComboBox->setEnabled(bSerial);
 | 
						|
  ui->serialRateComboBox->setEnabled(bSerial);
 | 
						|
  ui->dataBitsComboBox->setEnabled(bSerial);
 | 
						|
  ui->stopBitsComboBox->setEnabled(bSerial);
 | 
						|
  ui->handshakeComboBox->setEnabled(bSerial);
 | 
						|
  ui->DTRCheckBox->setEnabled(bSerial);
 | 
						|
  ui->DTRCheckBox->setChecked(m_bDTR);
 | 
						|
  ui->RTSCheckBox->setEnabled(bSerial && m_handshakeIndex != 2);
 | 
						|
  ui->RTSCheckBox->setChecked(m_bRTS);
 | 
						|
  ui->rbData->setEnabled(bSerial);
 | 
						|
  ui->rbMic->setEnabled(bSerial);
 | 
						|
  ui->label_21->setEnabled(bSerial);
 | 
						|
  ui->label_22->setEnabled(bSerial);
 | 
						|
  ui->label_23->setEnabled(bSerial);
 | 
						|
  ui->label_24->setEnabled(bSerial);
 | 
						|
  ui->label_25->setEnabled(bSerial);
 | 
						|
 | 
						|
  ui->pollSpinBox->setEnabled(m_catEnabled);
 | 
						|
  bool b1=(m_pttMethodIndex==1 or m_pttMethodIndex==2);
 | 
						|
  ui->pttComboBox->setEnabled(b1);
 | 
						|
  b1=b1 and (m_pttPort!=0);
 | 
						|
  bool b2 = (m_catEnabled and m_pttMethodIndex==1 and m_rig<9900) or
 | 
						|
            (m_catEnabled and m_pttMethodIndex==2 and m_rig<9900);
 | 
						|
  bool b3 = (m_catEnabled and m_pttMethodIndex==0);
 | 
						|
  ui->testPTTButton->setEnabled(b1 or b2 or b3);  //Include PTT via HRD or Commander
 | 
						|
  setEnableAntennaDescriptions(m_pskReporter);
 | 
						|
}
 | 
						|
 | 
						|
void DevSetup::on_cbSplit_toggled(bool checked)
 | 
						|
{
 | 
						|
  m_bSplit=checked;
 | 
						|
  if(m_bSplit and m_bXIT) ui->cbXIT->setChecked(false);
 | 
						|
}
 | 
						|
 | 
						|
void DevSetup::on_cbXIT_toggled(bool checked)
 | 
						|
{
 | 
						|
  m_bXIT=checked;
 | 
						|
  if(m_bSplit and m_bXIT) ui->cbSplit->setChecked(false);
 | 
						|
}
 | 
						|
 | 
						|
void DevSetup::loadAudioDevices (AudioDevices const& d, QComboBox * cb, QAudioDeviceInfo const& device, QAudioDeviceInfo const& defaultDevice)
 | 
						|
{
 | 
						|
  using std::copy;
 | 
						|
  using std::back_inserter;
 | 
						|
 | 
						|
  int currentIndex = -1;
 | 
						|
  int defaultIndex = 0;
 | 
						|
  for (AudioDevices::const_iterator p = d.cbegin (); p != d.cend (); ++p)
 | 
						|
    {
 | 
						|
      // convert supported channel counts into something we can store in the item model
 | 
						|
      QList<QVariant> channelCounts;
 | 
						|
      QList<int> scc (p->supportedChannelCounts ());
 | 
						|
      copy (scc.cbegin (), scc.cend (), back_inserter (channelCounts));
 | 
						|
 | 
						|
      cb->addItem (p->deviceName (), channelCounts);
 | 
						|
      if (*p == device)
 | 
						|
	{
 | 
						|
	  currentIndex = p - d.cbegin ();
 | 
						|
	}
 | 
						|
      else if (*p == defaultDevice)
 | 
						|
	{
 | 
						|
	  defaultIndex = p - d.cbegin ();
 | 
						|
	}
 | 
						|
    }
 | 
						|
  cb->setCurrentIndex (currentIndex != -1 ? currentIndex : defaultIndex);
 | 
						|
}
 | 
						|
 | 
						|
void DevSetup::updateAudioChannels (QComboBox const * srcCb, int index, QComboBox * cb, bool allowBoth)
 | 
						|
{
 | 
						|
  // disable all items
 | 
						|
  for (int i (0); i < cb->count (); ++i)
 | 
						|
    {
 | 
						|
      cb->setItemData (i, 0, Qt::UserRole - 1); // undocumented model internals allows disable
 | 
						|
    }
 | 
						|
 | 
						|
  Q_FOREACH (QVariant const& v, srcCb->itemData (index).toList ())
 | 
						|
    {
 | 
						|
      // enable valid options
 | 
						|
      int n (v.toInt ());
 | 
						|
      if (2 == n)
 | 
						|
	{
 | 
						|
	  cb->setItemData (AudioDevice::Left, 32 | 1, Qt::UserRole - 1); // undocumented model internals allows enable
 | 
						|
	  cb->setItemData (AudioDevice::Right, 32 | 1, Qt::UserRole - 1);
 | 
						|
	  if (allowBoth)
 | 
						|
	    {
 | 
						|
	      cb->setItemData (AudioDevice::Both, 32 | 1, Qt::UserRole - 1);
 | 
						|
	    }
 | 
						|
	}
 | 
						|
      else if (1 == n)
 | 
						|
	{
 | 
						|
	  cb->setItemData (AudioDevice::Mono, 32 | 1, Qt::UserRole - 1);
 | 
						|
	}
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
typedef QMap<QString, int> RigList;
 | 
						|
 | 
						|
int rigCallback (rig_caps const * caps, void * cbData)
 | 
						|
{
 | 
						|
  RigList * rigs = reinterpret_cast<RigList *> (cbData);
 | 
						|
 | 
						|
  QString key (QString::fromLatin1 (caps->mfg_name).trimmed ()
 | 
						|
	       + ' '+ QString::fromLatin1 (caps->model_name).trimmed ()
 | 
						|
	       // + ' '+ QString::fromLatin1 (caps->version).trimmed ()
 | 
						|
	       // + " (" + QString::fromLatin1 (rig_strstatus (caps->status)).trimmed () + ')'
 | 
						|
	       );
 | 
						|
 | 
						|
  (*rigs)[key] = caps->rig_model;
 | 
						|
 | 
						|
  return 1;			// keep them coming
 | 
						|
}
 | 
						|
 | 
						|
void DevSetup::enumerateRigs ()
 | 
						|
{
 | 
						|
  RigList rigs;
 | 
						|
  rig_load_all_backends ();
 | 
						|
  rig_list_foreach (rigCallback, &rigs);
 | 
						|
 | 
						|
  for (RigList::const_iterator r = rigs.cbegin (); r != rigs.cend (); ++r)
 | 
						|
    {
 | 
						|
      ui->rigComboBox->addItem (r.key (), r.value ());
 | 
						|
    }
 | 
						|
 | 
						|
  ui->rigComboBox->addItem ("DX Lab Suite Commander", 9998);
 | 
						|
  ui->rigComboBox->addItem ("Ham Radio Deluxe", 9999);
 | 
						|
  ui->rigComboBox->setCurrentIndex (ui->rigComboBox->findData (m_rig));
 | 
						|
}
 |