_time_before_search_sec(0),
_mobile_valid(false),
_transmitter_valid(false),
- _transmitter_elevation_ft(0),
+ _transmitter_pos(SGGeod::fromDeg(0, 0)),
_transmitter_range_nm(0),
_transmitter_bias(0.0),
-
name("tacan"),
num(0)
{
_time_before_search_sec(0),
_mobile_valid(false),
_transmitter_valid(false),
- _transmitter_elevation_ft(0),
+ _transmitter_pos(SGGeod::fromDeg(0, 0)),
_transmitter_range_nm(0),
_transmitter_bearing_deg(0),
_transmitter_bias(0.0),
_yaw_node = fgGetNode("/orientation/side-slip-deg", true);
_serviceable_node = node->getChild("serviceable", 0, true);
_electrical_node = fgGetNode("/systems/electrical/outputs/tacan", true);
- _ident_node = node->getChild("ident", 0, true);
+ _ident_node = node->getChild("ident", 0, true);
SGPropertyNode *fnode = node->getChild("frequencies", 0, true);
_source_node = fnode->getChild("source", 0, true);
_frequency_node = fnode->getChild("selected-mhz", 0, true);
&mobile_bearing, &mobile_az2, &mobile_distance);
//calculate the bearing and range of the station from the aircraft
- geo_inverse_wgs_84(altitude_m,
- latitude_deg,
- longitude_deg,
- _transmitter_lat,
- _transmitter_lon,
+ SGGeod pos = SGGeod::fromDegM(longitude_deg, latitude_deg, altitude_m);
+ geo_inverse_wgs_84(pos, _transmitter_pos,
&bearing, &az2, &distance);
SG_LOG( SG_INSTR, SG_DEBUG, "distance_m " << distance);
bearing = mobile_bearing;
distance = mobile_distance;
- _transmitter_elevation_ft = _mobile_elevation_ft;
+ _transmitter_pos.setElevationFt(_mobile_elevation_ft);
_transmitter_range_nm = _mobile_range_nm;
_transmitter_bias = _mobile_bias;
_transmitter_name = _mobile_name;
double rotation = 0;
- /*Point3D location =
- sgGeodToCart(Point3D(longitude_rad, latitude_rad, altitude_m));
- double distance_nm = _transmitter.distance3D(location) * SG_METER_TO_NM;*/
-
- double range_nm = adjust_range(_transmitter_elevation_ft,
+ double range_nm = adjust_range(_transmitter_pos.getElevationFt(),
altitude_m * SG_METER_TO_FEET,
_transmitter_range_nm);
if ( _transmitter_valid ) {
SG_LOG( SG_INSTR, SG_DEBUG, "transmitter valid " << _transmitter_valid );
- _transmitter_lat = tacan->get_lat();
- _transmitter_lon = tacan->get_lon();
- _transmitter_elevation_ft = tacan->get_elev_ft();
+ _transmitter_pos = tacan->get_pos();
_transmitter_range_nm = tacan->get_range();
_transmitter_bias = tacan->get_multiuse();
_transmitter_name = tacan->get_name();
_ident_node->setStringValue(_transmitter_ident.c_str());
SG_LOG( SG_INSTR, SG_DEBUG, "name " << _transmitter_name);
- SG_LOG( SG_INSTR, SG_DEBUG, "lat " << _transmitter_lat << "lon " << _transmitter_lon);
- SG_LOG( SG_INSTR, SG_DEBUG, "elev " << _transmitter_elevation_ft);
+ SG_LOG( SG_INSTR, SG_DEBUG, _transmitter_pos);
} else {
SG_LOG( SG_INSTR, SG_DEBUG, "transmitter invalid " << _transmitter_valid );
frequency_khz = freq->get_freq();
SG_LOG( SG_INSTR, SG_DEBUG, "freq output " << frequency_khz );
//check sanity
- if (frequency_khz >=9620 && frequency_khz <= 12130)
+ if (frequency_khz >=9620 && frequency_khz <= 121300)
return frequency_khz/100;
}
return frequency_khz = 0;