diff --git a/radio/releasenotes.txt b/radio/releasenotes.txt index e735d5d84..f6a1b9b32 100644 --- a/radio/releasenotes.txt +++ b/radio/releasenotes.txt @@ -30,6 +30,7 @@
  • Added Timer3 to stats screen (#2515)
  • FrSky S.Port Airspeed sensor unit set to kph (#2305)
  • Frsky-D Telemetry protocol bug fixed (0x5D followed by 0x3D)
  • +
  • Added support for 0.01V resolution to D series VFAS ID 0x39 (#2607)
  • [Boards with narrow LCD (9X, 9XR, etc)] diff --git a/radio/src/telemetry/frsky.h b/radio/src/telemetry/frsky.h index cff9517f5..67097dce4 100644 --- a/radio/src/telemetry/frsky.h +++ b/radio/src/telemetry/frsky.h @@ -91,6 +91,9 @@ #define D_A1_ID 0xF1 #define D_A2_ID 0xF2 +#define VFAS_D_HIPREC_OFFSET 2000 + + // FrSky new DATA IDs (2 bytes) #define ALT_FIRST_ID 0x0100 #define ALT_LAST_ID 0x010f @@ -152,6 +155,7 @@ #define DATA_ID_SP2UH 0x45 // 5 #define DATA_ID_SP2UR 0xC6 // 6 + // Global Fr-Sky telemetry data variables extern uint8_t frskyStreaming; // >0 (true) == data is streaming in. 0 = nodata detected for some time diff --git a/radio/src/telemetry/frsky_d.cpp b/radio/src/telemetry/frsky_d.cpp index da2f641dd..c4e7cccf0 100644 --- a/radio/src/telemetry/frsky_d.cpp +++ b/radio/src/telemetry/frsky_d.cpp @@ -640,7 +640,14 @@ void processHubPacket(uint8_t id, int16_t value) data = data * 60; } else if (id == VFAS_ID) { - data *= 10; + if (data >= VFAS_D_HIPREC_OFFSET) { + // incoming value has a resolution of 0.01V and added offset of VFAS_D_HIPREC_OFFSET + data -= VFAS_D_HIPREC_OFFSET; + } + else { + // incoming value has a resolution of 0.1V + data *= 10; + } } setTelemetryValue(TELEM_PROTO_FRSKY_D, id, 0, data, unit, precision);