mirror of
https://github.com/opentx/opentx.git
synced 2025-07-15 20:35:17 +03:00
Allow to disable telemetry alarams (#4981)
* Allow to disable telemetry alarams This mainly useful for cheap transceivers that have telemetry but no power amplifier and very limited range of often 10-20 meters. This includes fishpepper's tinyFISH FC (and its legal/illegal clones) and also Spektrum BNF models. * Always disable a warning when RSSI Warnings are disabled * Compile fix * Fix typos, also mute sensor lost Refactor the FrskyRSSIAlarm[2] into a EEPROM compatible RssiAlarm struct * Compile fixes * Also refactor Companion * Cleanup unused datastruct on ARM * Compile fix for AVR * Change int to uin8_t for avr * Fix strings
This commit is contained in:
parent
656daa75fa
commit
8e07f9b0f4
32 changed files with 297 additions and 187 deletions
|
@ -1392,8 +1392,6 @@ void FrSkyData::clear()
|
|||
mAhPersistent = 0;
|
||||
storedMah = 0;
|
||||
fasOffset = 0;
|
||||
rssiAlarms[0].clear(2, 45);
|
||||
rssiAlarms[1].clear(3, 42);
|
||||
for (int i=0; i<4; i++)
|
||||
screens[i].clear();
|
||||
varioSource = 2/*VARIO*/;
|
||||
|
@ -1560,6 +1558,7 @@ void ModelData::clear()
|
|||
timers[i].clear();
|
||||
swashRingData.clear();
|
||||
frsky.clear();
|
||||
rssiAlarms.clear();
|
||||
for (int i=0; i<CPN_MAX_SENSORS; i++)
|
||||
sensorData[i].clear();
|
||||
|
||||
|
|
|
@ -2777,7 +2777,7 @@ class TelemetryCurrentSourceConversionTable: public ConversionTable
|
|||
|
||||
class FrskyField: public StructField {
|
||||
public:
|
||||
FrskyField(DataField * parent, FrSkyData & frsky, Board::Type board, unsigned int version, unsigned int variant):
|
||||
FrskyField(DataField * parent, FrSkyData & frsky, RSSIAlarmData & rssiAlarms, Board::Type board, unsigned int version, unsigned int variant):
|
||||
StructField(parent, "FrSky"),
|
||||
telemetryVarioSourceConversionTable(board, version),
|
||||
screenTypesConversionTable(board, version),
|
||||
|
@ -2849,10 +2849,12 @@ class FrskyField: public StructField {
|
|||
Append(new SignedField<8>(this, frsky.varioCenterMin));
|
||||
Append(new SignedField<8>(this, frsky.varioMin));
|
||||
Append(new SignedField<8>(this, frsky.varioMax));
|
||||
for (int i=0; i<2; i++) {
|
||||
Append(new ConversionField< UnsignedField<2> >(this, frsky.rssiAlarms[i].level, &rssiConversionTable[i], "RSSI"));
|
||||
Append(new ConversionField< SignedField<6> >(this, frsky.rssiAlarms[i].value, -45+i*3));
|
||||
}
|
||||
Append(new BoolField<1>(this, rssiAlarms.disabled));
|
||||
Append(new SpareBitsField<1>(this));
|
||||
Append(new ConversionField<SignedField<6> >(this, rssiAlarms.warning, -45));
|
||||
Append(new SpareBitsField<2>(this));
|
||||
Append(new ConversionField<SignedField<6> >(this, rssiAlarms.critical, -42));
|
||||
|
||||
if (version == 216) {
|
||||
Append(new BoolField<1>(this, frsky.mAhPersistent));
|
||||
Append(new UnsignedField<15>(this, frsky.storedMah));
|
||||
|
@ -2881,8 +2883,8 @@ class FrskyField: public StructField {
|
|||
Append(new SignedField<4>(this, frsky.varioMin, "Vario Min"));
|
||||
Append(new SignedField<4>(this, frsky.varioMax));
|
||||
for (int i=0; i<2; i++) {
|
||||
Append(new ConversionField< UnsignedField<2> >(this, frsky.rssiAlarms[i].level, &rssiConversionTable[i], "RSSI level"));
|
||||
Append(new ConversionField< SignedField<6> >(this, frsky.rssiAlarms[i].value, -45+i*3, 0, 0, 100, "RSSI value"));
|
||||
Append(new ConversionField< UnsignedField<2> >(this, rssiAlarms.level[i], &rssiConversionTable[i], "RSSI level"));
|
||||
Append(new ConversionField< SignedField<6> >(this, i ==0 ? rssiAlarms.warning : rssiAlarms.critical, -45+i*3, 0, 0, 100, "RSSI value"));
|
||||
}
|
||||
for (int i=0; i<2; i++) {
|
||||
Append(new FrskyScreenField(this, frsky.screens[i], board, version, variant));
|
||||
|
@ -3246,7 +3248,7 @@ OpenTxModelData::OpenTxModelData(ModelData & modelData, Board::Type board, unsig
|
|||
}
|
||||
|
||||
if ((board != BOARD_STOCK && (board != BOARD_M128 || version < 215)) || (variant & FRSKY_VARIANT)) {
|
||||
internalField.Append(new FrskyField(this, modelData.frsky, board, version, variant));
|
||||
internalField.Append(new FrskyField(this, modelData.frsky, modelData.rssiAlarms, board, version, variant));
|
||||
}
|
||||
else if ((board == BOARD_STOCK || board == BOARD_M128) && (variant & MAVLINK_VARIANT)) {
|
||||
internalField.Append(new MavlinkField(this, modelData.mavlink, board, version));
|
||||
|
|
|
@ -829,24 +829,26 @@ void TelemetryPanel::setup()
|
|||
}
|
||||
ui->telemetryProtocol->setCurrentIndex(model->telemetryProtocol);
|
||||
ui->ignoreSensorIds->setField(model->frsky.ignoreSensorIds, this);
|
||||
ui->disableTelemetryAlarms->setField(model->rssiAlarms.disabled);
|
||||
}
|
||||
else {
|
||||
ui->telemetryProtocolLabel->hide();
|
||||
ui->telemetryProtocol->hide();
|
||||
ui->ignoreSensorIds->hide();
|
||||
ui->disableTelemetryAlarms->hide();
|
||||
}
|
||||
|
||||
ui->rssiAlarm1SB->setValue(model->frsky.rssiAlarms[0].value);
|
||||
ui->rssiAlarm2SB->setValue(model->frsky.rssiAlarms[1].value);
|
||||
if (!IS_HORUS_OR_TARANIS(firmware->getBoard())) {
|
||||
ui->rssiAlarm1CB->setCurrentIndex(model->frsky.rssiAlarms[0].level);
|
||||
ui->rssiAlarm2CB->setCurrentIndex(model->frsky.rssiAlarms[1].level);
|
||||
ui->rssiAlarmWarningSB->setValue(model->rssiAlarms.warning);
|
||||
ui->rssiAlarmCriticalSB->setValue(model->rssiAlarms.critical);
|
||||
if (!IS_ARM(firmware->getBoard())) {
|
||||
ui->rssiAlarmWarningCB->setCurrentIndex(model->rssiAlarms.level[0]);
|
||||
ui->rssiAlarmCriticalCB->setCurrentIndex(model->rssiAlarms.level[1]);
|
||||
}
|
||||
else {
|
||||
ui->rssiAlarm1CB->hide();
|
||||
ui->rssiAlarm2CB->hide();
|
||||
ui->rssiAlarm1Label->setText(tr("Low Alarm"));
|
||||
ui->rssiAlarm2Label->setText(tr("Critical Alarm"));
|
||||
ui->rssiAlarmWarningCB->hide();
|
||||
ui->rssiAlarmCriticalCB->hide();
|
||||
ui->rssiAlarmWarningLabel->setText(tr("Low Alarm"));
|
||||
ui->rssiAlarmCriticalLabel->setText(tr("Critical Alarm"));
|
||||
}
|
||||
|
||||
/*if (IS_ARM(firmware->getBoard())) {
|
||||
|
@ -1001,27 +1003,27 @@ void TelemetryPanel::on_frskyProtoCB_currentIndexChanged(int index)
|
|||
}
|
||||
}
|
||||
|
||||
void TelemetryPanel::on_rssiAlarm1CB_currentIndexChanged(int index)
|
||||
void TelemetryPanel::on_rssiAlarmWarningCB_currentIndexChanged(int index)
|
||||
{
|
||||
model->frsky.rssiAlarms[0].level = index;
|
||||
model->rssiAlarms.level[0] = index;
|
||||
emit modified();
|
||||
}
|
||||
|
||||
void TelemetryPanel::on_rssiAlarm2CB_currentIndexChanged(int index)
|
||||
void TelemetryPanel::on_rssiAlarmCriticalCB_currentIndexChanged(int index)
|
||||
{
|
||||
model->frsky.rssiAlarms[1].level = index;
|
||||
model->rssiAlarms.level[1] = index;
|
||||
emit modified();
|
||||
}
|
||||
|
||||
void TelemetryPanel::on_rssiAlarm1SB_editingFinished()
|
||||
void TelemetryPanel::on_rssiAlarmWarningSB_editingFinished()
|
||||
{
|
||||
model->frsky.rssiAlarms[0].value = ui->rssiAlarm1SB->value();
|
||||
model->rssiAlarms.warning= ui->rssiAlarmWarningSB->value();
|
||||
emit modified();
|
||||
}
|
||||
|
||||
void TelemetryPanel::on_rssiAlarm2SB_editingFinished()
|
||||
void TelemetryPanel::on_rssiAlarmCriticalSB_editingFinished()
|
||||
{
|
||||
model->frsky.rssiAlarms[1].value = ui->rssiAlarm2SB->value();
|
||||
model->rssiAlarms.critical = ui->rssiAlarmCriticalSB->value();
|
||||
emit modified();
|
||||
}
|
||||
|
||||
|
|
|
@ -138,10 +138,10 @@ class TelemetryPanel : public ModelPanel
|
|||
void onModified();
|
||||
void on_frskyProtoCB_currentIndexChanged(int index);
|
||||
void on_bladesCount_editingFinished();
|
||||
void on_rssiAlarm1CB_currentIndexChanged(int index);
|
||||
void on_rssiAlarm2CB_currentIndexChanged(int index);
|
||||
void on_rssiAlarm1SB_editingFinished();
|
||||
void on_rssiAlarm2SB_editingFinished();
|
||||
void on_rssiAlarmWarningCB_currentIndexChanged(int index);
|
||||
void on_rssiAlarmCriticalCB_currentIndexChanged(int index);
|
||||
void on_rssiAlarmWarningSB_editingFinished();
|
||||
void on_rssiAlarmCriticalSB_editingFinished();
|
||||
void on_varioLimitMin_DSB_editingFinished();
|
||||
void on_varioLimitMax_DSB_editingFinished();
|
||||
void on_varioLimitCenterMin_DSB_editingFinished();
|
||||
|
|
|
@ -74,8 +74,38 @@
|
|||
<property name="bottomMargin">
|
||||
<number>4</number>
|
||||
</property>
|
||||
<item row="2" column="1">
|
||||
<widget class="QComboBox" name="rssiAlarmWarningCB">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>----</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Yellow</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Orange</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Red</string>
|
||||
</property>
|
||||
</item>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="0">
|
||||
<widget class="QLabel" name="rssiAlarm1Label">
|
||||
<widget class="QLabel" name="rssiAlarmWarningLabel">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Minimum">
|
||||
<horstretch>0</horstretch>
|
||||
|
@ -96,8 +126,8 @@
|
|||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="1">
|
||||
<widget class="QComboBox" name="rssiAlarm1CB">
|
||||
<item row="3" column="1">
|
||||
<widget class="QComboBox" name="rssiAlarmCriticalCB">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
|
@ -126,36 +156,8 @@
|
|||
</item>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="2">
|
||||
<widget class="QSpinBox" name="rssiAlarm1SB">
|
||||
<property name="enabled">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="suffix">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="minimum">
|
||||
<number>20</number>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<number>80</number>
|
||||
</property>
|
||||
<property name="singleStep">
|
||||
<number>1</number>
|
||||
</property>
|
||||
<property name="value">
|
||||
<number>50</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="0">
|
||||
<widget class="QLabel" name="rssiAlarm2Label">
|
||||
<widget class="QLabel" name="rssiAlarmCriticalLabel">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Minimum">
|
||||
<horstretch>0</horstretch>
|
||||
|
@ -173,38 +175,8 @@
|
|||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="1">
|
||||
<widget class="QComboBox" name="rssiAlarm2CB">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>----</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Yellow</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Orange</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Red</string>
|
||||
</property>
|
||||
</item>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="2">
|
||||
<widget class="QSpinBox" name="rssiAlarm2SB">
|
||||
<widget class="QSpinBox" name="rssiAlarmCriticalSB">
|
||||
<property name="enabled">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
|
@ -231,7 +203,48 @@
|
|||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="0">
|
||||
<item row="2" column="2">
|
||||
<widget class="QSpinBox" name="rssiAlarmWarningSB">
|
||||
<property name="enabled">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="suffix">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="minimum">
|
||||
<number>20</number>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<number>80</number>
|
||||
</property>
|
||||
<property name="singleStep">
|
||||
<number>1</number>
|
||||
</property>
|
||||
<property name="value">
|
||||
<number>50</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="rssiLabel">
|
||||
<property name="font">
|
||||
<font>
|
||||
<weight>75</weight>
|
||||
<bold>true</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>RSSI</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="7" column="0">
|
||||
<spacer name="verticalSpacer_2">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
|
@ -244,16 +257,10 @@
|
|||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="rssiLabel">
|
||||
<property name="font">
|
||||
<font>
|
||||
<weight>75</weight>
|
||||
<bold>true</bold>
|
||||
</font>
|
||||
</property>
|
||||
<item row="4" column="0" colspan="2">
|
||||
<widget class="AutoCheckBox" name="disableTelemetryAlarms">
|
||||
<property name="text">
|
||||
<string>RSSI</string>
|
||||
<string>Disable telemetry audio warnings</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
|
@ -1024,10 +1031,10 @@
|
|||
</customwidgets>
|
||||
<tabstops>
|
||||
<tabstop>telemetryProtocol</tabstop>
|
||||
<tabstop>rssiAlarm1CB</tabstop>
|
||||
<tabstop>rssiAlarm1SB</tabstop>
|
||||
<tabstop>rssiAlarm2CB</tabstop>
|
||||
<tabstop>rssiAlarm2SB</tabstop>
|
||||
<tabstop>rssiAlarmWarningCB</tabstop>
|
||||
<tabstop>rssiAlarmWarningSB</tabstop>
|
||||
<tabstop>rssiAlarmCriticalCB</tabstop>
|
||||
<tabstop>rssiAlarmCriticalSB</tabstop>
|
||||
<tabstop>varioSource</tabstop>
|
||||
<tabstop>varioLimitMin_DSB</tabstop>
|
||||
<tabstop>varioLimitCenterMin_DSB</tabstop>
|
||||
|
|
|
@ -571,15 +571,20 @@ QString MultiModelPrinter::printTelemetry()
|
|||
MultiColumns columns(modelPrinterMap.size());
|
||||
columns.append("<table border='0' cellspacing='0' cellpadding='1' width='100%'>");
|
||||
for (int i=0; i<2; i++) {
|
||||
columns.append("<tr><td><b>" + QString(i==0 ? tr("RSSI Alarms") : "") + "</b></td><td>");
|
||||
columns.append("<tr><td><b>" + QString(i == 0 ? tr("RSSI Alarms") : "") + "</b></td><td>");
|
||||
if (IS_HORUS_OR_TARANIS(getCurrentBoard())) {
|
||||
COMPARE(i==0 ? tr("Low Alarm") : tr("Critical Alarm"));
|
||||
COMPARE(i == 0 ? tr("Low Alarm") : tr("Critical Alarm"));
|
||||
}
|
||||
else {
|
||||
COMPARE(getFrSkyAlarmType(model->frsky.rssiAlarms[i].level));
|
||||
COMPARE(getFrSkyAlarmType(model->rssiAlarms.level[i]));
|
||||
}
|
||||
columns.append("</td><td><</td><td>");
|
||||
COMPARE(QString::number(model->frsky.rssiAlarms[i].value, 10));
|
||||
if (i == 0) {
|
||||
COMPARE(QString::number(model->rssiAlarms.warning, 10));
|
||||
}
|
||||
else {
|
||||
COMPARE(QString::number(model->rssiAlarms.critical, 10));
|
||||
}
|
||||
columns.append("</td></tr>");
|
||||
}
|
||||
columns.append("</table><br/>");
|
||||
|
|
|
@ -591,12 +591,20 @@ class FrSkyAlarmData {
|
|||
void clear() { memset(this, 0, sizeof(FrSkyAlarmData)); }
|
||||
};
|
||||
|
||||
class FrSkyRSSIAlarm {
|
||||
class RSSIAlarmData {
|
||||
public:
|
||||
FrSkyRSSIAlarm() { clear(0, 50); }
|
||||
unsigned int level;
|
||||
int value;
|
||||
void clear(unsigned int level, int value) { this->level = level; this->value = value;}
|
||||
RSSIAlarmData() { clear(); }
|
||||
unsigned int level[2]; // AVR Only
|
||||
int warning;
|
||||
int critical;
|
||||
bool disabled;
|
||||
void clear() {
|
||||
this->level[0] = 2;
|
||||
this->level[1] = 3;
|
||||
this->warning = 42;
|
||||
this->critical = 45;
|
||||
this->disabled = false;
|
||||
}
|
||||
};
|
||||
|
||||
class FrSkyChannelData {
|
||||
|
@ -703,7 +711,6 @@ class FrSkyData {
|
|||
unsigned int altitudeSource;
|
||||
unsigned int currentSource;
|
||||
FrSkyScreenData screens[4];
|
||||
FrSkyRSSIAlarm rssiAlarms[2];
|
||||
unsigned int varioSource;
|
||||
bool varioCenterSilent;
|
||||
int varioMin;
|
||||
|
@ -1066,6 +1073,7 @@ class ModelData {
|
|||
MavlinkData mavlink;
|
||||
unsigned int telemetryProtocol;
|
||||
FrSkyData frsky;
|
||||
RSSIAlarmData rssiAlarms;
|
||||
|
||||
char bitmap[10+1];
|
||||
|
||||
|
|
|
@ -468,11 +468,22 @@ PACK(struct ScriptData {
|
|||
/*
|
||||
* Frsky Telemetry structure
|
||||
*/
|
||||
|
||||
#if defined(CPUARM)
|
||||
PACK(struct RssiAlarmData {
|
||||
int8_t disabled:1;
|
||||
int8_t spare:1;
|
||||
int8_t warning:6;
|
||||
int8_t spare2:2;
|
||||
int8_t critical:6;
|
||||
inline int8_t getWarningRssi() {return 45 + warning;}
|
||||
inline int8_t getCriticalRssi() {return 42 + critical;}
|
||||
});
|
||||
#else
|
||||
PACK(struct FrSkyRSSIAlarm {
|
||||
int8_t level:2;
|
||||
int8_t value:6;
|
||||
});
|
||||
#endif
|
||||
|
||||
#if defined(CPUARM)
|
||||
typedef int16_t ls_telemetry_value_t;
|
||||
|
@ -508,27 +519,15 @@ union FrSkyScreenData {
|
|||
#endif
|
||||
|
||||
#if defined(COLORLCD)
|
||||
PACK(struct FrSkyTelemetryData {
|
||||
PACK(struct FrSkyTelemetryData { // TODO EEPROM change, rename to VarioData
|
||||
uint8_t varioSource:7;
|
||||
uint8_t varioCenterSilent:1;
|
||||
int8_t varioCenterMax;
|
||||
int8_t varioCenterMin;
|
||||
int8_t varioMin;
|
||||
int8_t varioMax;
|
||||
FrSkyRSSIAlarm rssiAlarms[2];
|
||||
});
|
||||
#elif defined(CPUARM)
|
||||
PACK(struct FrSkyChannelData {
|
||||
uint8_t ratio; // 0.0 means not used, 0.1V steps EG. 6.6 Volts = 66. 25.1V = 251, etc.
|
||||
int16_t offset:12;
|
||||
uint16_t type:4; // channel unit (0=volts, ...)
|
||||
uint8_t alarms_value[2]; // 0.1V steps EG. 6.6 Volts = 66. 25.1V = 251, etc.
|
||||
uint8_t alarms_level:4;
|
||||
uint8_t alarms_greater:2; // 0=LT(<), 1=GT(>)
|
||||
uint8_t spare:2;
|
||||
uint8_t multiplier; // 0=no multiplier, 1=*2 multiplier
|
||||
});
|
||||
|
||||
// TODO remove this also on Taranis
|
||||
PACK(struct FrSkyTelemetryData {
|
||||
uint8_t voltsSource;
|
||||
|
@ -541,7 +540,6 @@ PACK(struct FrSkyTelemetryData {
|
|||
int8_t varioCenterMin;
|
||||
int8_t varioMin;
|
||||
int8_t varioMax;
|
||||
FrSkyRSSIAlarm rssiAlarms[2];
|
||||
});
|
||||
#else
|
||||
PACK(struct FrSkyChannelData {
|
||||
|
@ -756,7 +754,9 @@ typedef uint8_t swarnenable_t;
|
|||
#define MODEL_GVARS_DATA GVarData gvars[MAX_GVARS];
|
||||
#endif
|
||||
|
||||
#if defined(TELEMETRY_MAVLINK)
|
||||
#if defined(CPUARM)
|
||||
#define TELEMETRY_DATA NOBACKUP(FrSkyTelemetryData frsky); NOBACKUP(RssiAlarmData rssiAlarms);
|
||||
#elif defined(TELEMETRY_MAVLINK)
|
||||
#define TELEMETRY_DATA MavlinkTelemetryData mavlink;
|
||||
#elif defined(TELEMETRY_FRSKY) || !defined(PCBSTD)
|
||||
#define TELEMETRY_DATA NOBACKUP(FrSkyTelemetryData frsky);
|
||||
|
@ -1082,7 +1082,7 @@ static inline void check_struct()
|
|||
CHKSIZE(FrSkyBarData, 6);
|
||||
CHKSIZE(FrSkyLineData, 4);
|
||||
CHKTYPE(union FrSkyScreenData, 24);
|
||||
CHKSIZE(FrSkyTelemetryData, 106);
|
||||
CHKSIZE(FrSkyTelemetryData, 104);
|
||||
CHKSIZE(ModelHeader, 12);
|
||||
CHKSIZE(CurveData, 4);
|
||||
|
||||
|
@ -1101,7 +1101,7 @@ static inline void check_struct()
|
|||
CHKSIZE(FrSkyBarData, 6);
|
||||
CHKSIZE(FrSkyLineData, 6);
|
||||
CHKTYPE(union FrSkyScreenData, 24);
|
||||
CHKSIZE(FrSkyTelemetryData, 106);
|
||||
CHKSIZE(FrSkyTelemetryData, 104);
|
||||
CHKSIZE(ModelHeader, 24);
|
||||
CHKSIZE(CurveData, 4);
|
||||
#if defined(PCBX9E)
|
||||
|
@ -1123,7 +1123,7 @@ static inline void check_struct()
|
|||
CHKSIZE(TimerData, 16);
|
||||
CHKSIZE(SwashRingData, 8);
|
||||
|
||||
CHKSIZE(FrSkyTelemetryData, 7);
|
||||
CHKSIZE(FrSkyTelemetryData, 5);
|
||||
CHKSIZE(ModelHeader, 27);
|
||||
CHKSIZE(CurveData, 4);
|
||||
CHKSIZE(RadioData, 847);
|
||||
|
@ -1140,7 +1140,7 @@ static inline void check_struct()
|
|||
CHKSIZE(SwashRingData, 8);
|
||||
CHKSIZE(FrSkyBarData, 5);
|
||||
CHKSIZE(FrSkyLineData, 2);
|
||||
CHKSIZE(FrSkyTelemetryData, 90);
|
||||
CHKSIZE(FrSkyTelemetryData, 88);
|
||||
CHKSIZE(ModelHeader, 12);
|
||||
CHKTYPE(CurveData, 4);
|
||||
CHKSIZE(RadioData, 727);
|
||||
|
@ -1184,9 +1184,6 @@ static inline void check_struct()
|
|||
|
||||
#if defined(CPUARM)
|
||||
CHKSIZE(LogicalSwitchData, 9);
|
||||
#if !defined(COLORLCD)
|
||||
CHKSIZE(FrSkyChannelData, 7);
|
||||
#endif
|
||||
CHKSIZE(TelemetrySensor, 13);
|
||||
CHKSIZE(ModuleData,70);
|
||||
#else
|
||||
|
@ -1199,7 +1196,11 @@ static inline void check_struct()
|
|||
CHKSIZE(GVarData, 7);
|
||||
#endif
|
||||
|
||||
#if defined(CPUARM)
|
||||
CHKSIZE(RssiAlarmData, 2);
|
||||
#else
|
||||
CHKSIZE(FrSkyRSSIAlarm, 1);
|
||||
#endif
|
||||
CHKSIZE(TrainerData, 16);
|
||||
|
||||
#undef CHKSIZE
|
||||
|
|
|
@ -41,6 +41,7 @@ enum MenuModelTelemetryFrskyItems {
|
|||
ITEM_TELEMETRY_RSSI_ALARM1,
|
||||
ITEM_TELEMETRY_RSSI_ALARM2,
|
||||
#if defined(CPUARM)
|
||||
ITEM_TELEMETRY_DISABLE_ALARMS,
|
||||
ITEM_TELEMETRY_SENSORS_LABEL,
|
||||
ITEM_TELEMETRY_SENSOR1,
|
||||
ITEM_TELEMETRY_SENSOR2,
|
||||
|
@ -151,7 +152,7 @@ enum MenuModelTelemetryFrskyItems {
|
|||
#endif
|
||||
|
||||
#if defined(CPUARM)
|
||||
#define RSSI_ROWS LABEL(RSSI), 0, 0,
|
||||
#define RSSI_ROWS LABEL(RSSI), 0, 0, 1,
|
||||
#else
|
||||
#define RSSI_ROWS LABEL(RSSI), 1, 1,
|
||||
#endif
|
||||
|
@ -704,14 +705,18 @@ void menuModelTelemetryFrsky(event_t event)
|
|||
|
||||
case ITEM_TELEMETRY_RSSI_ALARM1:
|
||||
case ITEM_TELEMETRY_RSSI_ALARM2: {
|
||||
uint8_t alarm = k-ITEM_TELEMETRY_RSSI_ALARM1;
|
||||
#if defined(CPUARM)
|
||||
lcdDrawTextAlignedLeft(y, (alarm==0 ? STR_LOWALARM : STR_CRITICALALARM));
|
||||
lcdDrawNumber(LCD_W, y, getRssiAlarmValue(alarm), RIGHT | attr, 3);
|
||||
bool warning = (k==ITEM_TELEMETRY_RSSI_ALARM1);
|
||||
lcdDrawTextAlignedLeft(y, (warning ? STR_LOWALARM : STR_CRITICALALARM));
|
||||
lcdDrawNumber(LCD_W, y, warning? g_model.rssiAlarms.getWarningRssi() : g_model.rssiAlarms.getCriticalRssi(), RIGHT | attr, 3);
|
||||
if (attr && s_editMode>0) {
|
||||
CHECK_INCDEC_MODELVAR(event, g_model.frsky.rssiAlarms[alarm].value, -30, 30);
|
||||
}
|
||||
if (warning)
|
||||
CHECK_INCDEC_MODELVAR(event, g_model.rssiAlarms.warning, -30, 30);
|
||||
else
|
||||
CHECK_INCDEC_MODELVAR(event, g_model.rssiAlarms.critical, -30, 30);
|
||||
}
|
||||
#else // CPUARM
|
||||
uint8_t alarm = (k-ITEM_TELEMETRY_RSSI_ALARM1);
|
||||
lcdDrawTextAlignedLeft(y, STR_ALARM);
|
||||
lcdDrawTextAtIndex(TELEM_COL2, y, STR_VALARM, ((2+alarm+g_model.frsky.rssiAlarms[alarm].level)%4), menuHorizontalPosition<=0 ? attr : 0);
|
||||
lcdDrawChar(TELEM_COL2+4*FW, y, '<');
|
||||
|
@ -729,7 +734,11 @@ void menuModelTelemetryFrsky(event_t event)
|
|||
#endif // CPUARM
|
||||
break;
|
||||
}
|
||||
|
||||
#if defined(CPUARM)
|
||||
case ITEM_TELEMETRY_DISABLE_ALARMS:
|
||||
g_model.rssiAlarms.disabled = editCheckBox(g_model.rssiAlarms.disabled, LCD_W - 10, y, STR_DISABLE_ALARM, attr, event);
|
||||
break;
|
||||
#endif
|
||||
#if !defined(CPUARM)
|
||||
#if defined(FRSKY_HUB) || defined(WS_HOW_HIGH)
|
||||
case ITEM_TELEMETRY_USR_LABEL:
|
||||
|
|
|
@ -43,7 +43,7 @@ void displayRssiLine()
|
|||
lcdDrawText(lcdLastLeftPos,STATUS_BAR_Y, "RSSI : ", RIGHT | SMLSIZE);
|
||||
lcdDrawRect(65, 57, 38, 7);
|
||||
uint8_t v = 4*rssi/11;
|
||||
lcdDrawFilledRect(66+36-v, 58, v, 5, (rssi < getRssiAlarmValue(0)) ? DOTTED : SOLID);
|
||||
lcdDrawFilledRect(66+36-v, 58, v, 5, (rssi < g_model.rssiAlarms.getWarningRssi()) ? DOTTED : SOLID);
|
||||
#else
|
||||
rssi = min((uint8_t)99, telemetryData.rssi[1].value);
|
||||
lcdDrawTextAlignedLeft(STATUS_BAR_Y, STR_TX); lcdDrawNumber(4*FW+1, STATUS_BAR_Y, rssi, LEADING0, 2);
|
||||
|
|
|
@ -25,6 +25,7 @@ enum MenuModelTelemetryFrskyItems {
|
|||
ITEM_TELEMETRY_RSSI_LABEL,
|
||||
ITEM_TELEMETRY_RSSI_ALARM1,
|
||||
ITEM_TELEMETRY_RSSI_ALARM2,
|
||||
ITEM_TELEMETRY_DISABLE_ALARMS,
|
||||
ITEM_TELEMETRY_SENSORS_LABEL,
|
||||
ITEM_TELEMETRY_SENSOR1,
|
||||
ITEM_TELEMETRY_SENSOR2,
|
||||
|
@ -85,7 +86,7 @@ enum MenuModelTelemetryFrskyItems {
|
|||
#else
|
||||
#define VARIO_ROWS
|
||||
#endif
|
||||
#define RSSI_ROWS LABEL(RSSI), 0, 0,
|
||||
#define RSSI_ROWS LABEL(RSSI), 0, 0, 0,
|
||||
#define VARIO_RANGE_ROWS 3
|
||||
#define TELEMETRY_TYPE_ROWS (g_model.moduleData[INTERNAL_MODULE].rfProtocol == RF_PROTO_OFF && g_model.moduleData[EXTERNAL_MODULE].type == MODULE_TYPE_PPM) ? (uint8_t)0 : HIDDEN_ROW,
|
||||
|
||||
|
@ -526,14 +527,20 @@ void menuModelTelemetryFrsky(event_t event)
|
|||
|
||||
case ITEM_TELEMETRY_RSSI_ALARM1:
|
||||
case ITEM_TELEMETRY_RSSI_ALARM2: {
|
||||
uint8_t alarm = k-ITEM_TELEMETRY_RSSI_ALARM1;
|
||||
lcdDrawTextAlignedLeft(y, (alarm==0 ? STR_LOWALARM : STR_CRITICALALARM));
|
||||
lcdDrawNumber(TELEM_COL2, y, getRssiAlarmValue(alarm), LEFT|attr, 3);
|
||||
bool warning = (k==ITEM_TELEMETRY_RSSI_ALARM1);
|
||||
lcdDrawTextAlignedLeft(y, (warning ? STR_LOWALARM : STR_CRITICALALARM));
|
||||
lcdDrawNumber(TELEM_COL2, y, warning? g_model.rssiAlarms.getWarningRssi() : g_model.rssiAlarms.getCriticalRssi(), LEFT|attr, 3);
|
||||
if (attr && s_editMode>0) {
|
||||
CHECK_INCDEC_MODELVAR(event, g_model.frsky.rssiAlarms[alarm].value, -30, 30);
|
||||
if (warning)
|
||||
CHECK_INCDEC_MODELVAR(event, g_model.rssiAlarms.warning, -30, 30);
|
||||
else
|
||||
CHECK_INCDEC_MODELVAR(event, g_model.rssiAlarms.critical, -30, 30);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case ITEM_TELEMETRY_DISABLE_ALARMS:
|
||||
g_model.rssiAlarms.disabled = editCheckBox(g_model.rssiAlarms.disabled, TELEM_COL3, y, STR_DISABLE_ALARM, attr, event);
|
||||
break;
|
||||
|
||||
#if defined(VARIO)
|
||||
case ITEM_TELEMETRY_VARIO_LABEL:
|
||||
|
|
|
@ -299,7 +299,7 @@ void displayTopBar()
|
|||
|
||||
/* The inside of the RSSI gauge */
|
||||
if (TELEMETRY_RSSI() > 0) {
|
||||
displayTopBarGauge(batt_icon_x+5*FW, TELEMETRY_RSSI() / 10, TELEMETRY_RSSI() < getRssiAlarmValue(0));
|
||||
displayTopBarGauge(batt_icon_x+5*FW, TELEMETRY_RSSI() / 10, TELEMETRY_RSSI() < g_model.rssiAlarms.getWarningRssi());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -36,7 +36,7 @@ void displayRssiLine()
|
|||
lcdDrawSizedText(0, STATUS_BAR_Y, STR_RX, 2);
|
||||
lcdDrawNumber(4*FW, STATUS_BAR_Y, rssi, LEADING0|RIGHT, 2);
|
||||
lcdDrawRect(BAR_LEFT, 57, 78, 7);
|
||||
lcdDrawFilledRect(BAR_LEFT+1, 58, 19*rssi/25, 5, (rssi < getRssiAlarmValue(0)) ? DOTTED : SOLID);
|
||||
lcdDrawFilledRect(BAR_LEFT+1, 58, 19*rssi/25, 5, (rssi < g_model.rssiAlarms.getWarningRssi()) ? DOTTED : SOLID);
|
||||
}
|
||||
else {
|
||||
lcdDrawText(7*FW, STATUS_BAR_Y, STR_NODATA, BLINK);
|
||||
|
|
|
@ -25,6 +25,7 @@ enum MenuModelTelemetryFrskyItems {
|
|||
ITEM_TELEMETRY_RSSI_LABEL,
|
||||
ITEM_TELEMETRY_RSSI_ALARM1,
|
||||
ITEM_TELEMETRY_RSSI_ALARM2,
|
||||
ITEM_TELEMETRY_DISABLE_ALARMS,
|
||||
ITEM_TELEMETRY_SENSORS_LABEL,
|
||||
ITEM_TELEMETRY_SENSOR1,
|
||||
ITEM_TELEMETRY_SENSOR2,
|
||||
|
@ -87,7 +88,7 @@ enum MenuModelTelemetryFrskyItems {
|
|||
#else
|
||||
#define VARIO_ROWS
|
||||
#endif
|
||||
#define RSSI_ROWS LABEL(RSSI), 0, 0,
|
||||
#define RSSI_ROWS LABEL(RSSI), 0, 0, 0,
|
||||
#define VARIO_RANGE_ROWS 3
|
||||
#define TELEMETRY_TYPE_ROWS (g_model.moduleData[INTERNAL_MODULE].rfProtocol == RF_PROTO_OFF && g_model.moduleData[EXTERNAL_MODULE].type == MODULE_TYPE_PPM) ? (uint8_t)0 : HIDDEN_ROW,
|
||||
|
||||
|
@ -533,15 +534,22 @@ bool menuModelTelemetryFrsky(event_t event)
|
|||
|
||||
case ITEM_TELEMETRY_RSSI_ALARM1:
|
||||
case ITEM_TELEMETRY_RSSI_ALARM2: {
|
||||
uint8_t alarm = k-ITEM_TELEMETRY_RSSI_ALARM1;
|
||||
lcdDrawText(MENUS_MARGIN_LEFT, y, (alarm==0 ? STR_LOWALARM : STR_CRITICALALARM));
|
||||
lcdDrawNumber(TELEM_COL2, y, getRssiAlarmValue(alarm), LEFT|attr, 3);
|
||||
bool warning = (k==ITEM_TELEMETRY_RSSI_ALARM1);
|
||||
lcdDrawText(MENUS_MARGIN_LEFT, y, (warning ? STR_LOWALARM : STR_CRITICALALARM));
|
||||
lcdDrawNumber(TELEM_COL2, y, warning? g_model.rssiAlarms.getWarningRssi() : g_model.rssiAlarms.getCriticalRssi(), LEFT|attr, 3);
|
||||
|
||||
if (attr && s_editMode>0) {
|
||||
CHECK_INCDEC_MODELVAR(event, g_model.frsky.rssiAlarms[alarm].value, -30, 30);
|
||||
if (warning)
|
||||
CHECK_INCDEC_MODELVAR(event, g_model.rssiAlarms.warning, -30, 30);
|
||||
else
|
||||
CHECK_INCDEC_MODELVAR(event, g_model.rssiAlarms.critical, -30, 30);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case ITEM_TELEMETRY_DISABLE_ALARMS:
|
||||
lcdDrawText(MENUS_MARGIN_LEFT, y, STR_DISABLE_ALARM);
|
||||
g_model.rssiAlarms.disabled = editCheckBox(g_model.rssiAlarms.disabled, TELEM_COL3, y, attr, event);
|
||||
break;
|
||||
#if defined(VARIO)
|
||||
case ITEM_TELEMETRY_VARIO_LABEL:
|
||||
lcdDrawText(MENUS_MARGIN_LEFT, y, STR_VARIO);
|
||||
|
|
|
@ -1085,8 +1085,8 @@ Get RSSI value as well as low and critical RSSI alarm levels (in dB)
|
|||
static int luaGetRSSI(lua_State * L)
|
||||
{
|
||||
lua_pushunsigned(L, min((uint8_t)99, TELEMETRY_RSSI()));
|
||||
lua_pushunsigned(L, getRssiAlarmValue(0));
|
||||
lua_pushunsigned(L, getRssiAlarmValue(1));
|
||||
lua_pushunsigned(L, g_model.rssiAlarms.getWarningRssi());
|
||||
lua_pushunsigned(L, g_model.rssiAlarms.getCriticalRssi());
|
||||
return 3;
|
||||
}
|
||||
|
||||
|
|
|
@ -1036,6 +1036,13 @@ void checkFailsafe()
|
|||
#else
|
||||
#define checkFailsafe()
|
||||
#endif
|
||||
#if defined(CPUARM)
|
||||
void checkRSSIAlaramsDisabled()
|
||||
{
|
||||
if (g_model.rssiAlarms.disabled)
|
||||
ALERT(STR_RSSIALARM_WARN, STR_NO_RSSIALARM, AU_ERROR);
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(GUI)
|
||||
void checkAll()
|
||||
|
@ -1053,6 +1060,9 @@ void checkAll()
|
|||
checkSwitches();
|
||||
checkFailsafe();
|
||||
#endif
|
||||
#if defined(CPUARM)
|
||||
checkRSSIAlaramsDisabled();
|
||||
#endif
|
||||
|
||||
#if defined(SDCARD) && defined(CPUARM)
|
||||
checkSDVersion();
|
||||
|
|
|
@ -1532,7 +1532,9 @@ inline int div_and_round(int num, int den)
|
|||
}
|
||||
|
||||
#if defined(TELEMETRY_FRSKY)
|
||||
#if !defined(CPUARM)
|
||||
NOINLINE uint8_t getRssiAlarmValue(uint8_t alarm);
|
||||
#endif
|
||||
|
||||
extern const pm_uint8_t bchunit_ar[];
|
||||
|
||||
|
|
|
@ -436,8 +436,14 @@ typedef union {
|
|||
FrSkyLineData_v216 lines[4];
|
||||
} FrSkyScreenData_v216;
|
||||
|
||||
|
||||
PACK(struct FrSkyChannelData_v216 {
|
||||
uint8_t unused[7];
|
||||
});
|
||||
|
||||
|
||||
PACK(typedef struct {
|
||||
FrSkyChannelData channels[4];
|
||||
FrSkyChannelData_v216 channels[4];
|
||||
uint8_t usrProto; // Protocol in FrSky user data, 0=None, 1=FrSky hub, 2=WS HowHigh, 3=Halcyon
|
||||
uint8_t voltsSource:7;
|
||||
uint8_t altitudeDisplayed:1;
|
||||
|
@ -450,7 +456,7 @@ PACK(typedef struct {
|
|||
int8_t varioCenterMin;
|
||||
int8_t varioMin;
|
||||
int8_t varioMax;
|
||||
FrSkyRSSIAlarm rssiAlarms[2];
|
||||
uint8_t rssiAlarms[2];
|
||||
uint16_t mAhPersistent:1;
|
||||
uint16_t storedMah:15;
|
||||
int8_t fasOffset;
|
||||
|
@ -613,6 +619,7 @@ PACK(typedef struct {
|
|||
GVarData gvars[MAX_GVARS];
|
||||
|
||||
FrSkyTelemetryData frsky;
|
||||
RssiAlarmData rssiAlarms;
|
||||
|
||||
MODELDATA_EXTRA_217
|
||||
|
||||
|
@ -1007,7 +1014,7 @@ void ConvertModel_216_to_217(ModelData & model)
|
|||
newModel.switchWarningEnable = oldModel.switchWarningEnable;
|
||||
memcpy(newModel.gvars, oldModel.gvars, sizeof(newModel.gvars));
|
||||
|
||||
memcpy(&newModel.frsky.rssiAlarms, &oldModel.frsky.rssiAlarms, sizeof(newModel.frsky.rssiAlarms));
|
||||
memcpy(&newModel.rssiAlarms, &oldModel.frsky.rssiAlarms, sizeof(newModel.rssiAlarms));
|
||||
|
||||
for (int i=0; i<NUM_MODULES+1; i++) {
|
||||
newModel.moduleData[i].type = 0;
|
||||
|
|
|
@ -174,7 +174,7 @@ void telemetryWakeup()
|
|||
}
|
||||
}
|
||||
}
|
||||
if (sensor_lost && TELEMETRY_STREAMING()) {
|
||||
if (sensor_lost && TELEMETRY_STREAMING() && !g_model.rssiAlarms.disabled) {
|
||||
audioEvent(AU_SENSOR_LOST);
|
||||
}
|
||||
|
||||
|
@ -188,27 +188,29 @@ void telemetryWakeup()
|
|||
}
|
||||
#endif
|
||||
|
||||
if (TELEMETRY_STREAMING()) {
|
||||
if (getRssiAlarmValue(1) && TELEMETRY_RSSI() < getRssiAlarmValue(1)) {
|
||||
AUDIO_RSSI_RED();
|
||||
SCHEDULE_NEXT_ALARMS_CHECK(10/*seconds*/);
|
||||
if (!g_model.rssiAlarms.disabled) {
|
||||
if (TELEMETRY_STREAMING()) {
|
||||
if (TELEMETRY_RSSI() < g_model.rssiAlarms.getCriticalRssi() ) {
|
||||
AUDIO_RSSI_RED();
|
||||
SCHEDULE_NEXT_ALARMS_CHECK(10/*seconds*/);
|
||||
}
|
||||
else if (TELEMETRY_RSSI() < g_model.rssiAlarms.getWarningRssi() ) {
|
||||
AUDIO_RSSI_ORANGE();
|
||||
SCHEDULE_NEXT_ALARMS_CHECK(10/*seconds*/);
|
||||
}
|
||||
}
|
||||
else if (getRssiAlarmValue(0) && TELEMETRY_RSSI() < getRssiAlarmValue(0)) {
|
||||
AUDIO_RSSI_ORANGE();
|
||||
SCHEDULE_NEXT_ALARMS_CHECK(10/*seconds*/);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (TELEMETRY_STREAMING()) {
|
||||
if (telemetryState == TELEMETRY_KO) {
|
||||
AUDIO_TELEMETRY_BACK();
|
||||
if (TELEMETRY_STREAMING()) {
|
||||
if (telemetryState == TELEMETRY_KO) {
|
||||
AUDIO_TELEMETRY_BACK();
|
||||
}
|
||||
telemetryState = TELEMETRY_OK;
|
||||
}
|
||||
else if (telemetryState == TELEMETRY_OK) {
|
||||
telemetryState = TELEMETRY_KO;
|
||||
AUDIO_TELEMETRY_LOST();
|
||||
}
|
||||
}
|
||||
telemetryState = TELEMETRY_OK;
|
||||
}
|
||||
else if (telemetryState == TELEMETRY_OK) {
|
||||
telemetryState = TELEMETRY_KO;
|
||||
AUDIO_TELEMETRY_LOST();
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
@ -439,10 +441,12 @@ void telemetryInit()
|
|||
}
|
||||
#endif
|
||||
|
||||
#if !defined(CPUARM)
|
||||
NOINLINE uint8_t getRssiAlarmValue(uint8_t alarm)
|
||||
{
|
||||
return (45 - 3*alarm + g_model.frsky.rssiAlarms[alarm].value);
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(LOG_TELEMETRY) && !defined(SIMU)
|
||||
extern FIL g_telemetryFile;
|
||||
|
|
|
@ -604,10 +604,13 @@ const pm_char STR_BLCOLOR[] PROGMEM = TR_BLCOLOR;
|
|||
const pm_char STR_PREFLIGHT[] PROGMEM = TR_PREFLIGHT;
|
||||
const pm_char STR_CHECKLIST[] PROGMEM = TR_CHECKLIST;
|
||||
const pm_char STR_VIEW_NOTES[] PROGMEM = TR_VIEW_NOTES;
|
||||
const pm_char STR_MODEL_SELECT[] PROGMEM = TR_MODEL_SELECT;
|
||||
const pm_char STR_MODEL_SELECT[] PROGMEM = TR_MODEL_SELECT;
|
||||
const pm_char STR_RESET_SUBMENU[] PROGMEM = TR_RESET_SUBMENU;
|
||||
const pm_char STR_LOWALARM[] PROGMEM = TR_LOWALARM;
|
||||
const pm_char STR_CRITICALALARM[] PROGMEM = TR_CRITICALALARM;
|
||||
const pm_char STR_RSSIALARM_WARN[] PROGMEM = TR_RSSIALARM_WARN;
|
||||
const pm_char STR_NO_RSSIALARM[] PROGMEM = TR_NO_RSSIALARM;
|
||||
const pm_char STR_DISABLE_ALARM[] PROGMEM = TR_DISABLE_ALARM;
|
||||
const pm_char STR_TELEMETRY_TYPE[] PROGMEM = TR_TELEMETRY_TYPE;
|
||||
const pm_char STR_TELEMETRY_SENSORS[] PROGMEM = TR_TELEMETRY_SENSORS;
|
||||
const pm_char STR_VALUE[] PROGMEM = TR_VALUE;
|
||||
|
|
|
@ -897,6 +897,9 @@ extern const pm_char STR_BLCOLOR[];
|
|||
extern const pm_char STR_RESET_SUBMENU[];
|
||||
extern const pm_char STR_LOWALARM[];
|
||||
extern const pm_char STR_CRITICALALARM[];
|
||||
extern const pm_char STR_RSSIALARM_WARN[];
|
||||
extern const pm_char STR_NO_RSSIALARM[];
|
||||
extern const pm_char STR_DISABLE_ALARM[];
|
||||
extern const pm_char STR_TELEMETRY_TYPE[];
|
||||
extern const pm_char STR_TELEMETRY_SENSORS[];
|
||||
extern const pm_char STR_VALUE[];
|
||||
|
|
|
@ -1030,6 +1030,9 @@
|
|||
#define TR_ANTENNACONFIRM2 "Ujisti se že je anténa připojena!"
|
||||
#define TR_LOWALARM INDENT "Nízký Alarm"
|
||||
#define TR_CRITICALALARM INDENT "Kritický Alarm"
|
||||
#define TR_RSSIALARM_WARN TR("RSSI","TELEMETRY RSSI")
|
||||
#define TR_NO_RSSIALARM TR(INDENT "Alarms disabled", INDENT "Telemetry alarms disabled")
|
||||
#define TR_DISABLE_ALARM TR(INDENT "Disable alarms", INDENT "Disable telemetry alarms")
|
||||
#define TR_ENABLE_POPUP "Povolit vyskakovací okno"
|
||||
#define TR_DISABLE_POPUP "Zakázat vyskakovací okno"
|
||||
#define TR_POPUP "Popup"
|
||||
|
|
|
@ -1051,6 +1051,9 @@
|
|||
#define TR_ANTENNACONFIRM2 "Ist eine externe Antenne installiert?"
|
||||
#define TR_LOWALARM INDENT "Vor-Alarm bei"
|
||||
#define TR_CRITICALALARM INDENT "Kritisch-Alarm"
|
||||
#define TR_RSSIALARM_WARN "Telemetry"
|
||||
#define TR_NO_RSSIALARM "Audiowarnungen ausgeschaltet"
|
||||
#define TR_DISABLE_ALARM INDENT "Audiowarnungen ausschalten"
|
||||
#define TR_ENABLE_POPUP "Freigabe Popup-Fenster"
|
||||
#define TR_DISABLE_POPUP "Sperren Popup-Fenster"
|
||||
#define TR_POPUP "Popup"
|
||||
|
|
|
@ -1034,6 +1034,9 @@
|
|||
#define TR_ANTENNACONFIRM2 "Make sure antenna is installed!"
|
||||
#define TR_LOWALARM INDENT "Low alarm"
|
||||
#define TR_CRITICALALARM INDENT "Critical alarm"
|
||||
#define TR_RSSIALARM_WARN TR("RSSI","TELEMETRY RSSI")
|
||||
#define TR_NO_RSSIALARM TR(INDENT "Alarms disabled", INDENT "Telemetry alarms disabled")
|
||||
#define TR_DISABLE_ALARM TR(INDENT "Disable alarms", INDENT "Disable telemetry alarms")
|
||||
#define TR_ENABLE_POPUP "Enable popup"
|
||||
#define TR_DISABLE_POPUP "Disable popup"
|
||||
#define TR_POPUP "Popup"
|
||||
|
|
|
@ -1010,6 +1010,9 @@
|
|||
#define TR_ANTENNACONFIRM2 "Make sure antenna is installed!"
|
||||
#define TR_LOWALARM INDENT "Alarma baja"
|
||||
#define TR_CRITICALALARM INDENT "Alarma Critica"
|
||||
#define TR_RSSIALARM_WARN TR("RSSI","TELEMETRY RSSI")
|
||||
#define TR_NO_RSSIALARM TR(INDENT "Alarms disabled", INDENT "Telemetry alarms disabled")
|
||||
#define TR_DISABLE_ALARM TR(INDENT "Disable alarms", INDENT "Disable telemetry alarms")
|
||||
#define TR_ENABLE_POPUP "Enable Popup"
|
||||
#define TR_DISABLE_POPUP "Disable Popup"
|
||||
#define TR_POPUP "Popup"
|
||||
|
|
|
@ -1006,6 +1006,9 @@
|
|||
#define TR_ANTENNACONFIRM2 "Make sure antenna is installed!"
|
||||
#define TR_LOWALARM INDENT "Low Alarm"
|
||||
#define TR_CRITICALALARM INDENT "Critical Alarm"
|
||||
#define TR_RSSIALARM_WARN TR("RSSI","TELEMETRY RSSI")
|
||||
#define TR_NO_RSSIALARM TR(INDENT "Alarms disabled", INDENT "Telemetry alarms disabled")
|
||||
#define TR_DISABLE_ALARM TR(INDENT "Disable alarms", INDENT "Disable telemetry alarms")
|
||||
#define TR_ENABLE_POPUP "Enable Popup"
|
||||
#define TR_DISABLE_POPUP "Disable Popup"
|
||||
#define TR_POPUP "Popup"
|
||||
|
|
|
@ -1033,6 +1033,9 @@
|
|||
#define TR_ANTENNACONFIRM2 "Installer l'antenne d'abord!"
|
||||
#define TR_LOWALARM INDENT "Alarme basse"
|
||||
#define TR_CRITICALALARM INDENT "Alarme critique"
|
||||
#define TR_RSSIALARM_WARN TR("RSSI","TELEMETRY RSSI")
|
||||
#define TR_NO_RSSIALARM TR(INDENT "Alarms disabled", INDENT "Telemetry alarms disabled")
|
||||
#define TR_DISABLE_ALARM TR(INDENT "Disable alarms", INDENT "Disable telemetry alarms")
|
||||
#define TR_ENABLE_POPUP "Activer popup"
|
||||
#define TR_DISABLE_POPUP "Désactiver popup"
|
||||
#define TR_POPUP "Popup"
|
||||
|
|
|
@ -1035,6 +1035,9 @@
|
|||
#define TR_ANTENNACONFIRM2 "Make sure antenna is installed!"
|
||||
#define TR_LOWALARM INDENT "Allarme Basso"
|
||||
#define TR_CRITICALALARM INDENT "Allarme Critico"
|
||||
#define TR_RSSIALARM_WARN TR("RSSI","TELEMETRY RSSI")
|
||||
#define TR_NO_RSSIALARM TR(INDENT "Alarms disabled", INDENT "Telemetry alarms disabled")
|
||||
#define TR_DISABLE_ALARM TR(INDENT "Disable alarms", INDENT "Disable telemetry alarms")
|
||||
#define TR_ENABLE_POPUP "Abilita Popup"
|
||||
#define TR_DISABLE_POPUP "Disabilita Popup"
|
||||
#define TR_POPUP "Popup"
|
||||
|
|
|
@ -1030,6 +1030,9 @@
|
|||
#define TR_ANTENNACONFIRM2 "Is er zeker een antenne geplaatst!"
|
||||
#define TR_LOWALARM INDENT "Waarschuwing"
|
||||
#define TR_CRITICALALARM INDENT "Kritiek Alarm"
|
||||
#define TR_RSSIALARM_WARN TR("RSSI","TELEMETRY RSSI")
|
||||
#define TR_NO_RSSIALARM TR(INDENT "Alarms disabled", INDENT "Telemetry alarms disabled")
|
||||
#define TR_DISABLE_ALARM TR(INDENT "Disable alarms", INDENT "Disable telemetry alarms")
|
||||
#define TR_ENABLE_POPUP "Inschakelen Popups"
|
||||
#define TR_DISABLE_POPUP "Uitschakelen Popups"
|
||||
#define TR_POPUP "Popup"
|
||||
|
|
|
@ -1036,6 +1036,9 @@
|
|||
#define TR_ANTENNACONFIRM2 "Make sure antenna is installed!"
|
||||
#define TR_LOWALARM INDENT "Alarm niski"
|
||||
#define TR_CRITICALALARM INDENT "Alarm krytyczny"
|
||||
#define TR_RSSIALARM_WARN TR("RSSI","TELEMETRY RSSI")
|
||||
#define TR_NO_RSSIALARM TR(INDENT "Alarms disabled", INDENT "Telemetry alarms disabled")
|
||||
#define TR_DISABLE_ALARM TR(INDENT "Disable alarms", INDENT "Disable telemetry alarms")
|
||||
#define TR_ENABLE_POPUP "Aktywuj Popup"
|
||||
#define TR_DISABLE_POPUP "Wyłącz Popup"
|
||||
#define TR_POPUP "Popup"
|
||||
|
|
|
@ -1003,6 +1003,9 @@
|
|||
#define TR_ANTENNACONFIRM2 "Make sure antenna is installed!"
|
||||
#define TR_LOWALARM INDENT "Low Alarm"
|
||||
#define TR_CRITICALALARM INDENT "Critical Alarm"
|
||||
#define TR_RSSIALARM_WARN TR("RSSI","TELEMETRY RSSI")
|
||||
#define TR_NO_RSSIALARM TR(INDENT "Alarms disabled", INDENT "Telemetry alarms disabled")
|
||||
#define TR_DISABLE_ALARM TR(INDENT "Disable alarms", INDENT "Disable telemetry alarms")
|
||||
#define TR_ENABLE_POPUP "Enable Popup"
|
||||
#define TR_DISABLE_POPUP "Disable Popup"
|
||||
#define TR_POPUP "Popup"
|
||||
|
|
|
@ -1049,6 +1049,9 @@
|
|||
#define TR_ANTENNACONFIRM2 "Make sure antenna is installed!"
|
||||
#define TR_LOWALARM INDENT "Låg-alarm"
|
||||
#define TR_CRITICALALARM INDENT "Kritiskt alarm"
|
||||
#define TR_RSSIALARM_WARN TR("RSSI","TELEMETRY RSSI")
|
||||
#define TR_NO_RSSIALARM TR(INDENT "Alarms disabled", INDENT "Telemetry alarms disabled")
|
||||
#define TR_DISABLE_ALARM TR(INDENT "Disable alarms", INDENT "Disable telemetry alarms")
|
||||
#define TR_ENABLE_POPUP "Slå på Dialog"
|
||||
#define TR_DISABLE_POPUP "Slå av Dialog"
|
||||
#define TR_POPUP "Popup"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue