From 50a73a3af5a478e25f52cd0b1203a1f50cc969d5 Mon Sep 17 00:00:00 2001 From: bsongis Date: Fri, 18 Apr 2014 16:55:53 +0200 Subject: [PATCH] Each ModelEdit window now has its own FirmwareInterface (it means that we could open 2 ModelEdit windows on different firmwares) --- companion/src/mdichild.cpp | 2 +- companion/src/modeledit/channels.cpp | 24 +++--- companion/src/modeledit/channels.h | 2 +- companion/src/modeledit/curves.cpp | 20 ++--- companion/src/modeledit/curves.h | 2 +- companion/src/modeledit/customfunctions.cpp | 32 +++---- companion/src/modeledit/customfunctions.h | 2 +- companion/src/modeledit/expodialog.cpp | 23 ++--- companion/src/modeledit/expodialog.h | 3 +- companion/src/modeledit/flightmodes.cpp | 40 ++++----- companion/src/modeledit/flightmodes.h | 4 +- companion/src/modeledit/heli.cpp | 4 +- companion/src/modeledit/heli.h | 2 +- companion/src/modeledit/inputs.cpp | 20 ++--- companion/src/modeledit/inputs.h | 2 +- companion/src/modeledit/logicalswitches.cpp | 22 ++--- companion/src/modeledit/logicalswitches.h | 2 +- companion/src/modeledit/mixerdialog.cpp | 23 ++--- companion/src/modeledit/mixerdialog.h | 3 +- companion/src/modeledit/mixes.cpp | 38 ++++---- companion/src/modeledit/mixes.h | 2 +- companion/src/modeledit/modeledit.cpp | 29 ++++--- companion/src/modeledit/modeledit.h | 3 +- companion/src/modeledit/modelpanel.cpp | 3 +- companion/src/modeledit/modelpanel.h | 3 +- companion/src/modeledit/setup.cpp | 96 ++++++++++----------- companion/src/modeledit/setup.h | 10 +-- companion/src/modeledit/telemetry.cpp | 56 ++++++------ companion/src/modeledit/telemetry.h | 10 +-- companion/src/modeledit/templates.cpp | 16 ++-- 30 files changed, 253 insertions(+), 245 deletions(-) diff --git a/companion/src/mdichild.cpp b/companion/src/mdichild.cpp index c76d75ac2..dc09e76cd 100644 --- a/companion/src/mdichild.cpp +++ b/companion/src/mdichild.cpp @@ -181,7 +181,7 @@ void MdiChild::modelEdit() QApplication::setOverrideCursor(Qt::WaitCursor); checkAndInitModel( row ); ModelData &model = radioData.models[row - 1]; - ModelEdit *t = new ModelEdit(radioData, (row - 1), false, this); + ModelEdit *t = new ModelEdit(this, radioData, (row - 1), GetCurrentFirmware()); t->setWindowTitle(tr("Editing model %1: ").arg(row) + model.name); connect(t, SIGNAL(modified()), this, SLOT(setModified())); t->show(); diff --git a/companion/src/modeledit/channels.cpp b/companion/src/modeledit/channels.cpp index c93eb073c..80b47cc34 100644 --- a/companion/src/modeledit/channels.cpp +++ b/companion/src/modeledit/channels.cpp @@ -6,14 +6,14 @@ #include #include -Channels::Channels(QWidget * parent, ModelData & model, GeneralSettings & generalSettings): - ModelPanel(parent, model, generalSettings) +Channels::Channels(QWidget * parent, ModelData & model, GeneralSettings & generalSettings, FirmwareInterface * firmware): + ModelPanel(parent, model, generalSettings, firmware) { QGridLayout * gridLayout = new QGridLayout(this); bool minimize = false; int col = 1; - if (GetCurrentFirmware()->getCapability(ChannelsName)) + if (firmware->getCapability(ChannelsName)) { minimize=true; addLabel(gridLayout, tr("Name"), col++); @@ -24,12 +24,12 @@ Channels::Channels(QWidget * parent, ModelData & model, GeneralSettings & genera addLabel(gridLayout, tr("Direction"), col++, minimize); if (IS_TARANIS(GetEepromInterface()->getBoard())) addLabel(gridLayout, tr("Curve"), col++, minimize); - if (GetCurrentFirmware()->getCapability(PPMCenter)) + if (firmware->getCapability(PPMCenter)) addLabel(gridLayout, tr("PPM Center"), col++, minimize); - if (GetCurrentFirmware()->getCapability(SYMLimits)) + if (firmware->getCapability(SYMLimits)) addLabel(gridLayout, tr("Linear Subtrim"), col++, true); - for (int i=0; igetCapability(Outputs); i++) { + for (int i=0; igetCapability(Outputs); i++) { col = 0; // Channel label @@ -39,7 +39,7 @@ Channels::Channels(QWidget * parent, ModelData & model, GeneralSettings & genera gridLayout->addWidget(label, i+1, col++, 1, 1); // Channel name - int nameLen = GetCurrentFirmware()->getCapability(ChannelsName); + int nameLen = firmware->getCapability(ChannelsName); if (nameLen > 0) { QLineEdit * name = new QLineEdit(this); name->setProperty("index", i); @@ -103,7 +103,7 @@ Channels::Channels(QWidget * parent, ModelData & model, GeneralSettings & genera if (IS_TARANIS(GetEepromInterface()->getBoard())) { QComboBox * curveCB = new QComboBox(this); curveCB->setProperty("index", i); - int numcurves = GetCurrentFirmware()->getCapability(NumCurves); + int numcurves = firmware->getCapability(NumCurves); for (int j=-numcurves; j<=numcurves; j++) { curveCB->addItem(CurveReference(CurveReference::CURVE_REF_CUSTOM, j).toString(), j); } @@ -113,7 +113,7 @@ Channels::Channels(QWidget * parent, ModelData & model, GeneralSettings & genera } // PPM center - if (GetCurrentFirmware()->getCapability(PPMCenter)) { + if (firmware->getCapability(PPMCenter)) { QSpinBox * center = new QSpinBox(this); center->setProperty("index", i); center->setAlignment(Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter); @@ -126,7 +126,7 @@ Channels::Channels(QWidget * parent, ModelData & model, GeneralSettings & genera } // Symetrical limits - if (GetCurrentFirmware()->getCapability(SYMLimits)) { + if (firmware->getCapability(SYMLimits)) { QCheckBox * symlimits = new QCheckBox(this); symlimits->setProperty("index", i); symlimits->setChecked(model.limitData[i].symetrical); @@ -135,7 +135,7 @@ Channels::Channels(QWidget * parent, ModelData & model, GeneralSettings & genera } } // Push the rows up - addVSpring(gridLayout, 0,GetCurrentFirmware()->getCapability(Outputs)+1); + addVSpring(gridLayout, 0,firmware->getCapability(Outputs)+1); } Channels::~Channels() @@ -188,7 +188,7 @@ void Channels::maxEdited() void Channels::refreshExtendedLimits() { - for (int i=0; igetCapability(Outputs); i++) { + for (int i=0; igetCapability(Outputs); i++) { QDoubleSpinBox * minDSB = minSpins[i]; QDoubleSpinBox * maxDSB = maxSpins[i]; diff --git a/companion/src/modeledit/channels.h b/companion/src/modeledit/channels.h index bbad6081a..202f4a03d 100644 --- a/companion/src/modeledit/channels.h +++ b/companion/src/modeledit/channels.h @@ -9,7 +9,7 @@ class Channels : public ModelPanel Q_OBJECT public: - Channels(QWidget *parent, ModelData & model, GeneralSettings & generalSettings); + Channels(QWidget *parent, ModelData & model, GeneralSettings & generalSettings, FirmwareInterface * firmware); ~Channels(); private: diff --git a/companion/src/modeledit/curves.cpp b/companion/src/modeledit/curves.cpp index b4a02f599..0e5f903e7 100644 --- a/companion/src/modeledit/curves.cpp +++ b/companion/src/modeledit/curves.cpp @@ -92,8 +92,8 @@ float curveSymmetricalX(float x, float coeff, float yMin, float yMid, float yMax return y; } -Curves::Curves(QWidget * parent, ModelData & model, GeneralSettings & generalSettings): - ModelPanel(parent, model, generalSettings), +Curves::Curves(QWidget * parent, ModelData & model, GeneralSettings & generalSettings, FirmwareInterface * firmware): + ModelPanel(parent, model, generalSettings, firmware), ui(new Ui::Curves), currentCurve(0) { @@ -101,7 +101,7 @@ Curves::Curves(QWidget * parent, ModelData & model, GeneralSettings & generalSet lock = true; - if (!GetCurrentFirmware()->getCapability(HasCvNames)) { + if (!firmware->getCapability(HasCvNames)) { ui->curveName->hide(); ui->curveNameLabel->hide(); } @@ -110,7 +110,7 @@ Curves::Curves(QWidget * parent, ModelData & model, GeneralSettings & generalSet scene->setItemIndexMethod(QGraphicsScene::NoIndex); ui->curvePreview->setScene(scene); - for (int i=0; igetCapability(NumCurves); i++) { + for (int i=0; igetCapability(NumCurves); i++) { visibleCurves[i] = false; // The reset curve button @@ -164,7 +164,7 @@ Curves::Curves(QWidget * parent, ModelData & model, GeneralSettings & generalSet ui->pointsLayout->addWidget(spnx[i], i, 1, 1, 1); bool insert; - if (GetCurrentFirmware()->getCapability(EnhancedCurves)) { + if (firmware->getCapability(EnhancedCurves)) { insert = (i >= 1); } else { @@ -220,7 +220,7 @@ void Curves::update() { lock = true; - if (GetCurrentFirmware()->getCapability(HasCvNames)) { + if (firmware->getCapability(HasCvNames)) { ui->curveName->setText(model.curves[currentCurve].name); } @@ -242,7 +242,7 @@ void Curves::updateCurveType() int index = 0; - if (GetCurrentFirmware()->getCapability(EnhancedCurves)) { + if (firmware->getCapability(EnhancedCurves)) { index = model.curves[currentCurve].count - 2; } else { @@ -288,7 +288,7 @@ void Curves::updateCurve() pen.setWidth(1); pen.setStyle(Qt::SolidLine); - int numcurves = GetCurrentFirmware()->getCapability(NumCurves); + int numcurves = firmware->getCapability(NumCurves); for (int k=0; kgetCapability(NumCurves); + int numcurves = firmware->getCapability(NumCurves); int totalpoints = 0; for (int i=0; igetCapability(NumCurvePoints); + int fwpoints = firmware->getCapability(NumCurvePoints); if (totalpoints > fwpoints) { QMessageBox::warning(this, "companion", tr("Not enough free points in EEPROM to store the curve.")); return false; diff --git a/companion/src/modeledit/curves.h b/companion/src/modeledit/curves.h index 9cabed576..57a39504a 100644 --- a/companion/src/modeledit/curves.h +++ b/companion/src/modeledit/curves.h @@ -21,7 +21,7 @@ class Curves : public ModelPanel Q_OBJECT public: - Curves(QWidget *parent, ModelData & model, GeneralSettings & generalSettings); + Curves(QWidget *parent, ModelData & model, GeneralSettings & generalSettings, FirmwareInterface * firmware); virtual ~Curves(); virtual void update(); diff --git a/companion/src/modeledit/customfunctions.cpp b/companion/src/modeledit/customfunctions.cpp index 7b61c7df7..51de7cc69 100644 --- a/companion/src/modeledit/customfunctions.cpp +++ b/companion/src/modeledit/customfunctions.cpp @@ -47,8 +47,8 @@ void RepeatComboBox::update() setCurrentIndex(value); } -CustomFunctionsPanel::CustomFunctionsPanel(QWidget * parent, ModelData & model, GeneralSettings & generalSettings): - ModelPanel(parent, model, generalSettings), +CustomFunctionsPanel::CustomFunctionsPanel(QWidget * parent, ModelData & model, GeneralSettings & generalSettings, FirmwareInterface * firmware): + ModelPanel(parent, model, generalSettings, firmware), initialized(false) #if defined(PHONON) , @@ -66,9 +66,9 @@ CustomFunctionsPanel::CustomFunctionsPanel(QWidget * parent, ModelData & model, addEmptyLabel(gridLayout, 5 ); lock = true; - int num_fsw = GetCurrentFirmware()->getCapability(CustomFunctions); + int num_fsw = firmware->getCapability(CustomFunctions); - if (!GetCurrentFirmware()->getCapability(VoicesAsNumbers)) { + if (!firmware->getCapability(VoicesAsNumbers)) { for (int i=0; igetCapability(VoicesMaxLength)+4; + int vml= firmware->getCapability(VoicesMaxLength)+4; if (qd.exists()) { QStringList filters; filters << "*.wav" << "*.WAV"; @@ -227,7 +227,7 @@ void CustomFunctionsPanel::playMusic() QDir qd(path); QString track; if (qd.exists()) { - if (GetCurrentFirmware()->getCapability(VoicesAsNumbers)) { + if (firmware->getCapability(VoicesAsNumbers)) { track = path + QString("/%1.wav").arg(int(fswtchParam[index]->value()), 4, 10, (const QChar)'0'); } else { @@ -360,7 +360,7 @@ void CustomFunctionsPanel::refreshCustomFunction(int i, bool modified) widgetsMask |= CUSTOM_FUNCTION_SOURCE_PARAM + CUSTOM_FUNCTION_ENABLE; } else if (index==FuncPlaySound || index==FuncPlayHaptic || index==FuncPlayValue || index==FuncPlayPrompt || index==FuncPlayBoth || index==FuncBackgroundMusic) { - if (index != FuncBackgroundMusic && GetCurrentFirmware()->getCapability(HasFuncRepeat)) { + if (index != FuncBackgroundMusic && firmware->getCapability(HasFuncRepeat)) { widgetsMask |= CUSTOM_FUNCTION_REPEAT; fswtchRepeat[i]->update(); } @@ -370,7 +370,7 @@ void CustomFunctionsPanel::refreshCustomFunction(int i, bool modified) widgetsMask |= CUSTOM_FUNCTION_SOURCE_PARAM + CUSTOM_FUNCTION_REPEAT; } else if (index==FuncPlayPrompt || index==FuncPlayBoth) { - if (GetCurrentFirmware()->getCapability(VoicesAsNumbers)) { + if (firmware->getCapability(VoicesAsNumbers)) { fswtchParam[i]->setDecimals(0); fswtchParam[i]->setSingleStep(1); fswtchParam[i]->setMinimum(0); @@ -407,7 +407,7 @@ void CustomFunctionsPanel::refreshCustomFunction(int i, bool modified) widgetsMask |= CUSTOM_FUNCTION_FILE_PARAM; if (modified) { memset(model.funcSw[i].paramarm, 0, sizeof(model.funcSw[i].paramarm)); - int vml = GetCurrentFirmware()->getCapability(VoicesMaxLength); + int vml = firmware->getCapability(VoicesMaxLength); if (fswtchParamArmT[i]->currentText() != "----") { widgetsMask |= CUSTOM_FUNCTION_PLAY; for (int j=0; jcurrentText().length(), vml); j++) { @@ -427,7 +427,7 @@ void CustomFunctionsPanel::refreshCustomFunction(int i, bool modified) widgetsMask |= CUSTOM_FUNCTION_FILE_PARAM; if (modified) { memset(model.funcSw[i].paramarm, 0, sizeof(model.funcSw[i].paramarm)); - int vml=GetCurrentFirmware()->getCapability(VoicesMaxLength); + int vml=firmware->getCapability(VoicesMaxLength); if (fswtchParamArmT[i]->currentText() != "----") { widgetsMask |= CUSTOM_FUNCTION_PLAY; for (int j=0; jcurrentText().length(),vml); j++) { @@ -476,7 +476,7 @@ void CustomFunctionsPanel::refreshCustomFunction(int i, bool modified) void CustomFunctionsPanel::update() { lock = true; - for (int i=0; igetCapability(CustomFunctions); i++) { + for (int i=0; igetCapability(CustomFunctions); i++) { if (!initialized) { populateSwitchCB(fswtchSwtch[i], model.funcSw[i].swtch, generalSettings, POPULATE_ONOFF); populateFuncCB(fswtchFunc[i], model.funcSw[i].func); @@ -562,24 +562,24 @@ void CustomFunctionsPanel::populateFuncCB(QComboBox *b, unsigned int value) b->clear(); for (unsigned int i=0; iaddItem(FuncSwData(AssignFunc(i)).funcToString()); - if (!GetCurrentFirmware()->getCapability(HasVolume)) { + if (!firmware->getCapability(HasVolume)) { if (i==FuncVolume || i==FuncBackgroundMusic || i==FuncBackgroundMusicPause) { QModelIndex index = b->model()->index(i, 0); QVariant v(0); b->model()->setData(index, v, Qt::UserRole - 1); } } - if ((i==FuncPlayHaptic) && !GetCurrentFirmware()->getCapability(Haptic)) { + if ((i==FuncPlayHaptic) && !firmware->getCapability(Haptic)) { QModelIndex index = b->model()->index(i, 0); QVariant v(0); b->model()->setData(index, v, Qt::UserRole - 1); } - if ((i==FuncPlayBoth) && !GetCurrentFirmware()->getCapability(HasBeeper)) { + if ((i==FuncPlayBoth) && !firmware->getCapability(HasBeeper)) { QModelIndex index = b->model()->index(i, 0); QVariant v(0); b->model()->setData(index, v, Qt::UserRole - 1); } - if ((i==FuncLogs) && !GetCurrentFirmware()->getCapability(HasSDLogs)) { + if ((i==FuncLogs) && !firmware->getCapability(HasSDLogs)) { QModelIndex index = b->model()->index(i, 0); QVariant v(0); b->model()->setData(index, v, Qt::UserRole - 1); @@ -640,7 +640,7 @@ void CustomFunctionsPanel::populateFuncParamCB(QComboBox *b, const ModelData & m qs.append( QObject::tr("Timer2")); qs.append( QObject::tr("All")); qs.append( QObject::tr("Telemetry")); - int reCount = GetCurrentFirmware()->getCapability(RotaryEncoders); + int reCount = firmware->getCapability(RotaryEncoders); if (reCount == 1) { qs.append( QObject::tr("Rotary Encoder")); } diff --git a/companion/src/modeledit/customfunctions.h b/companion/src/modeledit/customfunctions.h index b9b60f17d..fecab42a3 100644 --- a/companion/src/modeledit/customfunctions.h +++ b/companion/src/modeledit/customfunctions.h @@ -36,7 +36,7 @@ class CustomFunctionsPanel : public ModelPanel Q_OBJECT public: - CustomFunctionsPanel(QWidget *parent, ModelData & model, GeneralSettings & generalSettings); + CustomFunctionsPanel(QWidget *parent, ModelData & model, GeneralSettings & generalSettings, FirmwareInterface * firmware); ~CustomFunctionsPanel(); virtual void update(); diff --git a/companion/src/modeledit/expodialog.cpp b/companion/src/modeledit/expodialog.cpp index 9c75d6e56..c1a5941dd 100644 --- a/companion/src/modeledit/expodialog.cpp +++ b/companion/src/modeledit/expodialog.cpp @@ -2,11 +2,12 @@ #include "ui_expodialog.h" #include "helpers.h" -ExpoDialog::ExpoDialog(QWidget *parent, ModelData & model, ExpoData *expoData, GeneralSettings & generalSettings, char * inputName) : +ExpoDialog::ExpoDialog(QWidget *parent, ModelData & model, ExpoData *expoData, GeneralSettings & generalSettings, FirmwareInterface * firmware, char * inputName) : QDialog(parent), ui(new Ui::ExpoDialog), model(model), generalSettings(generalSettings), + firmware(firmware), ed(expoData), inputName(inputName) { @@ -28,7 +29,7 @@ ExpoDialog::ExpoDialog(QWidget *parent, ModelData & model, ExpoData *expoData, G ui->sideCB->setCurrentIndex(ed->mode-1); - if (!GetCurrentFirmware()->getCapability(FlightPhases)) { + if (!firmware->getCapability(FlightPhases)) { ui->label_phases->hide(); for (int i=0; i<9; i++) { lb_fp[i]->hide(); @@ -43,13 +44,13 @@ ExpoDialog::ExpoDialog(QWidget *parent, ModelData & model, ExpoData *expoData, G } mask <<= 1; } - for (int i=GetCurrentFirmware()->getCapability(FlightPhases); i<9;i++) { + for (int i=firmware->getCapability(FlightPhases); i<9;i++) { lb_fp[i]->hide(); cb_fp[i]->hide(); } } - if (GetCurrentFirmware()->getCapability(VirtualInputs)) { + if (firmware->getCapability(VirtualInputs)) { ui->inputName->setMaxLength(4); populateSourceCB(ui->sourceCB, ed->srcRaw, model, POPULATE_SOURCES | POPULATE_SWITCHES | POPULATE_TRIMS | POPULATE_TELEMETRY); ui->sourceCB->removeItem(0); @@ -69,7 +70,7 @@ ExpoDialog::ExpoDialog(QWidget *parent, ModelData & model, ExpoData *expoData, G ui->trimCB->addItem(tr("Ail"), 4); ui->trimCB->setCurrentIndex(1 - ed->carryTrim); - int expolength = GetCurrentFirmware()->getCapability(HasExpoNames); + int expolength = firmware->getCapability(HasExpoNames); if (!expolength) { ui->lineNameLabel->hide(); ui->lineName->hide(); @@ -96,7 +97,7 @@ ExpoDialog::ExpoDialog(QWidget *parent, ModelData & model, ExpoData *expoData, G for (int i=0; i<9; i++) { connect(cb_fp[i], SIGNAL(toggled(bool)), this, SLOT(valuesChanged())); } - if (GetCurrentFirmware()->getCapability(VirtualInputs)) + if (firmware->getCapability(VirtualInputs)) connect(ui->inputName, SIGNAL(editingFinished()), this, SLOT(valuesChanged())); QTimer::singleShot(0, this, SLOT(shrink())); @@ -111,7 +112,7 @@ ExpoDialog::~ExpoDialog() void ExpoDialog::updateScale() { - if (GetCurrentFirmware()->getCapability(VirtualInputs) && ed->srcRaw.type == SOURCE_TYPE_TELEMETRY) { + if (firmware->getCapability(VirtualInputs) && ed->srcRaw.type == SOURCE_TYPE_TELEMETRY) { RawSourceRange range = ed->srcRaw.getRange(); ui->scaleLabel->show(); ui->scale->show(); @@ -153,11 +154,11 @@ void ExpoDialog::valuesChanged() ed->phases<<=1; } ed->phases>>=1; - if (GetCurrentFirmware()->getCapability(FlightPhases)) { + if (firmware->getCapability(FlightPhases)) { int zeros=0; int ones=0; int phtemp=ed->phases; - for (int i=0; igetCapability(FlightPhases); i++) { + for (int i=0; igetCapability(FlightPhases); i++) { if (phtemp & 1) { ones++; } @@ -168,7 +169,7 @@ void ExpoDialog::valuesChanged() } if (zeros==1) { phtemp=ed->phases; - for (int i=0; igetCapability(FlightPhases); i++) { + for (int i=0; igetCapability(FlightPhases); i++) { if ((phtemp & 1)==0) { break; } @@ -177,7 +178,7 @@ void ExpoDialog::valuesChanged() } else if (ones==1) { phtemp=ed->phases; - for (int i=0; igetCapability(FlightPhases); i++) { + for (int i=0; igetCapability(FlightPhases); i++) { if (phtemp & 1) { break; } diff --git a/companion/src/modeledit/expodialog.h b/companion/src/modeledit/expodialog.h index c052afe00..eac2edc52 100644 --- a/companion/src/modeledit/expodialog.h +++ b/companion/src/modeledit/expodialog.h @@ -14,7 +14,7 @@ namespace Ui { class ExpoDialog : public QDialog { Q_OBJECT public: - ExpoDialog(QWidget *parent, ModelData & model, ExpoData *expodata, GeneralSettings & generalSettings, char * inputName); + ExpoDialog(QWidget *parent, ModelData & model, ExpoData *expodata, GeneralSettings & generalSettings, FirmwareInterface * firmware, char * inputName); ~ExpoDialog(); protected: @@ -28,6 +28,7 @@ class ExpoDialog : public QDialog { Ui::ExpoDialog * ui; ModelData & model; GeneralSettings & generalSettings; + FirmwareInterface * firmware; ExpoData * ed; char * inputName; GVarGroup * gvGroup; diff --git a/companion/src/modeledit/flightmodes.cpp b/companion/src/modeledit/flightmodes.cpp index 1a80aa6c6..fa437a6bd 100644 --- a/companion/src/modeledit/flightmodes.cpp +++ b/companion/src/modeledit/flightmodes.cpp @@ -5,24 +5,24 @@ #include #include -FlightMode::FlightMode(QWidget * parent, ModelData & model, int phaseIdx, GeneralSettings & generalSettings): - ModelPanel(parent, model, generalSettings), +FlightMode::FlightMode(QWidget * parent, ModelData & model, int phaseIdx, GeneralSettings & generalSettings, FirmwareInterface * firmware): + ModelPanel(parent, model, generalSettings, firmware), ui(new Ui::FlightMode), phaseIdx(phaseIdx), phase(model.phaseData[phaseIdx]), - reCount(GetCurrentFirmware()->getCapability(RotaryEncoders)), - gvCount(((!GetCurrentFirmware()->getCapability(HasVariants)) || (GetCurrentFirmwareVariant() & GVARS_VARIANT)) ? - GetCurrentFirmware()->getCapability(Gvars) : 0) + reCount(firmware->getCapability(RotaryEncoders)), + gvCount(((!firmware->getCapability(HasVariants)) || (GetCurrentFirmwareVariant() & GVARS_VARIANT)) ? + firmware->getCapability(Gvars) : 0) { ui->setupUi(this); - int modesCount = GetCurrentFirmware()->getCapability(FlightPhases); + int modesCount = firmware->getCapability(FlightPhases); // Phase name QRegExp rx(CHAR_FOR_NAMES_REGEX); if (modesCount) { ui->name->setValidator(new QRegExpValidator(rx, this)); - ui->name->setMaxLength(GetCurrentFirmware()->getCapability(FlightModesName)); + ui->name->setMaxLength(firmware->getCapability(FlightModesName)); connect(ui->name, SIGNAL(editingFinished()), this, SLOT(phaseName_editingFinished())); } else { @@ -39,9 +39,9 @@ FlightMode::FlightMode(QWidget * parent, ModelData & model, int phaseIdx, Genera } // FadeIn / FadeOut - if (GetCurrentFirmware()->getCapability(FlightPhasesHaveFades)) { - int scale = GetCurrentFirmware()->getCapability(SlowScale); - int range = GetCurrentFirmware()->getCapability(SlowRange); + if (firmware->getCapability(FlightPhasesHaveFades)) { + int scale = firmware->getCapability(SlowScale); + int range = firmware->getCapability(SlowRange); ui->fadeIn->setMaximum(float(range)/scale); ui->fadeIn->setSingleStep(1.0/scale); ui->fadeIn->setDecimals((scale==1 ? 0 :1) ); @@ -130,7 +130,7 @@ FlightMode::FlightMode(QWidget * parent, ModelData & model, int phaseIdx, Genera label->setText(tr("GVAR%1").arg(i+1)); gvLayout->addWidget(label, i, col++, 1, 1); // GVar name - int nameLen = GetCurrentFirmware()->getCapability(GvarsName); + int nameLen = firmware->getCapability(GvarsName); if (nameLen > 0) { gvNames[i] = new QLineEdit(ui->gvGB); gvNames[i]->setProperty("index", i); @@ -183,12 +183,12 @@ void FlightMode::update() { ui->name->setText(phase.name); - int scale = GetCurrentFirmware()->getCapability(SlowScale); + int scale = firmware->getCapability(SlowScale); ui->fadeIn->setValue(float(phase.fadeIn)/scale); ui->fadeOut->setValue(float(phase.fadeOut)/scale); for (int i=0; i<4; i++) { - int trimsMax = GetCurrentFirmware()->getCapability(ExtendedTrims); + int trimsMax = firmware->getCapability(ExtendedTrims); if (trimsMax == 0 || !model.extendedTrims) { trimsMax = 125; } @@ -249,7 +249,7 @@ void FlightMode::phaseSwitch_currentIndexChanged(int index) void FlightMode::phaseFadeIn_editingFinished() { QDoubleSpinBox *spinBox = qobject_cast(sender()); - int scale = GetCurrentFirmware()->getCapability(SlowScale); + int scale = firmware->getCapability(SlowScale); phase.fadeIn = round(spinBox->value()*scale); emit modified(); } @@ -257,7 +257,7 @@ void FlightMode::phaseFadeIn_editingFinished() void FlightMode::phaseFadeOut_editingFinished() { QDoubleSpinBox *spinBox = qobject_cast(sender()); - int scale = GetCurrentFirmware()->getCapability(SlowScale); + int scale = firmware->getCapability(SlowScale); phase.fadeOut = round(spinBox->value()*scale); emit modified(); } @@ -418,14 +418,14 @@ void FlightMode::phaseTrimSlider_valueChanged() /**********************************************************/ -FlightModes::FlightModes(QWidget * parent, ModelData & model, GeneralSettings & generalSettings): - ModelPanel(parent, model, generalSettings), - modesCount(GetCurrentFirmware()->getCapability(FlightPhases)) +FlightModes::FlightModes(QWidget * parent, ModelData & model, GeneralSettings & generalSettings, FirmwareInterface * firmware): + ModelPanel(parent, model, generalSettings, firmware), + modesCount(firmware->getCapability(FlightPhases)) { QGridLayout * gridLayout = new QGridLayout(this); tabWidget = new QTabWidget(this); for (int i=0; isetProperty("index", i); panels << tab; connect(tab, SIGNAL(modified()), this, SLOT(onPhaseModified())); @@ -449,7 +449,7 @@ QString FlightModes::getTabName(int index) { QString result = tr("Flight Mode %1").arg(index); const char *name = model.phaseData[index].name; - if (GetCurrentFirmware()->getCapability(FlightModesName) && strlen(name) > 0) { + if (firmware->getCapability(FlightModesName) && strlen(name) > 0) { result += tr(" (%1)").arg(name); } else if (index == 0) { diff --git a/companion/src/modeledit/flightmodes.h b/companion/src/modeledit/flightmodes.h index 983cf56af..618040f4b 100644 --- a/companion/src/modeledit/flightmodes.h +++ b/companion/src/modeledit/flightmodes.h @@ -18,7 +18,7 @@ class FlightMode : public ModelPanel Q_OBJECT public: - FlightMode(QWidget *parent, ModelData &model, int modeIdx, GeneralSettings & generalSettings); + FlightMode(QWidget *parent, ModelData &model, int modeIdx, GeneralSettings & generalSettings, FirmwareInterface * firmware); virtual ~FlightMode(); virtual void update(); @@ -66,7 +66,7 @@ class FlightModes : public ModelPanel Q_OBJECT public: - FlightModes(QWidget *parent, ModelData & model, GeneralSettings & generalSettings); + FlightModes(QWidget *parent, ModelData & model, GeneralSettings & generalSettings, FirmwareInterface * firmware); virtual ~FlightModes(); virtual void update(); diff --git a/companion/src/modeledit/heli.cpp b/companion/src/modeledit/heli.cpp index 05a39e28b..3b56e19fb 100644 --- a/companion/src/modeledit/heli.cpp +++ b/companion/src/modeledit/heli.cpp @@ -2,8 +2,8 @@ #include "ui_heli.h" #include "helpers.h" -HeliPanel::HeliPanel(QWidget *parent, ModelData & model, GeneralSettings & generalSettings): - ModelPanel(parent, model, generalSettings), +HeliPanel::HeliPanel(QWidget *parent, ModelData & model, GeneralSettings & generalSettings, FirmwareInterface * firmware): + ModelPanel(parent, model, generalSettings, firmware), ui(new Ui::Heli) { ui->setupUi(this); diff --git a/companion/src/modeledit/heli.h b/companion/src/modeledit/heli.h index 52a855797..c04551b0f 100644 --- a/companion/src/modeledit/heli.h +++ b/companion/src/modeledit/heli.h @@ -12,7 +12,7 @@ class HeliPanel : public ModelPanel Q_OBJECT public: - HeliPanel(QWidget *parent, ModelData & model, GeneralSettings & generalSettings); + HeliPanel(QWidget *parent, ModelData & model, GeneralSettings & generalSettings, FirmwareInterface * firmware); ~HeliPanel(); void update(); diff --git a/companion/src/modeledit/inputs.cpp b/companion/src/modeledit/inputs.cpp index 3be431e2e..a3cece6c1 100644 --- a/companion/src/modeledit/inputs.cpp +++ b/companion/src/modeledit/inputs.cpp @@ -3,8 +3,8 @@ #include "expodialog.h" #include "helpers.h" -InputsPanel::InputsPanel(QWidget *parent, ModelData & model, GeneralSettings & generalSettings): - ModelPanel(parent, model, generalSettings), +InputsPanel::InputsPanel(QWidget *parent, ModelData & model, GeneralSettings & generalSettings, FirmwareInterface * firmware): + ModelPanel(parent, model, generalSettings, firmware), expoInserted(false) { QGridLayout * exposLayout = new QGridLayout(this); @@ -47,7 +47,7 @@ void InputsPanel::update() { lock = true; - int inputsCount = GetCurrentFirmware()->getCapability(VirtualInputs); + int inputsCount = firmware->getCapability(VirtualInputs); if (inputsCount == 0) inputsCount = NUM_STICKS; @@ -75,20 +75,20 @@ void InputsPanel::update() } if (curDest!=(int)md->chn) { - if (GetCurrentFirmware()->getCapability(VirtualInputs)) + if (firmware->getCapability(VirtualInputs)) str = QString("%1").arg(getInputStr(model, md->chn), -8, ' '); else str = getInputStr(model, md->chn); curDest = md->chn; } else { - if (GetCurrentFirmware()->getCapability(VirtualInputs)) + if (firmware->getCapability(VirtualInputs)) str = " "; else str = " "; } - if (GetCurrentFirmware()->getCapability(VirtualInputs)) { + if (firmware->getCapability(VirtualInputs)) { str += " " + tr("Source(%1)").arg(md->srcRaw.toString()); if (md->carryTrim>0) { str += " " + tr("No Trim"); @@ -113,7 +113,7 @@ void InputsPanel::update() if (md->swtch.type != SWITCH_TYPE_NONE) str += " " + tr("Switch(%1)").arg(md->swtch.toString()); - if (GetCurrentFirmware()->getCapability(HasExpoNames)) { + if (firmware->getCapability(HasExpoNames)) { QString expoName = md->name; if (!expoName.isEmpty()) str += QString(" [%1]").arg(expoName); } @@ -171,13 +171,13 @@ void InputsPanel::gm_openExpo(int index) emit modified(); update(); - if (GetCurrentFirmware()->getCapability(VirtualInputs)) + if (firmware->getCapability(VirtualInputs)) strcpy(inputName, model.inputNames[mixd.chn]); - ExpoDialog *g = new ExpoDialog(this, model, &mixd, generalSettings, inputName); + ExpoDialog *g = new ExpoDialog(this, model, &mixd, generalSettings, firmware, inputName); if (g->exec()) { model.expoData[index] = mixd; - if (GetCurrentFirmware()->getCapability(VirtualInputs)) + if (firmware->getCapability(VirtualInputs)) strcpy(model.inputNames[mixd.chn], inputName); emit modified(); update(); diff --git a/companion/src/modeledit/inputs.h b/companion/src/modeledit/inputs.h index 44b99dd71..393901b2c 100644 --- a/companion/src/modeledit/inputs.h +++ b/companion/src/modeledit/inputs.h @@ -9,7 +9,7 @@ class InputsPanel : public ModelPanel Q_OBJECT public: - InputsPanel(QWidget *parent, ModelData & model, GeneralSettings & generalSettings); + InputsPanel(QWidget *parent, ModelData & model, GeneralSettings & generalSettings, FirmwareInterface * firmware); virtual ~InputsPanel(); virtual void update(); diff --git a/companion/src/modeledit/logicalswitches.cpp b/companion/src/modeledit/logicalswitches.cpp index 733b3721c..49d988946 100644 --- a/companion/src/modeledit/logicalswitches.cpp +++ b/companion/src/modeledit/logicalswitches.cpp @@ -7,8 +7,8 @@ #include #include "helpers.h" -LogicalSwitchesPanel::LogicalSwitchesPanel(QWidget * parent, ModelData & model, GeneralSettings & generalSettings): - ModelPanel(parent, model, generalSettings), +LogicalSwitchesPanel::LogicalSwitchesPanel(QWidget * parent, ModelData & model, GeneralSettings & generalSettings, FirmwareInterface * firmware): + ModelPanel(parent, model, generalSettings, firmware), selectedSwitch(0) { QGridLayout * gridLayout = new QGridLayout(this); @@ -18,13 +18,13 @@ LogicalSwitchesPanel::LogicalSwitchesPanel(QWidget * parent, ModelData & model, addLabel(gridLayout, tr("V1"), col++); addLabel(gridLayout, tr("V2"), col++); addLabel(gridLayout, tr("AND Switch"), col++); - if (GetCurrentFirmware()->getCapability(LogicalSwitchesExt)) { + if (firmware->getCapability(LogicalSwitchesExt)) { addLabel(gridLayout, tr("Duration"), col++); addLabel(gridLayout, tr("Delay"), col++); } lock = true; - for (int i=0; igetCapability(LogicalSwitches); i++) { + for (int i=0; igetCapability(LogicalSwitches); i++) { // The label QLabel * label = new QLabel(this); label->setProperty("index", i); @@ -90,7 +90,7 @@ LogicalSwitchesPanel::LogicalSwitchesPanel(QWidget * parent, ModelData & model, connect(cswitchAnd[i], SIGNAL(currentIndexChanged(int)), this, SLOT(andEdited(int))); gridLayout->addWidget(cswitchAnd[i], i+1, 4); - if (GetCurrentFirmware()->getCapability(LogicalSwitchesExt)) { + if (firmware->getCapability(LogicalSwitchesExt)) { // Duration cswitchDuration[i] = new QDoubleSpinBox(this); cswitchDuration[i]->setProperty("index", i); @@ -115,7 +115,7 @@ LogicalSwitchesPanel::LogicalSwitchesPanel(QWidget * parent, ModelData & model, } } // Push rows upward - addVSpring(gridLayout,0,GetCurrentFirmware()->getCapability(LogicalSwitches)+1); + addVSpring(gridLayout,0,firmware->getCapability(LogicalSwitches)+1); lock = false; } @@ -276,7 +276,7 @@ void LogicalSwitchesPanel::setSwitchWidgetVisibility(int i) { case LS_FAMILY_VOFS: mask |= SOURCE1_VISIBLE | VALUE2_VISIBLE; - populateSourceCB(cswitchSource1[i], source, model, POPULATE_SOURCES | POPULATE_VIRTUAL_INPUTS | POPULATE_TRIMS | POPULATE_SWITCHES | POPULATE_TELEMETRY | (GetCurrentFirmware()->getCapability(GvarsInCS) ? POPULATE_GVARS : 0)); + populateSourceCB(cswitchSource1[i], source, model, POPULATE_SOURCES | POPULATE_VIRTUAL_INPUTS | POPULATE_TRIMS | POPULATE_SWITCHES | POPULATE_TELEMETRY | (firmware->getCapability(GvarsInCS) ? POPULATE_GVARS : 0)); cswitchOffset[i]->setDecimals(range.decimals); cswitchOffset[i]->setSingleStep(range.step); if (model.customSw[i].func == LS_FN_DPOS || model.customSw[i].func == LS_FN_DAPOS) { @@ -304,8 +304,8 @@ void LogicalSwitchesPanel::setSwitchWidgetVisibility(int i) break; case LS_FAMILY_VCOMP: mask |= SOURCE1_VISIBLE | SOURCE2_VISIBLE; - populateSourceCB(cswitchSource1[i], RawSource(model.customSw[i].val1), model, POPULATE_SOURCES | POPULATE_VIRTUAL_INPUTS | POPULATE_TRIMS | POPULATE_SWITCHES | POPULATE_TELEMETRY | (GetCurrentFirmware()->getCapability(GvarsInCS) ? POPULATE_GVARS : 0)); - populateSourceCB(cswitchSource2[i], RawSource(model.customSw[i].val2), model, POPULATE_SOURCES | POPULATE_TRIMS | POPULATE_VIRTUAL_INPUTS | POPULATE_SWITCHES | POPULATE_TELEMETRY | (GetCurrentFirmware()->getCapability(GvarsInCS) ? POPULATE_GVARS : 0)); + populateSourceCB(cswitchSource1[i], RawSource(model.customSw[i].val1), model, POPULATE_SOURCES | POPULATE_VIRTUAL_INPUTS | POPULATE_TRIMS | POPULATE_SWITCHES | POPULATE_TELEMETRY | (firmware->getCapability(GvarsInCS) ? POPULATE_GVARS : 0)); + populateSourceCB(cswitchSource2[i], RawSource(model.customSw[i].val2), model, POPULATE_SOURCES | POPULATE_TRIMS | POPULATE_VIRTUAL_INPUTS | POPULATE_SWITCHES | POPULATE_TELEMETRY | (firmware->getCapability(GvarsInCS) ? POPULATE_GVARS : 0)); break; case LS_FAMILY_TIMER: mask |= VALUE1_VISIBLE | VALUE2_VISIBLE; @@ -331,7 +331,7 @@ void LogicalSwitchesPanel::updateLine(int i) setSwitchWidgetVisibility(i); lock = true; populateAndSwitchCB(cswitchAnd[i], RawSwitch(model.customSw[i].andsw)); - if (GetCurrentFirmware()->getCapability(LogicalSwitchesExt)) { + if (firmware->getCapability(LogicalSwitchesExt)) { cswitchDuration[i]->setValue(model.customSw[i].duration/10.0); cswitchDelay[i]->setValue(model.customSw[i].delay/10.0); } @@ -340,7 +340,7 @@ void LogicalSwitchesPanel::updateLine(int i) void LogicalSwitchesPanel::update() { - for (int i=0; igetCapability(LogicalSwitches); i++) { + for (int i=0; igetCapability(LogicalSwitches); i++) { updateLine(i); } } diff --git a/companion/src/modeledit/logicalswitches.h b/companion/src/modeledit/logicalswitches.h index 0055af8e3..0741e087a 100644 --- a/companion/src/modeledit/logicalswitches.h +++ b/companion/src/modeledit/logicalswitches.h @@ -10,7 +10,7 @@ class LogicalSwitchesPanel : public ModelPanel Q_OBJECT public: - LogicalSwitchesPanel(QWidget *parent, ModelData & model, GeneralSettings & generalSettings); + LogicalSwitchesPanel(QWidget *parent, ModelData & model, GeneralSettings & generalSettings, FirmwareInterface * firmware); virtual ~LogicalSwitchesPanel(); virtual void update(); diff --git a/companion/src/modeledit/mixerdialog.cpp b/companion/src/modeledit/mixerdialog.cpp index 86cd76a72..4423df656 100644 --- a/companion/src/modeledit/mixerdialog.cpp +++ b/companion/src/modeledit/mixerdialog.cpp @@ -3,11 +3,12 @@ #include "eeprominterface.h" #include "helpers.h" -MixerDialog::MixerDialog(QWidget *parent, ModelData & model, MixData *mixdata, GeneralSettings & generalSettings) : +MixerDialog::MixerDialog(QWidget *parent, ModelData & model, MixData *mixdata, GeneralSettings & generalSettings, FirmwareInterface * firmware) : QDialog(parent), ui(new Ui::MixerDialog), model(model), generalSettings(generalSettings), + firmware(firmware), md(mixdata), lock(false) { @@ -21,7 +22,7 @@ MixerDialog::MixerDialog(QWidget *parent, ModelData & model, MixData *mixdata, G populateSourceCB(ui->sourceCB, md->srcRaw, model, POPULATE_SOURCES | POPULATE_VIRTUAL_INPUTS | POPULATE_SWITCHES | POPULATE_TRIMS); ui->sourceCB->removeItem(0); - int limit = GetCurrentFirmware()->getCapability(OffsetWeight); + int limit = firmware->getCapability(OffsetWeight); gvWeightGroup = new GVarGroup(ui->weightGV, ui->weightSB, ui->weightCB, md->weight, 100, -limit, limit); gvOffsetGroup = new GVarGroup(ui->offsetGV, ui->offsetSB, ui->offsetCB, md->sOffset, 0, -limit, limit); @@ -29,12 +30,12 @@ MixerDialog::MixerDialog(QWidget *parent, ModelData & model, MixData *mixdata, G ui->MixDR_CB->setChecked(md->noExpo==0); - if (GetCurrentFirmware()->getCapability(VirtualInputs) || !GetCurrentFirmware()->getCapability(MixesWithoutExpo)) { + if (firmware->getCapability(VirtualInputs) || !firmware->getCapability(MixesWithoutExpo)) { ui->MixDR_CB->hide(); ui->label_MixDR->hide(); } - if (!GetCurrentFirmware()->getCapability(VirtualInputs)) { + if (!firmware->getCapability(VirtualInputs)) { ui->trimCB->addItem(tr("Rud")); ui->trimCB->addItem(tr("Ele")); ui->trimCB->addItem(tr("Thr")); @@ -43,7 +44,7 @@ MixerDialog::MixerDialog(QWidget *parent, ModelData & model, MixData *mixdata, G ui->trimCB->setCurrentIndex(1 - md->carryTrim); - int namelength = GetCurrentFirmware()->getCapability(HasMixerNames); + int namelength = firmware->getCapability(HasMixerNames); if (!namelength) { ui->label_name->hide(); ui->mixerName->hide(); @@ -54,7 +55,7 @@ MixerDialog::MixerDialog(QWidget *parent, ModelData & model, MixData *mixdata, G ui->mixerName->setValidator(new QRegExpValidator(rx, this)); ui->mixerName->setText(md->name); - if (!GetCurrentFirmware()->getCapability(FlightPhases)) { + if (!firmware->getCapability(FlightPhases)) { ui->label_phases->hide(); for (int i=0; i<9; i++) { lb_fp[i]->hide(); @@ -69,7 +70,7 @@ MixerDialog::MixerDialog(QWidget *parent, ModelData & model, MixData *mixdata, G } mask <<= 1; } - for (int i=GetCurrentFirmware()->getCapability(FlightPhases); i<9;i++) { + for (int i=firmware->getCapability(FlightPhases); i<9;i++) { lb_fp[i]->hide(); cb_fp[i]->hide(); } @@ -78,8 +79,8 @@ MixerDialog::MixerDialog(QWidget *parent, ModelData & model, MixData *mixdata, G populateSwitchCB(ui->switchesCB, md->swtch, generalSettings); ui->warningCB->setCurrentIndex(md->mixWarn); ui->mltpxCB->setCurrentIndex(md->mltpx); - int scale=GetCurrentFirmware()->getCapability(SlowScale); - float range=GetCurrentFirmware()->getCapability(SlowRange); + int scale=firmware->getCapability(SlowScale); + float range=firmware->getCapability(SlowRange); ui->slowDownSB->setMaximum(range/scale); ui->slowDownSB->setSingleStep(1.0/scale); ui->slowDownSB->setDecimals((scale==1 ? 0 :1)); @@ -142,7 +143,7 @@ void MixerDialog::valuesChanged() lock = true; QCheckBox * cb_fp[] = {ui->cb_FP0,ui->cb_FP1,ui->cb_FP2,ui->cb_FP3,ui->cb_FP4,ui->cb_FP5,ui->cb_FP6,ui->cb_FP7,ui->cb_FP8 }; md->srcRaw = RawSource(ui->sourceCB->itemData(ui->sourceCB->currentIndex()).toInt(), &model); - if (!GetCurrentFirmware()->getCapability(VirtualInputs) && GetCurrentFirmware()->getCapability(MixesWithoutExpo)) { + if (!firmware->getCapability(VirtualInputs) && firmware->getCapability(MixesWithoutExpo)) { bool drVisible = (md->srcRaw.type == SOURCE_TYPE_STICK && md->srcRaw.index < NUM_STICKS); ui->MixDR_CB->setEnabled(drVisible); ui->label_MixDR->setEnabled(drVisible); @@ -152,7 +153,7 @@ void MixerDialog::valuesChanged() md->swtch = RawSwitch(ui->switchesCB->itemData(ui->switchesCB->currentIndex()).toInt()); md->mixWarn = ui->warningCB->currentIndex(); md->mltpx = (MltpxValue)ui->mltpxCB->currentIndex(); - int scale=GetCurrentFirmware()->getCapability(SlowScale); + int scale=firmware->getCapability(SlowScale); md->delayDown = round(ui->delayDownSB->value()*scale); md->delayUp = round(ui->delayUpSB->value()*scale); md->speedDown = round(ui->slowDownSB->value()*scale); diff --git a/companion/src/modeledit/mixerdialog.h b/companion/src/modeledit/mixerdialog.h index a97081352..ccfebf58f 100644 --- a/companion/src/modeledit/mixerdialog.h +++ b/companion/src/modeledit/mixerdialog.h @@ -14,7 +14,7 @@ namespace Ui { class MixerDialog : public QDialog { Q_OBJECT public: - MixerDialog(QWidget *parent, ModelData & model, MixData *mixdata, GeneralSettings & generalSettings); + MixerDialog(QWidget *parent, ModelData & model, MixData *mixdata, GeneralSettings & generalSettings, FirmwareInterface * firmware); ~MixerDialog(); protected: @@ -28,6 +28,7 @@ class MixerDialog : public QDialog { Ui::MixerDialog *ui; ModelData & model; GeneralSettings & generalSettings; + FirmwareInterface * firmware; MixData *md; bool lock; GVarGroup * gvWeightGroup; diff --git a/companion/src/modeledit/mixes.cpp b/companion/src/modeledit/mixes.cpp index 99ff1f497..a40f66ff4 100644 --- a/companion/src/modeledit/mixes.cpp +++ b/companion/src/modeledit/mixes.cpp @@ -3,8 +3,8 @@ // #include // #include "expodialog.h" -MixesPanel::MixesPanel(QWidget *parent, ModelData & model, GeneralSettings & generalSettings): - ModelPanel(parent, model, generalSettings), +MixesPanel::MixesPanel(QWidget *parent, ModelData & model, GeneralSettings & generalSettings, FirmwareInterface * firmware): + ModelPanel(parent, model, generalSettings, firmware), mixInserted(false), highlightedSource(0) { @@ -49,7 +49,7 @@ QString MixesPanel::getChannelLabel(int curDest) str = QObject::tr("CH%1").arg(curDest); // TODO not nice, Qt brings a function for that, I don't remember right now (str.length() < 4) ? str.append(" ") : str.append(" "); - if (GetCurrentFirmware()->getCapability(HasChNames)) { + if (firmware->getCapability(HasChNames)) { QString name = model.limitData[curDest-1].name; if (!name.isEmpty()) { name = QString("(") + name + QString(")"); @@ -68,9 +68,9 @@ void MixesPanel::update() MixerlistWidget->clear(); unsigned int curDest = 0; int i; - unsigned int outputs = GetCurrentFirmware()->getCapability(Outputs); + unsigned int outputs = firmware->getCapability(Outputs); - for (i=0; igetCapability(Mixes); i++) { + for (i=0; igetCapability(Mixes); i++) { MixData *md = &model.mixData[i]; // qDebug() << "md->destCh: " << md->destCh; if (md->destCh==0 || md->destCh>outputs) continue; @@ -185,7 +185,7 @@ QString MixesPanel::getMixerText(int dest, bool * new_ch) if (md->sOffset) str += " " + Qt::escape(tr("Offset(%1)").arg(getGVarString(md->sOffset))); if (md->curve.value) str += " " + Qt::escape(md->curve.toString()); - int scale = GetCurrentFirmware()->getCapability(SlowScale); + int scale = firmware->getCapability(SlowScale); if (scale == 0) scale = 1; if (md->delayDown || md->delayUp) @@ -193,7 +193,7 @@ QString MixesPanel::getMixerText(int dest, bool * new_ch) if (md->speedDown || md->speedUp) str += Qt::escape(tr(" Slow(u%1:d%2)").arg((double)md->speedUp/scale).arg((double)md->speedDown/scale)); if (md->mixWarn) str += Qt::escape(tr(" Warn(%1)").arg(md->mixWarn)); - if (GetCurrentFirmware()->getCapability(HasMixerNames)) { + if (firmware->getCapability(HasMixerNames)) { QString MixerName; MixerName.append(md->name); if (!MixerName.isEmpty()) { @@ -206,14 +206,14 @@ QString MixesPanel::getMixerText(int dest, bool * new_ch) bool MixesPanel::gm_insertMix(int idx) { - if (idx<0 || idx>=GetCurrentFirmware()->getCapability(Mixes) || model.mixData[GetCurrentFirmware()->getCapability(Mixes)-1].destCh > 0) { + if (idx<0 || idx>=firmware->getCapability(Mixes) || model.mixData[firmware->getCapability(Mixes)-1].destCh > 0) { QMessageBox::information(this, "companion", tr("Not enough available mixers!")); return false; } int i = model.mixData[idx].destCh; memmove(&model.mixData[idx+1],&model.mixData[idx], - (GetCurrentFirmware()->getCapability(Mixes)-(idx+1))*sizeof(MixData) ); + (firmware->getCapability(Mixes)-(idx+1))*sizeof(MixData) ); memset(&model.mixData[idx],0,sizeof(MixData)); model.mixData[idx].srcRaw = RawSource(SOURCE_TYPE_NONE); model.mixData[idx].destCh = i; @@ -224,19 +224,19 @@ bool MixesPanel::gm_insertMix(int idx) void MixesPanel::gm_deleteMix(int index) { memmove(&model.mixData[index],&model.mixData[index+1], - (GetCurrentFirmware()->getCapability(Mixes)-(index+1))*sizeof(MixData)); - memset(&model.mixData[GetCurrentFirmware()->getCapability(Mixes)-1],0,sizeof(MixData)); + (firmware->getCapability(Mixes)-(index+1))*sizeof(MixData)); + memset(&model.mixData[firmware->getCapability(Mixes)-1],0,sizeof(MixData)); } void MixesPanel::gm_openMix(int index) { - if(index<0 || index>=GetCurrentFirmware()->getCapability(Mixes)) return; + if(index<0 || index>=firmware->getCapability(Mixes)) return; MixData mixd(model.mixData[index]); emit modified(); update(); - MixerDialog *g = new MixerDialog(this, model, &mixd, generalSettings); + MixerDialog *g = new MixerDialog(this, model, &mixd, generalSettings, firmware); if(g->exec()) { model.mixData[index] = mixd; emit modified(); @@ -254,8 +254,8 @@ void MixesPanel::gm_openMix(int index) int MixesPanel::getMixerIndex(unsigned int dch) { int i = 0; - while ((model.mixData[i].destCh<=dch) && (model.mixData[i].destCh) && (igetCapability(Mixes))) i++; - if(i==GetCurrentFirmware()->getCapability(Mixes)) return -1; + while ((model.mixData[i].destCh<=dch) && (model.mixData[i].destCh) && (igetCapability(Mixes))) i++; + if(i==firmware->getCapability(Mixes)) return -1; return i; } @@ -291,7 +291,7 @@ QList MixesPanel::createMixListFromSelected() QList list; foreach(QListWidgetItem *item, MixerlistWidget->selectedItems()) { int idx= item->data(Qt::UserRole).toByteArray().at(0); - if(idx>=0 && idxgetCapability(Mixes)) list << idx; + if(idx>=0 && idxgetCapability(Mixes)) list << idx; } return list; } @@ -364,7 +364,7 @@ void MixesPanel::pasteMixerMimeData(const QMimeData * mimeData, int destIdx) int i = 0; while(igetCapability(Mixes)) break; + if(idx==firmware->getCapability(Mixes)) break; if (!gm_insertMix(idx)) break; @@ -510,7 +510,7 @@ void MixesPanel::mixerlistWidget_KeyPress(QKeyEvent *event) int MixesPanel::gm_moveMix(int idx, bool dir) //true=inc=down false=dec=up { - if(idx>GetCurrentFirmware()->getCapability(Mixes) || (idx==GetCurrentFirmware()->getCapability(Mixes) && dir)) return idx; + if(idx>firmware->getCapability(Mixes) || (idx==firmware->getCapability(Mixes) && dir)) return idx; int tdx = dir ? idx+1 : idx-1; MixData &src=model.mixData[idx]; @@ -519,7 +519,7 @@ int MixesPanel::gm_moveMix(int idx, bool dir) //true=inc=down false=dec=up if (src.destCh == 1 && !dir) return idx; - unsigned int outputs = GetCurrentFirmware()->getCapability(Outputs); + unsigned int outputs = firmware->getCapability(Outputs); if((src.destCh==0) || (src.destCh>outputs) || (tgt.destCh>outputs)) return idx; if (tgt.destCh!=src.destCh) { diff --git a/companion/src/modeledit/mixes.h b/companion/src/modeledit/mixes.h index 36b0b1fff..fda60d8fc 100644 --- a/companion/src/modeledit/mixes.h +++ b/companion/src/modeledit/mixes.h @@ -10,7 +10,7 @@ class MixesPanel : public ModelPanel Q_OBJECT public: - MixesPanel(QWidget *parent, ModelData & model, GeneralSettings & generalSettings); + MixesPanel(QWidget *parent, ModelData & model, GeneralSettings & generalSettings, FirmwareInterface * firmware); virtual ~MixesPanel(); virtual void update(); diff --git a/companion/src/modeledit/modeledit.cpp b/companion/src/modeledit/modeledit.cpp index 25aabd928..0bccd5512 100644 --- a/companion/src/modeledit/modeledit.cpp +++ b/companion/src/modeledit/modeledit.cpp @@ -14,31 +14,32 @@ #include "appdata.h" #include -ModelEdit::ModelEdit(RadioData & radioData, int modelId, bool openWizard, bool isNew, QWidget *parent) : +ModelEdit::ModelEdit(QWidget * parent, RadioData & radioData, int modelId, FirmwareInterface * firmware) : QDialog(parent), ui(new Ui::ModelEdit), modelId(modelId), model(radioData.models[modelId]), - generalSettings(radioData.generalSettings) + generalSettings(radioData.generalSettings), + firmware(firmware) { ui->setupUi(this); setWindowIcon(CompanionIcon("edit.png")); restoreGeometry(g.modelEditGeo()); ui->pushButton->setIcon(CompanionIcon("simulate.png")); - Setup * setupPanel = new Setup(this, model, generalSettings); + SetupPanel * setupPanel = new SetupPanel(this, model, generalSettings, firmware); addTab(setupPanel, tr("Setup")); - addTab(new HeliPanel(this, model, generalSettings), tr("Heli")); - addTab(new FlightModes(this, model, generalSettings), tr("Flight Modes")); - addTab(new InputsPanel(this, model, generalSettings), tr("Inputs")); - addTab(new MixesPanel(this, model, generalSettings), tr("Mixes")); - Channels * chnPanel = new Channels(this, model, generalSettings); + addTab(new HeliPanel(this, model, generalSettings, firmware), tr("Heli")); + addTab(new FlightModes(this, model, generalSettings, firmware), tr("Flight Modes")); + addTab(new InputsPanel(this, model, generalSettings, firmware), tr("Inputs")); + addTab(new MixesPanel(this, model, generalSettings, firmware), tr("Mixes")); + Channels * chnPanel = new Channels(this, model, generalSettings, firmware); addTab(chnPanel, tr("Servos")); - addTab(new Curves(this, model, generalSettings), tr("Curves")); - addTab(new LogicalSwitchesPanel(this, model, generalSettings), tr("Logical Switches")); - if (GetCurrentFirmware()->getCapability(CustomFunctions)) - addTab(new CustomFunctionsPanel(this, model, generalSettings), tr("Special Functions")); - if (GetCurrentFirmware()->getCapability(Telemetry) & TM_HASTELEMETRY) - addTab(new TelemetryPanel(this, model, generalSettings), tr("Telemetry")); + addTab(new Curves(this, model, generalSettings, firmware), tr("Curves")); + addTab(new LogicalSwitchesPanel(this, model, generalSettings, firmware), tr("Logical Switches")); + if (firmware->getCapability(CustomFunctions)) + addTab(new CustomFunctionsPanel(this, model, generalSettings, firmware), tr("Special Functions")); + if (firmware->getCapability(Telemetry) & TM_HASTELEMETRY) + addTab(new TelemetryPanel(this, model, generalSettings, firmware), tr("Telemetry")); connect(setupPanel, SIGNAL(extendedLimitsToggled()), chnPanel, SLOT(refreshExtendedLimits())); } diff --git a/companion/src/modeledit/modeledit.h b/companion/src/modeledit/modeledit.h index 9450d90d4..3f92f10cb 100644 --- a/companion/src/modeledit/modeledit.h +++ b/companion/src/modeledit/modeledit.h @@ -13,7 +13,7 @@ class ModelEdit : public QDialog Q_OBJECT public: - explicit ModelEdit(RadioData & radioData, int modelId , bool openWizard =false, bool inNew =false, QWidget *parent = 0); + ModelEdit(QWidget * parent, RadioData & radioData, int modelId, FirmwareInterface * firmware); ~ModelEdit(); protected: @@ -32,6 +32,7 @@ class ModelEdit : public QDialog int modelId; ModelData & model; GeneralSettings & generalSettings; + FirmwareInterface * firmware; QVector panels; void addTab(ModelPanel *panel, QString text); diff --git a/companion/src/modeledit/modelpanel.cpp b/companion/src/modeledit/modelpanel.cpp index ea3aafde4..7ce39f2e8 100644 --- a/companion/src/modeledit/modelpanel.cpp +++ b/companion/src/modeledit/modelpanel.cpp @@ -1,10 +1,11 @@ #include "modelpanel.h" #include -ModelPanel::ModelPanel(QWidget * parent, ModelData & model, GeneralSettings & generalSettings): +ModelPanel::ModelPanel(QWidget * parent, ModelData & model, GeneralSettings & generalSettings, FirmwareInterface * firmware): QWidget(parent), model(model), generalSettings(generalSettings), + firmware(firmware), lock(false) { } diff --git a/companion/src/modeledit/modelpanel.h b/companion/src/modeledit/modelpanel.h index 81d2113cd..d016a326a 100644 --- a/companion/src/modeledit/modelpanel.h +++ b/companion/src/modeledit/modelpanel.h @@ -10,7 +10,7 @@ class ModelPanel : public QWidget Q_OBJECT public: - ModelPanel(QWidget *parent, ModelData & model, GeneralSettings & generalSettings); + ModelPanel(QWidget *parent, ModelData & model, GeneralSettings & generalSettings, FirmwareInterface * firmware); virtual ~ModelPanel(); signals: @@ -22,6 +22,7 @@ class ModelPanel : public QWidget protected: ModelData & model; GeneralSettings & generalSettings; + FirmwareInterface * firmware; bool lock; void addLabel(QGridLayout * gridLayout, QString text, int col, bool mimimize=false); void addEmptyLabel(QGridLayout * gridLayout, int col); diff --git a/companion/src/modeledit/setup.cpp b/companion/src/modeledit/setup.cpp index 9386c631f..366dfaf8c 100644 --- a/companion/src/modeledit/setup.cpp +++ b/companion/src/modeledit/setup.cpp @@ -5,8 +5,8 @@ #include "helpers.h" #include "appdata.h" -TimerPanel::TimerPanel(QWidget *parent, ModelData & model, TimerData & timer, GeneralSettings & generalSettings): - ModelPanel(parent, model, generalSettings), +TimerPanel::TimerPanel(QWidget *parent, ModelData & model, TimerData & timer, GeneralSettings & generalSettings, FirmwareInterface * firmware): + ModelPanel(parent, model, generalSettings, firmware), timer(timer), ui(new Ui::Timer) { @@ -17,7 +17,7 @@ TimerPanel::TimerPanel(QWidget *parent, ModelData & model, TimerData & timer, Ge // Mode populateSwitchCB(ui->mode, timer.mode, generalSettings, POPULATE_TIMER_MODES); - if (!GetCurrentFirmware()->getCapability(PermTimers)) { + if (!firmware->getCapability(PermTimers)) { ui->persistent->hide(); ui->persistentValue->hide(); } @@ -41,7 +41,7 @@ void TimerPanel::update() int sec = timer.val % 60; ui->value->setTime(QTime(0, min, sec)); - if (GetCurrentFirmware()->getCapability(PermTimers)) { + if (firmware->getCapability(PermTimers)) { int sign = 1; int pvalue = timer.pvalue; if (pvalue < 0) { @@ -94,8 +94,8 @@ void TimerPanel::on_minuteBeep_toggled(bool checked) /******************************************************************************/ -ModulePanel::ModulePanel(QWidget *parent, ModelData & model, ModuleData & module, GeneralSettings & generalSettings, int moduleIdx): - ModelPanel(parent, model, generalSettings), +ModulePanel::ModulePanel(QWidget *parent, ModelData & model, ModuleData & module, GeneralSettings & generalSettings, FirmwareInterface * firmware, int moduleIdx): + ModelPanel(parent, model, generalSettings, firmware), module(module), moduleIdx(moduleIdx), ui(new Ui::Module) @@ -112,7 +112,7 @@ ModulePanel::ModulePanel(QWidget *parent, ModelData & model, ModuleData & module else { ui->label_trainerMode->hide(); ui->trainerMode->hide(); - if (GetCurrentFirmware()->getCapability(NumModules) > 1) { + if (firmware->getCapability(NumModules) > 1) { if (moduleIdx == 0) label = tr("Internal Radio System"); else @@ -132,7 +132,7 @@ ModulePanel::ModulePanel(QWidget *parent, ModelData & model, ModuleData & module } } - if (GetCurrentFirmware()->getCapability(HasFailsafe)) { + if (firmware->getCapability(HasFailsafe)) { for (int i=0; i<16; i++) { QLabel * label = new QLabel(this); label->setText(QString::number(i+1)); @@ -211,7 +211,7 @@ void ModulePanel::update() ui->channelsCount->setVisible(mask & MASK_CHANNELS_RANGE); ui->channelsCount->setEnabled(mask & MASK_CHANNELS_COUNT); ui->channelsCount->setValue(module.channelsCount); - ui->channelsCount->setSingleStep(GetCurrentFirmware()->getCapability(HasPPMStart) ? 1 : 2); + ui->channelsCount->setSingleStep(firmware->getCapability(HasPPMStart) ? 1 : 2); // PPM settings fields ui->label_ppmPolarity->setVisible(mask & MASK_PPM_FIELDS); @@ -223,10 +223,10 @@ void ModulePanel::update() ui->label_ppmFrameLength->setVisible(mask & MASK_PPM_FIELDS); ui->ppmFrameLength->setVisible(mask & MASK_PPM_FIELDS); ui->ppmFrameLength->setMinimum(module.channelsCount*(model.extendedLimits ? 2.250 :2)+3.5); - ui->ppmFrameLength->setMaximum(GetCurrentFirmware()->getCapability(PPMFrameLength)); + ui->ppmFrameLength->setMaximum(firmware->getCapability(PPMFrameLength)); ui->ppmFrameLength->setValue(22.5+((double)module.ppmFrameLength)*0.5); - if (GetCurrentFirmware()->getCapability(HasFailsafe)) { + if (firmware->getCapability(HasFailsafe)) { ui->label_failsafeMode->setVisible(mask & MASK_FAILSAFES); ui->failsafeMode->setVisible(mask & MASK_FAILSAFES); ui->failsafeMode->setCurrentIndex(module.failsafeMode); @@ -323,8 +323,8 @@ void ModulePanel::onFailsafeSpinChanged(double value) /******************************************************************************/ -Setup::Setup(QWidget *parent, ModelData & model, GeneralSettings & generalSettings): - ModelPanel(parent, model, generalSettings), +SetupPanel::SetupPanel(QWidget *parent, ModelData & model, GeneralSettings & generalSettings, FirmwareInterface * firmware): + ModelPanel(parent, model, generalSettings, firmware), ui(new Ui::Setup) { lock = true; @@ -336,23 +336,23 @@ Setup::Setup(QWidget *parent, ModelData & model, GeneralSettings & generalSettin ui->name->setMaxLength(IS_TARANIS(GetEepromInterface()->getBoard()) ? 12 : 10); for (int i=0; igridLayout->addWidget(timers[i], 1+i, 1); connect(timers[i], SIGNAL(modified()), this, SLOT(onChildModified())); } - for (int i=0; igetCapability(NumModules); i++) { - modules[i] = new ModulePanel(this, model, model.moduleData[i], generalSettings, i); + for (int i=0; igetCapability(NumModules); i++) { + modules[i] = new ModulePanel(this, model, model.moduleData[i], generalSettings, firmware, i); ui->modulesLayout->addWidget(modules[i]); connect(modules[i], SIGNAL(modified()), this, SLOT(onChildModified())); } - if (GetCurrentFirmware()->getCapability(ModelTrainerEnable)) { - modules[C9X_NUM_MODULES] = new ModulePanel(this, model, model.moduleData[C9X_NUM_MODULES], generalSettings, -1); + if (firmware->getCapability(ModelTrainerEnable)) { + modules[C9X_NUM_MODULES] = new ModulePanel(this, model, model.moduleData[C9X_NUM_MODULES], generalSettings, firmware, -1); ui->modulesLayout->addWidget(modules[C9X_NUM_MODULES]); } - if (GetCurrentFirmware()->getCapability(ModelImage)) { + if (firmware->getCapability(ModelImage)) { QStringList items; items.append(""); QString path = g.profile[g.id()].sdPath(); @@ -399,13 +399,13 @@ Setup::Setup(QWidget *parent, ModelData & model, GeneralSettings & generalSettin ui->imagePreview->hide(); } - if (!GetCurrentFirmware()->getCapability(HasDisplayText)) { + if (!firmware->getCapability(HasDisplayText)) { ui->displayText->hide(); } // Beep Center checkboxes - int analogs = 4 + GetCurrentFirmware()->getCapability(Pots); - for (int i=0; igetCapability(RotaryEncoders); i++) { + int analogs = 4 + firmware->getCapability(Pots); + for (int i=0; igetCapability(RotaryEncoders); i++) { QCheckBox * checkbox = new QCheckBox(this); checkbox->setProperty("index", i); checkbox->setText(igetCapability(Switches)-1; i++) { + for (int i=0; igetCapability(Switches)-1; i++) { QLabel * label = new QLabel(this); QSlider * slider = new QSlider(this); QCheckBox * cb = new QCheckBox(this); @@ -449,11 +449,11 @@ Setup::Setup(QWidget *parent, ModelData & model, GeneralSettings & generalSettin startupSwitchesSliders << slider; startupSwitchesCheckboxes << cb; } - ui->switchesStartupLayout->addItem(new QSpacerItem(0, 0, QSizePolicy::Expanding, QSizePolicy::Minimum), 0, GetCurrentFirmware()->getCapability(Switches)); + ui->switchesStartupLayout->addItem(new QSpacerItem(0, 0, QSizePolicy::Expanding, QSizePolicy::Minimum), 0, firmware->getCapability(Switches)); // Pot warnings if(IS_TARANIS(GetEepromInterface()->getBoard())) { - for (int i=0; igetCapability(Pots); i++) { + for (int i=0; igetCapability(Pots); i++) { QCheckBox * cb = new QCheckBox(this); cb->setProperty("index", i+1); cb->setText(AnalogString(i+4)); @@ -469,43 +469,43 @@ Setup::Setup(QWidget *parent, ModelData & model, GeneralSettings & generalSettin lock = false; } -Setup::~Setup() +SetupPanel::~SetupPanel() { delete ui; } -void Setup::on_extendedLimits_toggled(bool checked) +void SetupPanel::on_extendedLimits_toggled(bool checked) { model.extendedLimits = checked; emit extendedLimitsToggled(); emit modified(); } -void Setup::on_throttleWarning_toggled(bool checked) +void SetupPanel::on_throttleWarning_toggled(bool checked) { model.disableThrottleWarning = !checked; emit modified(); } -void Setup::on_throttleReverse_toggled(bool checked) +void SetupPanel::on_throttleReverse_toggled(bool checked) { model.throttleReversed = checked; emit modified(); } -void Setup::on_extendedTrims_toggled(bool checked) +void SetupPanel::on_extendedTrims_toggled(bool checked) { model.extendedTrims = checked; emit modified(); } -void Setup::on_trimIncrement_currentIndexChanged(int index) +void SetupPanel::on_trimIncrement_currentIndexChanged(int index) { model.trimInc = index-2; emit modified(); } -void Setup::on_throttleSource_currentIndexChanged(int index) +void SetupPanel::on_throttleSource_currentIndexChanged(int index) { if (!lock) { model.thrTraceSrc = ui->throttleSource->itemData(index).toInt(); @@ -513,14 +513,14 @@ void Setup::on_throttleSource_currentIndexChanged(int index) } } -void Setup::on_name_editingFinished() +void SetupPanel::on_name_editingFinished() { int length = ui->name->maxLength(); strncpy(model.name, ui->name->text().toAscii(), length); emit modified(); } -void Setup::on_image_currentIndexChanged(int index) +void SetupPanel::on_image_currentIndexChanged(int index) { if (!lock) { strncpy(model.bitmap, ui->image->currentText().toAscii(), 10); @@ -552,7 +552,7 @@ void Setup::on_image_currentIndexChanged(int index) } } -void Setup::populateThrottleSourceCB() +void SetupPanel::populateThrottleSourceCB() { const QString sources9x[] = { QObject::tr("THR"), QObject::tr("P1"), QObject::tr("P2"), QObject::tr("P3")}; const QString sourcesTaranis[] = { QObject::tr("THR"), QObject::tr("S1"), QObject::tr("S2"), QObject::tr("S3"), QObject::tr("LS"), QObject::tr("RS")}; @@ -585,7 +585,7 @@ void Setup::populateThrottleSourceCB() lock = false; } -void Setup::update() +void SetupPanel::update() { ui->name->setText(model.name); @@ -615,20 +615,20 @@ void Setup::update() modules[i]->update(); } -void Setup::updateBeepCenter() +void SetupPanel::updateBeepCenter() { for (int i=0; isetChecked(model.beepANACenter & (0x01 << i)); } } -void Setup::updateStartupSwitches() +void SetupPanel::updateStartupSwitches() { lock = true; unsigned int switchStates = model.switchWarningStates; - for (int i=0; igetCapability(Switches)-1; i++) { + for (int i=0; igetCapability(Switches)-1; i++) { QSlider * slider = startupSwitchesSliders[i]; QCheckBox * cb = startupSwitchesCheckboxes[i]; bool enabled = !(model.nSwToWarn & (1 << i)); @@ -647,7 +647,7 @@ void Setup::updateStartupSwitches() lock = false; } -void Setup::startupSwitchEdited(int value) +void SetupPanel::startupSwitchEdited(int value) { if (!lock) { int shift = 0; @@ -686,7 +686,7 @@ void Setup::startupSwitchEdited(int value) } } -void Setup::startupSwitchToggled(bool checked) +void SetupPanel::startupSwitchToggled(bool checked) { if (!lock) { int index = sender()->property("index").toInt()-1; @@ -701,7 +701,7 @@ void Setup::startupSwitchToggled(bool checked) } } -void Setup::updatePotWarnings() +void SetupPanel::updatePotWarnings() { lock = true; int mode = model.nPotsToWarn >> 6; @@ -719,7 +719,7 @@ void Setup::updatePotWarnings() lock = false; } -void Setup::potWarningToggled(bool checked) +void SetupPanel::potWarningToggled(bool checked) { if (!lock) { int index = sender()->property("index").toInt()-1; @@ -734,7 +734,7 @@ void Setup::potWarningToggled(bool checked) } } -void Setup::on_potWarningMode_currentIndexChanged(int index) +void SetupPanel::on_potWarningMode_currentIndexChanged(int index) { if (!lock) { int mask = 0xC0; @@ -746,19 +746,19 @@ void Setup::on_potWarningMode_currentIndexChanged(int index) } } -void Setup::on_displayText_toggled(bool checked) +void SetupPanel::on_displayText_toggled(bool checked) { model.displayText = checked; emit modified(); } -void Setup::on_throttleTrim_toggled(bool checked) +void SetupPanel::on_throttleTrim_toggled(bool checked) { model.thrTrim = checked; emit modified(); } -void Setup::onBeepCenterToggled(bool checked) +void SetupPanel::onBeepCenterToggled(bool checked) { if (!lock) { int index = sender()->property("index").toInt(); @@ -771,7 +771,7 @@ void Setup::onBeepCenterToggled(bool checked) } } -void Setup::onChildModified() +void SetupPanel::onChildModified() { emit modified(); } diff --git a/companion/src/modeledit/setup.h b/companion/src/modeledit/setup.h index 8929939ad..3063c2833 100644 --- a/companion/src/modeledit/setup.h +++ b/companion/src/modeledit/setup.h @@ -20,7 +20,7 @@ class TimerPanel : public ModelPanel Q_OBJECT public: - TimerPanel(QWidget *parent, ModelData & model, TimerData & timer, GeneralSettings & generalSettings); + TimerPanel(QWidget *parent, ModelData & model, TimerData & timer, GeneralSettings & generalSettings, FirmwareInterface * firmware); virtual ~TimerPanel(); virtual void update(); @@ -42,7 +42,7 @@ class ModulePanel : public ModelPanel Q_OBJECT public: - ModulePanel(QWidget *parent, ModelData & model, ModuleData & module, GeneralSettings & generalSettings, int moduleIdx); + ModulePanel(QWidget *parent, ModelData & model, ModuleData & module, GeneralSettings & generalSettings, FirmwareInterface * firmware, int moduleIdx); virtual ~ModulePanel(); virtual void update(); @@ -66,13 +66,13 @@ class ModulePanel : public ModelPanel QVector failsafeSpins; }; -class Setup : public ModelPanel +class SetupPanel : public ModelPanel { Q_OBJECT public: - Setup(QWidget *parent, ModelData & model, GeneralSettings & generalSettings); - virtual ~Setup(); + SetupPanel(QWidget *parent, ModelData & model, GeneralSettings & generalSettings, FirmwareInterface * firmware); + virtual ~SetupPanel(); virtual void update(); diff --git a/companion/src/modeledit/telemetry.cpp b/companion/src/modeledit/telemetry.cpp index 83d8ee924..50e629086 100644 --- a/companion/src/modeledit/telemetry.cpp +++ b/companion/src/modeledit/telemetry.cpp @@ -5,8 +5,8 @@ #include "helpers.h" #include "appdata.h" -TelemetryAnalog::TelemetryAnalog(QWidget *parent, FrSkyChannelData & analog): - QWidget(parent), +TelemetryAnalog::TelemetryAnalog(QWidget *parent, FrSkyChannelData & analog, ModelData & model, GeneralSettings & generalSettings, FirmwareInterface * firmware): + ModelPanel(parent, model, generalSettings, firmware), ui(new Ui::TelemetryAnalog), analog(analog), lock(false) @@ -17,11 +17,11 @@ TelemetryAnalog::TelemetryAnalog(QWidget *parent, FrSkyChannelData & analog): if (analog.type==0 || analog.type==1 || analog.type==2) { ui->RatioSB->setDecimals(1); - ui->RatioSB->setMaximum(25.5*GetCurrentFirmware()->getCapability(TelemetryMaxMultiplier)); + ui->RatioSB->setMaximum(25.5*firmware->getCapability(TelemetryMaxMultiplier)); } else { ui->RatioSB->setDecimals(0); - ui->RatioSB->setMaximum(255*GetCurrentFirmware()->getCapability(TelemetryMaxMultiplier)); + ui->RatioSB->setMaximum(255*firmware->getCapability(TelemetryMaxMultiplier)); } ui->RatioSB->setValue(ratio); @@ -43,7 +43,7 @@ TelemetryAnalog::TelemetryAnalog(QWidget *parent, FrSkyChannelData & analog): ui->alarm2Label->setText(tr("Critical Alarm")); } - if (!(GetCurrentFirmware()->getCapability(Telemetry) & TM_HASOFFSET)) { + if (!(firmware->getCapability(Telemetry) & TM_HASOFFSET)) { ui->CalibSB->hide(); ui->CalibLabel->hide(); } @@ -87,11 +87,11 @@ void TelemetryAnalog::on_UnitCB_currentIndexChanged(int index) case 1: case 2: ui->RatioSB->setDecimals(1); - ui->RatioSB->setMaximum(25.5*GetCurrentFirmware()->getCapability(TelemetryMaxMultiplier)); + ui->RatioSB->setMaximum(25.5*firmware->getCapability(TelemetryMaxMultiplier)); break; default: ui->RatioSB->setDecimals(0); - ui->RatioSB->setMaximum(255*GetCurrentFirmware()->getCapability(TelemetryMaxMultiplier)); + ui->RatioSB->setMaximum(255*firmware->getCapability(TelemetryMaxMultiplier)); break; } ui->RatioSB->setValue(ratio); @@ -280,15 +280,15 @@ TelemetryAnalog::~TelemetryAnalog() /******************************************************/ -TelemetryCustomScreen::TelemetryCustomScreen(QWidget *parent, ModelData & model, FrSkyScreenData & screen, GeneralSettings & generalSettings): - ModelPanel(parent, model, generalSettings), +TelemetryCustomScreen::TelemetryCustomScreen(QWidget *parent, ModelData & model, FrSkyScreenData & screen, GeneralSettings & generalSettings, FirmwareInterface * firmware): + ModelPanel(parent, model, generalSettings, firmware), ui(new Ui::TelemetryCustomScreen), screen(screen) { ui->setupUi(this); for (int l=0; l<4; l++) { - for (int c=0; cgetCapability(TelemetryCustomScreensFieldsPerLine); c++) { + for (int c=0; cgetCapability(TelemetryCustomScreensFieldsPerLine); c++) { fieldsCB[l][c] = new QComboBox(this); fieldsCB[l][c]->setProperty("index", c + (l<<8)); populateTelemetrySourceCB(fieldsCB[l][c], screen.body.lines[l].source[c], l==3, model.frsky.usrProto); @@ -366,7 +366,7 @@ void TelemetryCustomScreen::update() if (screen.type == 0) { for (int l=0; l<4; l++) { - for (int c=0; cgetCapability(TelemetryCustomScreensFieldsPerLine); c++) { + for (int c=0; cgetCapability(TelemetryCustomScreensFieldsPerLine); c++) { fieldsCB[l][c]->setCurrentIndex(screen.body.lines[l].source[c]); } } @@ -465,26 +465,26 @@ void TelemetryCustomScreen::barMaxChanged(double value) /******************************************************/ -TelemetryPanel::TelemetryPanel(QWidget *parent, ModelData & model, GeneralSettings & generalSettings): - ModelPanel(parent, model, generalSettings), +TelemetryPanel::TelemetryPanel(QWidget *parent, ModelData & model, GeneralSettings & generalSettings, FirmwareInterface * firmware): + ModelPanel(parent, model, generalSettings, firmware), ui(new Ui::Telemetry) { ui->setupUi(this); - if (GetCurrentFirmware()->getCapability(NoTelemetryProtocol)) { + if (firmware->getCapability(NoTelemetryProtocol)) { model.frsky.usrProto = 1; } - analogs[0] = new TelemetryAnalog(this, model.frsky.channels[0]); + analogs[0] = new TelemetryAnalog(this, model.frsky.channels[0], model, generalSettings, firmware); ui->A1Layout->addWidget(analogs[0]); connect(analogs[0], SIGNAL(modified()), this, SLOT(onAnalogModified())); - analogs[1] = new TelemetryAnalog(this, model.frsky.channels[1]); + analogs[1] = new TelemetryAnalog(this, model.frsky.channels[1], model, generalSettings, firmware); ui->A2Layout->addWidget(analogs[1]); connect(analogs[1], SIGNAL(modified()), this, SLOT(onAnalogModified())); - for (int i=0; igetCapability(TelemetryCustomScreens); i++) { - TelemetryCustomScreen * tab = new TelemetryCustomScreen(this, model, model.frsky.screens[i], generalSettings); + for (int i=0; igetCapability(TelemetryCustomScreens); i++) { + TelemetryCustomScreen * tab = new TelemetryCustomScreen(this, model, model.frsky.screens[i], generalSettings, firmware); ui->customScreens->addTab(tab, tr("Telemetry screen %1").arg(i+1)); } @@ -508,7 +508,7 @@ void TelemetryPanel::setup() lock=true; //frsky Settings - if (!GetCurrentFirmware()->getCapability(TelemetryRSSIModel) ) { + if (!firmware->getCapability(TelemetryRSSIModel) ) { ui->RSSIGB->hide(); } ui->rssiAlarm1SB->setValue(model.frsky.rssiAlarms[0].value); @@ -524,7 +524,7 @@ void TelemetryPanel::setup() ui->rssiAlarm2Label->setText(tr("Critical Alarm")); } - if (!GetCurrentFirmware()->getCapability(HasAltitudeSel)) { + if (!firmware->getCapability(HasAltitudeSel)) { ui->AltitudeGPS_ChkB->hide(); } else { @@ -538,7 +538,7 @@ void TelemetryPanel::setup() ui->AltitudeToolbar_ChkB->hide(); } - int varioCap = GetCurrentFirmware()->getCapability(HasVario); + int varioCap = firmware->getCapability(HasVario); if (!varioCap) { ui->varioLimitMax_DSB->hide(); ui->varioLimitMinOff_ChkB->hide(); @@ -554,7 +554,7 @@ void TelemetryPanel::setup() ui->varioSource_label->hide(); } else { - if (!GetCurrentFirmware()->getCapability(HasVarioSink)) { + if (!firmware->getCapability(HasVarioSink)) { ui->varioLimitMinOff_ChkB->hide(); ui->varioLimitMin_DSB->hide(); ui->varioLimitCenterMin_DSB->hide(); @@ -584,18 +584,18 @@ void TelemetryPanel::setup() } } - if (!(GetCurrentFirmware()->getCapability(HasAltitudeSel)||GetCurrentFirmware()->getCapability(HasVario))) { + if (!(firmware->getCapability(HasAltitudeSel)||firmware->getCapability(HasVario))) { ui->altimetryGB->hide(); } - if (GetCurrentFirmware()->getCapability(NoTelemetryProtocol)) { + if (firmware->getCapability(NoTelemetryProtocol)) { ui->frskyProtoCB->setDisabled(true); } else { ui->frskyProtoCB->setEnabled(true); } - if (!GetCurrentFirmware()->getCapability(TelemetryUnits)) { + if (!firmware->getCapability(TelemetryUnits)) { ui->frskyUnitsCB->setDisabled(true); int index=0; if (firmware_id.contains("imperial")) { @@ -604,7 +604,7 @@ void TelemetryPanel::setup() ui->frskyUnitsCB->setCurrentIndex(index); } - if ((GetCurrentFirmware()->getCapability(Telemetry)&TM_HASWSHH)) { + if ((firmware->getCapability(Telemetry)&TM_HASWSHH)) { ui->frskyProtoCB->addItem(tr("Winged Shadow How High")); } else { @@ -612,7 +612,7 @@ void TelemetryPanel::setup() } ui->variousGB->hide(); - if (!(GetCurrentFirmware()->getCapability(HasFasOffset)) && !(firmware_id.contains("fasoffset"))) { + if (!(firmware->getCapability(HasFasOffset)) && !(firmware_id.contains("fasoffset"))) { ui->fasOffset_label->hide(); ui->fasOffset_DSB->hide(); } @@ -621,7 +621,7 @@ void TelemetryPanel::setup() ui->variousGB->show(); } - if (!(GetCurrentFirmware()->getCapability(HasMahPersistent))) { + if (!(firmware->getCapability(HasMahPersistent))) { ui->mahCount_label->hide(); ui->mahCount_SB->hide(); ui->mahCount_ChkB->hide(); diff --git a/companion/src/modeledit/telemetry.h b/companion/src/modeledit/telemetry.h index c0d29997d..3c949b524 100644 --- a/companion/src/modeledit/telemetry.h +++ b/companion/src/modeledit/telemetry.h @@ -12,14 +12,14 @@ namespace Ui { class Telemetry; } -class TelemetryAnalog : public QWidget +class TelemetryAnalog: public ModelPanel { Q_OBJECT friend class TelemetryPanel; public: - TelemetryAnalog(QWidget *parent, FrSkyChannelData & analog); + TelemetryAnalog(QWidget *parent, FrSkyChannelData & analog, ModelData & model, GeneralSettings & generalSettings, FirmwareInterface * firmware); virtual ~TelemetryAnalog(); signals: @@ -45,12 +45,12 @@ class TelemetryAnalog : public QWidget void update(); }; -class TelemetryCustomScreen : public ModelPanel +class TelemetryCustomScreen: public ModelPanel { Q_OBJECT public: - TelemetryCustomScreen(QWidget *parent, ModelData & model, FrSkyScreenData & screen, GeneralSettings & generalSettings); + TelemetryCustomScreen(QWidget *parent, ModelData & model, FrSkyScreenData & screen, GeneralSettings & generalSettings, FirmwareInterface * firmware); ~TelemetryCustomScreen(); void update(); @@ -79,7 +79,7 @@ class TelemetryPanel : public ModelPanel Q_OBJECT public: - TelemetryPanel(QWidget *parent, ModelData & model, GeneralSettings & generalSettings); + TelemetryPanel(QWidget *parent, ModelData & model, GeneralSettings & generalSettings, FirmwareInterface * firmware); virtual ~TelemetryPanel(); signals: diff --git a/companion/src/modeledit/templates.cpp b/companion/src/modeledit/templates.cpp index 83cb4cdb7..7df410a7f 100644 --- a/companion/src/modeledit/templates.cpp +++ b/companion/src/modeledit/templates.cpp @@ -10,7 +10,7 @@ void ModelEdit::setCurve(uint8_t c, int8_t ar[]) { int len=sizeof(ar)/sizeof(int8_t); - if (GetCurrentFirmware()->getCapability(NumCurves)>c) { + if (firmware->getCapability(NumCurves)>c) { if (len<9) { model.curves[c].count=5; model.curves[c].custom=false; @@ -100,7 +100,7 @@ void Templates::applyNumericTemplate(uint64_t tpl) for (int i=0; i<10 ; i++) { rx[i]=false; } - int thrsw=GetCurrentFirmware()->getCapability(GetThrSwitch); + int thrsw=firmware->getCapability(GetThrSwitch); MixData *md = &model.mixData[0]; uint8_t spo2ch=(tpl & 0x0F); tpl>>=4; @@ -554,7 +554,7 @@ void Templates::applyTemplate(uint8_t idx) int8_t heli_ar4[] = {-30, -15, 0, 50, 100}; int8_t heli_ar5[] = {-100, -50, 0, 50, 100}; - int thrsw=GetCurrentFirmware()->getCapability(GetThrSwitch); + int thrsw=firmware->getCapability(GetThrSwitch); MixData *md = &model.mixData[0]; //CC(STK) -> vSTK @@ -715,7 +715,7 @@ void Templates::applyTemplate(uint8_t idx) bool found=true; while (found) { found=false; - for (int i=0; i< GetCurrentFirmware()->getCapability(Mixes); i++) { + for (int i=0; i< firmware->getCapability(Mixes); i++) { if (model.mixData[i].destCh==6) { gm_deleteMix(i); found=true; @@ -827,7 +827,7 @@ void Templates::applyTemplate(uint8_t idx) bool found=true; while (found) { found=false; - for (int i=0; i< GetCurrentFirmware()->getCapability(Mixes); i++) { + for (int i=0; i< firmware->getCapability(Mixes); i++) { if (model.mixData[i].destCh==5) { gm_deleteMix(i); found=true; @@ -867,11 +867,11 @@ void Templates::applyTemplate(uint8_t idx) MixData* Templates::setDest(uint8_t dch) { uint8_t i = 0; - while ((g_model.mixData[i].destCh<=dch) && (g_model.mixData[i].destCh) && (igetCapability(Mixes))) i++; - if(i==GetCurrentFirmware()->getCapability(Mixes)) return &g_model.mixData[0]; + while ((g_model.mixData[i].destCh<=dch) && (g_model.mixData[i].destCh) && (igetCapability(Mixes))) i++; + if(i==firmware->getCapability(Mixes)) return &g_model.mixData[0]; memmove(&g_model.mixData[i+1],&g_model.mixData[i], - (GetCurrentFirmware()->getCapability(Mixes)-(i+1))*sizeof(MixData) ); + (firmware->getCapability(Mixes)-(i+1))*sizeof(MixData) ); memset(&g_model.mixData[i],0,sizeof(MixData)); g_model.mixData[i].destCh = dch; return &g_model.mixData[i];