From 2378080ae806bf4b41b671218dbb55a7efbfbaa6 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Wed, 5 Aug 2015 18:50:22 +0200 Subject: [PATCH] Fixes #2631 --- radio/src/telemetry/telemetry.cpp | 4 ++++ radio/src/telemetry/telemetry.h | 3 +++ 2 files changed, 7 insertions(+) diff --git a/radio/src/telemetry/telemetry.cpp b/radio/src/telemetry/telemetry.cpp index 0097ec5d5..54a104e35 100644 --- a/radio/src/telemetry/telemetry.cpp +++ b/radio/src/telemetry/telemetry.cpp @@ -527,6 +527,10 @@ void TelemetrySensor::init(const char * label, uint8_t unit, uint8_t prec) memclear(this->label, TELEM_LABEL_LEN); strncpy(this->label, label, TELEM_LABEL_LEN); this->unit = unit; + if (prec > 1 && (IS_DISTANCE_UNIT(unit) || IS_SPEED_UNIT(unit))) { + // 2 digits precision is not needed here + prec = 1; + } this->prec = prec; } diff --git a/radio/src/telemetry/telemetry.h b/radio/src/telemetry/telemetry.h index 40fdeb119..37e89e492 100644 --- a/radio/src/telemetry/telemetry.h +++ b/radio/src/telemetry/telemetry.h @@ -192,4 +192,7 @@ int32_t convertTelemetryValue(int32_t value, uint8_t unit, uint8_t prec, uint8_t void frskySportSetDefault(int index, uint16_t type, uint8_t instance); void frskyDSetDefault(int index, uint16_t id); +#define IS_DISTANCE_UNIT(unit) ((unit) == UNIT_METERS || (unit) == UNIT_FEET) +#define IS_SPEED_UNIT(unit) ((unit) >= UNIT_KTS && (unit) <= UNIT_MPH) + #endif