+void FGAutopilot::MakeTargetWPStr( double distance ) {
+ static time_t last_time = 0;
+ time_t current_time = time(NULL);
+ if ( last_time == current_time ) {
+ return;
+ }
+
+ last_time = current_time;
+
+ double accum = 0.0;
+
+ int size = globals->get_route()->size();
+
+ // start by wiping the strings
+ TargetWP1Str[0] = 0;
+ TargetWP2Str[0] = 0;
+ TargetWP3Str[0] = 0;
+
+ // current route
+ if ( size > 0 ) {
+ SGWayPoint wp1 = globals->get_route()->get_waypoint( 0 );
+ accum += distance;
+ double eta = accum * SG_METER_TO_NM / get_ground_speed();
+ if ( eta >= 100.0 ) { eta = 99.999; }
+ int major, minor;
+ if ( eta < (1.0/6.0) ) {
+ // within 10 minutes, bump up to min/secs
+ eta *= 60.0;
+ }
+ major = (int)eta;
+ minor = (int)((eta - (int)eta) * 60.0);
+ sprintf( TargetWP1Str, "%s %.2f NM ETA %d:%02d",
+ wp1.get_id().c_str(),
+ accum*SG_METER_TO_NM, major, minor );
+ // cout << "distance = " << distance*SG_METER_TO_NM
+ // << " gndsp = " << get_ground_speed()
+ // << " time = " << eta
+ // << " major = " << major
+ // << " minor = " << minor
+ // << endl;
+ }
+
+ // next route
+ if ( size > 1 ) {
+ SGWayPoint wp2 = globals->get_route()->get_waypoint( 1 );
+ accum += wp2.get_distance();
+
+ double eta = accum * SG_METER_TO_NM / get_ground_speed();
+ if ( eta >= 100.0 ) { eta = 99.999; }
+ int major, minor;
+ if ( eta < (1.0/6.0) ) {
+ // within 10 minutes, bump up to min/secs
+ eta *= 60.0;
+ }
+ major = (int)eta;
+ minor = (int)((eta - (int)eta) * 60.0);
+ sprintf( TargetWP2Str, "%s %.2f NM ETA %d:%02d",
+ wp2.get_id().c_str(),
+ accum*SG_METER_TO_NM, major, minor );
+ }
+
+ // next route
+ if ( size > 2 ) {
+ for ( int i = 2; i < size; ++i ) {
+ accum += globals->get_route()->get_waypoint( i ).get_distance();
+ }
+
+ SGWayPoint wpn = globals->get_route()->get_waypoint( size - 1 );
+
+ double eta = accum * SG_METER_TO_NM / get_ground_speed();
+ if ( eta >= 100.0 ) { eta = 99.999; }
+ int major, minor;
+ if ( eta < (1.0/6.0) ) {
+ // within 10 minutes, bump up to min/secs
+ eta *= 60.0;
+ }
+ major = (int)eta;
+ minor = (int)((eta - (int)eta) * 60.0);
+ sprintf( TargetWP3Str, "%s %.2f NM ETA %d:%02d",
+ wpn.get_id().c_str(),
+ accum*SG_METER_TO_NM, major, minor );