Fix GPS overflow
This commit is contained in:
@@ -1279,6 +1279,7 @@ extern uint8_t s_frsky_view;
|
||||
#endif
|
||||
|
||||
constexpr uint32_t EARTH_RADIUS = 6371009;
|
||||
constexpr uint32_t PRECALCULATED_EARTH_RADIUS_CONSTANT = 111194; // meters * pi / 180°
|
||||
|
||||
void getGpsPilotPosition();
|
||||
void getGpsDistance();
|
||||
|
||||
@@ -355,7 +355,7 @@ void TelemetryItem::eval(const TelemetrySensor & sensor)
|
||||
}
|
||||
}
|
||||
uint32_t angle = abs(gpsItem.gps.latitude - gpsItem.pilotLatitude);
|
||||
uint32_t dist = ((uint64_t )EARTH_RADIUS * M_PI / 180) * angle) / 1000000;
|
||||
uint32_t dist = ((uint64_t)PRECALCULATED_EARTH_RADIUS_CONSTANT * angle) / 1000000;
|
||||
uint32_t result = dist * dist;
|
||||
|
||||
angle = abs(gpsItem.gps.longitude - gpsItem.pilotLongitude);
|
||||
|
||||
Reference in New Issue
Block a user