1
0
Fork 0

Vivian MEAZZA: "Bug fix - make TACAN work with no carrier in the environment"

This commit is contained in:
mfranz 2006-10-16 11:15:35 +00:00
parent cc3ad61175
commit 4da02e3d99

View file

@ -341,6 +341,7 @@ TACAN::search (double frequency_mhz, double longitude_rad,
= globals->get_carrierlist()->findStationByFreq( frequency_mhz ); = globals->get_carrierlist()->findStationByFreq( frequency_mhz );
bool freq_valid = (mobile_tacan != NULL); bool freq_valid = (mobile_tacan != NULL);
SG_LOG( SG_INSTR, SG_DEBUG, "mobile freqency valid " << freq_valid ); SG_LOG( SG_INSTR, SG_DEBUG, "mobile freqency valid " << freq_valid );
_mobile_valid = false;
if ( freq_valid ) { if ( freq_valid ) {
@ -352,28 +353,29 @@ TACAN::search (double frequency_mhz, double longitude_rad,
number = carrier.size(); number = carrier.size();
SG_LOG( SG_INSTR, SG_DEBUG, "carrier " << number ); SG_LOG( SG_INSTR, SG_DEBUG, "carrier " << number );
if ( number > 0 ) { // don't do this if there are no carriers
for ( i = 0; i < number; ++i ) {
string str2 ( carrier[i]->getStringValue("name", ""));
SG_LOG( SG_INSTR, SG_DEBUG, "carrier name " << str2 );
for ( i = 0; i < number; ++i ) { SG_LOG( SG_INSTR, SG_DEBUG, "strings 1 " << str1 << " 2 " << str2 );
string str2 ( carrier[i]->getStringValue("name", "")); unsigned int loc1= str1.find( str2, 0 );
SG_LOG( SG_INSTR, SG_DEBUG, "carrier name " << str2 ); if ( loc1 != string::npos && str2 != "" ) {
SG_LOG( SG_INSTR, SG_DEBUG, " string found" );
SG_LOG( SG_INSTR, SG_DEBUG, "strings 1 " << str1 << " 2 " << str2 ); _mobile_lat = carrier[i]->getDoubleValue("position/latitude-deg");
unsigned int loc1= str1.find( str2, 0 ); _mobile_lon = carrier[i]->getDoubleValue("position/longitude-deg");
if ( loc1 != string::npos && str2 != "" ) { _mobile_elevation_ft = mobile_tacan->get_elev_ft();
SG_LOG( SG_INSTR, SG_DEBUG, " string found" ); _mobile_range_nm = mobile_tacan->get_range();
_mobile_lat = carrier[i]->getDoubleValue("position/latitude-deg"); _mobile_bias = mobile_tacan->get_multiuse();
_mobile_lon = carrier[i]->getDoubleValue("position/longitude-deg"); _mobile_name = mobile_tacan->get_name();
_mobile_elevation_ft = mobile_tacan->get_elev_ft(); _mobile_ident = mobile_tacan->get_trans_ident();
_mobile_range_nm = mobile_tacan->get_range(); _mobile_valid = true;
_mobile_bias = mobile_tacan->get_multiuse(); SG_LOG( SG_INSTR, SG_DEBUG, " carrier transmitter valid " << _mobile_valid );
_mobile_name = mobile_tacan->get_name(); break;
_mobile_ident = mobile_tacan->get_trans_ident(); } else {
_mobile_valid = true; _mobile_valid = false;
SG_LOG( SG_INSTR, SG_DEBUG, " carrier transmitter valid " << _mobile_valid ); SG_LOG( SG_INSTR, SG_DEBUG, " carrier transmitter invalid " << _mobile_valid );
break; }
} else {
_mobile_valid = false;
SG_LOG( SG_INSTR, SG_DEBUG, " carrier transmitter invalid " << _mobile_valid );
} }
} }
@ -393,27 +395,29 @@ TACAN::search (double frequency_mhz, double longitude_rad,
SG_LOG( SG_INSTR, SG_DEBUG, "tanker number " << number ); SG_LOG( SG_INSTR, SG_DEBUG, "tanker number " << number );
for ( i = 0; i < number; ++i ) { if ( number > 0 ) { // don't do this if there are no AI aircraft
string str4 ( tanker[i]->getStringValue("callsign", "")); for ( i = 0; i < number; ++i ) {
SG_LOG( SG_INSTR, SG_DEBUG, "tanker callsign " << str4 ); string str4 ( tanker[i]->getStringValue("callsign", ""));
SG_LOG( SG_INSTR, SG_DEBUG, "tanker callsign " << str4 );
SG_LOG( SG_INSTR, SG_DEBUG, "strings 1 " << str1 << " 4 " << str4 ); SG_LOG( SG_INSTR, SG_DEBUG, "strings 1 " << str1 << " 4 " << str4 );
unsigned int loc1= str1.find( str4, 0 ); unsigned int loc1= str1.find( str4, 0 );
if ( loc1 != string::npos && str4 != "" ) { if ( loc1 != string::npos && str4 != "" ) {
SG_LOG( SG_INSTR, SG_DEBUG, " string found" ); SG_LOG( SG_INSTR, SG_DEBUG, " string found" );
_mobile_lat = tanker[i]->getDoubleValue("position/latitude-deg"); _mobile_lat = tanker[i]->getDoubleValue("position/latitude-deg");
_mobile_lon = tanker[i]->getDoubleValue("position/longitude-deg"); _mobile_lon = tanker[i]->getDoubleValue("position/longitude-deg");
_mobile_elevation_ft = tanker[i]->getDoubleValue("position/altitude-ft"); _mobile_elevation_ft = tanker[i]->getDoubleValue("position/altitude-ft");
_mobile_range_nm = mobile_tacan->get_range(); _mobile_range_nm = mobile_tacan->get_range();
_mobile_bias = mobile_tacan->get_multiuse(); _mobile_bias = mobile_tacan->get_multiuse();
_mobile_name = mobile_tacan->get_name(); _mobile_name = mobile_tacan->get_name();
_mobile_ident = mobile_tacan->get_trans_ident(); _mobile_ident = mobile_tacan->get_trans_ident();
_mobile_valid = true; _mobile_valid = true;
SG_LOG( SG_INSTR, SG_DEBUG, " tanker transmitter valid " << _mobile_valid ); SG_LOG( SG_INSTR, SG_DEBUG, " tanker transmitter valid " << _mobile_valid );
break; break;
} else { } else {
_mobile_valid = false; _mobile_valid = false;
SG_LOG( SG_INSTR, SG_DEBUG, " tanker transmitter invalid " << _mobile_valid ); SG_LOG( SG_INSTR, SG_DEBUG, " tanker transmitter invalid " << _mobile_valid );
}
} }
} }
@ -435,32 +439,34 @@ TACAN::search (double frequency_mhz, double longitude_rad,
SG_LOG( SG_INSTR, SG_DEBUG, " mp tanker number " << number ); SG_LOG( SG_INSTR, SG_DEBUG, " mp tanker number " << number );
for ( i = 0; i < number; ++i ) { if ( number > 0 ) { // don't do this if there are no MP aircraft
string str6 ( mp_tanker[i]->getStringValue("callsign", "")); for ( i = 0; i < number; ++i ) {
SG_LOG( SG_INSTR, SG_DEBUG, "mp tanker callsign " << str6 ); string str6 ( mp_tanker[i]->getStringValue("callsign", ""));
SG_LOG( SG_INSTR, SG_DEBUG, "mp tanker callsign " << str6 );
SG_LOG( SG_INSTR, SG_DEBUG, "strings 1 " << str1 << " 5 " << str6 ); SG_LOG( SG_INSTR, SG_DEBUG, "strings 1 " << str1 << " 5 " << str6 );
unsigned int loc1= str1.find( str6, 0 ); unsigned int loc1= str1.find( str6, 0 );
if ( loc1 != string::npos && str6 != "" ) { if ( loc1 != string::npos && str6 != "" ) {
SG_LOG( SG_INSTR, SG_DEBUG, " string found" ); SG_LOG( SG_INSTR, SG_DEBUG, " string found" );
_mobile_lat = mp_tanker[i]->getDoubleValue("position/latitude-deg"); _mobile_lat = mp_tanker[i]->getDoubleValue("position/latitude-deg");
_mobile_lon = mp_tanker[i]->getDoubleValue("position/longitude-deg"); _mobile_lon = mp_tanker[i]->getDoubleValue("position/longitude-deg");
_mobile_elevation_ft = mp_tanker[i]->getDoubleValue("position/altitude-ft"); _mobile_elevation_ft = mp_tanker[i]->getDoubleValue("position/altitude-ft");
_mobile_range_nm = mobile_tacan->get_range(); _mobile_range_nm = mobile_tacan->get_range();
_mobile_bias = mobile_tacan->get_multiuse(); _mobile_bias = mobile_tacan->get_multiuse();
_mobile_name = mobile_tacan->get_name(); _mobile_name = mobile_tacan->get_name();
_mobile_ident = mobile_tacan->get_trans_ident(); _mobile_ident = mobile_tacan->get_trans_ident();
_mobile_valid = true; _mobile_valid = true;
SG_LOG( SG_INSTR, SG_DEBUG, " mp tanker transmitter valid " << _mobile_valid ); SG_LOG( SG_INSTR, SG_DEBUG, " mp tanker transmitter valid " << _mobile_valid );
SG_LOG( SG_INSTR, SG_DEBUG, " mp tanker name " << _mobile_name); SG_LOG( SG_INSTR, SG_DEBUG, " mp tanker name " << _mobile_name);
SG_LOG( SG_INSTR, SG_DEBUG, " mp lat " << _mobile_lat << "lon " << _mobile_lon); SG_LOG( SG_INSTR, SG_DEBUG, " mp lat " << _mobile_lat << "lon " << _mobile_lon);
SG_LOG( SG_INSTR, SG_DEBUG, " mp elev " << _mobile_elevation_ft); SG_LOG( SG_INSTR, SG_DEBUG, " mp elev " << _mobile_elevation_ft);
SG_LOG( SG_INSTR, SG_DEBUG, " mp range " << _mobile_range_nm); SG_LOG( SG_INSTR, SG_DEBUG, " mp range " << _mobile_range_nm);
break; break;
} else { } else {
_mobile_valid = false; _mobile_valid = false;
SG_LOG( SG_INSTR, SG_DEBUG, " mp tanker transmitter invalid " << _mobile_valid ); SG_LOG( SG_INSTR, SG_DEBUG, " mp tanker transmitter invalid " << _mobile_valid );
}
} }
} }
} }