_transmitter_elevation_ft(0),
_transmitter_range_nm(0),
_transmitter_bias(0.0),
- name("dme"),
- num(0)
-{
- int i;
- for ( i = 0; i < node->nChildren(); ++i ) {
- SGPropertyNode *child = node->getChild(i);
- string cname = child->getName();
- string cval = child->getStringValue();
- if ( cname == "name" ) {
- name = cval;
- } else if ( cname == "number" ) {
- num = child->getIntValue();
- } else {
- SG_LOG( SG_INSTR, SG_WARN, "Error in dme config logic" );
- if ( name.length() ) {
- SG_LOG( SG_INSTR, SG_WARN, "Section = " << name );
- }
- }
- }
-}
-
-DME::DME ()
- : _last_distance_nm(0),
- _last_frequency_mhz(-1),
- _time_before_search_sec(0),
- _transmitter_valid(false),
- _transmitter_elevation_ft(0),
- _transmitter_range_nm(0),
- _transmitter_bias(0.0)
+ _name(node->getStringValue("name", "dme")),
+ _num(node->getIntValue("number", 0))
{
}
DME::init ()
{
string branch;
- branch = "/instrumentation/" + name;
+ branch = "/instrumentation/" + _name;
- SGPropertyNode *node = fgGetNode(branch.c_str(), num, true );
+ SGPropertyNode *node = fgGetNode(branch.c_str(), _num, true );
_longitude_node = fgGetNode("/position/longitude-deg", true);
_latitude_node = fgGetNode("/position/latitude-deg", true);
const char * source = _source_node->getStringValue();
if (source[0] == '\0') {
string branch;
- branch = "/instrumentation/" + name + "/frequencies/selected-mhz";
+ branch = "/instrumentation/" + _name + "/frequencies/selected-mhz";
_source_node->setStringValue(branch.c_str());
source = _source_node->getStringValue();
}
}
// Calculate the distance to the transmitter
- Point3D location =
- sgGeodToCart(Point3D(longitude_rad, latitude_rad, altitude_m));
- double distance_nm = _transmitter.distance3D(location) * SG_METER_TO_NM;
+ SGGeod geod = SGGeod::fromRadM(longitude_rad, latitude_rad, altitude_m);
+ SGVec3d location = SGVec3d::fromGeod(geod);
+
+ double distance_nm = dist(_transmitter, location) * SG_METER_TO_NM;
double range_nm = adjust_range(_transmitter_elevation_ft,
altitude_m * SG_METER_TO_FEET,
_transmitter_valid = (dme != NULL);
if ( _transmitter_valid ) {
- _transmitter = Point3D(dme->get_x(), dme->get_y(), dme->get_z());
+ _transmitter = dme->get_cart();
_transmitter_elevation_ft = dme->get_elev_ft();
_transmitter_range_nm = dme->get_range();
_transmitter_bias = dme->get_multiuse();