diff --git a/companion/src/comparedialog.cpp b/companion/src/comparedialog.cpp index 3cebee856..4265d50ab 100644 --- a/companion/src/comparedialog.cpp +++ b/companion/src/comparedialog.cpp @@ -1300,13 +1300,13 @@ void compareDialog::printFrSky() if (fd1->screens[0].type==fd2->screens[0].type) color=getColor1(fd1->screens[0].body.bars[i].source,fd2->screens[0].body.bars[i].source); str.append(""+getFrSkySrc(fd1->screens[0].body.bars[i].source)+""); - value1=getBarValue(fd1->screens[0].body.bars[i].source,fd1->screens[0].body.bars[i].barMin,fd1); - value2=getBarValue(fd2->screens[0].body.bars[i].source,fd2->screens[0].body.bars[i].barMin,fd2); + // TODO value1 = getBarValue(fd1->screens[0].body.bars[i].source,fd1->screens[0].body.bars[i].barMin,fd1); + // TODO value2 = getBarValue(fd2->screens[0].body.bars[i].source,fd2->screens[0].body.bars[i].barMin,fd2); if (fd1->screens[0].type==fd2->screens[0].type) color=getColor1(value1,value2); str.append(""+QString::number(value1)+""); - value1=getBarValue(fd1->screens[0].body.bars[i].source,fd1->screens[0].body.bars[i].barMax,fd1); - value2=getBarValue(fd2->screens[0].body.bars[i].source,fd2->screens[0].body.bars[i].barMax,fd2); + // TODO value1=getBarValue(fd1->screens[0].body.bars[i].source,fd1->screens[0].body.bars[i].barMax,fd1); + // TODO value2=getBarValue(fd2->screens[0].body.bars[i].source,fd2->screens[0].body.bars[i].barMax,fd2); if (fd1->screens[0].type==fd2->screens[0].type) color=getColor1(value1,value2); str.append(""+QString::number(value1)+""); @@ -1418,13 +1418,13 @@ void compareDialog::printFrSky() if (fd1->screens[0].type==fd2->screens[0].type) color=getColor2(fd1->screens[0].body.bars[i].source,fd2->screens[0].body.bars[i].source); str.append(""+getFrSkySrc(fd2->screens[0].body.bars[i].source)+""); - value1=getBarValue(fd1->screens[0].body.bars[i].source,fd1->screens[0].body.bars[i].barMin,fd1); - value2=getBarValue(fd2->screens[0].body.bars[i].source,fd2->screens[0].body.bars[i].barMin,fd2); + // TODO value1=getBarValue(fd1->screens[0].body.bars[i].source,fd1->screens[0].body.bars[i].barMin,fd1); + // TODO value2=getBarValue(fd2->screens[0].body.bars[i].source,fd2->screens[0].body.bars[i].barMin,fd2); if (fd1->screens[0].type==fd2->screens[0].type) color=getColor2(value1,value2); str.append(""+QString::number(value2)+""); - value1=getBarValue(fd1->screens[0].body.bars[i].source,fd1->screens[0].body.bars[i].barMax,fd1); - value2=getBarValue(fd2->screens[0].body.bars[i].source,fd2->screens[0].body.bars[i].barMax,fd2); + // TODO value1=getBarValue(fd1->screens[0].body.bars[i].source,fd1->screens[0].body.bars[i].barMax,fd1); + // TODO value2=getBarValue(fd2->screens[0].body.bars[i].source,fd2->screens[0].body.bars[i].barMax,fd2); if (fd1->screens[0].type==fd2->screens[0].type) color=getColor2(value1,value2); str.append(""+QString::number(value2)+""); diff --git a/companion/src/eeprominterface.cpp b/companion/src/eeprominterface.cpp index ca6c86485..e6661a04f 100644 --- a/companion/src/eeprominterface.cpp +++ b/companion/src/eeprominterface.cpp @@ -37,146 +37,124 @@ void getEEPROMString(char *dst, const char *src, int size) } } -int RawSource::getDecimals(const ModelData & Model) +RawSourceRange RawSource::getRange() { - if(type==SOURCE_TYPE_TELEMETRY) { - switch (index) { - case TELEMETRY_SOURCE_A1: - case TELEMETRY_SOURCE_A2: - return (Model.frsky.channels[index-TELEMETRY_SOURCE_A1].type==0 ? 2: 0); - case TELEMETRY_SOURCE_CELL: - return 2; - case TELEMETRY_SOURCE_CELLS_SUM: - case TELEMETRY_SOURCE_VFAS: - case TELEMETRY_SOURCE_CURRENT: - return 1; - default: - return 0; - } - } - return 0; -} + RawSourceRange result; + + int board = GetEepromInterface()->getBoard(); -double RawSource::getMin(const ModelData & Model) -{ switch (type) { case SOURCE_TYPE_TELEMETRY: switch (index) { - /*case TELEMETRY_SOURCE_NONE: case TELEMETRY_SOURCE_TX_BATT: + result.step = 0.1; + result.decimals = 1; + result.max = 25.5; + break; case TELEMETRY_SOURCE_TIMER1: case TELEMETRY_SOURCE_TIMER2: - return 0; */ - case TELEMETRY_SOURCE_A1: - case TELEMETRY_SOURCE_A2: - if (Model.frsky.channels[index-TELEMETRY_SOURCE_A1].type==0) { - return (Model.frsky.channels[index-TELEMETRY_SOURCE_A1].offset*Model.frsky.channels[index-TELEMETRY_SOURCE_A1].ratio)/2550.0; - } - else { - return (Model.frsky.channels[index-TELEMETRY_SOURCE_A1].offset*Model.frsky.channels[index-TELEMETRY_SOURCE_A1].ratio)/255.0; - } - case TELEMETRY_SOURCE_ALT: - case TELEMETRY_SOURCE_GPS_ALT: - return -500; - case TELEMETRY_SOURCE_T1: - case TELEMETRY_SOURCE_T2: - return -30; - default: - return 0; - } - break; - default: - return (Model.extendedLimits ? -125 :-100); - } -} - -double RawSource::getMax(const ModelData & Model) -{ - switch (type) { - case SOURCE_TYPE_TELEMETRY: - switch (index) { - case TELEMETRY_SOURCE_TIMER1: - case TELEMETRY_SOURCE_TIMER2: - return 765; + result.step = IS_TARANIS(board) ? 1 : 3; + result.max = 765; + break; case TELEMETRY_SOURCE_RSSI_TX: case TELEMETRY_SOURCE_RSSI_RX: - return 100; + result.max = 100; + break; case TELEMETRY_SOURCE_A1: case TELEMETRY_SOURCE_A2: - if (Model.frsky.channels[index-TELEMETRY_SOURCE_A1].type==0) { - return (Model.frsky.channels[index-TELEMETRY_SOURCE_A1].ratio-(Model.frsky.channels[index-TELEMETRY_SOURCE_A1].offset*Model.frsky.channels[index-TELEMETRY_SOURCE_A1].ratio)/255.0)/10; - } else { - return Model.frsky.channels[index-TELEMETRY_SOURCE_A1].ratio-(Model.frsky.channels[index-TELEMETRY_SOURCE_A1].offset*Model.frsky.channels[index-TELEMETRY_SOURCE_A1].ratio)/255.0; + if (model) { + if (model->frsky.channels[index-TELEMETRY_SOURCE_A1].type==0) { + result.step = (model->frsky.channels[index-TELEMETRY_SOURCE_A1].ratio / 2550.0); + result.min = (model->frsky.channels[index-TELEMETRY_SOURCE_A1].offset * model->frsky.channels[index-TELEMETRY_SOURCE_A1].ratio) / 2550.0; + result.max = model->frsky.channels[index-TELEMETRY_SOURCE_A1].ratio - (model->frsky.channels[index-TELEMETRY_SOURCE_A1].offset * model->frsky.channels[index-TELEMETRY_SOURCE_A1].ratio) / 2550.0; + result.decimals = 2; + // result.offset = result.min; + } + else { + result.step = (model->frsky.channels[index-TELEMETRY_SOURCE_A1].ratio / 255.0); + result.min = (model->frsky.channels[index-TELEMETRY_SOURCE_A1].offset *model->frsky.channels[index-TELEMETRY_SOURCE_A1].ratio) / 255.0; + result.max = model->frsky.channels[index-TELEMETRY_SOURCE_A1].ratio - (model->frsky.channels[index-TELEMETRY_SOURCE_A1].offset * model->frsky.channels[index-TELEMETRY_SOURCE_A1].ratio) / 255.0; + result.decimals = 0; + // result.offset = result.min; + } } + break; case TELEMETRY_SOURCE_ALT: case TELEMETRY_SOURCE_GPS_ALT: - return 1540; - case TELEMETRY_SOURCE_RPM: - return 12750; - case TELEMETRY_SOURCE_FUEL: - return 100; + result.step = IS_TARANIS(board) ? 1 : 8; + result.min = -500; + result.max = 1540; + // result.offset = 524; + break; case TELEMETRY_SOURCE_T1: case TELEMETRY_SOURCE_T2: - return 225; + result.min = -30; + result.max = 225; + // result.offset = 98; + break; + case TELEMETRY_SOURCE_RPM: + result.step = IS_TARANIS(board) ? 1 : 50; + result.max = 12750; + // result.offset = 6400; + break; + case TELEMETRY_SOURCE_FUEL: + result.max = 100; + break; case TELEMETRY_SOURCE_SPEED: - return 944; + result.step = IS_TARANIS(board) ? 1 : 4; + result.max = 944; + // result.offset = 474; + if (model && !model->frsky.imperial) { + result.step *= 1.852; + result.max *= 1.852; + } + break; case TELEMETRY_SOURCE_DIST: - return 2040; + result.step = IS_TARANIS(board) ? 1 : 8; + result.max = 2040; + // result.offset = 1024; + break; case TELEMETRY_SOURCE_CELL: - return 5.1; + result.step = IS_TARANIS(board) ? 0.01 : 0.02; + result.max = 5.1; + result.decimals = 2; + // result.offset = 2.56; + break; case TELEMETRY_SOURCE_CELLS_SUM: case TELEMETRY_SOURCE_VFAS: - return 25.5; + result.step = 0.1; + result.max = 25.5; + result.decimals = 1; + break; case TELEMETRY_SOURCE_CURRENT: - return 127.5; + result.step = IS_TARANIS(board) ? 0.1 : 0.5; + result.max = 127.5; + result.decimals = 1; + break; case TELEMETRY_SOURCE_CONSUMPTION: - return 5100; + result.step = IS_TARANIS(board) ? 1 : 20; + result.max = 5100; + break; case TELEMETRY_SOURCE_POWER: - return 1275; + result.step = IS_TARANIS(board) ? 1 : 5; + result.max = 1275; + break; default: - return 125; + result.max = 125; + break; } break; + default: - return (Model.extendedLimits ? 125 :100); + result.max = (model && model->extendedLimits ? 125 : 100); + result.min = - result.max; + break; } + + return result; } -double RawSource::getOffset(const ModelData & Model) -{ - if (type==SOURCE_TYPE_TELEMETRY) { - switch (index) { - case TELEMETRY_SOURCE_A1: - case TELEMETRY_SOURCE_A2: - if (Model.frsky.channels[index-TELEMETRY_SOURCE_A1].type==0) { - return (Model.frsky.channels[index-TELEMETRY_SOURCE_A1].offset*Model.frsky.channels[index-TELEMETRY_SOURCE_A1].ratio)/2550.0; - } - else { - return (Model.frsky.channels[index-TELEMETRY_SOURCE_A1].offset*Model.frsky.channels[index-TELEMETRY_SOURCE_A1].ratio)/255.0; - } - case TELEMETRY_SOURCE_ALT: - case TELEMETRY_SOURCE_GPS_ALT: - return 524; - case TELEMETRY_SOURCE_RPM: - return 6400; - case TELEMETRY_SOURCE_FUEL: - return 0; - case TELEMETRY_SOURCE_T1: - case TELEMETRY_SOURCE_T2: - return 98; - case TELEMETRY_SOURCE_SPEED: - return 474; - case TELEMETRY_SOURCE_DIST: - return 1024; - case TELEMETRY_SOURCE_CELL: - return 2.56; - default: - return 0; - } - } - return 0; -} - +#if 0 int RawSource::getRawOffset(const ModelData & Model) { switch (type) { @@ -202,51 +180,7 @@ int RawSource::getRawOffset(const ModelData & Model) return 0; } } - -double RawSource::getStep(const ModelData & Model) -{ - switch (type) { - case SOURCE_TYPE_TELEMETRY: - switch (index) { - case TELEMETRY_SOURCE_TIMER1: - case TELEMETRY_SOURCE_TIMER2: - return 3; - case TELEMETRY_SOURCE_A1: - case TELEMETRY_SOURCE_A2: - if (Model.frsky.channels[index-TELEMETRY_SOURCE_A1].type==0) { - return (Model.frsky.channels[index-TELEMETRY_SOURCE_A1].ratio/2550.0); - } - else { - return (Model.frsky.channels[index-TELEMETRY_SOURCE_A1].ratio/255.0); - } - case TELEMETRY_SOURCE_ALT: - case TELEMETRY_SOURCE_GPS_ALT: - return 8; - case TELEMETRY_SOURCE_RPM: - return 50; - case TELEMETRY_SOURCE_SPEED: - return 4; - case TELEMETRY_SOURCE_DIST: - return 8; - case TELEMETRY_SOURCE_CELL: - return 0.02; - case TELEMETRY_SOURCE_CELLS_SUM: - case TELEMETRY_SOURCE_VFAS: - return 0.1; - case TELEMETRY_SOURCE_CURRENT: - return 0.5; - case TELEMETRY_SOURCE_CONSUMPTION: - return 20; - case TELEMETRY_SOURCE_POWER: - return 5; - default: - return 1; - } - break; - default: - return 1; - } -} +#endif QString AnalogString(int index) { diff --git a/companion/src/eeprominterface.h b/companion/src/eeprominterface.h index 91da15e51..e26c7a189 100644 --- a/companion/src/eeprominterface.h +++ b/companion/src/eeprominterface.h @@ -283,6 +283,30 @@ class ModelData; QString AnalogString(int index); QString RotaryEncoderString(int index); +class RawSourceRange +{ + public: + RawSourceRange(): + decimals(0), + min(0.0), + max(0.0), + step(1.0), + offset(0.0) + { + } + + float getValue(int value) { + return round(float(value) * step); + } + + int decimals; + double min; + double max; + double step; + double offset; + +}; + class RawSource { public: RawSource(): @@ -313,17 +337,16 @@ class RawSource { QString toString(); - int getDecimals(const ModelData & Model); - double getMin(const ModelData & Model); - double getMax(const ModelData & Model); - double getStep(const ModelData & Model); - double getOffset(const ModelData & Model); - int getRawOffset(const ModelData & Model); + RawSourceRange getRange(); - bool operator== ( const RawSource& other) { + bool operator == ( const RawSource & other) { return (this->type == other.type) && (this->index == other.index); } + bool operator != ( const RawSource & other) { + return (this->type != other.type) || (this->index != other.index); + } + RawSourceType type; int index; const ModelData * model; @@ -982,7 +1005,6 @@ enum Capability { GvarsAreNamed, GvarsFlightPhases, GvarsHaveSources, - GvarsAsSources, GvarsName, NoTelemetryProtocol, TelemetryCSFields, diff --git a/companion/src/firmwares/er9x/er9xinterface.cpp b/companion/src/firmwares/er9x/er9xinterface.cpp index 72b5acab9..2ddb828e6 100644 --- a/companion/src/firmwares/er9x/er9xinterface.cpp +++ b/companion/src/firmwares/er9x/er9xinterface.cpp @@ -282,7 +282,6 @@ int Er9xInterface::getCapability(const Capability capability) case Gvars: return 7; case GvarsHaveSources: - case GvarsAsSources: return 1; case GetThrSwitch: return DSW_THR; diff --git a/companion/src/firmwares/ersky9x/ersky9xinterface.cpp b/companion/src/firmwares/ersky9x/ersky9xinterface.cpp index 88129b997..8405bff8f 100644 --- a/companion/src/firmwares/ersky9x/ersky9xinterface.cpp +++ b/companion/src/firmwares/ersky9x/ersky9xinterface.cpp @@ -318,7 +318,6 @@ int Ersky9xInterface::getCapability(const Capability capability) case MaxVolume: return 23; case GvarsHaveSources: - case GvarsAsSources: return 1; case TelemetryMaxMultiplier: return 2; diff --git a/companion/src/firmwares/opentx/opentxeeprom.cpp b/companion/src/firmwares/opentx/opentxeeprom.cpp index fb8cf5203..a238d344d 100644 --- a/companion/src/firmwares/opentx/opentxeeprom.cpp +++ b/companion/src/firmwares/opentx/opentxeeprom.cpp @@ -201,7 +201,7 @@ class SourcesConversionTable: public ConversionTable { if (!(flags & FLAG_NOTELEMETRY)) { if (release21March2013) { if ((board != BOARD_STOCK && (board!=BOARD_M128 || version<215)) || (variant & GVARS_VARIANT)) { - for (int i=0; i<5; i++) + for (int i=0; ival1)).arg(ValToTim(customSw->val2)); break; case CS_FAMILY_VOFS: { - RawSource source = RawSource(customSw->val1); + RawSource source = RawSource(customSw->val1, &model); + RawSourceRange range = source.getRange(); if (customSw->val1) result += source.toString(); else @@ -204,7 +206,7 @@ QString getCustomSwitchStr(CustomSwData * customSw, const ModelData & model) result += " > "; else if (customSw->func == CS_FN_ANEG || customSw->func == CS_FN_VNEG) result += " < "; - result += QString::number(source.getStep(model) * (customSw->val2 + source.getRawOffset(model)) + source.getOffset(model)); + result += QString::number(range.step * (customSw->val2 /*TODO+ source.getRawOffset(model)*/) + range.offset); break; } case CS_FAMILY_VBOOL: @@ -1313,109 +1315,6 @@ QString getFrSkySrc(int index) return RawSource(SOURCE_TYPE_TELEMETRY, index-1).toString(); } - -/* - 1,2) Timer1/Timer2 0:765 - 3,4) TX/RX - 5) A1 range - 6) A2 range - 7) ALT 0-1020 - 8)RPM 0-12750 - 9FUEL 0-100% - 10) T1 -30-225 - 11) T2 -30-225 - 12) spd 0-510 - 13) dist 0-2040 - 14)GAlt 0-1020 - 15) cell 0-5.1 - 16) Cels 0 25.5 - 17) Vfas 0 25.5 - 18) Curr 0 127.5 - 19) Cnsp 0 5100 - 20) Powr 0 1275 - 21) AccX 0 2.55 - 22) AccY 0 2.55 - 23) AccZ 0 2.55 - 24) Hdg 0 255 - 25) VSpd 0 2.55 - 26) A1- A1 range - 27) A2- A2 range - 28) Alt- 0 255 - 29) Alt+ 0 255 - 30) Rpm+ 0 255 - 31) T1+ 0 255 (s????) - 32) T2+ 0 255 (e????) - 33) Spd+ 0 255 (ILG???) - 34) Dst+ 0 255 (v ????) - 35) Cur+ 0 25.5 (A) - 1.852 - */ - -float getBarValue(int barId, int value, FrSkyData *fd) -{ - switch (barId-1) { - case TELEMETRY_SOURCE_TX_BATT: - return value/10.0; - case TELEMETRY_SOURCE_TIMER1: - case TELEMETRY_SOURCE_TIMER2: - return (3*value); - case TELEMETRY_SOURCE_RSSI_TX: - case TELEMETRY_SOURCE_RSSI_RX: - case TELEMETRY_SOURCE_FUEL: - return std::min(100, value); - case TELEMETRY_SOURCE_A1: - case TELEMETRY_SOURCE_A1_MIN: - if (fd->channels[0].type==0) - return ((fd->channels[0].ratio*value/255.0)+fd->channels[0].offset)/10; - else - return ((fd->channels[0].ratio*value/255.0)+fd->channels[0].offset); - case TELEMETRY_SOURCE_A2: - case TELEMETRY_SOURCE_A2_MIN: - if (fd->channels[1].type==0) - return ((fd->channels[1].ratio*value/255.0)+fd->channels[1].offset)/10; - else - return ((fd->channels[1].ratio*value/255.0)+fd->channels[1].offset); - case TELEMETRY_SOURCE_ALT: - case TELEMETRY_SOURCE_GPS_ALT: - case TELEMETRY_SOURCE_ALT_MAX: - case TELEMETRY_SOURCE_ALT_MIN: - return (8*value)-500; - case TELEMETRY_SOURCE_RPM: - case TELEMETRY_SOURCE_RPM_MAX: - return value * 50; - case TELEMETRY_SOURCE_T1: - case TELEMETRY_SOURCE_T2: - case TELEMETRY_SOURCE_T1_MAX: - case TELEMETRY_SOURCE_T2_MAX: - return value - 30.0; - case TELEMETRY_SOURCE_CELL: - return value*2.0/100; - case TELEMETRY_SOURCE_CELLS_SUM: - case TELEMETRY_SOURCE_VFAS: - return value/10.0; - case TELEMETRY_SOURCE_HDG: - return std::min(359, value*2); - case TELEMETRY_SOURCE_DIST_MAX: - case TELEMETRY_SOURCE_DIST: - return value * 8; - case TELEMETRY_SOURCE_CURRENT_MAX: - case TELEMETRY_SOURCE_CURRENT: - return value/2.0; - case TELEMETRY_SOURCE_POWER: - return value*5; - case TELEMETRY_SOURCE_CONSUMPTION: - return value * 20; - case TELEMETRY_SOURCE_SPEED: - case TELEMETRY_SOURCE_SPEED_MAX: - if (fd->imperial==1) - return value; - else - return value*1.852; - default: - return value; - } -} - QString getTrimInc(ModelData * g_model) { switch (g_model->trimInc) { diff --git a/companion/src/helpers.h b/companion/src/helpers.h index d3141083d..9cef155e7 100644 --- a/companion/src/helpers.h +++ b/companion/src/helpers.h @@ -137,7 +137,7 @@ QString getFrSkyUnits(int units); QString getFrSkyProtocol(int protocol); QString getFrSkyMeasure(int units); QString getFrSkySrc(int index); -float getBarValue(int barId, int value, FrSkyData *fd); + float c9xexpou(float point, float coeff); float ValToTim(int value); int TimToVal(float value); diff --git a/companion/src/modeledit/customswitches.cpp b/companion/src/modeledit/customswitches.cpp index c7c5d6ae8..68d3fc34f 100644 --- a/companion/src/modeledit/customswitches.cpp +++ b/companion/src/modeledit/customswitches.cpp @@ -146,36 +146,43 @@ void CustomSwitchesPanel::edited() { case (CS_FAMILY_VOFS): if (model.customSw[i].val1 != cswitchSource1[i]->itemData(cswitchSource1[i]->currentIndex()).toInt()) { - source=RawSource(model.customSw[i].val1); + source = RawSource(model.customSw[i].val1, &model); model.customSw[i].val1 = cswitchSource1[i]->itemData(cswitchSource1[i]->currentIndex()).toInt(); - RawSource newSource = RawSource(model.customSw[i].val1); + RawSource newSource = RawSource(model.customSw[i].val1, &model); if (newSource.type == SOURCE_TYPE_TELEMETRY) { if (model.customSw[i].func>CS_FN_ELESS && model.customSw[i].funcCS_FN_ELESS && model.customSw[i].funcvalue()/source.getStep(model)); - } else { - model.customSw[i].val2 = ((cswitchOffset[i]->value()-source.getOffset(model))/source.getStep(model))-source.getRawOffset(model); + model.customSw[i].val2 = (cswitchOffset[i]->value() / range.step); + } + else { + model.customSw[i].val2 = (cswitchOffset[i]->value() - range.offset) / range.step/* TODO - source.getRawOffset(model)*/; } } setSwitchWidgetVisibility(i); - } else { - source=RawSource(model.customSw[i].val1); + } + else { + source = RawSource(model.customSw[i].val1, &model); + RawSourceRange range = source.getRange(); if (model.customSw[i].func>CS_FN_ELESS && model.customSw[i].funcvalue()/source.getStep(model)); - cswitchOffset[i]->setValue(model.customSw[i].val2*source.getStep(model)); - } else { - model.customSw[i].val2 = ((cswitchOffset[i]->value()-source.getOffset(model))/source.getStep(model))-source.getRawOffset(model); - cswitchOffset[i]->setValue((model.customSw[i].val2 +source.getRawOffset(model))*source.getStep(model)+source.getOffset(model)); + model.customSw[i].val2 = (cswitchOffset[i]->value() / range.step); + cswitchOffset[i]->setValue(model.customSw[i].val2*range.step); + } + else { + model.customSw[i].val2 = ((cswitchOffset[i]->value()-range.offset)/range.step)/* TODO - source.getRawOffset(model)*/; + cswitchOffset[i]->setValue((model.customSw[i].val2 /* + TODO source.getRawOffset(model)*/)*range.step+range.offset); } } break; case (CS_FAMILY_TIMERS): { - value=cswitchOffset[i]->value(); + value = cswitchOffset[i]->value(); newval=TimToVal(value); if (newval>model.customSw[i].val2) { if (value >=60) { @@ -246,7 +253,9 @@ void CustomSwitchesPanel::edited() void CustomSwitchesPanel::setSwitchWidgetVisibility(int i) { - RawSource source = RawSource(model.customSw[i].val1); + RawSource source = RawSource(model.customSw[i].val1, &model); + RawSourceRange range = source.getRange(); + switch (getCSFunctionFamily(model.customSw[i].func)) { case CS_FAMILY_VOFS: @@ -255,16 +264,16 @@ void CustomSwitchesPanel::setSwitchWidgetVisibility(int i) cswitchValue[i]->setVisible(false); cswitchOffset[i]->setVisible(true); populateSourceCB(cswitchSource1[i], source, model, POPULATE_SOURCES | POPULATE_VIRTUAL_INPUTS | POPULATE_TRIMS | POPULATE_SWITCHES | POPULATE_TELEMETRY | (GetEepromInterface()->getCapability(GvarsInCS) ? POPULATE_GVARS : 0)); - cswitchOffset[i]->setDecimals(source.getDecimals(model)); - cswitchOffset[i]->setSingleStep(source.getStep(model)); + cswitchOffset[i]->setDecimals(range.decimals); + cswitchOffset[i]->setSingleStep(range.step); if (model.customSw[i].func>CS_FN_ELESS && model.customSw[i].funcsetMinimum(source.getStep(model)*-127); - cswitchOffset[i]->setMaximum(source.getStep(model)*127); - cswitchOffset[i]->setValue(source.getStep(model)*model.customSw[i].val2); + cswitchOffset[i]->setMinimum(range.step*-127); + cswitchOffset[i]->setMaximum(range.step*127); + cswitchOffset[i]->setValue(range.step*model.customSw[i].val2); } else { - cswitchOffset[i]->setMinimum(source.getMin(model)); - cswitchOffset[i]->setMaximum(source.getMax(model)); - cswitchOffset[i]->setValue(source.getStep(model)*(model.customSw[i].val2+source.getRawOffset(model))+source.getOffset(model)); + cswitchOffset[i]->setMinimum(range.min); + cswitchOffset[i]->setMaximum(range.max); + cswitchOffset[i]->setValue(range.step*(model.customSw[i].val2/* TODO+source.getRawOffset(model)*/)+range.offset); } break; case CS_FAMILY_VBOOL: diff --git a/companion/src/modeledit/expodialog.cpp b/companion/src/modeledit/expodialog.cpp index 921e916bc..49e86fc8a 100644 --- a/companion/src/modeledit/expodialog.cpp +++ b/companion/src/modeledit/expodialog.cpp @@ -48,7 +48,7 @@ ExpoDialog::ExpoDialog(QWidget *parent, ModelData & model, ExpoData *expoData, i ui->sideLabel->hide(); ui->sideCB->hide(); ui->inputName->setMaxLength(4); - populateSourceCB(ui->sourceCB, ed->srcRaw, model, POPULATE_SOURCES | POPULATE_SWITCHES | POPULATE_TRIMS | (GetEepromInterface()->getCapability(GvarsAsSources) ? POPULATE_GVARS : 0)); + populateSourceCB(ui->sourceCB, ed->srcRaw, model, POPULATE_SOURCES | POPULATE_SWITCHES | POPULATE_TRIMS | POPULATE_TELEMETRY); ui->sourceCB->removeItem(0); } else { @@ -56,8 +56,6 @@ ExpoDialog::ExpoDialog(QWidget *parent, ModelData & model, ExpoData *expoData, i ui->inputName->hide(); ui->sourceLabel->hide(); ui->sourceCB->hide(); - ui->scaleLabel->hide(); - ui->scaleSB->hide(); ui->trimLabel->hide(); ui->trimCB->hide(); } @@ -83,13 +81,15 @@ ExpoDialog::ExpoDialog(QWidget *parent, ModelData & model, ExpoData *expoData, i ui->lineName->setValidator(new QRegExpValidator(rx, this)); ui->lineName->setText(ed->name); + updateScale(); valuesChanged(); - connect(ui->lineName,SIGNAL(editingFinished()), this, SLOT(valuesChanged())); - connect(ui->sourceCB,SIGNAL(currentIndexChanged(int)), this, SLOT(valuesChanged())); - connect(ui->trimCB,SIGNAL(currentIndexChanged(int)), this, SLOT(valuesChanged())); - connect(ui->switchesCB,SIGNAL(currentIndexChanged(int)), this, SLOT(valuesChanged())); - connect(ui->sideCB,SIGNAL(currentIndexChanged(int)), this, SLOT(valuesChanged())); + connect(ui->lineName, SIGNAL(editingFinished()), this, SLOT(valuesChanged())); + connect(ui->sourceCB, SIGNAL(currentIndexChanged(int)), this, SLOT(valuesChanged())); + connect(ui->scale, SIGNAL(editingFinished()), this, SLOT(valuesChanged())); + connect(ui->trimCB, SIGNAL(currentIndexChanged(int)), this, SLOT(valuesChanged())); + connect(ui->switchesCB, SIGNAL(currentIndexChanged(int)), this, SLOT(valuesChanged())); + connect(ui->sideCB, SIGNAL(currentIndexChanged(int)), this, SLOT(valuesChanged())); for (int i=0; i<9; i++) { connect(cb_fp[i], SIGNAL(toggled(bool)), this, SLOT(valuesChanged())); } @@ -103,23 +103,35 @@ ExpoDialog::~ExpoDialog() delete ui; } -void ExpoDialog::changeEvent(QEvent *e) +void ExpoDialog::updateScale() { - QDialog::changeEvent(e); - switch (e->type()) { - case QEvent::LanguageChange: - ui->retranslateUi(this); - break; - default: - break; - } + if (GetEepromInterface()->getCapability(VirtualInputs) && ed->srcRaw.type == SOURCE_TYPE_TELEMETRY) { + RawSourceRange range = ed->srcRaw.getRange(); + ui->scaleLabel->show(); + ui->scale->show(); + ui->scale->setDecimals(range.decimals); + ui->scale->setMinimum(range.min); + ui->scale->setMaximum(range.max); + ui->scale->setValue(round(range.step * ed->scale)); + } + else { + ui->scaleLabel->hide(); + ui->scale->hide(); + } } void ExpoDialog::valuesChanged() { QCheckBox * cb_fp[] = {ui->cb_FP0,ui->cb_FP1,ui->cb_FP2,ui->cb_FP3,ui->cb_FP4,ui->cb_FP5,ui->cb_FP6,ui->cb_FP7,ui->cb_FP8 }; - ed->srcRaw = RawSource(ui->sourceCB->itemData(ui->sourceCB->currentIndex()).toInt()); + RawSource srcRaw = RawSource(ui->sourceCB->itemData(ui->sourceCB->currentIndex()).toInt()); + if (ed->srcRaw != srcRaw) { + ed->srcRaw = srcRaw; + updateScale(); + } + + RawSourceRange range = srcRaw.getRange(); + ed->scale = round(float(ui->scale->value()) / range.step); ed->carryTrim = 1 - ui->trimCB->currentIndex(); ed->swtch = RawSwitch(ui->switchesCB->itemData(ui->switchesCB->currentIndex()).toInt()); ed->mode = ui->sideCB->currentIndex() + 1; @@ -173,5 +185,5 @@ void ExpoDialog::valuesChanged() void ExpoDialog::shrink() { - resize(0,0); + resize(0, 0); } diff --git a/companion/src/modeledit/expodialog.h b/companion/src/modeledit/expodialog.h index 5281e4c29..2d96b130a 100644 --- a/companion/src/modeledit/expodialog.h +++ b/companion/src/modeledit/expodialog.h @@ -18,7 +18,7 @@ class ExpoDialog : public QDialog { ~ExpoDialog(); protected: - void changeEvent(QEvent *e); + void updateScale(); private slots: void valuesChanged(); diff --git a/companion/src/modeledit/expodialog.ui b/companion/src/modeledit/expodialog.ui index 17fe24f9a..82d16dbc2 100644 --- a/companion/src/modeledit/expodialog.ui +++ b/companion/src/modeledit/expodialog.ui @@ -330,7 +330,7 @@ If blank then the input is considered to be "ON" all the time. - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> @@ -441,6 +441,32 @@ p, li { white-space: pre-wrap; } + + inputName + lineName + sourceCB + scale + trimCB + weightGV + weightSB + weightCB + curveTypeCB + curveGVarCB + curveValueCB + curveValueSB + cb_FP0 + cb_FP1 + cb_FP2 + cb_FP3 + cb_FP4 + cb_FP5 + cb_FP6 + cb_FP7 + cb_FP8 + switchesCB + sideCB + buttonBox + diff --git a/companion/src/modeledit/mixerdialog.cpp b/companion/src/modeledit/mixerdialog.cpp index 4dc69cd12..7ef03fdca 100644 --- a/companion/src/modeledit/mixerdialog.cpp +++ b/companion/src/modeledit/mixerdialog.cpp @@ -20,7 +20,7 @@ MixerDialog::MixerDialog(QWidget *parent, ModelData & model, MixData *mixdata, i else this->setWindowTitle(tr("DEST -> CH%1%2").arg(md->destCh/10).arg(md->destCh%10)); - populateSourceCB(ui->sourceCB, md->srcRaw, model, POPULATE_SOURCES | POPULATE_VIRTUAL_INPUTS | POPULATE_SWITCHES | POPULATE_TRIMS | (GetEepromInterface()->getCapability(GvarsAsSources) ? POPULATE_GVARS : 0)); + populateSourceCB(ui->sourceCB, md->srcRaw, model, POPULATE_SOURCES | POPULATE_VIRTUAL_INPUTS | POPULATE_SWITCHES | POPULATE_TRIMS); ui->sourceCB->removeItem(0); int limit = GetEepromInterface()->getCapability(OffsetWeight); diff --git a/companion/src/modeledit/telemetry.cpp b/companion/src/modeledit/telemetry.cpp index fe6241015..abcaf7f8a 100644 --- a/companion/src/modeledit/telemetry.cpp +++ b/companion/src/modeledit/telemetry.cpp @@ -530,44 +530,27 @@ void TelemetryPanel::setup() int screen = j/4; int field = j%4; populateCustomScreenFieldCB(barsCB[j], model.frsky.screens[screen].body.bars[field].source, false, model.frsky.usrProto); - switch (model.frsky.screens[screen].body.bars[field].source-1) { - case TELEMETRY_SOURCE_TX_BATT: - case TELEMETRY_SOURCE_A1: - case TELEMETRY_SOURCE_A1_MIN: - case TELEMETRY_SOURCE_A2: - case TELEMETRY_SOURCE_A2_MIN: - case TELEMETRY_SOURCE_CELLS_SUM: - case TELEMETRY_SOURCE_VFAS: - case TELEMETRY_SOURCE_CURRENT_MAX: - case TELEMETRY_SOURCE_CURRENT: - minSB[j]->setDecimals(1); - maxSB[j]->setDecimals(1); - break; - case TELEMETRY_SOURCE_CELL: - minSB[j]->setDecimals(2); - maxSB[j]->setDecimals(2); - break; - default: - minSB[j]->setDecimals(0); - maxSB[j]->setDecimals(0); - } - minSB[j]->setMinimum(getBarValue(model.frsky.screens[screen].body.bars[field].source, 0, &model.frsky)); - minSB[j]->setMaximum(getBarValue(model.frsky.screens[screen].body.bars[field].source, 255, &model.frsky)); - minSB[j]->setSingleStep(getBarStep(model.frsky.screens[screen].body.bars[field].source)); - minSB[j]->setValue(getBarValue(model.frsky.screens[screen].body.bars[field].source, model.frsky.screens[screen].body.bars[field].barMin, &model.frsky)); - maxSB[j]->setMinimum(getBarValue(model.frsky.screens[screen].body.bars[field].source, 0, &model.frsky)); - maxSB[j]->setMaximum(getBarValue(model.frsky.screens[screen].body.bars[field].source, 255, &model.frsky)); - maxSB[j]->setSingleStep(getBarStep(model.frsky.screens[screen].body.bars[field].source)); - maxSB[j]->setValue(getBarValue(model.frsky.screens[screen].body.bars[field].source, (255-model.frsky.screens[screen].body.bars[field].barMax), &model.frsky)); - + RawSource source = RawSource(SOURCE_TYPE_TELEMETRY, model.frsky.screens[screen].body.bars[field].source, &model); + RawSourceRange range = source.getRange(); + minSB[j]->setDecimals(range.decimals); + minSB[j]->setMinimum(range.min); + minSB[j]->setMaximum(range.max); + minSB[j]->setSingleStep(range.step); + minSB[j]->setValue(range.getValue(model.frsky.screens[screen].body.bars[field].barMin)); + maxSB[j]->setDecimals(range.decimals); + maxSB[j]->setMinimum(range.min); + maxSB[j]->setMaximum(range.max); + maxSB[j]->setSingleStep(range.step); + maxSB[j]->setValue(range.getValue(255 - model.frsky.screens[screen].body.bars[field].barMax)); if (model.frsky.screens[screen].body.bars[field].source==0 || model.frsky.screens[screen].type==0) { minSB[j]->setDisabled(true); maxSB[j]->setDisabled(true); } - connect(barsCB[j],SIGNAL(currentIndexChanged(int)),this,SLOT(telBarCBcurrentIndexChanged(int))); - connect(maxSB[j],SIGNAL(editingFinished()),this,SLOT(telMaxSBeditingFinished())); - connect(minSB[j],SIGNAL(editingFinished()),this,SLOT(telMinSBeditingFinished())); + connect(barsCB[j], SIGNAL(currentIndexChanged(int)), this, SLOT(telBarCBcurrentIndexChanged(int))); + connect(maxSB[j], SIGNAL(editingFinished()), this, SLOT(telMaxSBeditingFinished())); + connect(minSB[j], SIGNAL(editingFinished()), this, SLOT(telMinSBeditingFinished())); } + lock=false; } @@ -770,14 +753,16 @@ void TelemetryPanel::telBarUpdate() int screen=i/4; index=barsCB[i]->currentIndex(); if (index==TELEMETRY_SOURCE_A1 || index==TELEMETRY_SOURCE_A1 || index==TELEMETRY_SOURCE_A1_MIN || index==TELEMETRY_SOURCE_A2_MIN) { - minSB[i]->setMinimum(getBarValue(index, 0, &model.frsky)); - minSB[i]->setMaximum(getBarValue(index, 255, &model.frsky)); - minSB[i]->setSingleStep(getBarStep(index)); - maxSB[i]->setMinimum(getBarValue(index, 0, &model.frsky)); - maxSB[i]->setMaximum(getBarValue(index, 255, &model.frsky)); - maxSB[i]->setSingleStep(getBarStep(index)); - minSB[i]->setValue(getBarValue(index, model.frsky.screens[screen].body.bars[i%4].barMin, &model.frsky)); - maxSB[i]->setValue(getBarValue(index, 255-model.frsky.screens[screen].body.bars[i%4].barMax, &model.frsky)); + RawSource source = RawSource(SOURCE_TYPE_TELEMETRY, index, &model); + RawSourceRange range = source.getRange(); + minSB[i]->setMinimum(range.min); + minSB[i]->setMaximum(range.max); + minSB[i]->setSingleStep(range.step); + maxSB[i]->setMinimum(range.min); + maxSB[i]->setMaximum(range.max); + maxSB[i]->setSingleStep(range.step); + minSB[i]->setValue(range.getValue(model.frsky.screens[screen].body.bars[i%4].barMin)); + maxSB[i]->setValue(range.getValue(255 - model.frsky.screens[screen].body.bars[i%4].barMax)); } } lock=false; @@ -785,116 +770,110 @@ void TelemetryPanel::telBarUpdate() void TelemetryPanel::ScreenTypeCBcurrentIndexChanged(int index) { - if (lock) return; - + if (!lock) { + lock = true; QComboBox *comboBox = qobject_cast(sender()); int screen = comboBox->objectName().right(1).toInt() -1; - lock=true; - model.frsky.screens[screen].type=index; - + model.frsky.screens[screen].type = index; for (int i=0; i<3; i++) { bool isNum = (model.frsky.screens[i].type==0); barsGB[i]->setVisible(!isNum); numsGB[i]->setVisible(isNum); } - - lock=false; + lock = false; emit modified(); + } } void TelemetryPanel::telBarCBcurrentIndexChanged(int index) { - if (lock) return; + if (!lock) { + lock = true; QComboBox *comboBox = qobject_cast(sender()); int screenId = comboBox->objectName().mid(8,1).toInt() - 1; int barId = comboBox->objectName().mid(10,1).toInt() - 1; int bar=barId+screenId*4; model.frsky.screens[screenId].body.bars[barId].source=index; - lock=true; if (index==0) { model.frsky.screens[screenId].body.bars[barId].barMin=0; model.frsky.screens[screenId].body.bars[barId].barMax=0; minSB[bar]->setDisabled(true); maxSB[bar]->setDisabled(true); - } else { + } + else { minSB[bar]->setEnabled(true); maxSB[bar]->setEnabled(true); } - switch (index-1) { - case TELEMETRY_SOURCE_TX_BATT: - case TELEMETRY_SOURCE_A1: - case TELEMETRY_SOURCE_A1_MIN: - case TELEMETRY_SOURCE_A2: - case TELEMETRY_SOURCE_A2_MIN: - case TELEMETRY_SOURCE_CELLS_SUM: - case TELEMETRY_SOURCE_VFAS: - case TELEMETRY_SOURCE_CURRENT_MAX: - case TELEMETRY_SOURCE_CURRENT: - minSB[bar]->setDecimals(1); - maxSB[bar]->setDecimals(1); - break; - case TELEMETRY_SOURCE_CELL: - minSB[bar]->setDecimals(2); - maxSB[bar]->setDecimals(2); - break; - default: - minSB[bar]->setDecimals(0); - maxSB[bar]->setDecimals(0); - } - minSB[bar]->setMinimum(getBarValue(index, 0, &model.frsky)); - minSB[bar]->setMaximum(getBarValue(index, 255, &model.frsky)); - minSB[bar]->setSingleStep(getBarStep(index)); - maxSB[bar]->setMinimum(getBarValue(index, 0, &model.frsky)); - maxSB[bar]->setMaximum(getBarValue(index, 255, &model.frsky)); - maxSB[bar]->setSingleStep(getBarStep(index)); - minSB[bar]->setValue(getBarValue(index, model.frsky.screens[screenId].body.bars[barId].barMin, &model.frsky)); - maxSB[bar]->setValue(getBarValue(index, 255-model.frsky.screens[screenId].body.bars[barId].barMax, &model.frsky)); - lock=false; + RawSource source = RawSource(SOURCE_TYPE_TELEMETRY, index-1, &model); + RawSourceRange range = source.getRange(); + minSB[bar]->setDecimals(range.decimals); + minSB[bar]->setMinimum(range.min); + minSB[bar]->setMaximum(range.max); + minSB[bar]->setSingleStep(range.step); + maxSB[bar]->setDecimals(range.decimals); + maxSB[bar]->setMinimum(range.min); + maxSB[bar]->setMaximum(range.max); + maxSB[bar]->setSingleStep(range.step); + minSB[bar]->setValue(range.getValue(model.frsky.screens[screenId].body.bars[barId].barMin)); + maxSB[bar]->setValue(range.getValue(255 - model.frsky.screens[screenId].body.bars[barId].barMax)); + lock = false; emit modified(); + } } void TelemetryPanel::telMinSBeditingFinished() { - if (lock) return; + if (!lock) { + lock = true; QDoubleSpinBox *spinBox = qobject_cast(sender()); int screenId = spinBox->objectName().mid(8,1).toInt() - 1; int barId = spinBox->objectName().right(1).toInt() - 1; int minId = barId+screenId*4; - lock=true; + RawSource source = RawSource(SOURCE_TYPE_TELEMETRY, model.frsky.screens[screenId].body.bars[barId].source, &model); + RawSourceRange range = source.getRange(); if (model.frsky.screens[screenId].body.bars[barId].source==TELEMETRY_SOURCE_A1 || model.frsky.screens[screenId].body.bars[barId].source==TELEMETRY_SOURCE_A1_MIN) { - model.frsky.screens[screenId].body.bars[barId].barMin=round((minSB[minId]->value()-analogs[0]->ui->CalibSB->value())/getBarStep(model.frsky.screens[screenId].body.bars[barId].source)); - } else if (model.frsky.screens[screenId].body.bars[minId].source==TELEMETRY_SOURCE_A2 || model.frsky.screens[screenId].body.bars[minId].source==TELEMETRY_SOURCE_A2_MIN) { - model.frsky.screens[screenId].body.bars[barId].barMin=round((minSB[minId]->value()-analogs[1]->ui->CalibSB->value())/getBarStep(model.frsky.screens[screenId].body.bars[barId].source)); - } else { - model.frsky.screens[screenId].body.bars[barId].barMin=round((minSB[minId]->value()-getBarValue(model.frsky.screens[screenId].body.bars[barId].source, 0, &model.frsky))/getBarStep(model.frsky.screens[screenId].body.bars[barId].source)); + model.frsky.screens[screenId].body.bars[barId].barMin = round((minSB[minId]->value()-analogs[0]->ui->CalibSB->value())/range.step); } - spinBox->setValue(getBarValue(model.frsky.screens[screenId].body.bars[barId].source, model.frsky.screens[screenId].body.bars[barId].barMin, &model.frsky)); + else if (model.frsky.screens[screenId].body.bars[minId].source==TELEMETRY_SOURCE_A2 || model.frsky.screens[screenId].body.bars[minId].source==TELEMETRY_SOURCE_A2_MIN) { + model.frsky.screens[screenId].body.bars[barId].barMin = round((minSB[minId]->value()-analogs[1]->ui->CalibSB->value())/range.step); + } + else { + model.frsky.screens[screenId].body.bars[barId].barMin = round((minSB[minId]->value()-range.getValue(0))/range.step); + } + spinBox->setValue(range.getValue(model.frsky.screens[screenId].body.bars[barId].barMin)); if (maxSB[minId]->value()value()) { - model.frsky.screens[screenId].body.bars[minId].barMax=(255-model.frsky.screens[screenId].body.bars[barId].barMin+1); - maxSB[minId]->setValue(getBarValue(model.frsky.screens[screenId].body.bars[barId].source, 255-model.frsky.screens[screenId].body.bars[barId].barMax, &model.frsky)); + model.frsky.screens[screenId].body.bars[minId].barMax = (255-model.frsky.screens[screenId].body.bars[barId].barMin+1); + maxSB[minId]->setValue(range.getValue(255 - model.frsky.screens[screenId].body.bars[barId].barMax)); } - maxSB[minId]->setMinimum(getBarValue(model.frsky.screens[screenId].body.bars[barId].source, (model.frsky.screens[screenId].body.bars[barId].barMin+1), &model.frsky)); - lock=false; + maxSB[minId]->setMinimum(range.getValue((model.frsky.screens[screenId].body.bars[barId].barMin+1))); + + lock = false; emit modified(); + } } void TelemetryPanel::telMaxSBeditingFinished() { - if (lock) return; + if (!lock) { QDoubleSpinBox *spinBox = qobject_cast(sender()); int screenId = spinBox->objectName().mid(8,1).toInt() - 1; int barId = spinBox->objectName().right(1).toInt() - 1; - lock=true; + lock = true; + RawSource source = RawSource(SOURCE_TYPE_TELEMETRY, model.frsky.screens[screenId].body.bars[barId].source, &model); + RawSourceRange range = source.getRange(); if (model.frsky.screens[screenId].body.bars[barId].source==5) { - model.frsky.screens[screenId].body.bars[barId].barMax = (255-round((spinBox->value()-analogs[0]->ui->CalibSB->value())/getBarStep(model.frsky.screens[screenId].body.bars[barId].source))); - } else if (model.frsky.screens[screenId].body.bars[barId].source==6) { - model.frsky.screens[screenId].body.bars[barId].barMax = (255-round((spinBox->value()-analogs[1]->ui->CalibSB->value())/getBarStep(model.frsky.screens[screenId].body.bars[barId].source))); - } else { - model.frsky.screens[screenId].body.bars[barId].barMax = (255-round((spinBox->value()-getBarValue(model.frsky.screens[screenId].body.bars[barId].source, 0, &model.frsky))/getBarStep(model.frsky.screens[screenId].body.bars[barId].source) )); + model.frsky.screens[screenId].body.bars[barId].barMax = (255-round((spinBox->value()-analogs[0]->ui->CalibSB->value())/range.step)); } - spinBox->setValue(getBarValue(model.frsky.screens[screenId].body.bars[barId].source, (255-model.frsky.screens[screenId].body.bars[barId].barMax), &model.frsky)); - lock=false; + else if (model.frsky.screens[screenId].body.bars[barId].source==6) { + model.frsky.screens[screenId].body.bars[barId].barMax = (255-round((spinBox->value()-analogs[1]->ui->CalibSB->value())/range.step)); + } + else { + model.frsky.screens[screenId].body.bars[barId].barMax = (255-round((spinBox->value()-range.getValue(0))/range.step)); + } + spinBox->setValue(range.getValue(255-model.frsky.screens[screenId].body.bars[barId].barMax)); + lock = false; emit modified(); + } } void TelemetryPanel::customFieldEdited() @@ -902,7 +881,7 @@ void TelemetryPanel::customFieldEdited() if (!lock) { lock = true; - int cols=GetEepromInterface()->getCapability(TelemetryColsCSFields); + int cols = GetEepromInterface()->getCapability(TelemetryColsCSFields); if (cols==0) cols=2; for (int i=0; igetCapability(TelemetryCSFields); i++) { @@ -913,74 +892,9 @@ void TelemetryPanel::customFieldEdited() model.frsky.screens[screen].body.lines[r].source[c]=csf[i]->currentIndex(); } } - emit modified(); lock = false; + emit modified(); } } -float TelemetryPanel::getBarStep(int barId) -{ - switch (barId-1) { - case TELEMETRY_SOURCE_TX_BATT: - return 0.1; - break; - case TELEMETRY_SOURCE_TIMER1: - case TELEMETRY_SOURCE_TIMER2: - return 3; - break; - case TELEMETRY_SOURCE_A1: - case TELEMETRY_SOURCE_A1_MIN: - return (analogs[0]->ui->RatioSB->value()/255); - break; - case TELEMETRY_SOURCE_A2: - case TELEMETRY_SOURCE_A2_MIN: - return (analogs[1]->ui->RatioSB->value()/255); - break; - case TELEMETRY_SOURCE_ALT: - case TELEMETRY_SOURCE_GPS_ALT: - case TELEMETRY_SOURCE_ALT_MAX: - case TELEMETRY_SOURCE_ALT_MIN: - return 8; - break; - case TELEMETRY_SOURCE_RPM: - case TELEMETRY_SOURCE_RPM_MAX: - return 50; - break; - case TELEMETRY_SOURCE_CELLS_SUM: - case TELEMETRY_SOURCE_VFAS: - return 0.1; - break; - case TELEMETRY_SOURCE_CELL: - return 0.02; - break; - case TELEMETRY_SOURCE_HDG: - return 2; - break; - case TELEMETRY_SOURCE_DIST: - case TELEMETRY_SOURCE_DIST_MAX: - return 8; - break; - case TELEMETRY_SOURCE_CURRENT_MAX: - case TELEMETRY_SOURCE_CURRENT: - return 0.5; - break; - case TELEMETRY_SOURCE_POWER: - return 5; - break; - case TELEMETRY_SOURCE_CONSUMPTION: - return 20; - break; - case TELEMETRY_SOURCE_SPEED: - case TELEMETRY_SOURCE_SPEED_MAX: - if (model.frsky.imperial==1) { - return 1; - } else { - return 1.852; - } - break; - default: - return 1; - break; - } -} diff --git a/companion/src/modeledit/telemetry.h b/companion/src/modeledit/telemetry.h index e8f634463..f8dc1c35e 100644 --- a/companion/src/modeledit/telemetry.h +++ b/companion/src/modeledit/telemetry.h @@ -94,7 +94,6 @@ class TelemetryPanel : public ModelPanel QComboBox* csf[36]; void setup(); - float getBarStep(int barId); void telBarUpdate(); }; diff --git a/companion/src/printdialog.cpp b/companion/src/printdialog.cpp index cfd6938d6..86f1dc775 100644 --- a/companion/src/printdialog.cpp +++ b/companion/src/printdialog.cpp @@ -834,7 +834,7 @@ void printDialog::printFrSky() for (int i=0; i<4; i++) { if (fd->screens[j].body.bars[i].source!=0) tc++; - str.append(""+QString::number(i+1,10)+""+getFrSkySrc(fd->screens[j].body.bars[i].source)+""+(fd->screens[j].body.bars[i].source>0 ? QString::number(getBarValue(fd->screens[j].body.bars[i].source, fd->screens[j].body.bars[i].barMin,fd)):"----")+""+(fd->screens[j].body.bars[i].source>0 ? QString::number(getBarValue(fd->screens[j].body.bars[i].source,(255-fd->screens[j].body.bars[i].barMax),fd)) :"----")+""); + // TODO str.append(""+QString::number(i+1,10)+""+getFrSkySrc(fd->screens[j].body.bars[i].source)+""+(fd->screens[j].body.bars[i].source>0 ? QString::number(getBarValue(fd->screens[j].body.bars[i].source, fd->screens[j].body.bars[i].barMin,fd)):"----")+""+(fd->screens[j].body.bars[i].source>0 ? QString::number(getBarValue(fd->screens[j].body.bars[i].source,(255-fd->screens[j].body.bars[i].barMax),fd)) :"----")+""); } str.append(""); }