From 542879b74bd30a51e1c43f90a19fb3079365e19b Mon Sep 17 00:00:00 2001 From: Joel Wetzell Date: Sat, 25 Jul 2020 10:21:56 -0500 Subject: [PATCH] allow negative heading in maths --- firmware/common/adsb.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/firmware/common/adsb.cpp b/firmware/common/adsb.cpp index 1831e89d7..6a4412fec 100644 --- a/firmware/common/adsb.cpp +++ b/firmware/common/adsb.cpp @@ -344,11 +344,13 @@ adsb_vel decode_frame_velo(ADSBFrame& frame){ if((frame_data[7]&0x80) >> 7) velo_ns *= -1; //check ns direction sign velo.speed = sqrt(velo_ns*velo_ns + velo_ew*velo_ew); + if(velo.speed){ //calculate heading in degrees from ew/ns velocities - velo.heading = (uint16_t)(atan2(velo_ew,velo_ns) * 180.0 / pi); + int16_t heading_temp = (int16_t)(atan2(velo_ew,velo_ns) * 180.0 / pi); // We don't want negative values but a 0-360 scale. - if (velo.heading < 0) velo.heading += 360.0; + if (heading_temp < 0) heading_temp += 360.0; + velo.heading = (uint16_t)heading_temp; } }else if(velo_type == 3 || velo_type == 4){ //Airspeed