Partly fixes #1861
This commit is contained in:
@@ -970,7 +970,7 @@ class SensorData {
|
||||
unsigned int gps;
|
||||
unsigned int alt;
|
||||
|
||||
bool isAvailable() const { return type==TYPE_CALCULATED || id!=0 || instance!=0; }
|
||||
bool isAvailable() const { return strlen(label) > 0; }
|
||||
void updateUnit();
|
||||
QString unitString() const;
|
||||
void clear() { memset(this, 0, sizeof(SensorData)); }
|
||||
|
||||
@@ -337,20 +337,25 @@ void TelemetryCustomScreen::populateTelemetrySourceCB(QComboBox *b, unsigned int
|
||||
{
|
||||
b->clear();
|
||||
|
||||
b->addItem(RawSource(SOURCE_TYPE_NONE, 0).toString(model));
|
||||
|
||||
for (unsigned int i = 0; i < (last ? TELEMETRY_SOURCES_STATUS_COUNT : TELEMETRY_SOURCES_DISPLAY_COUNT); i++) {
|
||||
b->addItem(RawSource(SOURCE_TYPE_TELEMETRY, i).toString(model));
|
||||
if (!firmware->isTelemetrySourceAvailable(i)) {
|
||||
// disable item
|
||||
QModelIndex index = b->model()->index(i+1, 0);
|
||||
QVariant v(0);
|
||||
b->model()->setData(index, v, Qt::UserRole - 1);
|
||||
}
|
||||
if (IS_ARM(firmware->getBoard())) {
|
||||
// TODO
|
||||
}
|
||||
else {
|
||||
b->addItem(RawSource(SOURCE_TYPE_NONE, 0).toString(model));
|
||||
|
||||
b->setCurrentIndex(value);
|
||||
b->setMaxVisibleItems(10);
|
||||
for (unsigned int i = 0; i < (last ? TELEMETRY_SOURCES_STATUS_COUNT : TELEMETRY_SOURCES_DISPLAY_COUNT); i++) {
|
||||
b->addItem(RawSource(SOURCE_TYPE_TELEMETRY, i).toString(model));
|
||||
if (!firmware->isTelemetrySourceAvailable(i)) {
|
||||
// disable item
|
||||
QModelIndex index = b->model()->index(i+1, 0);
|
||||
QVariant v(0);
|
||||
b->model()->setData(index, v, Qt::UserRole - 1);
|
||||
}
|
||||
}
|
||||
|
||||
b->setCurrentIndex(value);
|
||||
b->setMaxVisibleItems(10);
|
||||
}
|
||||
}
|
||||
|
||||
TelemetryCustomScreen::~TelemetryCustomScreen()
|
||||
@@ -605,7 +610,7 @@ void TelemetrySensorPanel::on_name_editingFinished()
|
||||
{
|
||||
if (!lock) {
|
||||
strcpy(sensor.label, ui->name->text().toAscii());
|
||||
update();
|
||||
emit nameModified();
|
||||
emit modified();
|
||||
}
|
||||
}
|
||||
@@ -678,6 +683,7 @@ TelemetryPanel::TelemetryPanel(QWidget *parent, ModelData & model, GeneralSettin
|
||||
TelemetrySensorPanel * panel = new TelemetrySensorPanel(this, model.sensorData[i], model, generalSettings, firmware);
|
||||
ui->sensorsLayout->addWidget(panel);
|
||||
sensorPanels[i] = panel;
|
||||
connect(panel, SIGNAL(nameModified()), this, SLOT(update()));
|
||||
}
|
||||
}
|
||||
else {
|
||||
|
||||
@@ -87,6 +87,9 @@ class TelemetrySensorPanel: public ModelPanel
|
||||
~TelemetrySensorPanel();
|
||||
void update();
|
||||
|
||||
signals:
|
||||
void nameModified();
|
||||
|
||||
protected slots:
|
||||
void on_name_editingFinished();
|
||||
void on_type_currentIndexChanged(int index);
|
||||
|
||||
@@ -1240,8 +1240,8 @@ PACK(typedef struct {
|
||||
};
|
||||
void init(const char *label, uint8_t unit=UNIT_RAW, uint8_t prec=0);
|
||||
void init(uint16_t id);
|
||||
bool isAvailable();
|
||||
int32_t getValue(int32_t value, uint8_t unit, uint8_t prec) const;
|
||||
|
||||
}) TelemetrySensor;
|
||||
#endif
|
||||
|
||||
|
||||
@@ -445,7 +445,7 @@ int availableTelemetryIndex()
|
||||
{
|
||||
for (int index=0; index<TELEM_VALUES_MAX; index++) {
|
||||
TelemetrySensor & telemetrySensor = g_model.telemetrySensors[index];
|
||||
if (telemetrySensor.id == 0 && telemetrySensor.type == 0) {
|
||||
if (!telemetrySensor.isAvailable()) {
|
||||
return index;
|
||||
}
|
||||
}
|
||||
@@ -483,6 +483,11 @@ void TelemetrySensor::init(uint16_t id)
|
||||
init(label);
|
||||
}
|
||||
|
||||
bool TelemetrySensor::isAvailable()
|
||||
{
|
||||
return ZLEN(label) > 0;
|
||||
}
|
||||
|
||||
int32_t convertTelemetryValue(int32_t value, uint8_t unit, uint8_t prec, uint8_t destUnit, uint8_t destPrec)
|
||||
{
|
||||
for (int i=prec; i<destPrec; i++)
|
||||
|
||||
@@ -167,7 +167,7 @@ extern TelemetryItem telemetryItems[TELEM_VALUES_MAX];
|
||||
inline bool isTelemetryFieldAvailable(int index)
|
||||
{
|
||||
TelemetrySensor & sensor = g_model.telemetrySensors[index];
|
||||
return sensor.type == TELEM_TYPE_CALCULATED || sensor.id != 0;
|
||||
return sensor.isAvailable();
|
||||
}
|
||||
|
||||
inline bool isTelemetryFieldComparisonAvailable(int index)
|
||||
|
||||
Reference in New Issue
Block a user