fixed rssi alarms

moved FrskyField to Frsky218Field and created VarioField
This commit is contained in:
Raphael Coeffic
2019-08-14 13:34:08 +02:00
parent ebbab4cda8
commit 6e58c88b71
2 changed files with 28 additions and 10 deletions
+1
View File
@@ -185,6 +185,7 @@ class ModelData {
MavlinkData mavlink;
unsigned int telemetryProtocol;
FrSkyData frsky;
unsigned int rssiSource;
RSSIAlarmData rssiAlarms;
char bitmap[10+1];
+27 -10
View File
@@ -1728,9 +1728,9 @@ class TelemetryCurrentSourceConversionTable: public ConversionTable
}
};
class FrskyField: public StructField {
class Frsky218Field: public StructField {
public:
FrskyField(DataField * parent, FrSkyData & frsky, RSSIAlarmData & rssiAlarms, Board::Type board, unsigned int version, unsigned int variant):
Frsky218Field(DataField * parent, FrSkyData & frsky, RSSIAlarmData & rssiAlarms, Board::Type board, unsigned int version, unsigned int variant):
StructField(parent, "FrSky"),
telemetryVarioSourceConversionTable(board, version),
screenTypesConversionTable(board, version),
@@ -1777,6 +1777,20 @@ class FrskyField: public StructField {
TelemetryCurrentSourceConversionTable telemetryCurrentSourceConversionTable;
};
class VarioField: public StructField {
public:
VarioField(DataField * parent, FrSkyData & frsky, Board::Type board, unsigned int version, unsigned int variant):
StructField(parent, "Vario")
{
Append(new UnsignedField<7>(this, frsky.varioSource, "Vario Source"));
Append(new BoolField<1>(this, frsky.varioCenterSilent));
Append(new SignedField<8>(this, frsky.varioCenterMax));
Append(new SignedField<8>(this, frsky.varioCenterMin));
Append(new SignedField<8>(this, frsky.varioMin));
Append(new SignedField<8>(this, frsky.varioMax));
}
};
/*
* TODO
*/
@@ -2029,20 +2043,23 @@ OpenTxModelData::OpenTxModelData(ModelData & modelData, Board::Type board, unsig
}
}
// TODO rename to VARIO
internalField.Append(new FrskyField(this, modelData.frsky, modelData.rssiAlarms, board, version, variant));
if (version >= 219) {
// TODO RSSI SOURCE
internalField.Append(new SpareBitsField<8>(this));
if (version <= 218) {
internalField.Append(new Frsky218Field(this, modelData.frsky, modelData.rssiAlarms, board, version, variant));
}
else {
internalField.Append(new VarioField(this, modelData.frsky, board, version, variant));
internalField.Append(new UnsignedField<8>(this, modelData.rssiSource));
if (IS_TARANIS_X9(board)) {
// TODO TOPBAR
internalField.Append(new SpareBitsField<16>(this));
}
// TODO RSSI ALARMS
internalField.Append(new SpareBitsField<16>(this));
internalField.Append(new BoolField<1>(this, modelData.rssiAlarms.disabled));
internalField.Append(new SpareBitsField<1>(this));
internalField.Append(new ConversionField<SignedField<6> >(this, modelData.rssiAlarms.warning, -45));
internalField.Append(new SpareBitsField<2>(this));
internalField.Append(new ConversionField<SignedField<6> >(this, modelData.rssiAlarms.critical, -42));
}
if (IS_STM32(board) && version <= 218) {