diff --git a/companion/src/eeprominterface.cpp b/companion/src/eeprominterface.cpp
index b5015d28b..bba2540d8 100644
--- a/companion/src/eeprominterface.cpp
+++ b/companion/src/eeprominterface.cpp
@@ -915,6 +915,15 @@ RawSource GeneralSettings::getDefaultSource(unsigned int channel)
return RawSource(SOURCE_TYPE_STICK, stick_index);
}
+void FrSkyData::clear()
+{
+ memset(this, 0, sizeof(FrSkyData));
+ rssiAlarms[0].clear(2, 45);
+ rssiAlarms[1].clear(3, 42);
+ varioSource = 2/*VARIO*/;
+ blades = 2;
+}
+
ModelData::ModelData()
{
clear();
diff --git a/companion/src/eeprominterface.h b/companion/src/eeprominterface.h
index d63423310..e9539db00 100644
--- a/companion/src/eeprominterface.h
+++ b/companion/src/eeprominterface.h
@@ -817,7 +817,7 @@ class FrSkyData {
FrSkyChannelData channels[2];
unsigned int usrProto;
unsigned int imperial;
- unsigned int blades;
+ int blades;
unsigned int voltsSource;
bool altitudeDisplayed;
unsigned int currentSource;
@@ -833,7 +833,7 @@ class FrSkyData {
unsigned int storedMah;
int fasOffset;
- void clear() { memset(this, 0, sizeof(FrSkyData)); rssiAlarms[0].clear(2, 45); rssiAlarms[1].clear(3, 42); varioSource = 2/*VARIO*/; }
+ void clear();
};
class MavlinkData {
diff --git a/companion/src/firmwares/opentx/open9xSky9xeeprom.cpp b/companion/src/firmwares/opentx/open9xSky9xeeprom.cpp
index 36b6229ac..d50b42cf0 100644
--- a/companion/src/firmwares/opentx/open9xSky9xeeprom.cpp
+++ b/companion/src/firmwares/opentx/open9xSky9xeeprom.cpp
@@ -681,7 +681,7 @@ t_Open9xArmFrSkyData_v210::operator FrSkyData ()
c9x.channels[1] = channels[1];
c9x.usrProto = usrProto;
c9x.voltsSource = voltsSource;
- c9x.blades = blades;
+ c9x.blades = blades+2;
c9x.currentSource=currentSource;
c9x.screens[0].type = 1;
for (int i=0; i<4; i++) {
@@ -709,7 +709,7 @@ t_Open9xArmFrSkyData_v211::operator FrSkyData ()
c9x.channels[1] = channels[1];
c9x.usrProto = usrProto;
c9x.voltsSource = voltsSource;
- c9x.blades = blades;
+ c9x.blades = blades+2;
c9x.currentSource=currentSource;
c9x.screens[0].type = 1;
for (int i=0; i<4; i++) {
diff --git a/companion/src/firmwares/opentx/open9xStockeeprom.cpp b/companion/src/firmwares/opentx/open9xStockeeprom.cpp
index 73cb22164..44c16e78b 100644
--- a/companion/src/firmwares/opentx/open9xStockeeprom.cpp
+++ b/companion/src/firmwares/opentx/open9xStockeeprom.cpp
@@ -843,7 +843,7 @@ t_Open9xFrSkyData_v204::operator FrSkyData ()
c9x.channels[1] = channels[1];
c9x.usrProto = usrProto;
c9x.imperial = imperial;
- c9x.blades = blades;
+ c9x.blades = blades+2;
c9x.screens[0].type = 1;
for (int i=0; i<4; i++)
c9x.screens[0].body.bars[i] = bars[i];
@@ -857,7 +857,7 @@ t_Open9xFrSkyData_v205::operator FrSkyData ()
c9x.channels[1] = channels[1];
c9x.usrProto = usrProto;
c9x.imperial = imperial;
- c9x.blades = blades;
+ c9x.blades = blades+2;
c9x.screens[0].type = 1;
for (int i=0; i<4; i++)
c9x.screens[0].body.bars[i] = bars[i];
@@ -873,7 +873,7 @@ t_Open9xFrSkyData_v208::operator FrSkyData ()
c9x.channels[1] = channels[1];
c9x.usrProto = usrProto;
c9x.voltsSource = voltsSource;
- c9x.blades = blades;
+ c9x.blades = blades+2;
c9x.currentSource=currentSource;
c9x.screens[0].type = 1;
for (int i=0; i<4; i++)
@@ -890,7 +890,7 @@ t_Open9xFrSkyData_v210::operator FrSkyData ()
c9x.channels[1] = channels[1];
c9x.usrProto = usrProto;
c9x.voltsSource = voltsSource;
- c9x.blades = blades;
+ c9x.blades = blades+2;
c9x.currentSource=currentSource;
int lines_screen_index = 0;
diff --git a/companion/src/firmwares/opentx/opentxeeprom.cpp b/companion/src/firmwares/opentx/opentxeeprom.cpp
index 1091b65a2..5f7d277ac 100644
--- a/companion/src/firmwares/opentx/opentxeeprom.cpp
+++ b/companion/src/firmwares/opentx/opentxeeprom.cpp
@@ -1887,7 +1887,7 @@ class AvrCustomFunctionField: public TransformedField {
internalField.Append(new UnsignedField<5>(_union_param));
internalField.Append(new UnsignedField<1>(_active));
}
- if (version >= 213) {
+ else if (version >= 213) {
internalField.Append(new SwitchField<8>(fn.swtch, board, version));
internalField.Append(new UnsignedField<3>(_union_param));
internalField.Append(new ConversionField< UnsignedField<5> >((unsigned int &)fn.func, &functionsConversionTable, "Function", ::QObject::tr("OpenTX on this board doesn't accept this function")));
@@ -2148,7 +2148,7 @@ class FrskyField: public StructField {
else {
Append(new UnsignedField<8>(frsky.voltsSource));
}
- Append(new UnsignedField<8>(frsky.blades));
+ Append(new ConversionField< SignedField<8> >(frsky.blades, -2));
Append(new UnsignedField<8>(frsky.currentSource));
Append(new UnsignedField<1>(frsky.screens[0].type));
@@ -2190,12 +2190,12 @@ class FrskyField: public StructField {
Append(new UnsignedField<1>(frsky.channels[i].alarms[j].greater));
Append(new UnsignedField<2>(frsky.channels[i].multiplier, 0, 3, "Multiplier"));
}
- Append(new UnsignedField<2>(frsky.usrProto));
- Append(new UnsignedField<2>(frsky.blades));
+ Append(new UnsignedField<2>(frsky.usrProto, "USR Proto"));
+ Append(new ConversionField< UnsignedField<2> >((unsigned int &)frsky.blades, -2));
Append(new UnsignedField<1>(frsky.screens[0].type));
Append(new UnsignedField<1>(frsky.screens[1].type));
- Append(new UnsignedField<2>(frsky.voltsSource));
- Append(new SignedField<4>(frsky.varioMin));
+ Append(new UnsignedField<2>(frsky.voltsSource, "Volts Source"));
+ Append(new SignedField<4>(frsky.varioMin, "Vario Min"));
Append(new SignedField<4>(frsky.varioMax));
for (int i=0; i<2; i++) {
Append(new ConversionField< UnsignedField<2> >(frsky.rssiAlarms[i].level, &rssiConversionTable[i], "RSSI level"));
diff --git a/companion/src/helpers.cpp b/companion/src/helpers.cpp
index b7f144300..f5a9af42a 100644
--- a/companion/src/helpers.cpp
+++ b/companion/src/helpers.cpp
@@ -750,19 +750,6 @@ QString getFrSkyAlarmType(int alarm)
}
}
-QString getFrSkyBlades(int blades)
-{
- switch (blades) {
- case 1:
- return "3";
- case 2:
- return "4";
- default:
- return "2";
- }
-}
-
-
QString getFrSkyUnits(int units)
{
switch(units) {
diff --git a/companion/src/helpers.h b/companion/src/helpers.h
index cf0878a4e..6d8e61000 100644
--- a/companion/src/helpers.h
+++ b/companion/src/helpers.h
@@ -120,7 +120,6 @@ QString getCenterBeep(ModelData * g_model);
/* FrSky helpers */
QString getFrSkyAlarmType(int alarm);
-QString getFrSkyBlades(int blades);
QString getFrSkyUnits(int units);
QString getFrSkyProtocol(int protocol);
QString getFrSkyMeasure(int units);
diff --git a/companion/src/modeledit/mixes.cpp b/companion/src/modeledit/mixes.cpp
index 77ee3f8ac..2f1e48ab5 100644
--- a/companion/src/modeledit/mixes.cpp
+++ b/companion/src/modeledit/mixes.cpp
@@ -46,7 +46,7 @@ MixesPanel::~MixesPanel()
QString MixesPanel::getChannelLabel(int curDest)
{
QString str;
- unsigned int outputs = GetEepromInterface()->getCapability(Outputs);
+ int outputs = GetEepromInterface()->getCapability(Outputs);
if (curDest > outputs) {
str = QObject::tr("X%1 ").arg(curDest-outputs);
}
diff --git a/companion/src/modeledit/telemetry.cpp b/companion/src/modeledit/telemetry.cpp
index d32420db3..14405c4db 100644
--- a/companion/src/modeledit/telemetry.cpp
+++ b/companion/src/modeledit/telemetry.cpp
@@ -488,6 +488,10 @@ TelemetryPanel::TelemetryPanel(QWidget *parent, ModelData & model):
ui->customScreens->addTab(tab, tr("Telemetry screen %1").arg(i+1));
}
+ if (IS_ARM(GetEepromInterface()->getBoard())) {
+ ui->bladesCount->setMinimum(1);
+ }
+
setup();
}
@@ -634,7 +638,7 @@ void TelemetryPanel::setup()
ui->frskyProtoCB->setCurrentIndex(model.frsky.usrProto);
ui->frskyUnitsCB->setCurrentIndex(model.frsky.imperial);
- ui->frskyBladesCB->setCurrentIndex(model.frsky.blades);
+ ui->bladesCount->setValue(model.frsky.blades);
ui->frskyCurrentCB->setCurrentIndex(model.frsky.currentSource);
ui->frskyVoltCB->setCurrentIndex(model.frsky.voltsSource);
@@ -648,13 +652,13 @@ void TelemetryPanel::onAnalogModified()
void TelemetryPanel::on_frskyUnitsCB_currentIndexChanged(int index)
{
- model.frsky.imperial=index;
+ model.frsky.imperial = index;
emit modified();
}
-void TelemetryPanel::on_frskyBladesCB_currentIndexChanged(int index)
+void TelemetryPanel::on_bladesCount_editingFinished()
{
- model.frsky.blades=index;
+ model.frsky.blades = ui->bladesCount->value();
emit modified();
}
diff --git a/companion/src/modeledit/telemetry.h b/companion/src/modeledit/telemetry.h
index cd804465a..3f44f3261 100644
--- a/companion/src/modeledit/telemetry.h
+++ b/companion/src/modeledit/telemetry.h
@@ -89,7 +89,7 @@ class TelemetryPanel : public ModelPanel
void onAnalogModified();
void on_frskyProtoCB_currentIndexChanged(int index);
void on_frskyUnitsCB_currentIndexChanged(int index);
- void on_frskyBladesCB_currentIndexChanged(int index);
+ void on_bladesCount_editingFinished();
void on_frskyCurrentCB_currentIndexChanged(int index);
void on_frskyVoltCB_currentIndexChanged(int index);
void on_AltitudeToolbar_ChkB_toggled(bool checked);
diff --git a/companion/src/modeledit/telemetry.ui b/companion/src/modeledit/telemetry.ui
index 2b3ec81de..0f1de8a2c 100644
--- a/companion/src/modeledit/telemetry.ui
+++ b/companion/src/modeledit/telemetry.ui
@@ -6,7 +6,7 @@