Add some feature in the hope of supporting sidetone

qcpfix
Phil Taylor 2023-02-14 18:47:32 +00:00
rodzic 6e5e22a672
commit 8b7377f096
12 zmienionych plików z 329 dodań i 137 usunięć

Wyświetl plik

@ -15,6 +15,7 @@ cwSender::cwSender(QWidget *parent) :
ui->textToSendEdit->setFocus(); ui->textToSendEdit->setFocus();
ui->statusbar->setToolTipDuration(3000); ui->statusbar->setToolTipDuration(3000);
this->setToolTipDuration(3000); this->setToolTipDuration(3000);
connect(ui->textToSendEdit->lineEdit(), &QLineEdit::textEdited, this, &cwSender::textChanged);
} }
cwSender::~cwSender() cwSender::~cwSender()
@ -26,13 +27,14 @@ cwSender::~cwSender()
void cwSender::showEvent(QShowEvent *event) void cwSender::showEvent(QShowEvent *event)
{ {
emit getCWSettings(); emit getCWSettings();
QMainWindow::showEvent(event);
(void)event; (void)event;
} }
void cwSender::handleKeySpeed(unsigned char wpm) void cwSender::handleKeySpeed(unsigned char wpm)
{ {
//qDebug(logCW()) << "Told that current WPM is" << wpm; //qDebug(logCW()) << "Told that current WPM is" << wpm;
if((wpm >= 6) && (wpm <=48)) if ((wpm >= 6) && (wpm <= 48))
{ {
//qDebug(logCW()) << "Setting WPM UI control to" << wpm; //qDebug(logCW()) << "Setting WPM UI control to" << wpm;
ui->wpmSpin->blockSignals(true); ui->wpmSpin->blockSignals(true);
@ -41,6 +43,16 @@ void cwSender::handleKeySpeed(unsigned char wpm)
} }
} }
void cwSender::handleDashRatio(unsigned char ratio)
{
if ((ratio >= 28) && (ratio <= 45))
{
ui->dashSpin->blockSignals(true);
ui->dashSpin->setValue(double(ratio/10));
ui->dashSpin->blockSignals(false);
}
}
void cwSender::handlePitch(unsigned char pitch) { void cwSender::handlePitch(unsigned char pitch) {
quint16 cwPitch = round((((600.0 / 255.0) * pitch) + 300) / 5.0) * 5.0; quint16 cwPitch = round((((600.0 / 255.0) * pitch) + 300) / 5.0) * 5.0;
ui->pitchSpin->blockSignals(true); ui->pitchSpin->blockSignals(true);
@ -68,6 +80,22 @@ void cwSender::handleCurrentModeUpdate(mode_kind mode)
} }
} }
void cwSender::textChanged(QString text)
{
if (ui->sendImmediateChk->isChecked())
{
if (text.back() == ' ')
{
int toSend = text.mid(0, 30).size();
if (toSend > 0) {
emit sendCW(text.mid(0, 30));
ui->transcriptText->appendPlainText(text.mid(0, 30));
ui->textToSendEdit->clearEditText();
}
}
}
}
void cwSender::on_sendBtn_clicked() void cwSender::on_sendBtn_clicked()
{ {
if( (ui->textToSendEdit->currentText().length() > 0) && if( (ui->textToSendEdit->currentText().length() > 0) &&
@ -114,12 +142,16 @@ void cwSender::on_wpmSpin_valueChanged(int wpm)
emit setKeySpeed((unsigned char)wpm); emit setKeySpeed((unsigned char)wpm);
} }
void cwSender::on_dashSpin_valueChanged(double ratio)
{
emit setDashRatio((unsigned char)double(ratio * 10));
}
void cwSender::on_pitchSpin_valueChanged(int arg1) void cwSender::on_pitchSpin_valueChanged(int arg1)
{ {
// quint16 cwPitch = round((((600.0 / 255.0) * pitch) + 300) / 5.0) * 5.0; // quint16 cwPitch = round((((600.0 / 255.0) * pitch) + 300) / 5.0) * 5.0;
unsigned char pitch = 0; unsigned char pitch = 0;
pitch = ceil((arg1 - 300) * (255.0 / 600.0)); pitch = ceil((arg1 - 300) * (255.0 / 600.0));
qDebug() << "Setting pitch" << pitch;
emit setPitch(pitch); emit setPitch(pitch);
} }
@ -189,7 +221,7 @@ void cwSender::runMacroButton(int buttonNumber)
if(macroText[buttonNumber].isEmpty()) if(macroText[buttonNumber].isEmpty())
return; return;
QString outText; QString outText;
if(macroText[buttonNumber].contains("\%1")) if(macroText[buttonNumber].contains("%1"))
{ {
outText = macroText[buttonNumber].arg(sequenceNumber, 3, 10, QChar('0')); outText = macroText[buttonNumber].arg(sequenceNumber, 3, 10, QChar('0'));
sequenceNumber++; sequenceNumber++;
@ -199,9 +231,20 @@ void cwSender::runMacroButton(int buttonNumber)
} else { } else {
outText = macroText[buttonNumber]; outText = macroText[buttonNumber];
} }
emit sendCW(outText);
if (ui->cutNumbersChk->isChecked())
{
outText.replace("0", "T");
outText.replace("9", "N");
}
for (int i = 0; i < outText.size(); i = i + 30) {
emit sendCW(outText.mid(i,30));
}
ui->transcriptText->appendPlainText(outText); ui->transcriptText->appendPlainText(outText);
ui->textToSendEdit->setFocus(); ui->textToSendEdit->setFocus();
if( (currentMode==modeCW) || (currentMode==modeCW_R) ) if( (currentMode==modeCW) || (currentMode==modeCW_R) )
{ {
@ -215,8 +258,8 @@ void cwSender::editMacroButton(int buttonNumber, QPushButton* btn)
{ {
bool ok; bool ok;
QString promptFirst = QString("Please enter the text for macro %1,\n" QString promptFirst = QString("Please enter the text for macro %1,\n"
"up to 30 characters.\n").arg(buttonNumber); "up to 60 characters.\n").arg(buttonNumber);
QString promptSecond = QString("You may use \"\%1\" to insert a sequence number."); QString promptSecond = QString("You may use \"%1\" to insert a sequence number.");
QString prompt = promptFirst+promptSecond; QString prompt = promptFirst+promptSecond;
QString newMacroText = QInputDialog::getText(this, "Macro Edit", QString newMacroText = QInputDialog::getText(this, "Macro Edit",
@ -225,12 +268,12 @@ void cwSender::editMacroButton(int buttonNumber, QPushButton* btn)
if(!ok) if(!ok)
return; return;
if(newMacroText.length() > 30) if (newMacroText.length() > 60)
{ {
QMessageBox msgBox; QMessageBox msgBox;
msgBox.setText(QString("The text entered was too long \n" msgBox.setText(QString("The text entered was too long \n"
"(max length is 30 characters).\n" "(max length is 60 characters).\n"
"Your input was %1 characters.").arg(newMacroText.length())); "Your input was %1 characters.").arg(newMacroText.length()));
msgBox.exec(); msgBox.exec();
this->raise(); this->raise();
return; return;

Wyświetl plik

@ -29,12 +29,14 @@ signals:
void sendCW(QString cwMessage); void sendCW(QString cwMessage);
void stopCW(); void stopCW();
void setKeySpeed(unsigned char wpm); void setKeySpeed(unsigned char wpm);
void setDashRatio(unsigned char ratio);
void setPitch(unsigned char pitch); void setPitch(unsigned char pitch);
void setBreakInMode(unsigned char b); void setBreakInMode(unsigned char b);
void getCWSettings(); void getCWSettings();
public slots: public slots:
void handleKeySpeed(unsigned char wpm); void handleKeySpeed(unsigned char wpm);
void handleDashRatio(unsigned char ratio);
void handlePitch(unsigned char pitch); void handlePitch(unsigned char pitch);
void handleBreakInMode(unsigned char b); void handleBreakInMode(unsigned char b);
void handleCurrentModeUpdate(mode_kind mode); void handleCurrentModeUpdate(mode_kind mode);
@ -47,10 +49,14 @@ private slots:
//void on_textToSendEdit_returnPressed(); //void on_textToSendEdit_returnPressed();
void textChanged(QString text);
void on_breakinCombo_activated(int index); void on_breakinCombo_activated(int index);
void on_wpmSpin_valueChanged(int arg1); void on_wpmSpin_valueChanged(int arg1);
void on_dashSpin_valueChanged(double arg1);
void on_pitchSpin_valueChanged(int arg1); void on_pitchSpin_valueChanged(int arg1);
void on_macro1btn_clicked(); void on_macro1btn_clicked();
@ -79,6 +85,7 @@ private:
Ui::cwSender *ui; Ui::cwSender *ui;
QString macroText[11]; QString macroText[11];
int sequenceNumber = 1; int sequenceNumber = 1;
int lastSentPos = 0;
mode_kind currentMode; mode_kind currentMode;
void processMacroButton(int buttonNumber, QPushButton *btn); void processMacroButton(int buttonNumber, QPushButton *btn);
void runMacroButton(int buttonNumber); void runMacroButton(int buttonNumber);

Wyświetl plik

@ -6,7 +6,7 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>886</width> <width>822</width>
<height>451</height> <height>451</height>
</rect> </rect>
</property> </property>
@ -177,115 +177,6 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="1" column="3">
<layout class="QGridLayout" name="gridLayout_3">
<property name="sizeConstraint">
<enum>QLayout::SetMinimumSize</enum>
</property>
<item row="3" column="0">
<widget class="QComboBox" name="breakinCombo">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Minimum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Set the desired break-in mode:&lt;/p&gt;&lt;p&gt;1. None: You must manually key and unkey the radio.&lt;/p&gt;&lt;p&gt;2. Semi: Transmit is automatic and switches to receive at the end of the text.&lt;/p&gt;&lt;p&gt;3. Full: Same as semi, but with breaks between characters when possible.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<item>
<property name="text">
<string>Off</string>
</property>
</item>
<item>
<property name="text">
<string>Semi</string>
</property>
</item>
<item>
<property name="text">
<string>Full</string>
</property>
</item>
</widget>
</item>
<item row="1" column="1">
<widget class="QLabel" name="label">
<property name="text">
<string>WPM:</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QSpinBox" name="wpmSpin">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Minimum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="toolTip">
<string>Set the Words Per Minute</string>
</property>
<property name="minimum">
<number>6</number>
</property>
<property name="maximum">
<number>48</number>
</property>
<property name="value">
<number>20</number>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_2">
<property name="text">
<string>Break In</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item row="3" column="2">
<widget class="QSpinBox" name="pitchSpin">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Minimum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimum">
<number>300</number>
</property>
<property name="maximum">
<number>900</number>
</property>
<property name="singleStep">
<number>5</number>
</property>
<property name="value">
<number>600</number>
</property>
</widget>
</item>
<item row="1" column="2">
<widget class="QLabel" name="label_4">
<property name="text">
<string>PITCH (Hz):</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
</layout>
</item>
<item row="1" column="1"> <item row="1" column="1">
<layout class="QVBoxLayout" name="verticalLayout"> <layout class="QVBoxLayout" name="verticalLayout">
<property name="leftMargin"> <property name="leftMargin">
@ -370,6 +261,152 @@
</item> </item>
</layout> </layout>
</item> </item>
<item row="1" column="3" colspan="2">
<layout class="QGridLayout" name="gridLayout_3">
<property name="sizeConstraint">
<enum>QLayout::SetMinimumSize</enum>
</property>
<item row="3" column="0">
<widget class="QComboBox" name="breakinCombo">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Minimum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Set the desired break-in mode:&lt;/p&gt;&lt;p&gt;1. None: You must manually key and unkey the radio.&lt;/p&gt;&lt;p&gt;2. Semi: Transmit is automatic and switches to receive at the end of the text.&lt;/p&gt;&lt;p&gt;3. Full: Same as semi, but with breaks between characters when possible.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<item>
<property name="text">
<string>Off</string>
</property>
</item>
<item>
<property name="text">
<string>Semi</string>
</property>
</item>
<item>
<property name="text">
<string>Full</string>
</property>
</item>
</widget>
</item>
<item row="1" column="2">
<widget class="QLabel" name="label_4">
<property name="text">
<string>PITCH (Hz):</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QLabel" name="label">
<property name="text">
<string>WPM:</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item row="3" column="2">
<widget class="QSpinBox" name="pitchSpin">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Minimum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimum">
<number>300</number>
</property>
<property name="maximum">
<number>900</number>
</property>
<property name="singleStep">
<number>5</number>
</property>
<property name="value">
<number>600</number>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_2">
<property name="text">
<string>Break In</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item row="3" column="3">
<widget class="QDoubleSpinBox" name="dashSpin">
<property name="minimum">
<double>2.800000000000000</double>
</property>
<property name="maximum">
<double>4.500000000000000</double>
</property>
<property name="singleStep">
<double>0.100000000000000</double>
</property>
<property name="value">
<double>3.000000000000000</double>
</property>
</widget>
</item>
<item row="1" column="3">
<widget class="QLabel" name="label_5">
<property name="text">
<string>Dash Ratio</string>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QSpinBox" name="wpmSpin">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Minimum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="toolTip">
<string>Set the Words Per Minute</string>
</property>
<property name="minimum">
<number>6</number>
</property>
<property name="maximum">
<number>48</number>
</property>
<property name="value">
<number>20</number>
</property>
</widget>
</item>
<item row="1" column="4">
<widget class="QCheckBox" name="cutNumbersChk">
<property name="text">
<string>Cut Num</string>
</property>
</widget>
</item>
<item row="3" column="4">
<widget class="QCheckBox" name="sendImmediateChk">
<property name="text">
<string>Send Immed</string>
</property>
</widget>
</item>
</layout>
</item>
</layout> </layout>
</widget> </widget>
<widget class="QStatusBar" name="statusbar"/> <widget class="QStatusBar" name="statusbar"/>

Wyświetl plik

@ -445,7 +445,7 @@ void repeaterSetup::showEvent(QShowEvent *event)
emit getSplitModeEnabled(); emit getSplitModeEnabled();
if(rig.hasRepeaterModes) if(rig.hasRepeaterModes)
emit getRptDuplexOffset(); emit getRptDuplexOffset();
QMainWindow::showEvent(event);
(void)event; (void)event;
} }

Wyświetl plik

@ -1014,6 +1014,72 @@ void rigCommander::setCwPitch(unsigned char pitch)
prepDataAndSend(payload); prepDataAndSend(payload);
} }
void rigCommander::getDashRatio()
{
QByteArray payload;
switch (rigCaps.model)
{
case model705:
payload.setRawData("\x1A\x05\x02\x52", 4);
break;
case model9700:
payload.setRawData("\x1A\x05\x02\x24", 4);
break;
case model7100:
payload.setRawData("\x1A\x05\x01\x35", 4);
break;
case model7300:
payload.setRawData("\x1A\x05\x01\x61", 4);
break;
case model7610:
payload.setRawData("\x1A\x05\x02\x28", 4);
break;
case model7700:
payload.setRawData("\x1A\x05\x01\x34", 4);
break;
case model7850:
payload.setRawData("\x1A\x05\x02\x51", 4);
break;
default:
break;
}
prepDataAndSend(payload);
}
void rigCommander::setDashRatio(unsigned char ratio)
{
QByteArray payload;
switch (rigCaps.model)
{
case model705:
payload.setRawData("\x1A\x05\x02\x52", 4);
break;
case model9700:
payload.setRawData("\x1A\x05\x02\x24", 4);
break;
case model7100:
payload.setRawData("\x1A\x05\x01\x35", 4);
break;
case model7300:
payload.setRawData("\x1A\x05\x01\x61", 4);
break;
case model7610:
payload.setRawData("\x1A\x05\x02\x28", 4);
break;
case model7700:
payload.setRawData("\x1A\x05\x01\x34", 4);
break;
case model7850:
payload.setRawData("\x1A\x05\x02\x51", 4);
break;
default:
break;
}
payload.append(bcdEncodeInt(ratio).at(1)); // Discard first byte
prepDataAndSend(payload);
}
void rigCommander::getPskTone() void rigCommander::getPskTone()
{ {
QByteArray payload; QByteArray payload;
@ -1796,7 +1862,7 @@ void rigCommander::parseLevels()
case '\x0C': case '\x0C':
state.set(KEYSPD, level, false); state.set(KEYSPD, level, false);
//qInfo(logRig()) << "Have received key speed in RC, raw level: " << level << ", WPM: " << (level/6.071)+6 << ", rounded: " << round((level/6.071)+6); //qInfo(logRig()) << "Have received key speed in RC, raw level: " << level << ", WPM: " << (level/6.071)+6 << ", rounded: " << round((level/6.071)+6);
emit haveKeySpeed(round((level/6.071)+6)); emit haveKeySpeed(round((level / 6.071) + 6));
break; break;
case '\x0D': case '\x0D':
// Notch filder setting - ignore for now // Notch filder setting - ignore for now
@ -3198,6 +3264,8 @@ void rigCommander::parseDetailedRegisters1A05()
case 90: case 90:
emit haveLANGain(level); emit haveLANGain(level);
break; break;
case 228:
emit haveDashRatio(inputRaw);
default: default:
break; break;
} }

Wyświetl plik

@ -129,6 +129,8 @@ public slots:
void getPassband(); void getPassband();
void getCwPitch(); void getCwPitch();
void setCwPitch(unsigned char pitch); void setCwPitch(unsigned char pitch);
void getDashRatio();
void setDashRatio(unsigned char ratio);
void getPskTone(); void getPskTone();
void setPskTone(unsigned char tone); void setPskTone(unsigned char tone);
void getRttyMark(); void getRttyMark();
@ -363,6 +365,7 @@ signals:
// CW: // CW:
void haveKeySpeed(unsigned char wpm); void haveKeySpeed(unsigned char wpm);
void haveCWBreakMode(unsigned char bmode); void haveCWBreakMode(unsigned char bmode);
void haveDashRatio(unsigned char ratio);
// Rig State // Rig State

Wyświetl plik

@ -355,10 +355,13 @@ void wfmain::rigConnections()
connect(this, SIGNAL(setKeySpeed(unsigned char)), rig, SLOT(setKeySpeed(unsigned char))); connect(this, SIGNAL(setKeySpeed(unsigned char)), rig, SLOT(setKeySpeed(unsigned char)));
connect(this, SIGNAL(getKeySpeed()), rig, SLOT(getKeySpeed())); connect(this, SIGNAL(getKeySpeed()), rig, SLOT(getKeySpeed()));
connect(this, SIGNAL(setCwPitch(unsigned char)), rig, SLOT(setCwPitch(unsigned char))); connect(this, SIGNAL(setCwPitch(unsigned char)), rig, SLOT(setCwPitch(unsigned char)));
connect(this, SIGNAL(setDashRatio(unsigned char)), rig, SLOT(setDashRatio(unsigned char)));
connect(this, SIGNAL(setCWBreakMode(unsigned char)), rig, SLOT(setBreakIn(unsigned char))); connect(this, SIGNAL(setCWBreakMode(unsigned char)), rig, SLOT(setBreakIn(unsigned char)));
connect(this, SIGNAL(getCWBreakMode()), rig, SLOT(getBreakIn())); connect(this, SIGNAL(getCWBreakMode()), rig, SLOT(getBreakIn()));
connect(this->rig, &rigCommander::haveKeySpeed, connect(this->rig, &rigCommander::haveKeySpeed,
[=](const unsigned char& wpm) { cw->handleKeySpeed(wpm); }); [=](const unsigned char& wpm) { cw->handleKeySpeed(wpm); });
connect(this->rig, &rigCommander::haveDashRatio,
[=](const unsigned char& ratio) { cw->handleDashRatio(ratio); });
connect(this->rig, &rigCommander::haveCwPitch, connect(this->rig, &rigCommander::haveCwPitch,
[=](const unsigned char& speed) { cw->handlePitch(speed); }); [=](const unsigned char& speed) { cw->handlePitch(speed); });
connect(this->rig, &rigCommander::haveCWBreakMode, connect(this->rig, &rigCommander::haveCWBreakMode,
@ -469,6 +472,7 @@ void wfmain::rigConnections()
connect(this, SIGNAL(getPassband()), rig, SLOT(getPassband())); connect(this, SIGNAL(getPassband()), rig, SLOT(getPassband()));
connect(this, SIGNAL(setPassband(quint16)), rig, SLOT(setPassband(quint16))); connect(this, SIGNAL(setPassband(quint16)), rig, SLOT(setPassband(quint16)));
connect(this, SIGNAL(getCwPitch()), rig, SLOT(getCwPitch())); connect(this, SIGNAL(getCwPitch()), rig, SLOT(getCwPitch()));
connect(this, SIGNAL(getDashRatio()), rig, SLOT(getDashRatio()));
connect(this, SIGNAL(getPskTone()), rig, SLOT(getPskTone())); connect(this, SIGNAL(getPskTone()), rig, SLOT(getPskTone()));
connect(this, SIGNAL(getRttyMark()), rig, SLOT(getRttyMark())); connect(this, SIGNAL(getRttyMark()), rig, SLOT(getRttyMark()));
connect(this, SIGNAL(getTone()), rig, SLOT(getTone())); connect(this, SIGNAL(getTone()), rig, SLOT(getTone()));
@ -1156,12 +1160,15 @@ void wfmain::setupMainUI()
[=](const unsigned char &bmode) { issueCmd(cmdSetBreakMode, bmode);}); [=](const unsigned char &bmode) { issueCmd(cmdSetBreakMode, bmode);});
connect(this->cw, &cwSender::setKeySpeed, connect(this->cw, &cwSender::setKeySpeed,
[=](const unsigned char& wpm) { issueCmd(cmdSetKeySpeed, wpm); }); [=](const unsigned char& wpm) { issueCmd(cmdSetKeySpeed, wpm); });
connect(this->cw, &cwSender::setDashRatio,
[=](const unsigned char& ratio) { issueCmd(cmdSetDashRatio, ratio); });
connect(this->cw, &cwSender::setPitch, connect(this->cw, &cwSender::setPitch,
[=](const unsigned char& pitch) { issueCmd(cmdSetCwPitch, pitch); }); [=](const unsigned char& pitch) { issueCmd(cmdSetCwPitch, pitch); });
connect(this->cw, &cwSender::getCWSettings, connect(this->cw, &cwSender::getCWSettings,
[=]() { issueDelayedCommand(cmdGetKeySpeed); [=]() { issueDelayedCommand(cmdGetKeySpeed);
issueDelayedCommand(cmdGetBreakMode);}); issueDelayedCommand(cmdGetBreakMode);
issueDelayedCommand(cmdGetCwPitch);
issueDelayedCommand(cmdGetDashRatio); });
} }
void wfmain::prepareSettingsWindow() void wfmain::prepareSettingsWindow()
@ -3887,6 +3894,12 @@ void wfmain::doCmd(commandtype cmddata)
emit setCwPitch(pitch); emit setCwPitch(pitch);
break; break;
} }
case cmdSetDashRatio:
{
unsigned char ratio = (*std::static_pointer_cast<unsigned char>(data));
emit setDashRatio(ratio);
break;
}
case cmdSetATU: case cmdSetATU:
{ {
bool atuOn = (*std::static_pointer_cast<bool>(data)); bool atuOn = (*std::static_pointer_cast<bool>(data));
@ -4012,6 +4025,9 @@ void wfmain::doCmd(cmds cmd)
case cmdGetCwPitch: case cmdGetCwPitch:
emit getCwPitch(); emit getCwPitch();
break; break;
case cmdGetDashRatio:
emit getDashRatio();
break;
case cmdGetPskTone: case cmdGetPskTone:
emit getPskTone(); emit getPskTone();
break; break;

Wyświetl plik

@ -141,6 +141,7 @@ signals:
void getMeters(meterKind meter); void getMeters(meterKind meter);
void getPassband(); void getPassband();
void getCwPitch(); void getCwPitch();
void getDashRatio();
void getPskTone(); void getPskTone();
void getRttyMark(); void getRttyMark();
@ -190,6 +191,7 @@ signals:
void getKeySpeed(); void getKeySpeed();
void setKeySpeed(unsigned char wpm); void setKeySpeed(unsigned char wpm);
void setCwPitch(unsigned char pitch); void setCwPitch(unsigned char pitch);
void setDashRatio(unsigned char ratio);
void setCWBreakMode(unsigned char breakMode); void setCWBreakMode(unsigned char breakMode);
void getCWBreakMode(); void getCWBreakMode();

Wyświetl plik

@ -111,7 +111,7 @@
<OutDir>$(SolutionDir)wfview-release\</OutDir> <OutDir>$(SolutionDir)wfview-release\</OutDir>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Label="QtSettings" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> <PropertyGroup Label="QtSettings" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<QtInstall>msvc2019_64_v62</QtInstall> <QtInstall>msvc2016_64_v632</QtInstall>
<QtModules>core;gui;network;widgets;multimedia;printsupport;serialport;xml</QtModules> <QtModules>core;gui;network;widgets;multimedia;printsupport;serialport;xml</QtModules>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="QtSettings"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="QtSettings">
@ -119,7 +119,7 @@
<QtModules>core;gui;network;widgets;multimedia;printsupport;serialport;xml</QtModules> <QtModules>core;gui;network;widgets;multimedia;printsupport;serialport;xml</QtModules>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Label="QtSettings" Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> <PropertyGroup Label="QtSettings" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<QtInstall>msvc2019_64_v62</QtInstall> <QtInstall>msvc2016_64_v632</QtInstall>
<QtModules>core;gui;network;widgets;multimedia;printsupport;serialport;xml</QtModules> <QtModules>core;gui;network;widgets;multimedia;printsupport;serialport;xml</QtModules>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="QtSettings"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="QtSettings">
@ -131,7 +131,7 @@
</ImportGroup> </ImportGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile> <ClCompile>
<AdditionalIncludeDirectories>.;..\rtaudio;..\portaudio\include;..\qcustomplot;..\opus\include;..\eigen;..\r8brain-free-src;resampler;release;/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>.;.\hidapi\hidapi;..\rtaudio;..\portaudio\include;..\qcustomplot;..\opus\include;..\eigen;..\r8brain-free-src;resampler;release;/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalOptions>-Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -permissive- -Zc:__cplusplus -Zc:externConstexpr -utf-8 -w34100 -w34189 -w44996 -w44456 -w44457 -w44458 %(AdditionalOptions)</AdditionalOptions> <AdditionalOptions>-Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -permissive- -Zc:__cplusplus -Zc:externConstexpr -utf-8 -w34100 -w34189 -w44996 -w44456 -w44457 -w44458 %(AdditionalOptions)</AdditionalOptions>
<AssemblerListingLocation>release\</AssemblerListingLocation> <AssemblerListingLocation>release\</AssemblerListingLocation>
<BrowseInformation>false</BrowseInformation> <BrowseInformation>false</BrowseInformation>
@ -152,8 +152,8 @@
<MultiProcessorCompilation>true</MultiProcessorCompilation> <MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile> </ClCompile>
<Link> <Link>
<AdditionalDependencies>..\portaudio\msvc\X64\Release\portaudio_x64.lib;..\qcustomplot\x64\qcustomplot2.lib;..\opus\win32\VS2015\x64\Release\opus.lib;$(QTDIR)\lib\Qt6Multimedia.lib;$(QTDIR)\lib\Qt6PrintSupport.lib;$(QTDIR)\lib\Qt6Widgets.lib;$(QTDIR)\lib\Qt6Gui.lib;$(QTDIR)\lib\Qt6SerialPort.lib;$(QTDIR)\lib\Qt6Network.lib;$(QTDIR)\lib\Qt6Core.lib;$(QTDIR)\lib\Qt6EntryPoint.lib;shell32.lib;%(AdditionalDependencies)</AdditionalDependencies> <AdditionalDependencies>..\hidapi\windows\x64\Release\hidapi.lib;..\portaudio\msvc\X64\Release\portaudio_x64.lib;..\qcustomplot\x64\qcustomplot2.lib;..\opus\win32\VS2015\x64\Release\opus.lib;$(QTDIR)\lib\Qt6Multimedia.lib;$(QTDIR)\lib\Qt6PrintSupport.lib;$(QTDIR)\lib\Qt6Widgets.lib;$(QTDIR)\lib\Qt6Gui.lib;$(QTDIR)\lib\Qt6SerialPort.lib;$(QTDIR)\lib\Qt6Network.lib;$(QTDIR)\lib\Qt6Core.lib;$(QTDIR)\lib\Qt6EntryPoint.lib;shell32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>..\opus\win32\VS2015\x64\Release;..\qcustomplot\x64;..\portaudio\msvc\X64\Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> <AdditionalLibraryDirectories>..\hidapi\windows\x64\Release;..\opus\win32\VS2015\x64\Release;..\qcustomplot\x64;..\portaudio\msvc\X64\Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalOptions>"/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" %(AdditionalOptions)</AdditionalOptions> <AdditionalOptions>"/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" %(AdditionalOptions)</AdditionalOptions>
<DataExecutionPrevention>true</DataExecutionPrevention> <DataExecutionPrevention>true</DataExecutionPrevention>
<EnableCOMDATFolding>true</EnableCOMDATFolding> <EnableCOMDATFolding>true</EnableCOMDATFolding>
@ -275,7 +275,7 @@ cmd /c copy /y ..\portaudio\msvc\Win32\Release\portaudio_x86.dll wfview-release\
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile> <ClCompile>
<AdditionalIncludeDirectories>.;..\rtaudio;..\portaudio\include;..\qcustomplot;..\opus\include;..\eigen;..\r8brain-free-src;resampler;debug;/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>.;.\hidapi\hidapi;..\rtaudio;..\portaudio\include;..\qcustomplot;..\opus\include;..\eigen;..\r8brain-free-src;resampler;debug;/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalOptions>-Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -permissive- -Zc:__cplusplus -Zc:externConstexpr -utf-8 -w34100 -w34189 -w44996 -w44456 -w44457 -w44458 %(AdditionalOptions)</AdditionalOptions> <AdditionalOptions>-Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -permissive- -Zc:__cplusplus -Zc:externConstexpr -utf-8 -w34100 -w34189 -w44996 -w44456 -w44457 -w44458 %(AdditionalOptions)</AdditionalOptions>
<AssemblerListingLocation>debug\</AssemblerListingLocation> <AssemblerListingLocation>debug\</AssemblerListingLocation>
<BrowseInformation>false</BrowseInformation> <BrowseInformation>false</BrowseInformation>
@ -295,8 +295,8 @@ cmd /c copy /y ..\portaudio\msvc\Win32\Release\portaudio_x86.dll wfview-release\
<LanguageStandard_C>stdc17</LanguageStandard_C> <LanguageStandard_C>stdc17</LanguageStandard_C>
</ClCompile> </ClCompile>
<Link> <Link>
<AdditionalDependencies>..\portaudio\msvc\X64\Debug\portaudio_x64.lib;..\qcustomplot\x64\qcustomplotd2.lib;..\opus\win32\VS2015\x64\Debug\opus.lib;$(QTDIR)\lib\Qt6Multimediad.lib;$(QTDIR)\lib\Qt6PrintSupportd.lib;$(QTDIR)\lib\Qt6Widgetsd.lib;$(QTDIR)\lib\Qt6Guid.lib;$(QTDIR)\lib\Qt6SerialPortd.lib;$(QTDIR)\lib\Qt6Networkd.lib;$(QTDIR)\lib\Qt6Cored.lib;$(QTDIR)\lib\Qt6EntryPointd.lib;shell32.lib;%(AdditionalDependencies)</AdditionalDependencies> <AdditionalDependencies>..\hidapi\windows\x64\Debug\hidapi.lib;..\portaudio\msvc\X64\Debug\portaudio_x64.lib;..\qcustomplot\x64\qcustomplotd2.lib;..\opus\win32\VS2015\x64\Debug\opus.lib;$(QTDIR)\lib\Qt6Multimediad.lib;$(QTDIR)\lib\Qt6PrintSupportd.lib;$(QTDIR)\lib\Qt6Widgetsd.lib;$(QTDIR)\lib\Qt6Guid.lib;$(QTDIR)\lib\Qt6SerialPortd.lib;$(QTDIR)\lib\Qt6Networkd.lib;$(QTDIR)\lib\Qt6Cored.lib;$(QTDIR)\lib\Qt6EntryPointd.lib;shell32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>..\opus\win32\VS2015\x64\Debug;..\qcustomplot\x64;..\portaudio\msvc\X64\Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> <AdditionalLibraryDirectories>..\hidapi\windows\x64\Debug;..\opus\win32\VS2015\x64\Debug;..\qcustomplot\x64;..\portaudio\msvc\X64\Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalOptions>"/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" %(AdditionalOptions)</AdditionalOptions> <AdditionalOptions>"/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" %(AdditionalOptions)</AdditionalOptions>
<DataExecutionPrevention>true</DataExecutionPrevention> <DataExecutionPrevention>true</DataExecutionPrevention>
<GenerateDebugInformation>true</GenerateDebugInformation> <GenerateDebugInformation>true</GenerateDebugInformation>
@ -415,6 +415,7 @@ cmd /c copy /y ..\portaudio\msvc\Win32\Debug\portaudio_x86.dll wfview-debug</Com
<ClCompile Include="cluster.cpp" /> <ClCompile Include="cluster.cpp" />
<ClCompile Include="commhandler.cpp" /> <ClCompile Include="commhandler.cpp" />
<ClCompile Include="controllersetup.cpp" /> <ClCompile Include="controllersetup.cpp" />
<ClCompile Include="cwsender.cpp" />
<ClCompile Include="freqmemory.cpp" /> <ClCompile Include="freqmemory.cpp" />
<ClCompile Include="logcategories.cpp" /> <ClCompile Include="logcategories.cpp" />
<ClCompile Include="loggingwindow.cpp" /> <ClCompile Include="loggingwindow.cpp" />
@ -443,6 +444,7 @@ cmd /c copy /y ..\portaudio\msvc\Win32\Debug\portaudio_x86.dll wfview-debug</Com
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="..\rtaudio\RTAUdio.h" /> <ClInclude Include="..\rtaudio\RTAUdio.h" />
<ClInclude Include="wfviewtypes.h" />
<QtMoc Include="usbcontroller.h" /> <QtMoc Include="usbcontroller.h" />
<QtMoc Include="aboutbox.h"> <QtMoc Include="aboutbox.h">
</QtMoc> </QtMoc>
@ -450,6 +452,7 @@ cmd /c copy /y ..\portaudio\msvc\Win32\Debug\portaudio_x86.dll wfview-debug</Com
<QtMoc Include="loggingwindow.h" /> <QtMoc Include="loggingwindow.h" />
<QtMoc Include="cluster.h" /> <QtMoc Include="cluster.h" />
<QtMoc Include="controllersetup.h" /> <QtMoc Include="controllersetup.h" />
<QtMoc Include="cwsender.h" />
<ClInclude Include="resampler\arch.h" /> <ClInclude Include="resampler\arch.h" />
<QtMoc Include="audioconverter.h"> <QtMoc Include="audioconverter.h">
</QtMoc> </QtMoc>
@ -538,6 +541,7 @@ cmd /c copy /y ..\portaudio\msvc\Win32\Debug\portaudio_x86.dll wfview-debug</Com
<QtUic Include="calibrationwindow.ui"> <QtUic Include="calibrationwindow.ui">
</QtUic> </QtUic>
<QtUic Include="controllersetup.ui" /> <QtUic Include="controllersetup.ui" />
<QtUic Include="cwsender.ui" />
<QtUic Include="loggingwindow.ui" /> <QtUic Include="loggingwindow.ui" />
<QtUic Include="repeatersetup.ui"> <QtUic Include="repeatersetup.ui">
</QtUic> </QtUic>

Wyświetl plik

@ -149,6 +149,9 @@
<ClCompile Include="controllersetup.cpp"> <ClCompile Include="controllersetup.cpp">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="cwsender.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="..\rtaudio\RTAUdio.h"> <ClInclude Include="..\rtaudio\RTAUdio.h">
@ -262,6 +265,9 @@
<QtMoc Include="wfmain.h"> <QtMoc Include="wfmain.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</QtMoc> </QtMoc>
<ClInclude Include="wfviewtypes.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<CustomBuild Include="debug\moc_predefs.h.cbt"> <CustomBuild Include="debug\moc_predefs.h.cbt">
@ -299,6 +305,9 @@
<QtUic Include="wfmain.ui"> <QtUic Include="wfmain.ui">
<Filter>Form Files</Filter> <Filter>Form Files</Filter>
</QtUic> </QtUic>
<QtUic Include="cwsender.ui">
<Filter>Form Files</Filter>
</QtUic>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="qdarkstyle\rc\Hmovetoolbar.png"> <None Include="qdarkstyle\rc\Hmovetoolbar.png">
@ -441,5 +450,8 @@
<QtMoc Include="controllersetup.h"> <QtMoc Include="controllersetup.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</QtMoc> </QtMoc>
<QtMoc Include="cwsender.h">
<Filter>Header Files</Filter>
</QtMoc>
</ItemGroup> </ItemGroup>
</Project> </Project>

Wyświetl plik

@ -45,10 +45,10 @@
<QtLastBackgroundBuild>2022-08-21T18:58:23.4329764Z</QtLastBackgroundBuild> <QtLastBackgroundBuild>2022-08-21T18:58:23.4329764Z</QtLastBackgroundBuild>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="QtSettings"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="QtSettings">
<QtLastBackgroundBuild>2023-01-29T11:49:00.1257696Z</QtLastBackgroundBuild> <QtLastBackgroundBuild>2023-02-14T17:48:26.0594274Z</QtLastBackgroundBuild>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="QtSettings"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="QtSettings">
<QtLastBackgroundBuild>2023-01-29T11:48:59.4191765Z</QtLastBackgroundBuild> <QtLastBackgroundBuild>2023-02-14T17:48:25.7629768Z</QtLastBackgroundBuild>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Label="QtSettings" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> <PropertyGroup Label="QtSettings" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<QtLastBackgroundBuild>2022-08-22T10:47:49.1255783Z</QtLastBackgroundBuild> <QtLastBackgroundBuild>2022-08-22T10:47:49.1255783Z</QtLastBackgroundBuild>
@ -60,9 +60,9 @@
<QtLastBackgroundBuild>2022-08-20T19:06:43.4553894Z</QtLastBackgroundBuild> <QtLastBackgroundBuild>2022-08-20T19:06:43.4553894Z</QtLastBackgroundBuild>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="QtSettings"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="QtSettings">
<QtLastBackgroundBuild>2023-01-29T11:49:01.5629425Z</QtLastBackgroundBuild> <QtLastBackgroundBuild>2023-02-14T17:48:27.5731249Z</QtLastBackgroundBuild>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="QtSettings"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="QtSettings">
<QtLastBackgroundBuild>2023-01-29T11:49:00.7644018Z</QtLastBackgroundBuild> <QtLastBackgroundBuild>2023-02-14T17:48:27.1219605Z</QtLastBackgroundBuild>
</PropertyGroup> </PropertyGroup>
</Project> </Project>

Wyświetl plik

@ -166,7 +166,7 @@ enum cmds {
cmdSetRptAccessMode, cmdSetRptDuplexOffset, cmdGetRptDuplexOffset, cmdSetRptAccessMode, cmdSetRptDuplexOffset, cmdGetRptDuplexOffset,
cmdSelVFO, cmdVFOSwap, cmdVFOEqualAB, cmdVFOEqualMS, cmdSetQuickSplit, cmdSelVFO, cmdVFOSwap, cmdVFOEqualAB, cmdVFOEqualMS, cmdSetQuickSplit,
cmdGetPreamp, cmdGetAttenuator, cmdGetAntenna, cmdGetPreamp, cmdGetAttenuator, cmdGetAntenna,
cmdGetBandStackReg, cmdGetKeySpeed, cmdSetKeySpeed, cmdGetBreakMode, cmdSetBreakMode, cmdSendCW, cmdStopCW, cmdGetBandStackReg, cmdGetKeySpeed, cmdSetKeySpeed, cmdGetBreakMode, cmdSetBreakMode, cmdSendCW, cmdStopCW, cmdGetDashRatio, cmdSetDashRatio,
cmdSetTime, cmdSetDate, cmdSetUTCOffset, cmdSetTime, cmdSetDate, cmdSetUTCOffset,
// Below Only used for USB Controller at the moment. // Below Only used for USB Controller at the moment.
cmdSetBandUp, cmdSetBandDown, cmdSetModeUp, cmdSetModeDown, cmdSetStepUp, cmdSetStepDown, cmdSetSpanUp, cmdSetSpanDown, cmdIFFilterUp, cmdIFFilterDown cmdSetBandUp, cmdSetBandDown, cmdSetModeUp, cmdSetModeDown, cmdSetStepUp, cmdSetStepDown, cmdSetSpanUp, cmdSetSpanDown, cmdIFFilterUp, cmdIFFilterDown