if (ctx.speed_kt > 0.0 && distance_m > 0.0) {
TTW = (distance_m * SG_METER_TO_NM) / (ctx.speed_kt / 3600);
}
-
- unsigned int TTW_seconds = (int) (TTW + 0.5);
- if (TTW_seconds < 356400) { // That's 99 hours
+ if (TTW < 356400.5) { // That's 99 hours
+ unsigned int TTW_seconds = (int) (TTW + 0.5);
unsigned int TTW_minutes = 0;
unsigned int TTW_hours = 0;
char TTW_str[9];
// compute the time to intercept selected radial (based on
// current and last cross track errors and dt
//////////////////////////////////////////////////////////
- double t = 0.0;
- if ( inrange && cdi_serviceable ) {
- double xrate_ms = (last_xtrack_error - xtrack_error) / dt;
- if ( fabs(xrate_ms) > 0.00001 ) {
- t = xtrack_error / xrate_ms;
- } else {
- t = 9999.9;
+ if (dt > 0) { // Are we paused?
+ double t = 0.0;
+ if ( inrange && cdi_serviceable ) {
+ double xrate_ms = (last_xtrack_error - xtrack_error) / dt;
+ if ( fabs(xrate_ms) > 0.00001 ) {
+ t = xtrack_error / xrate_ms;
+ } else {
+ t = 9999.9;
+ }
}
+ time_to_intercept->setDoubleValue( t );
}
- time_to_intercept->setDoubleValue( t );
//////////////////////////////////////////////////////////
// compute the amount of glide slope needle deflection