From ecc89d1ba10dc7811127603da431e7715f4fa076 Mon Sep 17 00:00:00 2001 From: AirBreak69 <26233861+AirBreak69@users.noreply.github.com> Date: Thu, 14 Jun 2018 01:31:24 +0200 Subject: [PATCH] Compensate 10x altitude resolution before transferring via MSP GPS_RESCUE and subsequent changes increased gpsSol.llh.alt from 0.1m per lsb UNIT16 to 0.01m per lsb INT32. The transfer of altitude data via MSP had to be corrected by factor 10 rescalings to be backwards compatible. --- src/main/interface/msp.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/interface/msp.c b/src/main/interface/msp.c index 5e4ef9dafd..2398cec044 100644 --- a/src/main/interface/msp.c +++ b/src/main/interface/msp.c @@ -1033,7 +1033,7 @@ static bool mspProcessOutCommand(uint8_t cmdMSP, sbuf_t *dst) sbufWriteU8(dst, gpsSol.numSat); sbufWriteU32(dst, gpsSol.llh.lat); sbufWriteU32(dst, gpsSol.llh.lon); - sbufWriteU16(dst, MIN(gpsSol.llh.alt,65535)); + sbufWriteU16(dst, MIN(gpsSol.llh.alt / 10, 65535)); sbufWriteU16(dst, gpsSol.groundSpeed); sbufWriteU16(dst, gpsSol.groundCourse); sbufWriteU32(dst, gpsSol.llh.alt); @@ -1900,7 +1900,7 @@ static mspResult_e mspProcessInCommand(uint8_t cmdMSP, sbuf_t *src) gpsSol.numSat = sbufReadU8(src); gpsSol.llh.lat = sbufReadU32(src); gpsSol.llh.lon = sbufReadU32(src); - gpsSol.llh.alt = sbufReadU16(src); + gpsSol.llh.alt = sbufReadU16(src) * 10; gpsSol.groundSpeed = sbufReadU16(src); if (sbufBytesRemaining(src) >= 4) { gpsSol.llh.alt = sbufReadU32(src);