Add the W9MDB patch (very slightly modified) for band-by-band memory

of power settings for Transmit and Tune.  Also an interim update of
v1.7_Features.txt.



git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@7229 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
This commit is contained in:
Joe Taylor 2016-10-25 20:24:09 +00:00
parent 40cf903db5
commit 0441986ccc
8 changed files with 397 additions and 297 deletions

View File

@ -548,6 +548,8 @@ private:
bool udpWindowToFront_;
bool udpWindowRestore_;
DataMode data_mode_;
bool pwrBandTxMemory_;
bool pwrBandTuneMemory_;
QAudioDeviceInfo audio_input_device_;
bool default_audio_input_device_selected_;
@ -646,6 +648,8 @@ QStringListModel const * Configuration::macros () const {return &m_->macros_;}
QDir Configuration::save_directory () const {return m_->save_directory_;}
QDir Configuration::azel_directory () const {return m_->azel_directory_;}
QString Configuration::rig_name () const {return m_->rig_params_.rig_name;}
bool Configuration::pwrBandTxMemory () const {return m_->pwrBandTxMemory_;}
bool Configuration::pwrBandTuneMemory () const {return m_->pwrBandTuneMemory_;}
bool Configuration::is_transceiver_online () const
{
@ -1066,6 +1070,8 @@ void Configuration::impl::initialize_models ()
ui_->CAT_data_bits_button_group->button (rig_params_.data_bits)->setChecked (true);
ui_->CAT_stop_bits_button_group->button (rig_params_.stop_bits)->setChecked (true);
ui_->CAT_handshake_button_group->button (rig_params_.handshake)->setChecked (true);
ui_->checkBoxPwrBandTxMemory->setChecked(pwrBandTxMemory_);
ui_->checkBoxPwrBandTuneMemory->setChecked(pwrBandTuneMemory_);
if (rig_params_.force_dtr)
{
ui_->force_DTR_combo_box->setCurrentIndex (rig_params_.dtr_high ? 1 : 2);
@ -1293,6 +1299,8 @@ void Configuration::impl::read_settings ()
udpWindowRestore_ = settings_->value ("udpWindowRestore",false).toBool ();
frequency_calibration_intercept_ = settings_->value ("CalibrationIntercept", 0.).toDouble ();
frequency_calibration_slope_ppm_ = settings_->value ("CalibrationSlopePPM", 0.).toDouble ();
pwrBandTxMemory_ = settings_->value("pwrBandTxMemory",false).toBool ();
pwrBandTuneMemory_ = settings_->value("pwrBandTuneMemory",false).toBool ();
}
void Configuration::impl::write_settings ()
@ -1389,6 +1397,8 @@ void Configuration::impl::write_settings ()
settings_->setValue ("udpWindowRestore", udpWindowRestore_);
settings_->setValue ("CalibrationIntercept", frequency_calibration_intercept_);
settings_->setValue ("CalibrationSlopePPM", frequency_calibration_slope_ppm_);
settings_->setValue ("pwrBandTxMemory", pwrBandTxMemory_);
settings_->setValue ("pwrBandTuneMemory", pwrBandTuneMemory_);
}
void Configuration::impl::set_rig_invariants ()
@ -1778,7 +1788,8 @@ void Configuration::impl::accept ()
offsetRxFreq_ = ui_->offset_Rx_freq_check_box->isChecked();
frequency_calibration_intercept_ = ui_->calibration_intercept_spin_box->value ();
frequency_calibration_slope_ppm_ = ui_->calibration_slope_ppm_spin_box->value ();
pwrBandTxMemory_ = ui_->checkBoxPwrBandTxMemory->isChecked ();
pwrBandTuneMemory_ = ui_->checkBoxPwrBandTuneMemory->isChecked ();
auto new_server = ui_->udp_server_line_edit->text ();
if (new_server != udp_server_name_)
{

View File

@ -153,7 +153,8 @@ public:
QColor color_TxMsg () const;
QColor color_DXCC () const;
QColor color_NewCall () const;
bool pwrBandTxMemory () const;
bool pwrBandTuneMemory () const;
// This method queries if a CAT and PTT connection is operational.
bool is_transceiver_online () const;

View File

@ -6,7 +6,7 @@
<rect>
<x>0</x>
<y>0</y>
<width>545</width>
<width>628</width>
<height>591</height>
</rect>
</property>
@ -14,8 +14,29 @@
<string>Settings</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QDialogButtonBox" name="configuration_dialog_button_box">
<property name="toolTip">
<string>Discard or apply configuration changes including
resetting the radio interface and applying any
soundcard changes</string>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property>
</widget>
</item>
<item>
<widget class="QTabWidget" name="configuration_tabs">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="toolTip">
<string>Select tab to change configuration parameters.</string>
</property>
@ -1231,237 +1252,297 @@ radio interface behave as expected.</string>
<attribute name="toolTip">
<string>Audio interface settings</string>
</attribute>
<layout class="QGridLayout" name="gridLayout_5">
<item row="5" column="0">
<spacer name="verticalSpacer_3">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
<item row="1" column="0">
<widget class="Line" name="line_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QGroupBox" name="save_path_group_box">
<property name="title">
<string>Save Directory</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_5">
<item>
<widget class="QLabel" name="save_path_label">
<property name="text">
<string>Loc&amp;ation:</string>
</property>
<property name="buddy">
<cstring>save_path_select_push_button</cstring>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="save_path_display_label">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>1</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="toolTip">
<string>Path to which .WAV files are saved.</string>
</property>
<property name="autoFillBackground">
<bool>false</bool>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgb(255, 255, 255);</string>
</property>
<property name="text">
<string>TextLabel</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="save_path_select_push_button">
<property name="toolTip">
<string>Click to select a different save directory for .WAV files.</string>
</property>
<property name="text">
<string>S&amp;elect</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item row="0" column="0">
<widget class="QGroupBox" name="soundcard_group_box">
<property name="title">
<string>Soundcard</string>
</property>
<layout class="QGridLayout" name="gridLayout_6">
<item row="1" column="1">
<widget class="QComboBox" name="sound_output_combo_box">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>1</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="toolTip">
<string>Select the audio CODEC to use for transmitting.
<widget class="QWidget" name="layoutWidget">
<property name="geometry">
<rect>
<x>9</x>
<y>10</y>
<width>511</width>
<height>431</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout_9">
<item>
<widget class="QGroupBox" name="soundcard_group_box">
<property name="toolTip">
<string>Souncard</string>
</property>
<property name="title">
<string>Soundcard</string>
</property>
<layout class="QGridLayout" name="gridLayout_6">
<item row="1" column="1">
<widget class="QComboBox" name="sound_output_combo_box">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>1</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="toolTip">
<string>Select the audio CODEC to use for transmitting.
If this is your default device for system sounds then
ensure that all system sounds are disabled otherwise
you will broadcast any systems sounds generated during
transmitting periods.</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QComboBox" name="sound_input_combo_box">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>1</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="toolTip">
<string>Select the audio CODEC to use for receiving.</string>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QLabel" name="sound_input_label">
<property name="text">
<string>&amp;Input:</string>
</property>
<property name="buddy">
<cstring>sound_input_combo_box</cstring>
</property>
</widget>
</item>
<item row="0" column="2">
<widget class="QComboBox" name="sound_input_channel_combo_box">
<property name="toolTip">
<string>Select the channel to use for receiving.</string>
</property>
<item>
<property name="text">
<string>Mono</string>
</property>
</item>
<item>
<property name="text">
<string>Left</string>
</widget>
</item>
<item row="0" column="1">
<widget class="QComboBox" name="sound_input_combo_box">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>1</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
</item>
<item>
<property name="text">
<string>Right</string>
<property name="toolTip">
<string>Select the audio CODEC to use for receiving.</string>
</property>
</item>
<item>
</widget>
</item>
<item row="0" column="0">
<widget class="QLabel" name="sound_input_label">
<property name="text">
<string>Both</string>
<string>&amp;Input:</string>
</property>
</item>
</widget>
</item>
<item row="1" column="2">
<widget class="QComboBox" name="sound_output_channel_combo_box">
<property name="toolTip">
<string>Select the audio channel used for transmission.
<property name="buddy">
<cstring>sound_input_combo_box</cstring>
</property>
</widget>
</item>
<item row="0" column="2">
<widget class="QComboBox" name="sound_input_channel_combo_box">
<property name="toolTip">
<string>Select the channel to use for receiving.</string>
</property>
<item>
<property name="text">
<string>Mono</string>
</property>
</item>
<item>
<property name="text">
<string>Left</string>
</property>
</item>
<item>
<property name="text">
<string>Right</string>
</property>
</item>
<item>
<property name="text">
<string>Both</string>
</property>
</item>
</widget>
</item>
<item row="1" column="2">
<widget class="QComboBox" name="sound_output_channel_combo_box">
<property name="toolTip">
<string>Select the audio channel used for transmission.
Unless you have multiple radios connected on different
channels; then you will usually want to select mono or
both here.</string>
</property>
<item>
<property name="text">
<string>Mono</string>
</property>
</item>
<item>
<item>
<property name="text">
<string>Mono</string>
</property>
</item>
<item>
<property name="text">
<string>Left</string>
</property>
</item>
<item>
<property name="text">
<string>Right</string>
</property>
</item>
<item>
<property name="text">
<string>Both</string>
</property>
</item>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="sound_output_label">
<property name="text">
<string>Left</string>
<string>Ou&amp;tput:</string>
</property>
</item>
<item>
<property name="buddy">
<cstring>sound_output_combo_box</cstring>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="save_path_group_box">
<property name="toolTip">
<string>Save Directory</string>
</property>
<property name="title">
<string>Save Directory</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_5">
<item>
<widget class="QLabel" name="save_path_label">
<property name="text">
<string>Right</string>
<string>Loc&amp;ation:</string>
</property>
<property name="buddy">
<cstring>save_path_select_push_button</cstring>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="save_path_display_label">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>1</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="toolTip">
<string>Path to which .WAV files are saved.</string>
</property>
<property name="autoFillBackground">
<bool>false</bool>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgb(255, 255, 255);</string>
</property>
</item>
<item>
<property name="text">
<string>Both</string>
<string>TextLabel</string>
</property>
</item>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="sound_output_label">
<property name="text">
<string>Ou&amp;tput:</string>
</property>
<property name="buddy">
<cstring>sound_output_combo_box</cstring>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item row="3" column="0">
<widget class="QGroupBox" name="azel_path_group_box">
<property name="title">
<string>AzEl Directory</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_10">
<item>
<widget class="QLabel" name="azel_path_label">
<property name="text">
<string>Location:</string>
</property>
<property name="buddy">
<cstring>azel_path_select_push_button</cstring>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="azel_path_display_label">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>1</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgb(255, 255, 255);</string>
</property>
<property name="text">
<string>TextLabel</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="azel_path_select_push_button">
<property name="text">
<string>Select</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QPushButton" name="save_path_select_push_button">
<property name="toolTip">
<string>Click to select a different save directory for .WAV files.</string>
</property>
<property name="text">
<string>S&amp;elect</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="azel_path_group_box">
<property name="toolTip">
<string>AzEl Directory</string>
</property>
<property name="title">
<string>AzEl Directory</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_10">
<item>
<widget class="QLabel" name="azel_path_label">
<property name="text">
<string>Location:</string>
</property>
<property name="buddy">
<cstring>azel_path_select_push_button</cstring>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="azel_path_display_label">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>1</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgb(255, 255, 255);</string>
</property>
<property name="text">
<string>TextLabel</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="azel_path_select_push_button">
<property name="text">
<string>Select</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="split_operation_group_box_2">
<property name="minimumSize">
<size>
<width>0</width>
<height>55</height>
</size>
</property>
<property name="toolTip">
<string>Power Memory By Band</string>
</property>
<property name="title">
<string>Remember Power Settings By Band</string>
</property>
<widget class="QCheckBox" name="checkBoxPwrBandTxMemory">
<property name="geometry">
<rect>
<x>10</x>
<y>23</y>
<width>90</width>
<height>17</height>
</rect>
</property>
<property name="toolTip">
<string>Enable power memory during transmit</string>
</property>
<property name="text">
<string>Transmit</string>
</property>
</widget>
<widget class="QCheckBox" name="checkBoxPwrBandTuneMemory">
<property name="geometry">
<rect>
<x>100</x>
<y>23</y>
<width>90</width>
<height>17</height>
</rect>
</property>
<property name="toolTip">
<string>Enable power memory during tuning</string>
</property>
<property name="text">
<string>Tune</string>
</property>
</widget>
</widget>
</item>
<item>
<spacer name="verticalSpacer_3">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</widget>
<widget class="QWidget" name="tx_macros_tab">
<attribute name="title">
@ -1992,7 +2073,7 @@ Right click for insert and delete options.</string>
<attribute name="title">
<string>Colors</string>
</attribute>
<widget class="QWidget" name="layoutWidget">
<widget class="QWidget" name="layoutWidget1">
<property name="geometry">
<rect>
<x>44</x>
@ -2378,25 +2459,9 @@ Right click for insert and delete options.</string>
</widget>
</widget>
</item>
<item>
<widget class="QDialogButtonBox" name="configuration_dialog_button_box">
<property name="toolTip">
<string>Discard or apply configuration changes including
resetting the radio interface and applying any
soundcard changes</string>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property>
</widget>
</item>
</layout>
</widget>
<tabstops>
<tabstop>configuration_tabs</tabstop>
<tabstop>callsign_line_edit</tabstop>
<tabstop>grid_line_edit</tabstop>
<tabstop>type_2_msg_gen_combo_box</tabstop>
@ -2539,12 +2604,12 @@ soundcard changes</string>
</connection>
</connections>
<buttongroups>
<buttongroup name="split_mode_button_group"/>
<buttongroup name="CAT_handshake_button_group"/>
<buttongroup name="CAT_stop_bits_button_group"/>
<buttongroup name="PTT_method_button_group"/>
<buttongroup name="CAT_data_bits_button_group"/>
<buttongroup name="TX_mode_button_group"/>
<buttongroup name="split_mode_button_group"/>
<buttongroup name="TX_audio_source_button_group"/>
<buttongroup name="PTT_method_button_group"/>
<buttongroup name="CAT_stop_bits_button_group"/>
<buttongroup name="CAT_data_bits_button_group"/>
<buttongroup name="CAT_handshake_button_group"/>
</buttongroups>
</ui>

View File

@ -25,3 +25,6 @@ subtracted out, allowing the decoding of weaker signals.
- Many corrections and improvements to the Hamlib library, fixing
balky rig-control features
- Power settings for Transmit and Tune optionally remembered for
each band.

View File

@ -33,3 +33,8 @@ calculated Doppler shift for the specified EME path. The file is
updated once per second whenever the <<ASTRODATA,Astronomical Data>>
window is displayed.
- _Power Memory By Band_: Checking one or both of these will cause
_WSJT-X_ to remember the *Pwr* slider setting for that operation on a
band-by-band basis. For example, when *Tune* is enabled here and you
click the *Tune* on the main window, the power slider will change to
the most recent setting used for *Tune* on that band.

View File

@ -327,9 +327,8 @@ MainWindow::MainWindow(QDir const& temp_directory, bool multiple,
m_transmitting {false},
m_tune {false},
m_tx_watchdog {false},
m_tune_attenuation {0},
m_tune_attenuation_restore {0},
m_block_pwr_tooltip {false},
m_PwrBandSetOK {true},
m_lastMonitoredFrequency {default_frequency},
m_toneSpacing {0.},
m_firstDecode {0},
@ -934,8 +933,10 @@ void MainWindow::writeSettings()
m_settings->setValue("FastMode",m_bFastMode);
m_settings->setValue("Fast9",m_bFast9);
m_settings->setValue("CQRxfreq",m_freqCQ);
m_settings->setValue("TuneAttenuation",m_tune_attenuation);
m_settings->setValue("pwrBandTxMemory",m_pwrBandTxMemory);
m_settings->setValue("pwrBandTuneMemory",m_pwrBandTuneMemory);
m_settings->endGroup();
}
//---------------------------------------------------------- readSettings()
@ -994,7 +995,6 @@ void MainWindow::readSettings()
m_block_pwr_tooltip = true;
ui->outAttenuation->setValue (m_settings->value ("OutAttenuation", 0).toInt ());
m_block_pwr_tooltip = false;
m_tune_attenuation = m_settings->value ("TuneAttenuation", 0).toInt ();
m_freqCQ=m_settings->value("CQRxFreq",285).toInt();
m_noSuffix=m_settings->value("NoSuffix",false).toBool();
int n=m_settings->value("GUItab",0).toInt();
@ -1002,6 +1002,8 @@ void MainWindow::readSettings()
outBufSize=m_settings->value("OutBufSize",4096).toInt();
m_lockTxFreq=m_settings->value("LockTxFreq",false).toBool();
m_TRindex=m_settings->value("TRindex",4).toInt();
m_pwrBandTxMemory=m_settings->value("pwrBandTxMemory").toHash();
m_pwrBandTuneMemory=m_settings->value("pwrBandTuneMemory").toHash();
m_settings->endGroup();
// use these initialisation settings to tune the audio o/p buffer
@ -4490,6 +4492,12 @@ void MainWindow::on_bandComboBox_activated (int index)
void MainWindow::band_changed (Frequency f)
{
// Set the attenuation value if options are checked
QString curBand = ui->bandComboBox->currentText();
if (m_config.pwrBandTxMemory() && !m_tune) {
ui->outAttenuation->setValue(m_pwrBandTxMemory[curBand].toInt());
}
if (m_bandEdited) {
if (!m_mode.startsWith ("WSPR")) { // band hopping preserves auto Tx
if (f + m_wideGraph->nStartFreq () > m_freqNominal + ui->TxFreqSpinBox->value ()
@ -4644,19 +4652,32 @@ void MainWindow::on_rptSpinBox_valueChanged(int n)
void MainWindow::on_tuneButton_clicked (bool checked)
{
static bool lastChecked = false;
if (lastChecked == checked) return;
lastChecked = checked;
QString curBand = ui->bandComboBox->currentText();
if (checked && m_tune==false) { // we're starting tuning so remember Tx and change pwr to Tune value
if (m_config.pwrBandTuneMemory ()) {
m_pwrBandTxMemory[curBand] = ui->outAttenuation->value(); // remember our Tx pwr
m_PwrBandSetOK = false;
ui->outAttenuation->setValue(m_pwrBandTuneMemory[curBand].toInt()); // set to Tune pwr
m_PwrBandSetOK = true;
}
}
else { // we're turning off so remember our Tune pwr setting and reset to Tx pwr
if (m_config.pwrBandTuneMemory() || m_config.pwrBandTxMemory()) {
m_pwrBandTuneMemory[curBand] = ui->outAttenuation->value(); // remember our Tune pwr
m_PwrBandSetOK = false;
ui->outAttenuation->setValue(m_pwrBandTxMemory[curBand].toInt()); // set to Tx pwr
m_PwrBandSetOK = true;
}
}
if (m_tune) {
tuneButtonTimer.start(250);
} else {
m_sentFirst73=false;
itone[0]=0;
on_monitorButton_clicked (true);
m_tune_attenuation_restore = ui->outAttenuation->value();
if (m_tune_attenuation)
{
m_block_pwr_tooltip = true;
ui->outAttenuation->setValue(m_tune_attenuation);
m_block_pwr_tooltip = false;
}
m_tune=true;
}
Q_EMIT tune (checked);
@ -4668,12 +4689,6 @@ void MainWindow::stop_tuning ()
ui->tuneButton->setChecked (false);
m_bTxTime=false;
m_tune=false;
if (m_tune_attenuation)
{
m_block_pwr_tooltip = true;
ui->outAttenuation->setValue(m_tune_attenuation_restore);
m_block_pwr_tooltip = false;
}
}
void MainWindow::stopTuneATU()
@ -5034,30 +5049,32 @@ void MainWindow::on_outAttenuation_valueChanged (int a)
{
QString tt_str;
qreal dBAttn {a / 10.}; // slider interpreted as dB / 100
if (m_tune && Qt::ShiftModifier == QGuiApplication::keyboardModifiers ())
if (m_tune && m_config.pwrBandTuneMemory())
{
// special attenuation value for Tune button
m_tune_attenuation = a;
if (a)
{
tt_str = tr ("Tune digital gain ")
+ (a ? QString::number (-dBAttn, 'f', 1) : "0") + "dB\n"
"Set at top to cancel";
}
else
{
tt_str = tr ("Tune power = Tx power");
}
tt_str = tr ("Tune digital gain");
}
else
{
tt_str = tr ("Transmit digital gain ")
+ (a ? QString::number (-dBAttn, 'f', 1) : "0") + "dB";
tt_str = tr ("Transmit digital gain");
}
tt_str += (a ? QString::number (-dBAttn, 'f', 1) : "0") + "dB";
if (!m_block_pwr_tooltip)
{
QToolTip::showText (QCursor::pos (), tt_str, ui->outAttenuation);
}
QString curBand = ui->bandComboBox->currentText();
if (m_PwrBandSetOK && !m_tune && m_config.pwrBandTxMemory ())
{
m_pwrBandTxMemory[curBand] = a; // remember our Tx pwr
qDebug () << "Tx=" << QString::number(a);
}
if (m_PwrBandSetOK && m_tune && m_config.pwrBandTuneMemory())
{
m_pwrBandTuneMemory[curBand] = a; // remember our Tune pwr
qDebug () << "Tune=" << QString::number(a);
}
// Updating attenuation for tuning is done in stop_tuning
Q_EMIT outAttenuationChanged (dBAttn);
}

View File

@ -504,9 +504,8 @@ private:
bool m_transmitting;
bool m_tune;
bool m_tx_watchdog; // true when watchdog triggered
int m_tune_attenuation;
int m_tune_attenuation_restore;
bool m_block_pwr_tooltip;
bool m_PwrBandSetOK;
Frequency m_lastMonitoredFrequency;
double m_toneSpacing;
int m_firstDecode;
@ -515,6 +514,8 @@ private:
MessageClient * m_messageClient;
PSK_Reporter *psk_Reporter;
DisplayManual m_manual;
QHash<QString, QVariant> m_pwrBandTxMemory; // Remembers power level by band
QHash<QString, QVariant> m_pwrBandTuneMemory; // Remembers power level by band for tuning
//---------------------------------------------------- private functions
void readSettings();

View File

@ -16,42 +16,39 @@ Short list of new features
New Modes
---------
1. MSK144 is intended for meteor scatter at 50 MHz and higher.
Designed and tested by K9AN and K1JT, it uses a low-density parity
check code (LDPC) -- one of the latest-and-greatest areas of active
research in communication theory.
MSK144 is a direct descendant of the now-defunct mode JTMSK, with a
1. MSK144 is intended for meteor scatter at 50 MHz and higher. It
uses a low-density parity check code (LDPC) designed by K9AN. The
mode is a direct descendant of the now-defunct mode JTMSK, with a
number of improvements for better performance on weak and short meteor
pings. The effective character transmission rate is about 250 cps,
compared with 147 cps for FSK441 and 154 cps for JTMSK. Like JT4,
JT9, JT65, and JTMSK, MSK144 uses strong forward error correction, so
message decoding is essentially "all or nothing". You will see little
or no garbage on your screen.
compared with 147 cps for FSK441. Like JT4, JT9, JT65, and QRA64,
MSK144 uses strong forward error correction. Message decoding is
essentially "all or nothing": partial decodes do not occur, and you
will see little or no garbage on your screen.
Standard MSK144 message frames are 72 ms long, compared to 117 ms for
JTMSK. The MSK144 waveform allows coherent demodulation, allowing up
to 3 dB better sensitivity. After QSO partners have exchanged
callsigns, MSK144 can use even shorter messages, only 20 ms long. As
in all the fast modes in WSJT-X, the 20 ms or 72 ms messages are
repeated without gaps for the duration of a transmission cycle. For
most purposes we recommend a T/R cycle duration of 15 s, but 5 s and
10 s sequences are also supported.
Standard MSK144 message frames are 72 ms long, compared to about 120
ms for FSK441. The MSK144 waveform allows coherent demodulation,
allowing up to 3 dB better sensitivity. After QSO partners have
exchanged callsigns, MSK144 can use even shorter messages, only 20 ms
long. As in all the fast modes in WSJT-X, the 20 ms or 72 ms messages
are repeated without gaps for the duration of a transmission cycle.
For most purposes we recommend a T/R cycle duration of 15 s, but 5 s
and 10 s sequences are also supported.
Short ("Sh") messages in MSK144 are intended primarily for 144 MHz,
where most pings are short. These messages do not contain full
callsigns; instead, they contain a hash of the entire transmitted
message along with a report. They are not encrypted -- the report is
sent in the clear along with the hash. Short messages are fully
Short ("Sh") messages in MSK144 are intended primarily for 144 MHz and
higher, where many pings are short. These messages do not contain
full callsigns; instead, they contain a hash of the two callsigns
along with a report, acknowledgement, or 73. Short messages are fully
decodable only by the station to whom they are addressed, as part of
an ongoing QSO, because only then will the received hash match that
calculated using the known strings for "My Call" and "DX Call" and the
received report, RRR, or 73. If you are monitoring someone else's
QSO, you will not be able to decode its Sh messages.
calculated using the known strings for "My Call" and "DX Call". If
you are monitoring someone else's QSO, you will not be able to decode
its Sh messages.
An MSK144 signal occupies the full bandwidth of a typical SSB
transmitter, so transmissions are always centered at an offset of
1500Hz. For best results, selectable/adjustable Rx and Tx filters
1500Hz. For best results, selectable or adjustable Rx and Tx filters
should be set to provide the flattest possible response over at least
300 - 2700 Hz. The maximum permissible frequency offset between you
and your QSO partner is 200 Hz, and less is better.