1
0
Fork 0
mirror of https://github.com/opentx/opentx.git synced 2025-07-25 17:25:13 +03:00

#2810 - Other possibility (no EEPROM change, discover button added)

This commit is contained in:
Bertrand Songis 2015-09-05 13:34:10 +02:00
parent b54123f8a3
commit ffd49691f5
21 changed files with 59 additions and 55 deletions

View file

@ -781,7 +781,6 @@ class FrSkyData {
bool mAhPersistent;
unsigned int storedMah;
int fasOffset;
bool rejectNewSensors;
bool ignoreSensorIds;
void clear();

View file

@ -3025,13 +3025,7 @@ OpenTxModelData::OpenTxModelData(ModelData & modelData, BoardEnum board, unsigne
internalField.Append(new SignedField<8>(modelData.moduleData[0].ppmFrameLength));
}
if (!IS_ARM(board) || version < 217) {
internalField.Append(new ConversionField< UnsignedField<8> >(modelData.thrTraceSrc, &throttleSourceConversionTable, "Throttle Source"));
}
else {
internalField.Append(new ConversionField< UnsignedField<7> >(modelData.thrTraceSrc, &throttleSourceConversionTable, "Throttle Source"));
internalField.Append(new BoolField<1>(modelData.frsky.rejectNewSensors));
}
if (!afterrelease21March2013) {
internalField.Append(new UnsignedField<8>(modelData.moduleData[0].modelId));

View file

@ -787,13 +787,11 @@ void TelemetryPanel::setup()
ui->telemetryProtocol->addItem(tr("FrSky D (cable)"), 2);
}
ui->telemetryProtocol->setCurrentIndex(model->telemetryProtocol);
ui->rejectNewSensors->setField(model->frsky.rejectNewSensors);
ui->ignoreSensorIds->setField(model->frsky.ignoreSensorIds);
}
else {
ui->telemetryProtocolLabel->hide();
ui->telemetryProtocol->hide();
ui->rejectNewSensors->hide();
ui->ignoreSensorIds->hide();
}

View file

@ -972,20 +972,13 @@
</property>
</widget>
</item>
<item row="3" column="0">
<item row="2" column="0">
<widget class="AutoCheckBox" name="ignoreSensorIds">
<property name="text">
<string>Disable multi sensor handling</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="AutoCheckBox" name="rejectNewSensors">
<property name="text">
<string>Reject new sensors</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>

View file

