kopia lustrzana https://gitlab.com/eliggett/wfview
Added preference file capability, additional radio identity functions.
rodzic
da4b526f81
commit
59c5113f43
|
@ -115,7 +115,7 @@ void commHandler::receiveDataIn()
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// did not receive the entire thing so roll back:
|
// did not receive the entire thing so roll back:
|
||||||
qDebug() << "Rolling back transaction. End not detected. Lenth: " << inPortData.length();
|
// qDebug() << "Rolling back transaction. End not detected. Lenth: " << inPortData.length();
|
||||||
//printHex(inPortData, false, true);
|
//printHex(inPortData, false, true);
|
||||||
port->rollbackTransaction();
|
port->rollbackTransaction();
|
||||||
rolledBack = true;
|
rolledBack = true;
|
||||||
|
|
|
@ -2,5 +2,62 @@
|
||||||
|
|
||||||
freqMemory::freqMemory()
|
freqMemory::freqMemory()
|
||||||
{
|
{
|
||||||
|
// NOTE: These are also present in the header and
|
||||||
|
// the array must be changed if these are changed.
|
||||||
|
numPresets = 100;
|
||||||
|
maxIndex = numPresets - 1;
|
||||||
|
initializePresets();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void freqMemory::initializePresets()
|
||||||
|
{
|
||||||
|
qDebug() << "Initializing " << numPresets << " memory channels";
|
||||||
|
|
||||||
|
for(unsigned int p=0; p < numPresets; p++)
|
||||||
|
{
|
||||||
|
presets[p].frequency = 14.1 + p/1000.0;
|
||||||
|
presets[p].mode = modeUSB;
|
||||||
|
presets[p].isSet = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void freqMemory::setPreset(unsigned int index, double frequency, mode_kind mode)
|
||||||
|
{
|
||||||
|
if(index <= maxIndex)
|
||||||
|
{
|
||||||
|
presets[index].frequency = frequency;
|
||||||
|
presets[index].mode = mode;
|
||||||
|
presets[index].isSet = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
preset_kind freqMemory::getPreset(unsigned int index)
|
||||||
|
{
|
||||||
|
//validate then return
|
||||||
|
|
||||||
|
if(index <= maxIndex)
|
||||||
|
{
|
||||||
|
return presets[index];
|
||||||
|
}
|
||||||
|
|
||||||
|
// else, return something obviously wrong
|
||||||
|
preset_kind temp;
|
||||||
|
temp.frequency=12.345;
|
||||||
|
temp.mode = modeUSB;
|
||||||
|
temp.isSet = false;
|
||||||
|
return temp;
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned int freqMemory::getNumPresets()
|
||||||
|
{
|
||||||
|
return numPresets;
|
||||||
|
}
|
||||||
|
|
||||||
|
void freqMemory::dumpMemory()
|
||||||
|
{
|
||||||
|
for(unsigned int p=0; p < numPresets; p++)
|
||||||
|
{
|
||||||
|
qDebug() << "Index: " << p << " freq: " << presets[p].frequency << " Mode: " << presets[p].mode << " isSet: " << presets[p].isSet;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
13
freqmemory.h
13
freqmemory.h
|
@ -22,9 +22,9 @@ enum mode_kind {
|
||||||
};
|
};
|
||||||
|
|
||||||
struct preset_kind {
|
struct preset_kind {
|
||||||
QString name;
|
// QString name;
|
||||||
QString comment;
|
// QString comment;
|
||||||
unsigned int index; // channel number
|
// unsigned int index; // channel number
|
||||||
double frequency;
|
double frequency;
|
||||||
mode_kind mode;
|
mode_kind mode;
|
||||||
bool isSet;
|
bool isSet;
|
||||||
|
@ -37,12 +37,17 @@ public:
|
||||||
void setPreset(unsigned int index, double frequency, mode_kind mode);
|
void setPreset(unsigned int index, double frequency, mode_kind mode);
|
||||||
void setPreset(unsigned int index, double frequency, mode_kind mode, QString name);
|
void setPreset(unsigned int index, double frequency, mode_kind mode, QString name);
|
||||||
void setPreset(unsigned int index, double frequency, mode_kind mode, QString name, QString comment);
|
void setPreset(unsigned int index, double frequency, mode_kind mode, QString name, QString comment);
|
||||||
|
void dumpMemory();
|
||||||
|
unsigned int getNumPresets();
|
||||||
preset_kind getPreset(unsigned int index);
|
preset_kind getPreset(unsigned int index);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void initializePresets();
|
void initializePresets();
|
||||||
|
unsigned int numPresets;
|
||||||
unsigned int maxIndex;
|
unsigned int maxIndex;
|
||||||
|
//QVector <preset_kind> presets;
|
||||||
|
preset_kind presets[100];
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // FREQMEMORY_H
|
#endif // FREQMEMORY_H
|
||||||
|
|
5
main.cpp
5
main.cpp
|
@ -9,6 +9,11 @@ int main(int argc, char *argv[])
|
||||||
QApplication a(argc, argv);
|
QApplication a(argc, argv);
|
||||||
//a.setStyle( "Fusion" );
|
//a.setStyle( "Fusion" );
|
||||||
|
|
||||||
|
|
||||||
|
a.setOrganizationName("liggett");
|
||||||
|
a.setOrganizationDomain("nodomain");
|
||||||
|
a.setApplicationName("RigView");
|
||||||
|
|
||||||
wfmain w;
|
wfmain w;
|
||||||
w.show();
|
w.show();
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
#include "rigcommander.h"
|
#include "rigcommander.h"
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
|
|
||||||
|
#include "rigidentities.h"
|
||||||
|
|
||||||
// Copytight 2017,2018 Elliott H. Liggett
|
// Copytight 2017,2018 Elliott H. Liggett
|
||||||
|
|
||||||
// This file parses data from the radio and also forms commands to the radio.
|
// This file parses data from the radio and also forms commands to the radio.
|
||||||
|
@ -358,7 +360,7 @@ void rigCommander::parseData(QByteArray dataInput)
|
||||||
if(data.length())
|
if(data.length())
|
||||||
{
|
{
|
||||||
// Finally this almost never happens
|
// Finally this almost never happens
|
||||||
qDebug() << "Data length too short: " << data.length() << " bytes. Data:";
|
// qDebug() << "Data length too short: " << data.length() << " bytes. Data:";
|
||||||
printHex(data, false, true);
|
printHex(data, false, true);
|
||||||
}
|
}
|
||||||
// no
|
// no
|
||||||
|
@ -369,14 +371,14 @@ void rigCommander::parseData(QByteArray dataInput)
|
||||||
|
|
||||||
if(!data.startsWith("\xFE\xFE"))
|
if(!data.startsWith("\xFE\xFE"))
|
||||||
{
|
{
|
||||||
qDebug() << "Warning: Invalid data received, did not start with FE FE.";
|
// qDebug() << "Warning: Invalid data received, did not start with FE FE.";
|
||||||
// find 94 e0 and shift over,
|
// find 94 e0 and shift over,
|
||||||
// or look inside for a second FE FE
|
// or look inside for a second FE FE
|
||||||
// Often a local echo will miss a few bytes at the beginning.
|
// Often a local echo will miss a few bytes at the beginning.
|
||||||
if(data.startsWith('\xFE'))
|
if(data.startsWith('\xFE'))
|
||||||
{
|
{
|
||||||
data.prepend('\xFE');
|
data.prepend('\xFE');
|
||||||
qDebug() << "Warning: Working with prepended data stream.";
|
// qDebug() << "Warning: Working with prepended data stream.";
|
||||||
parseData(payloadIn);
|
parseData(payloadIn);
|
||||||
return;
|
return;
|
||||||
} else {
|
} else {
|
||||||
|
@ -475,9 +477,9 @@ void rigCommander::parseCommand()
|
||||||
parseLevels();
|
parseLevels();
|
||||||
break;
|
break;
|
||||||
case '\x19':
|
case '\x19':
|
||||||
// qDebug() << "Have rig ID: " << (int)payloadIn[2];
|
// qDebug() << "Have rig ID: " << (unsigned int)payloadIn[2];
|
||||||
// printHex(payloadIn, false, true);
|
// printHex(payloadIn, false, true);
|
||||||
// This returns the CIV address of the radio. (94 by default)
|
model = determineRadioModel(payloadIn[2]);
|
||||||
break;
|
break;
|
||||||
case '\x27':
|
case '\x27':
|
||||||
// scope data
|
// scope data
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
#include <QObject>
|
#include <QObject>
|
||||||
|
|
||||||
#include "commhandler.h"
|
#include "commhandler.h"
|
||||||
|
#include "rigidentities.h"
|
||||||
|
|
||||||
// This file figures out what to send to the comm and also
|
// This file figures out what to send to the comm and also
|
||||||
// parses returns into useful things.
|
// parses returns into useful things.
|
||||||
|
@ -109,6 +110,7 @@ private:
|
||||||
double spectrumStartFreq;
|
double spectrumStartFreq;
|
||||||
double spectrumEndFreq;
|
double spectrumEndFreq;
|
||||||
|
|
||||||
|
model_kind model;
|
||||||
|
|
||||||
double frequencyMhz;
|
double frequencyMhz;
|
||||||
unsigned char civAddr; // 0x94 is default = 148decimal
|
unsigned char civAddr; // 0x94 is default = 148decimal
|
||||||
|
|
|
@ -0,0 +1,40 @@
|
||||||
|
#include "rigidentities.h"
|
||||||
|
|
||||||
|
model_kind determineRadioModel(unsigned char rigID)
|
||||||
|
{
|
||||||
|
|
||||||
|
model_kind rig;
|
||||||
|
|
||||||
|
switch(rigID)
|
||||||
|
{
|
||||||
|
case model7100:
|
||||||
|
rig = model7100;
|
||||||
|
break;
|
||||||
|
case model7200:
|
||||||
|
rig = model7200;
|
||||||
|
break;
|
||||||
|
case model7300:
|
||||||
|
rig = model7300;
|
||||||
|
break;
|
||||||
|
case model7600:
|
||||||
|
rig = model7600;
|
||||||
|
break;
|
||||||
|
case model7610:
|
||||||
|
rig = model7610;
|
||||||
|
break;
|
||||||
|
case model7700:
|
||||||
|
rig = model7700;
|
||||||
|
break;
|
||||||
|
case model7800:
|
||||||
|
rig = model7800;
|
||||||
|
break;
|
||||||
|
case model7850:
|
||||||
|
rig = model7850;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
rig = modelUnknown;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return rig;
|
||||||
|
}
|
|
@ -0,0 +1,26 @@
|
||||||
|
#ifndef RIGIDENTITIES_H
|
||||||
|
#define RIGIDENTITIES_H
|
||||||
|
|
||||||
|
// Credit:
|
||||||
|
// http://www.docksideradio.com/Icom%20Radio%20Hex%20Addresses.htm
|
||||||
|
|
||||||
|
// 7850 and 7851 have the same commands and are essentially identical
|
||||||
|
|
||||||
|
enum model_kind {
|
||||||
|
model7100 = 0x88,
|
||||||
|
model7200 = 0x76,
|
||||||
|
model7300 = 0x94,
|
||||||
|
model7600 = 0x7A,
|
||||||
|
model7610 = 0x98,
|
||||||
|
model7700 = 0x74,
|
||||||
|
model7800 = 0x6A,
|
||||||
|
model7850 = 0x8E,
|
||||||
|
modelUnknown = 0xFF
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
model_kind determineRadioModel(unsigned char rigID);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#endif // RIGIDENTITIES_H
|
175
wfmain.cpp
175
wfmain.cpp
|
@ -2,6 +2,7 @@
|
||||||
#include "ui_wfmain.h"
|
#include "ui_wfmain.h"
|
||||||
|
|
||||||
#include "commhandler.h"
|
#include "commhandler.h"
|
||||||
|
#include "rigidentities.h"
|
||||||
|
|
||||||
wfmain::wfmain(QWidget *parent) :
|
wfmain::wfmain(QWidget *parent) :
|
||||||
QMainWindow(parent),
|
QMainWindow(parent),
|
||||||
|
@ -161,19 +162,79 @@ wfmain::~wfmain()
|
||||||
delete ui;
|
delete ui;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void wfmain::loadSettings()
|
||||||
|
{
|
||||||
|
qDebug() << "Loading settings from " << settings.fileName();
|
||||||
|
|
||||||
|
// Basic things to load:
|
||||||
|
|
||||||
|
// UI: (full screen, dark theme, draw peaks, colors, etc)
|
||||||
|
|
||||||
|
// Radio and Comms: C-IV addr, port to use
|
||||||
|
|
||||||
|
// Misc. user settings (enable PTT, draw peaks, etc)
|
||||||
|
|
||||||
|
// Memory channels
|
||||||
|
}
|
||||||
|
|
||||||
|
void wfmain::saveSettings()
|
||||||
|
{
|
||||||
|
qDebug() << "Saving settings to " << settings.fileName();
|
||||||
|
// Basic things to load:
|
||||||
|
|
||||||
|
// UI: (full screen, dark theme, draw peaks, colors, etc)
|
||||||
|
settings.beginGroup("Interface");
|
||||||
|
settings.setValue("UseFullScreen", true);
|
||||||
|
settings.setValue("UseDarkMode", true);
|
||||||
|
settings.setValue("DrawPeaks", true);
|
||||||
|
settings.endGroup();
|
||||||
|
|
||||||
|
// Radio and Comms: C-IV addr, port to use
|
||||||
|
settings.beginGroup("Radio");
|
||||||
|
settings.setValue("RigCIVuInt", 0x94);
|
||||||
|
settings.setValue("SerialPortRadio", "/dev/ttyUSB0");
|
||||||
|
settings.endGroup();
|
||||||
|
|
||||||
|
// Misc. user settings (enable PTT, draw peaks, etc)
|
||||||
|
settings.beginGroup("Controls");
|
||||||
|
settings.setValue("EnablePTT", true);
|
||||||
|
settings.setValue("NiceTS", true);
|
||||||
|
settings.endGroup();
|
||||||
|
|
||||||
|
// Memory channels
|
||||||
|
settings.beginGroup("Memory");
|
||||||
|
settings.beginWriteArray("Channel", (int)mem.getNumPresets());
|
||||||
|
|
||||||
|
preset_kind temp;
|
||||||
|
for(int i=0; i < (int)mem.getNumPresets(); i++)
|
||||||
|
{
|
||||||
|
temp = mem.getPreset((int)i);
|
||||||
|
settings.setArrayIndex(i);
|
||||||
|
settings.setValue("freq", temp.frequency);
|
||||||
|
settings.setValue("mode", temp.mode);
|
||||||
|
}
|
||||||
|
|
||||||
|
settings.endArray();
|
||||||
|
settings.endGroup();
|
||||||
|
|
||||||
|
settings.sync(); // Automatic, not needed (supposedly)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void wfmain::getInitialRigState()
|
void wfmain::getInitialRigState()
|
||||||
{
|
{
|
||||||
// Things to get:
|
// Initial list of queries to the radio.
|
||||||
// Freq, Mode, Scope cent/fixed, scope span, edge setting
|
// These are made when the program starts up
|
||||||
// data mode (may be combined with scope mode)
|
// and are used to adjust the UI to match the radio settings
|
||||||
|
// the polling interval is set at 100ms. Faster is possible but slower
|
||||||
|
// computers will glitch occassionally.
|
||||||
|
|
||||||
cmdOutQue.append(cmdGetRigID);
|
cmdOutQue.append(cmdGetRigID); // This may be used in the future.
|
||||||
|
|
||||||
cmdOutQue.append(cmdGetFreq);
|
cmdOutQue.append(cmdGetFreq);
|
||||||
cmdOutQue.append(cmdGetMode);
|
cmdOutQue.append(cmdGetMode);
|
||||||
|
|
||||||
cmdOutQue.append(cmdDispEnable);
|
cmdOutQue.append(cmdNone);
|
||||||
cmdOutQue.append(cmdSpecOn);
|
|
||||||
|
|
||||||
cmdOutQue.append(cmdGetFreq);
|
cmdOutQue.append(cmdGetFreq);
|
||||||
cmdOutQue.append(cmdGetMode);
|
cmdOutQue.append(cmdGetMode);
|
||||||
|
@ -181,6 +242,14 @@ void wfmain::getInitialRigState()
|
||||||
cmdOutQue.append(cmdGetRxGain);
|
cmdOutQue.append(cmdGetRxGain);
|
||||||
cmdOutQue.append(cmdGetAfGain);
|
cmdOutQue.append(cmdGetAfGain);
|
||||||
cmdOutQue.append(cmdGetSql);
|
cmdOutQue.append(cmdGetSql);
|
||||||
|
// get TX level
|
||||||
|
// get Scope reference Level
|
||||||
|
|
||||||
|
cmdOutQue.append(cmdDispEnable);
|
||||||
|
cmdOutQue.append(cmdSpecOn);
|
||||||
|
|
||||||
|
// get spectrum mode (center or edge)
|
||||||
|
// get spectrum span or edge limit number [1,2,3], update UI
|
||||||
|
|
||||||
cmdOut = cmdNone;
|
cmdOut = cmdNone;
|
||||||
delayedCommand->start();
|
delayedCommand->start();
|
||||||
|
@ -509,7 +578,6 @@ void wfmain::handleWFClick(QMouseEvent *me)
|
||||||
|
|
||||||
void wfmain::on_startBtn_clicked()
|
void wfmain::on_startBtn_clicked()
|
||||||
{
|
{
|
||||||
//emit scopeDisplayEnable(); // TODO: need a little delay between these two
|
|
||||||
emit spectOutputEnable();
|
emit spectOutputEnable();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -530,12 +598,18 @@ void wfmain::on_debugBtn_clicked()
|
||||||
// emit getBandStackReg(0x11,1); // 20M, latest
|
// emit getBandStackReg(0x11,1); // 20M, latest
|
||||||
// emit getRfGain();
|
// emit getRfGain();
|
||||||
|
|
||||||
for(int a=0; a<100; a++)
|
// for(int a=0; a<100; a++)
|
||||||
{
|
// {
|
||||||
cmdOutQue.append(cmdGetRxGain);
|
// cmdOutQue.append(cmdGetRxGain);
|
||||||
cmdOutQue.append(cmdGetSql);
|
// cmdOutQue.append(cmdGetSql);
|
||||||
}
|
// }
|
||||||
delayedCommand->start();
|
// delayedCommand->start();
|
||||||
|
|
||||||
|
// emit getRigID();
|
||||||
|
|
||||||
|
//mem.dumpMemory();
|
||||||
|
|
||||||
|
saveSettings();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -554,9 +628,10 @@ void wfmain::receiveMode(QString mode)
|
||||||
if( currentModeIndex == index)
|
if( currentModeIndex == index)
|
||||||
{
|
{
|
||||||
// do nothing, no need to change the selected mode and fire more events off.
|
// do nothing, no need to change the selected mode and fire more events off.
|
||||||
return;
|
// TODO/NOTE: This will not check the DATA mode status, may be worth re-thinking this.
|
||||||
}
|
// Do not update UI.
|
||||||
if((index >= 0) && (index < 9))
|
// return;
|
||||||
|
} else if((index >= 0) && (index < 9))
|
||||||
{
|
{
|
||||||
ui->modeSelectCombo->setCurrentIndex(index);
|
ui->modeSelectCombo->setCurrentIndex(index);
|
||||||
currentModeIndex = index;
|
currentModeIndex = index;
|
||||||
|
@ -576,12 +651,19 @@ void wfmain::receiveDataModeStatus(bool dataEnabled)
|
||||||
{
|
{
|
||||||
// USB
|
// USB
|
||||||
ui->modeSelectCombo->setCurrentIndex(8);
|
ui->modeSelectCombo->setCurrentIndex(8);
|
||||||
|
ui->modeLabel->setText( "USB-D" );
|
||||||
|
|
||||||
} else if (currentModeIndex == 1)
|
} else if (currentModeIndex == 1)
|
||||||
{
|
{
|
||||||
// LSB
|
// LSB
|
||||||
ui->modeSelectCombo->setCurrentIndex(9);
|
ui->modeSelectCombo->setCurrentIndex(9);
|
||||||
|
ui->modeLabel->setText( "LSB-D" );
|
||||||
|
|
||||||
}
|
}
|
||||||
ui->modeLabel->setText( ui->modeLabel->text() + "-D" );
|
// TODO: be more intelligent here to avoid -D-D-D.
|
||||||
|
// include the text above.
|
||||||
|
// ui->modeLabel->setText( ui->modeLabel->text() + "-D" );
|
||||||
|
// Remove if works.
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -613,8 +695,6 @@ void wfmain::on_fullScreenChk_clicked(bool checked)
|
||||||
this->showFullScreen();
|
this->showFullScreen();
|
||||||
else
|
else
|
||||||
this->showNormal();
|
this->showNormal();
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void wfmain::on_goFreqBtn_clicked()
|
void wfmain::on_goFreqBtn_clicked()
|
||||||
|
@ -624,6 +704,7 @@ void wfmain::on_goFreqBtn_clicked()
|
||||||
if(ok)
|
if(ok)
|
||||||
{
|
{
|
||||||
emit setFrequency(freq);
|
emit setFrequency(freq);
|
||||||
|
// TODO: change to cmdQueue
|
||||||
cmdOut = cmdGetFreq;
|
cmdOut = cmdGetFreq;
|
||||||
delayedCommand->start();
|
delayedCommand->start();
|
||||||
}
|
}
|
||||||
|
@ -729,6 +810,9 @@ void wfmain::on_scopeCenterModeChk_clicked(bool checked)
|
||||||
|
|
||||||
void wfmain::on_fEnterBtn_clicked()
|
void wfmain::on_fEnterBtn_clicked()
|
||||||
{
|
{
|
||||||
|
// TODO: do not jump to main tab on enter, only on return
|
||||||
|
// or something.
|
||||||
|
// Maybe this should be an option in settings.
|
||||||
on_goFreqBtn_clicked();
|
on_goFreqBtn_clicked();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1009,9 +1093,22 @@ void wfmain::on_fStoBtn_clicked()
|
||||||
// type frequency
|
// type frequency
|
||||||
// press Enter or Go
|
// press Enter or Go
|
||||||
// change mode if desired
|
// change mode if desired
|
||||||
|
// type in index number 0 through 99
|
||||||
// press STO
|
// press STO
|
||||||
// type memory location 0 through 99
|
|
||||||
// press Enter
|
bool ok;
|
||||||
|
QString freqString;
|
||||||
|
int preset_number = ui->freqMhzLineEdit->text().toInt(&ok);
|
||||||
|
|
||||||
|
if(ok && (preset_number >= 0) && (preset_number < 100))
|
||||||
|
{
|
||||||
|
// TODO: keep an enum around with the current mode
|
||||||
|
mem.setPreset(preset_number, freqMhz, (mode_kind)ui->modeSelectCombo->currentIndex());
|
||||||
|
} else {
|
||||||
|
qDebug() << "Could not store preset. Valid presets are 0 through 99.";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void wfmain::on_fRclBtn_clicked()
|
void wfmain::on_fRclBtn_clicked()
|
||||||
|
@ -1024,6 +1121,22 @@ void wfmain::on_fRclBtn_clicked()
|
||||||
// drop contents into text box, press go button
|
// drop contents into text box, press go button
|
||||||
// add delayed command for mode and data mode
|
// add delayed command for mode and data mode
|
||||||
|
|
||||||
|
preset_kind temp;
|
||||||
|
bool ok;
|
||||||
|
QString freqString;
|
||||||
|
int preset_number = ui->freqMhzLineEdit->text().toInt(&ok);
|
||||||
|
|
||||||
|
if(ok && (preset_number >= 0) && (preset_number < 100))
|
||||||
|
{
|
||||||
|
temp = mem.getPreset(preset_number);
|
||||||
|
freqString = QString("%1").arg(temp.frequency);
|
||||||
|
ui->freqMhzLineEdit->setText( freqString );
|
||||||
|
ui->goFreqBtn->click();
|
||||||
|
|
||||||
|
} else {
|
||||||
|
qDebug() << "Could not recall preset. Valid presets are 0 through 99.";
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void wfmain::on_rfGainSlider_valueChanged(int value)
|
void wfmain::on_rfGainSlider_valueChanged(int value)
|
||||||
|
@ -1065,6 +1178,8 @@ void wfmain::on_tuneNowBtn_clicked()
|
||||||
{
|
{
|
||||||
emit startATU();
|
emit startATU();
|
||||||
showStatusBarText("Starting ATU cycle...");
|
showStatusBarText("Starting ATU cycle...");
|
||||||
|
// TODO: place commands in a timer queue to check for completion and success
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void wfmain::on_tuneEnableChk_clicked(bool checked)
|
void wfmain::on_tuneEnableChk_clicked(bool checked)
|
||||||
|
@ -1083,3 +1198,21 @@ void wfmain::on_exitBtn_clicked()
|
||||||
// Are you sure?
|
// Are you sure?
|
||||||
QApplication::exit();
|
QApplication::exit();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void wfmain::on_pttOnBtn_clicked()
|
||||||
|
{
|
||||||
|
// is it enabled?
|
||||||
|
|
||||||
|
// Are we already PTT?
|
||||||
|
|
||||||
|
// send PTT
|
||||||
|
// Start 3 minute timer
|
||||||
|
}
|
||||||
|
|
||||||
|
void wfmain::on_pttOffBtn_clicked()
|
||||||
|
{
|
||||||
|
// Send the PTT OFF command (more than once?)
|
||||||
|
|
||||||
|
// Stop the 3 min tumer
|
||||||
|
|
||||||
|
}
|
||||||
|
|
13
wfmain.h
13
wfmain.h
|
@ -6,12 +6,14 @@
|
||||||
#include <QString>
|
#include <QString>
|
||||||
#include <QVector>
|
#include <QVector>
|
||||||
#include <QTimer>
|
#include <QTimer>
|
||||||
|
#include <QSettings>
|
||||||
|
|
||||||
|
|
||||||
#include "commhandler.h"
|
#include "commhandler.h"
|
||||||
#include "rigcommander.h"
|
#include "rigcommander.h"
|
||||||
|
#include "freqmemory.h"
|
||||||
#include <qcustomplot.h>
|
#include <qcustomplot.h>
|
||||||
#include<qserialportinfo.h>
|
#include <qserialportinfo.h>
|
||||||
|
|
||||||
namespace Ui {
|
namespace Ui {
|
||||||
class wfmain;
|
class wfmain;
|
||||||
|
@ -168,8 +170,15 @@ private slots:
|
||||||
|
|
||||||
void on_exitBtn_clicked();
|
void on_exitBtn_clicked();
|
||||||
|
|
||||||
|
void on_pttOnBtn_clicked();
|
||||||
|
|
||||||
|
void on_pttOffBtn_clicked();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Ui::wfmain *ui;
|
Ui::wfmain *ui;
|
||||||
|
QSettings settings;
|
||||||
|
void loadSettings();
|
||||||
|
void saveSettings();
|
||||||
QCustomPlot *plot; // line plot
|
QCustomPlot *plot; // line plot
|
||||||
QCustomPlot *wf; // waterfall image
|
QCustomPlot *wf; // waterfall image
|
||||||
QCPItemTracer * tracer; // marker of current frequency
|
QCPItemTracer * tracer; // marker of current frequency
|
||||||
|
@ -215,6 +224,8 @@ private:
|
||||||
cmdGetSql};
|
cmdGetSql};
|
||||||
cmds cmdOut;
|
cmds cmdOut;
|
||||||
QVector <cmds> cmdOutQue;
|
QVector <cmds> cmdOutQue;
|
||||||
|
freqMemory mem;
|
||||||
|
|
||||||
int oldFreqDialVal;
|
int oldFreqDialVal;
|
||||||
|
|
||||||
void bandStackBtnClick();
|
void bandStackBtnClick();
|
||||||
|
|
|
@ -457,6 +457,9 @@
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>30M</string>
|
<string>30M</string>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="shortcut">
|
||||||
|
<string>3</string>
|
||||||
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
|
@ -704,6 +707,9 @@
|
||||||
<height>30</height>
|
<height>30</height>
|
||||||
</size>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="toolTip">
|
||||||
|
<string><html><head/><body><p>To recall a preset memory:</p><p>1. Type in the preset number (0 through 99)</p><p>2. Press RCL (or use hotkey &quot;R&quot;)</p></body></html></string>
|
||||||
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>&RCL</string>
|
<string>&RCL</string>
|
||||||
</property>
|
</property>
|
||||||
|
@ -817,6 +823,9 @@
|
||||||
<height>30</height>
|
<height>30</height>
|
||||||
</size>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="toolTip">
|
||||||
|
<string><html><head/><body><p>To store a preset:</p><p>1. Set the desired frequency and mode per normal methods</p><p>2. Type the index to to store to (0 through 99)</p><p>3. Press STO (or use hotkey &quot;S&quot;)</p></body></html></string>
|
||||||
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>&STO</string>
|
<string>&STO</string>
|
||||||
</property>
|
</property>
|
||||||
|
|
|
@ -45,12 +45,14 @@ SOURCES += main.cpp\
|
||||||
wfmain.cpp \
|
wfmain.cpp \
|
||||||
commhandler.cpp \
|
commhandler.cpp \
|
||||||
rigcommander.cpp \
|
rigcommander.cpp \
|
||||||
freqmemory.cpp
|
freqmemory.cpp \
|
||||||
|
rigidentities.cpp
|
||||||
|
|
||||||
HEADERS += wfmain.h \
|
HEADERS += wfmain.h \
|
||||||
../../../../../usr/include/qcustomplot.h \
|
../../../../../usr/include/qcustomplot.h \
|
||||||
commhandler.h \
|
commhandler.h \
|
||||||
rigcommander.h \
|
rigcommander.h \
|
||||||
freqmemory.h
|
freqmemory.h \
|
||||||
|
rigidentities.h
|
||||||
|
|
||||||
FORMS += wfmain.ui
|
FORMS += wfmain.ui
|
||||||
|
|
Ładowanie…
Reference in New Issue