mirror of
https://github.com/opentx/opentx.git
synced 2025-07-23 00:05:17 +03:00
Merge remote-tracking branch
'origin/dvogonen/move_firmware_selection_settings_988' into bsongis/refactoring_firmware_interface Conflicts: companion/src/apppreferencesdialog.cpp companion/src/apppreferencesdialog.h
This commit is contained in:
commit
f2ec3f215b
6 changed files with 1092 additions and 240 deletions
|
@ -16,9 +16,30 @@ AppPreferencesDialog::AppPreferencesDialog(QWidget *parent) :
|
||||||
ui(new Ui::AppPreferencesDialog)
|
ui(new Ui::AppPreferencesDialog)
|
||||||
{
|
{
|
||||||
ui->setupUi(this);
|
ui->setupUi(this);
|
||||||
|
updateLock=false;
|
||||||
setWindowIcon(CompanionIcon("apppreferences.png"));
|
setWindowIcon(CompanionIcon("apppreferences.png"));
|
||||||
|
QCheckBox * OptionCheckBox[]= {
|
||||||
|
ui->optionCheckBox_1, ui->optionCheckBox_2, ui->optionCheckBox_3, ui->optionCheckBox_4, ui->optionCheckBox_5, ui->optionCheckBox_6, ui->optionCheckBox_7,
|
||||||
|
ui->optionCheckBox_8, ui->optionCheckBox_9, ui->optionCheckBox_10, ui->optionCheckBox_11, ui->optionCheckBox_12, ui->optionCheckBox_13, ui->optionCheckBox_14,
|
||||||
|
ui->optionCheckBox_15,ui->optionCheckBox_16, ui->optionCheckBox_17, ui->optionCheckBox_18, ui->optionCheckBox_19, ui->optionCheckBox_20, ui->optionCheckBox_21,
|
||||||
|
ui->optionCheckBox_22, ui->optionCheckBox_23, ui->optionCheckBox_24, ui->optionCheckBox_25, ui->optionCheckBox_26, ui->optionCheckBox_27, ui->optionCheckBox_28,
|
||||||
|
ui->optionCheckBox_29, ui->optionCheckBox_30, ui->optionCheckBox_31, ui->optionCheckBox_32, ui->optionCheckBox_33, ui->optionCheckBox_34, ui->optionCheckBox_35,
|
||||||
|
ui->optionCheckBox_36, ui->optionCheckBox_37, ui->optionCheckBox_38, ui->optionCheckBox_39, ui->optionCheckBox_40, ui->optionCheckBox_41, ui->optionCheckBox_42,
|
||||||
|
NULL };
|
||||||
|
|
||||||
|
voice=NULL;
|
||||||
|
connect(ui->langCombo, SIGNAL(currentIndexChanged(int)), this, SLOT(firmwareLangChanged()));
|
||||||
|
connect(ui->voiceCombo, SIGNAL(currentIndexChanged(int)), this, SLOT(firmwareLangChanged()));
|
||||||
|
|
||||||
|
for (int i=0; OptionCheckBox[i]; i++) {
|
||||||
|
optionsCheckBoxes.push_back(OptionCheckBox[i]);
|
||||||
|
connect(OptionCheckBox[i], SIGNAL(toggled(bool)), this, SLOT(firmwareOptionChanged(bool)));
|
||||||
|
}
|
||||||
|
|
||||||
initSettings();
|
initSettings();
|
||||||
|
connect(ui->downloadVerCB, SIGNAL(currentIndexChanged(int)), this, SLOT(baseFirmwareChanged()));
|
||||||
connect(this, SIGNAL(accepted()), this, SLOT(writeValues()));
|
connect(this, SIGNAL(accepted()), this, SLOT(writeValues()));
|
||||||
|
|
||||||
#ifndef JOYSTICKS
|
#ifndef JOYSTICKS
|
||||||
ui->joystickCB->hide();
|
ui->joystickCB->hide();
|
||||||
ui->joystickCB->setDisabled(true);
|
ui->joystickCB->setDisabled(true);
|
||||||
|
@ -26,7 +47,8 @@ AppPreferencesDialog::AppPreferencesDialog(QWidget *parent) :
|
||||||
ui->joystickChkB->hide();
|
ui->joystickChkB->hide();
|
||||||
ui->label_11->hide();
|
ui->label_11->hide();
|
||||||
#endif
|
#endif
|
||||||
resize(0,0);
|
|
||||||
|
shrink();
|
||||||
}
|
}
|
||||||
|
|
||||||
AppPreferencesDialog::~AppPreferencesDialog()
|
AppPreferencesDialog::~AppPreferencesDialog()
|
||||||
|
@ -36,6 +58,8 @@ AppPreferencesDialog::~AppPreferencesDialog()
|
||||||
|
|
||||||
void AppPreferencesDialog::writeValues()
|
void AppPreferencesDialog::writeValues()
|
||||||
{
|
{
|
||||||
|
qDebug() << "writeValues";
|
||||||
|
|
||||||
g.autoCheckApp(ui->startupCheck_companion9x->isChecked());
|
g.autoCheckApp(ui->startupCheck_companion9x->isChecked());
|
||||||
g.autoCheckFw(ui->startupCheck_fw->isChecked());
|
g.autoCheckFw(ui->startupCheck_fw->isChecked());
|
||||||
g.showSplash(ui->showSplash->isChecked());
|
g.showSplash(ui->showSplash->isChecked());
|
||||||
|
@ -69,13 +93,13 @@ void AppPreferencesDialog::writeValues()
|
||||||
else
|
else
|
||||||
g.profile[g.id()].name(ui->profileNameLE->text());
|
g.profile[g.id()].name(ui->profileNameLE->text());
|
||||||
|
|
||||||
// If a new radio type has been choosen, several things need to reset
|
// If a new fw type has been choosen, several things need to reset
|
||||||
if ( initialRadioType != ui->radioCB->currentIndex())
|
g.cpuId( ui->CPU_ID_LE->text() );
|
||||||
{
|
current_firmware_variant = getFirmwareVariant();
|
||||||
|
if (g.profile[g.id()].fwType() != current_firmware_variant.id) {
|
||||||
g.profile[g.id()].fwName("");
|
g.profile[g.id()].fwName("");
|
||||||
g.profile[g.id()].fwType(getDefaultFwType(ui->radioCB->currentIndex()));
|
|
||||||
current_firmware_variant = GetFirmwareVariant(g.profile[g.id()].fwType());
|
|
||||||
g.profile[g.id()].initFwVariables();
|
g.profile[g.id()].initFwVariables();
|
||||||
|
g.profile[g.id()].fwType( current_firmware_variant.id );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -105,8 +129,10 @@ void AppPreferencesDialog::initSettings()
|
||||||
ui->showSplash->setChecked(g.showSplash());
|
ui->showSplash->setChecked(g.showSplash());
|
||||||
ui->historySize->setValue(g.historySize());
|
ui->historySize->setValue(g.historySize());
|
||||||
ui->backLightColor->setCurrentIndex(g.backLight());
|
ui->backLightColor->setCurrentIndex(g.backLight());
|
||||||
if (getRadioType(g.profile[g.id()].fwType())==6) // TODO - NOT AT ALL OK. THERE SHOULD BE A COMMON RADIO DEFINITION.
|
|
||||||
|
if (IS_TARANIS(GetCurrentFirmware()->getBoard()))
|
||||||
ui->backLightColor->setEnabled(false);
|
ui->backLightColor->setEnabled(false);
|
||||||
|
|
||||||
ui->simuSW->setChecked(g.simuSW());
|
ui->simuSW->setChecked(g.simuSW());
|
||||||
ui->modelWizard_CB->setChecked(g.useWizard());
|
ui->modelWizard_CB->setChecked(g.useWizard());
|
||||||
ui->libraryPath->setText(g.libDir());
|
ui->libraryPath->setText(g.libDir());
|
||||||
|
@ -159,8 +185,7 @@ void AppPreferencesDialog::initSettings()
|
||||||
ui->sdPath->setText(g.profile[g.id()].sdPath());
|
ui->sdPath->setText(g.profile[g.id()].sdPath());
|
||||||
ui->profileNameLE->setText(g.profile[g.id()].name());
|
ui->profileNameLE->setText(g.profile[g.id()].name());
|
||||||
ui->SplashFileName->setText(g.profile[g.id()].splashFile());
|
ui->SplashFileName->setText(g.profile[g.id()].splashFile());
|
||||||
initialRadioType = getRadioType(g.profile[g.id()].fwType());
|
|
||||||
ui->radioCB->setCurrentIndex(initialRadioType);
|
|
||||||
displayImage( g.profile[g.id()].splashFile() );
|
displayImage( g.profile[g.id()].splashFile() );
|
||||||
|
|
||||||
QString hwSettings;
|
QString hwSettings;
|
||||||
|
@ -176,6 +201,19 @@ void AppPreferencesDialog::initSettings()
|
||||||
}
|
}
|
||||||
ui->lblGeneralSettings->setText(hwSettings);
|
ui->lblGeneralSettings->setText(hwSettings);
|
||||||
|
|
||||||
|
|
||||||
|
ui->CPU_ID_LE->setText(g.cpuId());
|
||||||
|
FirmwareInterface * current_firmware = GetCurrentFirmware();
|
||||||
|
|
||||||
|
foreach(FirmwareInterface * firmware, firmwares) {
|
||||||
|
ui->downloadVerCB->addItem(firmware->name, firmware->id);
|
||||||
|
if (current_firmware == firmware) {
|
||||||
|
ui->downloadVerCB->setCurrentIndex(ui->downloadVerCB->count() - 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
baseFirmwareChanged();
|
||||||
|
firmwareChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
void AppPreferencesDialog::on_libraryPathButton_clicked()
|
void AppPreferencesDialog::on_libraryPathButton_clicked()
|
||||||
|
@ -319,5 +357,196 @@ void AppPreferencesDialog::on_clearImageButton_clicked() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void AppPreferencesDialog::showVoice(bool show)
|
||||||
|
{
|
||||||
|
if (show)
|
||||||
|
showVoice();
|
||||||
|
else
|
||||||
|
hideVoice();
|
||||||
|
}
|
||||||
|
|
||||||
|
void AppPreferencesDialog::showVoice()
|
||||||
|
{
|
||||||
|
ui->voiceLabel->show();
|
||||||
|
ui->voiceCombo->show();
|
||||||
|
}
|
||||||
|
|
||||||
|
void AppPreferencesDialog::hideVoice()
|
||||||
|
{
|
||||||
|
ui->voiceLabel->hide();
|
||||||
|
ui->voiceCombo->hide();
|
||||||
|
QTimer::singleShot(0, this, SLOT(shrink()));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void AppPreferencesDialog::baseFirmwareChanged()
|
||||||
|
{
|
||||||
|
QVariant selected_firmware = ui->downloadVerCB->itemData(ui->downloadVerCB->currentIndex());
|
||||||
|
voice=NULL;
|
||||||
|
foreach(FirmwareInterface * firmware, firmwares) {
|
||||||
|
if (firmware->id == selected_firmware) {
|
||||||
|
showVoice(firmware->voice);
|
||||||
|
populateFirmwareOptions(firmware);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
firmwareChanged();
|
||||||
|
}
|
||||||
|
|
||||||
|
FirmwareVariant AppPreferencesDialog::getFirmwareVariant()
|
||||||
|
{
|
||||||
|
QVariant selected_firmware = ui->downloadVerCB->itemData(ui->downloadVerCB->currentIndex());
|
||||||
|
bool voice=false;
|
||||||
|
foreach(FirmwareInterface * firmware, firmwares) {
|
||||||
|
if (firmware->id == selected_firmware) {
|
||||||
|
QString id = firmware->id;
|
||||||
|
foreach(QCheckBox *cb, optionsCheckBoxes) {
|
||||||
|
if (cb->isChecked()) {
|
||||||
|
if (cb->text()=="voice" && cb->isChecked())
|
||||||
|
voice=true;
|
||||||
|
id += QString("-") + cb->text();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (! firmware->getCapability(MultiLangVoice)) {
|
||||||
|
if (ui->voiceCombo->count() && (voice || firmware->voice))
|
||||||
|
id += QString("-tts") + ui->voiceCombo->currentText();
|
||||||
|
}
|
||||||
|
if (ui->langCombo->count())
|
||||||
|
id += QString("-") + ui->langCombo->currentText();
|
||||||
|
|
||||||
|
return GetFirmwareVariant(id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Should never occur...
|
||||||
|
return default_firmware_variant;
|
||||||
|
}
|
||||||
|
|
||||||
|
void AppPreferencesDialog::firmwareOptionChanged(bool state)
|
||||||
|
{
|
||||||
|
QCheckBox *cb = qobject_cast<QCheckBox*>(sender());
|
||||||
|
FirmwareInterface * firmware=NULL;
|
||||||
|
if (cb && state) {
|
||||||
|
QVariant selected_firmware = ui->downloadVerCB->itemData(ui->downloadVerCB->currentIndex());
|
||||||
|
foreach(firmware, firmwares) {
|
||||||
|
if (firmware->id == selected_firmware) {
|
||||||
|
foreach(QList<Option> opts, firmware->opts) {
|
||||||
|
foreach(Option opt, opts) {
|
||||||
|
if (cb->text() == opt.name) {
|
||||||
|
foreach(Option other, opts) {
|
||||||
|
if (other.name != opt.name) {
|
||||||
|
foreach(QCheckBox *ocb, optionsCheckBoxes) {
|
||||||
|
if (ocb->text() == other.name)
|
||||||
|
ocb->setChecked(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (voice) {
|
||||||
|
showVoice(voice->isChecked());
|
||||||
|
}
|
||||||
|
|
||||||
|
return firmwareChanged();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (cb && !state) {
|
||||||
|
if (cb->text()=="voice") {
|
||||||
|
hideVoice();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (voice) {
|
||||||
|
showVoice(voice->isChecked());
|
||||||
|
}
|
||||||
|
else if (firmware) {
|
||||||
|
if (firmware->voice) {
|
||||||
|
showVoice();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return firmwareChanged();
|
||||||
|
}
|
||||||
|
|
||||||
|
void AppPreferencesDialog::firmwareLangChanged()
|
||||||
|
{
|
||||||
|
firmwareChanged();
|
||||||
|
}
|
||||||
|
|
||||||
|
void AppPreferencesDialog::firmwareChanged()
|
||||||
|
{
|
||||||
|
if (updateLock)
|
||||||
|
return;
|
||||||
|
|
||||||
|
FirmwareVariant variant = getFirmwareVariant();
|
||||||
|
QString stamp;
|
||||||
|
stamp.append(variant.firmware->getStampUrl());
|
||||||
|
QString url = variant.getFirmwareUrl();
|
||||||
|
// B-Plan
|
||||||
|
if (false) {
|
||||||
|
ui->CPU_ID_LE->show();
|
||||||
|
ui->CPU_ID_LABEL->show();
|
||||||
|
} else {
|
||||||
|
ui->CPU_ID_LE->hide();
|
||||||
|
ui->CPU_ID_LABEL->hide();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void AppPreferencesDialog::populateFirmwareOptions(const FirmwareInterface * firmware)
|
||||||
|
{
|
||||||
|
const FirmwareInterface * parent = /*firmware->parent ? firmware->parent : */ firmware;
|
||||||
|
|
||||||
|
updateLock = true;
|
||||||
|
|
||||||
|
ui->langCombo->clear();
|
||||||
|
foreach(const char *lang, parent->languages) {
|
||||||
|
ui->langCombo->addItem(lang);
|
||||||
|
if (current_firmware_variant.id.endsWith(lang))
|
||||||
|
ui->langCombo->setCurrentIndex(ui->langCombo->count() - 1);
|
||||||
|
}
|
||||||
|
ui->voiceCombo->clear();
|
||||||
|
foreach(const char *lang, parent->ttslanguages) {
|
||||||
|
ui->voiceCombo->addItem(lang);
|
||||||
|
if (current_firmware_variant.id.contains(QString("-tts%1").arg(lang)))
|
||||||
|
ui->voiceCombo->setCurrentIndex(ui->voiceCombo->count() - 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
showVoice(ui->langCombo->count()!=0);
|
||||||
|
|
||||||
|
int index = 0;
|
||||||
|
foreach(QList<Option> opts, parent->opts) {
|
||||||
|
foreach(Option opt, opts) {
|
||||||
|
if (index >= optionsCheckBoxes.size()) {
|
||||||
|
qDebug() << "This firmware needs more options checkboxes!";
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
QCheckBox *cb = optionsCheckBoxes.at(index++);
|
||||||
|
if (cb) {
|
||||||
|
cb->show();
|
||||||
|
cb->setText(opt.name);
|
||||||
|
cb->setToolTip(opt.tooltip);
|
||||||
|
cb->setCheckState(current_firmware_variant.id.contains(opt.name) ? Qt::Checked : Qt::Unchecked);
|
||||||
|
|
||||||
|
if (opt.name==QString("voice")) {
|
||||||
|
voice=cb;
|
||||||
|
showVoice(current_firmware_variant.id.contains(opt.name) ||firmware->voice);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (; index<optionsCheckBoxes.size(); index++) {
|
||||||
|
QCheckBox *cb = optionsCheckBoxes.at(index);
|
||||||
|
cb->hide();
|
||||||
|
cb->setCheckState(Qt::Unchecked);
|
||||||
|
}
|
||||||
|
|
||||||
|
updateLock = false;
|
||||||
|
QTimer::singleShot(0, this, SLOT(shrink()));
|
||||||
|
}
|
||||||
|
|
||||||
|
void AppPreferencesDialog::shrink()
|
||||||
|
{
|
||||||
|
resize(0,0);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
#include "eeprominterface.h"
|
#include "eeprominterface.h"
|
||||||
|
|
||||||
namespace Ui {
|
namespace Ui {
|
||||||
class AppPreferencesDialog;
|
class AppPreferencesDialog;
|
||||||
}
|
}
|
||||||
|
|
||||||
class Joystick;
|
class Joystick;
|
||||||
|
@ -15,20 +15,35 @@ class AppPreferencesDialog : public QDialog
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit AppPreferencesDialog(QWidget *parent = 0);
|
explicit AppPreferencesDialog(QWidget *parent = 0);
|
||||||
~AppPreferencesDialog();
|
~AppPreferencesDialog();
|
||||||
Joystick *joystick;
|
Joystick *joystick;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
int initialRadioType;
|
QList<QCheckBox *> optionsCheckBoxes;
|
||||||
|
bool updateLock;
|
||||||
|
void showVoice(bool);
|
||||||
|
void showVoice();
|
||||||
|
void hideVoice();
|
||||||
|
void populateLocale();
|
||||||
|
void populateFirmwareOptions(const FirmwareInterface *);
|
||||||
|
FirmwareVariant getFirmwareVariant();
|
||||||
|
QCheckBox * voice;
|
||||||
|
|
||||||
Ui::AppPreferencesDialog *ui;
|
Ui::AppPreferencesDialog *ui;
|
||||||
void initSettings();
|
void initSettings();
|
||||||
bool displayImage( QString fileName );
|
bool displayImage( QString fileName );
|
||||||
void loadProfileString(QString profile, QString label);
|
void loadProfileString(QString profile, QString label);
|
||||||
void loadFromProfile();
|
void loadFromProfile();
|
||||||
|
|
||||||
private slots:
|
protected slots:
|
||||||
|
void shrink();
|
||||||
|
void firmwareLangChanged();
|
||||||
|
void baseFirmwareChanged();
|
||||||
|
void firmwareOptionChanged(bool state);
|
||||||
|
void firmwareChanged();
|
||||||
|
|
||||||
void writeValues();
|
void writeValues();
|
||||||
void on_libraryPathButton_clicked();
|
void on_libraryPathButton_clicked();
|
||||||
void on_snapshotPathButton_clicked();
|
void on_snapshotPathButton_clicked();
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -800,7 +800,7 @@ May be different from firmware language</string>
|
||||||
<connection>
|
<connection>
|
||||||
<sender>buttonBox</sender>
|
<sender>buttonBox</sender>
|
||||||
<signal>accepted()</signal>
|
<signal>accepted()</signal>
|
||||||
<receiver>fwPreferencesDialog</receiver>
|
<receiver>FirmwarePreferencesDialog</receiver>
|
||||||
<slot>accept()</slot>
|
<slot>accept()</slot>
|
||||||
<hints>
|
<hints>
|
||||||
<hint type="sourcelabel">
|
<hint type="sourcelabel">
|
||||||
|
@ -816,7 +816,7 @@ May be different from firmware language</string>
|
||||||
<connection>
|
<connection>
|
||||||
<sender>buttonBox</sender>
|
<sender>buttonBox</sender>
|
||||||
<signal>rejected()</signal>
|
<signal>rejected()</signal>
|
||||||
<receiver>fwPreferencesDialog</receiver>
|
<receiver>FirmwarePreferencesDialog</receiver>
|
||||||
<slot>reject()</slot>
|
<slot>reject()</slot>
|
||||||
<hints>
|
<hints>
|
||||||
<hint type="sourcelabel">
|
<hint type="sourcelabel">
|
||||||
|
|
|
@ -958,27 +958,3 @@ QPixmap makePixMap( QImage image, QString firmwareType )
|
||||||
}
|
}
|
||||||
return(QPixmap::fromImage(image));
|
return(QPixmap::fromImage(image));
|
||||||
}
|
}
|
||||||
|
|
||||||
int getRadioType(QString firmwareType)
|
|
||||||
{
|
|
||||||
if (firmwareType.contains( "taranis" )) return 6;
|
|
||||||
if (firmwareType.contains( "sky9x" )) return 5;
|
|
||||||
if (firmwareType.contains( "gruvin9x")) return 4;
|
|
||||||
if (firmwareType.contains( "9xr128" )) return 3;
|
|
||||||
if (firmwareType.contains( "9xr" )) return 2;
|
|
||||||
if (firmwareType.contains( "9x128" )) return 1;
|
|
||||||
return 0; // 9x
|
|
||||||
}
|
|
||||||
|
|
||||||
QString getDefaultFwType( int radioType )
|
|
||||||
{
|
|
||||||
switch (radioType){
|
|
||||||
case 6: return "opentx-taranis-en";
|
|
||||||
case 5: return "opentx-sky9x-en";
|
|
||||||
case 4: return "opentx-gruvin9x-en";
|
|
||||||
case 3: return "opentx-9xr128-en";
|
|
||||||
case 2: return "opentx-9xr-en";
|
|
||||||
case 1: return "opentx-9x128-en";
|
|
||||||
default: return "opentx-9x-en";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -128,10 +128,4 @@ void startSimulation(QWidget * parent, RadioData & radioData, int modelIdx);
|
||||||
// Format a pixmap to fit on the radio using a specific firmware
|
// Format a pixmap to fit on the radio using a specific firmware
|
||||||
QPixmap makePixMap( QImage image, QString firmwareType );
|
QPixmap makePixMap( QImage image, QString firmwareType );
|
||||||
|
|
||||||
// Return a radio type derived from a firmware type string
|
|
||||||
int getRadioType(QString firmwareType);
|
|
||||||
|
|
||||||
// Return the default firmware string for a specified radio
|
|
||||||
QString getDefaultFwType( int radioType );
|
|
||||||
|
|
||||||
#endif // HELPERS_H
|
#endif // HELPERS_H
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue