From b4937b5e25984f58cb0562ee56df70dc52009ea0 Mon Sep 17 00:00:00 2001 From: bsongis Date: Tue, 1 May 2012 21:02:52 +0000 Subject: [PATCH] getGpsDistance() bug fix (thanks Mike!) --- src/frsky.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/frsky.cpp b/src/frsky.cpp index 6e399ff00..6fd10d605 100644 --- a/src/frsky.cpp +++ b/src/frsky.cpp @@ -123,9 +123,9 @@ uint8_t frskyGetUserData(char *buffer, uint8_t bufSize) #ifdef FRSKY_HUB inline void getGpsPilotPosition() { - frskyHubData.pilotLatitude = (((uint32_t)frskyHubData.gpsLatitude_bp / 100) * 1000000) + (((frskyHubData.gpsLatitude_bp % 100) * 10000 + frskyHubData.gpsLatitude_ap) * 5) / 3; - frskyHubData.pilotLongitude = (((uint32_t)frskyHubData.gpsLongitude_bp / 100) * 1000000) + (((frskyHubData.gpsLongitude_bp % 100) * 10000 + frskyHubData.gpsLongitude_ap) * 5) / 3; - uint32_t lat = ((uint32_t)frskyHubData.gpsLatitude_bp / 100) * 100 + (((uint32_t)frskyHubData.gpsLatitude_bp % 100) * 5) / 3; + frskyHubData.pilotLatitude = ((uint32_t)(frskyHubData.gpsLatitude_bp / 100) * 1000000) + (((uint32_t)(frskyHubData.gpsLatitude_bp % 100) * 10000 + frskyHubData.gpsLatitude_ap) * 5) / 3; + frskyHubData.pilotLongitude = ((uint32_t)(frskyHubData.gpsLongitude_bp / 100) * 1000000) + (((uint32_t)(frskyHubData.gpsLongitude_bp % 100) * 10000 + frskyHubData.gpsLongitude_ap) * 5) / 3; + uint32_t lat = (uint32_t)(frskyHubData.gpsLatitude_bp / 100) * 100 + ((uint32_t)(frskyHubData.gpsLatitude_bp % 100) * 5) / 3; uint32_t angle2 = (lat*lat) / 10000; uint32_t angle4 = angle2 * angle2; frskyHubData.distFromEarthAxis = 139*(((uint32_t)10000000-((angle2*(uint32_t)123370)/81)+(angle4/25))/12500); @@ -134,8 +134,8 @@ inline void getGpsPilotPosition() inline void getGpsDistance() { - uint32_t lat = (((uint32_t)frskyHubData.gpsLatitude_bp / 100) * 1000000) + ((((uint32_t)frskyHubData.gpsLatitude_bp % 100) * 10000 + frskyHubData.gpsLatitude_ap) * 5) / 3; - uint32_t lng = (((uint32_t)frskyHubData.gpsLongitude_bp / 100) * 1000000) + ((((uint32_t)frskyHubData.gpsLongitude_bp % 100) * 10000 + frskyHubData.gpsLongitude_ap) * 5) / 3; + uint32_t lat = ((uint32_t)(frskyHubData.gpsLatitude_bp / 100) * 1000000) + (((uint32_t)(frskyHubData.gpsLatitude_bp % 100) * 10000 + frskyHubData.gpsLatitude_ap) * 5) / 3; + uint32_t lng = ((uint32_t)(frskyHubData.gpsLongitude_bp / 100) * 1000000) + (((uint32_t)(frskyHubData.gpsLongitude_bp % 100) * 10000 + frskyHubData.gpsLongitude_ap) * 5) / 3; // printf("lat=%d (%d), long=%d (%d)\n", lat, abs(lat - frskyHubData.pilotLatitude), lng, abs(lng - frskyHubData.pilotLongitude));