@ -86,8 +86,8 @@ enum menuModelTelemetryItems {
ITEM_TELEMETRY_SENSOR30,
ITEM_TELEMETRY_SENSOR31,
ITEM_TELEMETRY_SENSOR32,
ITEM_TELEMETRY_NEWSENSOR,
ITEM_TELEMETRY_REJECT_NEWSENSORS,
ITEM_TELEMETRY_DISCOVER_SENSORS,
ITEM_TELEMETRY_NEW_SENSOR,
ITEM_TELEMETRY_IGNORE_SENSOR_INSTANCE,
#endif
#if !defined(CPUARM)
@ -148,7 +148,7 @@ enum menuModelTelemetryItems {
#if defined(CPUARM)
#define CHANNELS_ROWS
#define SENSOR_ROWS(x) (isTelemetryFieldAvailable(x) ? (uint8_t)0 : HIDDEN_ROW)
#define SENSORS_ROWS LABEL(Sensors), SENSOR_ROWS(0), SENSOR_ROWS(1), SENSOR_ROWS(2), SENSOR_ROWS(3), SENSOR_ROWS(4), SENSOR_ROWS(5), SENSOR_ROWS(6), SENSOR_ROWS(7), SENSOR_ROWS(8), SENSOR_ROWS(9), SENSOR_ROWS(10), SENSOR_ROWS(11), SENSOR_ROWS(12), SENSOR_ROWS(13), SENSOR_ROWS(14), SENSOR_ROWS(15), SENSOR_ROWS(16), SENSOR_ROWS(17), SENSOR_ROWS(18), SENSOR_ROWS(19), SENSOR_ROWS(20), SENSOR_ROWS(21), SENSOR_ROWS(22), SENSOR_ROWS(23), SENSOR_ROWS(24), SENSOR_ROWS(25), SENSOR_ROWS(26), SENSOR_ROWS(27), SENSOR_ROWS(28), SENSOR_ROWS(29), SENSOR_ROWS(30), SENSOR_ROWS(31), (g_model.rejectNewSensors ? HIDDEN_ROW : (uint8_t)0), 0, 0,
#define SENSORS_ROWS LABEL(Sensors), SENSOR_ROWS(0), SENSOR_ROWS(1), SENSOR_ROWS(2), SENSOR_ROWS(3), SENSOR_ROWS(4), SENSOR_ROWS(5), SENSOR_ROWS(6), SENSOR_ROWS(7), SENSOR_ROWS(8), SENSOR_ROWS(9), SENSOR_ROWS(10), SENSOR_ROWS(11), SENSOR_ROWS(12), SENSOR_ROWS(13), SENSOR_ROWS(14), SENSOR_ROWS(15), SENSOR_ROWS(16), SENSOR_ROWS(17), SENSOR_ROWS(18), SENSOR_ROWS(19), SENSOR_ROWS(20), SENSOR_ROWS(21), SENSOR_ROWS(22), SENSOR_ROWS(23), SENSOR_ROWS(24), SENSOR_ROWS(25), SENSOR_ROWS(26), SENSOR_ROWS(27), SENSOR_ROWS(28), SENSOR_ROWS(29), SENSOR_ROWS(30), SENSOR_ROWS(31), 0, 0, 0,
#else
#define CHANNEL_ROWS(x) LABEL(CHANNEL), 1, 0, 2, 2
#define CHANNELS_ROWS CHANNEL_ROWS(0), CHANNEL_ROWS(1),
@ -498,7 +498,7 @@ void onSensorMenu(const char *result)
if (index<MAX_SENSORS && isTelemetryFieldAvailable(index))
m_posVert += 1;
else
m_posVert = 1+ITEM_TELEMETRY_NEWSENSOR;
m_posVert = 1+ITEM_TELEMETRY_NEW_SENSOR;
}
else if (result == STR_COPY) {
int newIndex = availableTelemetryIndex();
@ -605,7 +605,15 @@ void menuModelTelemetry(uint8_t event)
lcd_putsLeft(y, STR_TELEMETRY_SENSORS);
break;
case ITEM_TELEMETRY_NEWSENSOR:
case ITEM_TELEMETRY_DISCOVER_SENSORS:
lcd_putsAtt(0, y, allowNewSensors ? STR_STOP_DISCOVER_SENSORS : STR_DISCOVER_SENSORS, attr);
if (attr && event==EVT_KEY_BREAK(KEY_ENTER)) {
s_editMode = 0;
allowNewSensors = !allowNewSensors;
}
break;
case ITEM_TELEMETRY_NEW_SENSOR:
lcd_putsAtt(0, y, STR_TELEMETRY_NEWSENSOR, attr);
if (attr && event==EVT_KEY_BREAK(KEY_ENTER)) {
s_editMode = 0;
@ -620,10 +628,6 @@ void menuModelTelemetry(uint8_t event)
}
break;
case ITEM_TELEMETRY_REJECT_NEWSENSORS:
ON_OFF_MENU_ITEM(g_model.rejectNewSensors, TELEM_COL2, y, STR_REJECT_NEWSENSORS, attr, event);
break;
case ITEM_TELEMETRY_IGNORE_SENSOR_INSTANCE:
ON_OFF_MENU_ITEM(g_model.ignoreSensorIds, TELEM_COL2, y, STR_IGNORE_INSTANCE, attr, event);
break;

View file

@ -73,8 +73,8 @@ enum menuModelTelemetryItems {
ITEM_TELEMETRY_SENSOR30,
ITEM_TELEMETRY_SENSOR31,
ITEM_TELEMETRY_SENSOR32,
ITEM_TELEMETRY_NEWSENSOR,
ITEM_TELEMETRY_REJECT_NEWSENSORS,
ITEM_TELEMETRY_DISCOVER_SENSORS,
ITEM_TELEMETRY_NEW_SENSOR,
ITEM_TELEMETRY_IGNORE_SENSOR_INSTANCE,
#if defined(VARIO)
ITEM_TELEMETRY_VARIO_LABEL,
@ -122,7 +122,7 @@ enum menuModelTelemetryItems {
#define IS_RANGE_DEFINED(k) (g_model.frsky.channels[k].ratio > 0)
#define SENSOR_ROWS(x) (isTelemetryFieldAvailable(x) ? (uint8_t)0 : HIDDEN_ROW)
#define SENSORS_ROWS LABEL(Sensors), SENSOR_ROWS(0), SENSOR_ROWS(1), SENSOR_ROWS(2), SENSOR_ROWS(3), SENSOR_ROWS(4), SENSOR_ROWS(5), SENSOR_ROWS(6), SENSOR_ROWS(7), SENSOR_ROWS(8), SENSOR_ROWS(9), SENSOR_ROWS(10), SENSOR_ROWS(11), SENSOR_ROWS(12), SENSOR_ROWS(13), SENSOR_ROWS(14), SENSOR_ROWS(15), SENSOR_ROWS(16), SENSOR_ROWS(17), SENSOR_ROWS(18), SENSOR_ROWS(19), SENSOR_ROWS(20), SENSOR_ROWS(21), SENSOR_ROWS(22), SENSOR_ROWS(23), SENSOR_ROWS(24), SENSOR_ROWS(25), SENSOR_ROWS(26), SENSOR_ROWS(27), SENSOR_ROWS(28), SENSOR_ROWS(29), SENSOR_ROWS(30), SENSOR_ROWS(31), (g_model.rejectNewSensors ? HIDDEN_ROW : (uint8_t)0), 0, 0,
#define SENSORS_ROWS LABEL(Sensors), SENSOR_ROWS(0), SENSOR_ROWS(1), SENSOR_ROWS(2), SENSOR_ROWS(3), SENSOR_ROWS(4), SENSOR_ROWS(5), SENSOR_ROWS(6), SENSOR_ROWS(7), SENSOR_ROWS(8), SENSOR_ROWS(9), SENSOR_ROWS(10), SENSOR_ROWS(11), SENSOR_ROWS(12), SENSOR_ROWS(13), SENSOR_ROWS(14), SENSOR_ROWS(15), SENSOR_ROWS(16), SENSOR_ROWS(17), SENSOR_ROWS(18), SENSOR_ROWS(19), SENSOR_ROWS(20), SENSOR_ROWS(21), SENSOR_ROWS(22), SENSOR_ROWS(23), SENSOR_ROWS(24), SENSOR_ROWS(25), SENSOR_ROWS(26), SENSOR_ROWS(27), SENSOR_ROWS(28), SENSOR_ROWS(29), SENSOR_ROWS(30), SENSOR_ROWS(31), 0, 0, 0,
#if defined(VARIO)
#define VARIO_ROWS LABEL(Vario), 0, 1, 2,
#else
@ -468,7 +468,7 @@ void onSensorMenu(const char *result)
if (index<MAX_SENSORS && isTelemetryFieldAvailable(index))
m_posVert += 1;
else
m_posVert = ITEM_TELEMETRY_NEWSENSOR;
m_posVert = ITEM_TELEMETRY_NEW_SENSOR;
}
else if (result == STR_COPY) {
int newIndex = availableTelemetryIndex();
@ -586,7 +586,15 @@ void menuModelTelemetry(uint8_t event)
}
break;
case ITEM_TELEMETRY_NEWSENSOR:
case ITEM_TELEMETRY_DISCOVER_SENSORS:
lcd_putsAtt(0, y, allowNewSensors ? STR_STOP_DISCOVER_SENSORS : STR_DISCOVER_SENSORS, attr);
if (attr && event==EVT_KEY_BREAK(KEY_ENTER)) {
s_editMode = 0;
allowNewSensors = !allowNewSensors;
}
break;
case ITEM_TELEMETRY_NEW_SENSOR:
lcd_putsAtt(0, y, STR_TELEMETRY_NEWSENSOR, attr);
if (attr && event==EVT_KEY_BREAK(KEY_ENTER)) {
s_editMode = 0;
@ -601,10 +609,6 @@ void menuModelTelemetry(uint8_t event)
}
break;
case ITEM_TELEMETRY_REJECT_NEWSENSORS:
ON_OFF_MENU_ITEM(g_model.rejectNewSensors, TELEM_COL2, y, STR_REJECT_NEWSENSORS, attr, event);
break;
case ITEM_TELEMETRY_IGNORE_SENSOR_INSTANCE:
ON_OFF_MENU_ITEM(g_model.ignoreSensorIds, TELEM_COL2, y, STR_IGNORE_INSTANCE, attr, event);
break;

View file

@ -2153,10 +2153,8 @@ PACK(typedef struct {
FlightModeData flightModeData[MAX_FLIGHT_MODES];
AVR_FIELD(int8_t ppmFrameLength) // 0=22.5ms (10ms-30ms) 0.5ms increments
AVR_FIELD(uint8_t thrTraceSrc)
ARM_FIELD(uint8_t thrTraceSrc:7)
ARM_FIELD(uint8_t rejectNewSensors:1)
uint8_t thrTraceSrc;
swarnstate_t switchWarningState;
swarnenable_t switchWarningEnable;

View file

@ -1,6 +1,7 @@
#include "../opentx.h"
TelemetryItem telemetryItems[MAX_SENSORS];
uint8_t allowNewSensors;
void TelemetryItem::gpsReceived()
{
@ -495,7 +496,7 @@ void setTelemetryValue(TelemetryProtocol protocol, uint16_t id, uint8_t instance
}
}
if (available || g_model.rejectNewSensors) {
if (available || !allowNewSensors) {
return;
}

View file

@ -571,7 +571,8 @@ const pm_char STR_BLCOLOR[] PROGMEM = TR_BLCOLOR;
const pm_char STR_FILTER[] PROGMEM = TR_FILTER;
const pm_char STR_TELEMETRYFULL[] PROGMEM = TR_TELEMETRYFULL;
const pm_char STR_IGNORE_INSTANCE[] PROGMEM = TR_IGNORE_INSTANCE;
const pm_char STR_REJECT_NEWSENSORS[] PROGMEM = TR_REJECT_NEWSENSORS;
const pm_char STR_DISCOVER_SENSORS[] PROGMEM = TR_DISCOVER_SENSORS;
const pm_char STR_STOP_DISCOVER_SENSORS[] PROGMEM = TR_STOP_DISCOVER_SENSORS;
#endif
#if defined(PCBTARANIS)

View file

@ -790,7 +790,8 @@ extern const pm_char STR_BLCOLOR[];
extern const pm_char STR_FILTER[];
extern const pm_char STR_TELEMETRYFULL[];
extern const pm_char STR_IGNORE_INSTANCE[];
extern const pm_char STR_REJECT_NEWSENSORS[];
extern const pm_char STR_DISCOVER_SENSORS[];
extern const pm_char STR_STOP_DISCOVER_SENSORS[];
#endif
#if defined(PCBTARANIS)

View file

@ -1080,7 +1080,8 @@
#define TR_FILTER "Filtr"
#define TR_TELEMETRYFULL "Všechny sloty jsou plné!"
#define TR_IGNORE_INSTANCE INDENT "Ignoruj chyby ID"
#define TR_REJECT_NEWSENSORS "Reject new sensors"
#define TR_DISCOVER_SENSORS "Reject new sensors"
#define TR_STOP_DISCOVER_SENSORS INDENT "Stop Discover"
#define TR_MENU_INPUTS "\314Vstupy"
#define TR_MENU_LUA "\322Lua skripty"

View file

@ -1084,7 +1084,8 @@
#define TR_FILTER "Filter aktiv"
#define TR_TELEMETRYFULL "Telemetriezeilen voll!"
#define TR_IGNORE_INSTANCE INDENT "Ignore instance"
#define TR_REJECT_NEWSENSORS "Reject new sensors"
#define TR_DISCOVER_SENSORS "Reject new sensors"
#define TR_STOP_DISCOVER_SENSORS INDENT "Stop Discover"
// ----------------------------- Symbole für Auswahlliste----------
#define TR_MENU_INPUTS "\314Inputs"
#define TR_MENU_LUA "\322Lua Scripte"

View file

@ -1078,8 +1078,9 @@
#define TR_ONLYPOSITIVE "Positive"
#define TR_FILTER "Filter"
#define TR_TELEMETRYFULL "All telemetry slots full!"
#define TR_IGNORE_INSTANCE TR(INDENT "No inst.", INDENT "Ignore instance")
#define TR_REJECT_NEWSENSORS INDENT "Locked"
#define TR_IGNORE_INSTANCE TR(INDENT "No inst.", INDENT "Ignore instances")
#define TR_DISCOVER_SENSORS INDENT "Autodiscover sensors"
#define TR_STOP_DISCOVER_SENSORS INDENT "Stop discover sensors"
#define TR_MENU_INPUTS "\314Inputs"
#define TR_MENU_LUA "\322Lua scripts"

View file

@ -1034,7 +1034,8 @@
#define TR_FILTER "Filter"
#define TR_TELEMETRYFULL "All telemetry slots full!"
#define TR_IGNORE_INSTANCE INDENT "Ignore instance"
#define TR_REJECT_NEWSENSORS "Reject new sensors"
#define TR_DISCOVER_SENSORS "Reject new sensors"
#define TR_STOP_DISCOVER_SENSORS INDENT "Stop Discover"
#define TR_MENU_INPUTS "\314Inputs"
#define TR_MENU_LUA "\322Lua scripts"

View file

@ -1034,7 +1034,8 @@
#define TR_FILTER "Filter"
#define TR_TELEMETRYFULL "All telemetry slots full!"
#define TR_IGNORE_INSTANCE INDENT "Ignore instance"
#define TR_REJECT_NEWSENSORS "Reject new sensors"
#define TR_DISCOVER_SENSORS "Reject new sensors"
#define TR_STOP_DISCOVER_SENSORS INDENT "Stop Discover"
#define TR_MENU_INPUTS "\314Inputs"
#define TR_MENU_LUA "\322Lua scripts"

View file

@ -1071,7 +1071,8 @@
#define TR_FILTER "Filtrage"
#define TR_TELEMETRYFULL "Plus de capteurs libres!"
#define TR_IGNORE_INSTANCE TR(INDENT "Ign. inst.",INDENT "Ignorer instance")
#define TR_REJECT_NEWSENSORS "Reject new sensors"
#define TR_DISCOVER_SENSORS "Reject new sensors"
#define TR_STOP_DISCOVER_SENSORS INDENT "Stop Discover"
#define TR_MENU_INPUTS "\314Entrées"
#define TR_MENU_LUA "\322Scripts Lua"

View file

@ -1082,7 +1082,8 @@
#define TR_FILTER "Filtro"
#define TR_TELEMETRYFULL "Tutti gli slot sono pieni!"
#define TR_IGNORE_INSTANCE TR(INDENT "No inst.","Ignora instanza")
#define TR_REJECT_NEWSENSORS "Reject new sensors"
#define TR_DISCOVER_SENSORS "Reject new sensors"
#define TR_STOP_DISCOVER_SENSORS INDENT "Stop Discover"
#define TR_MENU_INPUTS "\314Ingressi"
#define TR_MENU_LUA "\322Lua scripts"

View file

@ -1089,7 +1089,8 @@
#define TR_FILTER "Filter aktief"
#define TR_TELEMETRYFULL "Telemetrie slots vol!"
#define TR_IGNORE_INSTANCE TR(INDENT "Neg. ID ","Negeer ID's")
#define TR_REJECT_NEWSENSORS "Reject new sensors"
#define TR_DISCOVER_SENSORS "Reject new sensors"
#define TR_STOP_DISCOVER_SENSORS INDENT "Stop Discover"
#define TR_MENU_INPUTS "\314Inputs"

View file

@ -1083,7 +1083,8 @@
#define TR_FILTER "Filtr"
#define TR_TELEMETRYFULL "Wszyskie miejsca zajęte!"
#define TR_IGNORE_INSTANCE INDENT "Ignoruj przypadek"
#define TR_REJECT_NEWSENSORS "Reject new sensors"
#define TR_DISCOVER_SENSORS "Reject new sensors"
#define TR_STOP_DISCOVER_SENSORS INDENT "Stop Discover"
#define TR_MENU_INPUTS "\314Wejści"
#define TR_MENU_LUA "\322SkryptyLUA"

View file

@ -1034,7 +1034,8 @@
#define TR_FILTER "Filter"
#define TR_TELEMETRYFULL "All telemetry slots full!"
#define TR_IGNORE_INSTANCE INDENT "Ignore instance"
#define TR_REJECT_NEWSENSORS "Reject new sensors"
#define TR_DISCOVER_SENSORS "Reject new sensors"
#define TR_STOP_DISCOVER_SENSORS INDENT "Stop Discover"
#define TR_MENU_INPUTS "\314Inputs"
#define TR_MENU_LUA "\322Lua scripts"

View file

@ -1034,7 +1034,8 @@
#define TR_FILTER "Filter"
#define TR_TELEMETRYFULL "All telemetry slots full!"
#define TR_IGNORE_INSTANCE INDENT "Ignore instance"
#define TR_REJECT_NEWSENSORS "Reject new sensors"
#define TR_DISCOVER_SENSORS "Reject new sensors"
#define TR_STOP_DISCOVER_SENSORS INDENT "Stop Discover"
#define TR_MENU_INPUTS "\314Inputs"
#define TR_MENU_LUA "\322Lua scripts"