Skip to content

Commit

Permalink
fix: Properly scale PREC2 sensor values using "ratio" (#4083)
Browse files Browse the repository at this point in the history
  • Loading branch information
frankiearzu authored Jan 7, 2024
1 parent 1daa552 commit 526a87e
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 2 deletions.
3 changes: 2 additions & 1 deletion radio/src/gui/colorlcd/model_telemetry.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -671,7 +671,8 @@ class SensorEditWindow : public Page {

paramLines[P_RATIO] = form->newLine(&grid);
new StaticText(paramLines[P_RATIO], rect_t{}, STR_RATIO, 0, COLOR_THEME_PRIMARY1);
auto edit = new NumberEdit(paramLines[P_RATIO], rect_t{}, 0, 30000, GET_SET_DEFAULT(sensor->custom.ratio));
auto edit = new NumberEdit(paramLines[P_RATIO], rect_t{}, 0, 30000, GET_SET_DEFAULT(sensor->custom.ratio),
0, PREC1);
edit->setZeroText("-");

paramLines[P_CELLINDEX] = form->newLine(&grid);
Expand Down
5 changes: 4 additions & 1 deletion radio/src/telemetry/telemetry_sensors.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -707,14 +707,17 @@ int32_t convertTelemetryValue(int32_t value, uint8_t unit, uint8_t prec, uint8_t
int32_t TelemetrySensor::getValue(int32_t value, uint8_t unit, uint8_t prec) const
{
if (type == TELEM_TYPE_CUSTOM && custom.ratio) {
/* farzu: Not needed, scaling work properly for the 3 types of prec without it
if (this->prec == 2) {
value *= 10;
prec = 2;
}
else {
prec = 1;
}
value = (custom.ratio * value + 122) / 255;
*/

value = (custom.ratio * value + 122) / 255; // 122/255 (0.48) is to aproximate up (ceiling)
}

value = convertTelemetryValue(value, unit, prec, this->unit, this->prec);
Expand Down

0 comments on commit 526a87e

Please sign in to comment.