[Simulator] Quick fix for showing gvars with precision and unit in Radio Outputs view (fixes #5360). (#5384)
This commit is contained in:
committed by
Bertrand Songis
parent
18aa849cc7
commit
7759403f3e
@@ -305,13 +305,15 @@ void RadioOutputsWidget::onGVarValueChange(quint8 index, qint32 value)
|
||||
|
||||
QHash<int, QLabel *> fmMap = m_globalVarsMap.value(index);
|
||||
SimulatorInterface::gVarMode_t gv(value);
|
||||
QLabel * lbl;
|
||||
|
||||
if (fmMap.contains(gv.mode)) {
|
||||
QLabel * lbl = fmMap.value(gv.mode);
|
||||
if (lbl)
|
||||
lbl->setText(QString::number(gv.value));
|
||||
if (fmMap.contains(gv.mode) && (lbl = fmMap.value(gv.mode))) {
|
||||
GVarData gvar;
|
||||
gvar.prec = gv.prec;
|
||||
gvar.unit = gv.unit;
|
||||
lbl->setText(QString::number(gv.value * gvar.multiplierGet(), 'f', gv.prec) + gvar.unitToString());
|
||||
}
|
||||
//qDebug() << index << value << gv.mode << gv.value;
|
||||
//qDebug() << index << value << gv.mode << gv.value << gv.prec << gv.unit;
|
||||
}
|
||||
|
||||
void RadioOutputsWidget::onPhaseChanged(qint32 phase, const QString &)
|
||||
|
||||
@@ -83,16 +83,20 @@ class SimulatorInterface : public QObject
|
||||
struct gVarMode_t {
|
||||
int16_t value;
|
||||
uint8_t mode;
|
||||
uint8_t prec:2;
|
||||
uint8_t unit:2;
|
||||
|
||||
gVarMode_t(int i = 0) {
|
||||
set(i);
|
||||
}
|
||||
void set(int i) {
|
||||
unit = (i >> 26) & 0x3;
|
||||
prec = (i >> 24) & 0x3;
|
||||
mode = (i >> 16) & 0xFF;
|
||||
value = (i & 0xFFFF);
|
||||
}
|
||||
operator int() {
|
||||
return ((mode << 16) | (value & 0xFFFF));
|
||||
return (((unit & 0x3) << 26) | ((prec & 0x3) << 24) | ((mode & 0xFF) << 16) | (value & 0xFFFF));
|
||||
}
|
||||
gVarMode_t & operator =(const int i) {
|
||||
set(i);
|
||||
@@ -106,7 +110,7 @@ class SimulatorInterface : public QObject
|
||||
|
||||
int16_t chans[CPN_MAX_CHNOUT]; // final channel outputs
|
||||
int16_t ex_chans[CPN_MAX_CHNOUT]; // raw mix outputs
|
||||
int16_t gvars[CPN_MAX_FLIGHT_MODES][CPN_MAX_GVARS];
|
||||
qint32 gvars[CPN_MAX_FLIGHT_MODES][CPN_MAX_GVARS];
|
||||
int trims[CPN_MAX_TRIMS]; // Board::TrimAxes enum
|
||||
bool vsw[CPN_MAX_LOGICAL_SWITCHES]; // virtual/logic switches
|
||||
int8_t phase;
|
||||
|
||||
@@ -526,14 +526,15 @@ void OpenTxSimulator::checkOutputsChanged()
|
||||
|
||||
#if defined(GVAR_VALUE) && defined(GVARS)
|
||||
gVarMode_t gvar;
|
||||
for (uint8_t fm=0; fm < MAX_FLIGHT_MODES; fm++) {
|
||||
gvar.mode = fm;
|
||||
for (uint8_t gv=0; gv < MAX_GVARS; gv++) {
|
||||
tmpVal = GVAR_VALUE(gv, getGVarFlightMode(fm, gv));
|
||||
for (uint8_t gv=0; gv < MAX_GVARS; gv++) {
|
||||
gvar.prec = g_model.gvars[gv].prec;
|
||||
gvar.unit = g_model.gvars[gv].unit;
|
||||
for (uint8_t fm=0; fm < MAX_FLIGHT_MODES; fm++) {
|
||||
gvar.mode = fm;
|
||||
gvar.value = (int16_t)GVAR_VALUE(gv, getGVarFlightMode(fm, gv));
|
||||
tmpVal = gvar;
|
||||
if (lastOutputs.gvars[fm][gv] != tmpVal || m_resetOutputsData) {
|
||||
lastOutputs.gvars[fm][gv] = tmpVal;
|
||||
gvar.value = (int16_t)tmpVal;
|
||||
tmpVal = gvar;
|
||||
emit gVarValueChange(gv, tmpVal);
|
||||
emit outputValueChange(OUTPUT_SRC_GVAR, gv, tmpVal);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user