//
// Written by Curtis Olson, started November 1999.
//
-// Copyright (C) 1999 Curtis L. Olson - curt@flightgear.org
+// Copyright (C) 1999 Curtis L. Olson - http://www.flightgear.org/~curt
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License as
#include <simgear/math/sg_geodesy.hxx>
#include <simgear/io/iochannel.hxx>
-#include <Cockpit/radiostack.hxx>
+
#include <FDM/flight.hxx>
#include <Main/globals.hxx>
+#include <Main/fg_props.hxx>
+#include <Main/fg_init.hxx>
#include "atlas.hxx"
bool FGAtlas::gen_message() {
// cout << "generating atlas message" << endl;
+ static SGPropertyNode *adf_freq
+ = fgGetNode("/instrumentation/kr-87/outputs/selected-khz", true);
+ static SGPropertyNode *nav_freq
+ = fgGetNode("/instrumentation/nav/frequencies/selected-mhz", true);
+ static SGPropertyNode *nav_sel_radial
+ = fgGetNode("/instrumentation/nav/radials/selected-deg", true);
+
char rmc[256], gga[256], patla[256];
char rmc_sum[10], gga_sum[10], patla_sum[10];
char dir;
sprintf( gga_sum, "%02X", calc_atlas_cksum(gga) );
sprintf( patla, "PATLA,%.2f,%.1f,%.2f,%.1f,%.0f",
- current_radiostack->get_nav1_freq(),
- current_radiostack->get_nav1_sel_radial(),
- current_radiostack->get_nav2_freq(),
- current_radiostack->get_nav2_sel_radial(),
- current_radiostack->get_adf_freq() );
+ nav_freq->getDoubleValue(),
+ nav_sel_radial->getDoubleValue(),
+ nav_freq->getDoubleValue(),
+ nav_sel_radial->getDoubleValue(),
+ adf_freq->getDoubleValue() );
sprintf( patla_sum, "%02X", calc_atlas_cksum(patla) );
SG_LOG( SG_IO, SG_DEBUG, rmc );
atlas_sentence += patla_sum;
atlas_sentence += "\n";
- cout << atlas_sentence;
+ // cout << atlas_sentence;
length = atlas_sentence.length();
strncpy( buf, atlas_sentence.c_str(), length );
string alt_units = msg.substr(begin, end - begin);
begin = end + 1;
- if ( alt_units != (string)"F" ) {
+ if ( alt_units != "F" ) {
altitude *= SG_METER_TO_FEET;
}
if ( get_direction() == SG_IO_OUT ) {
gen_message();
if ( ! io->write( buf, length ) ) {
- SG_LOG( SG_IO, SG_ALERT, "Error writing data." );
+ SG_LOG( SG_IO, SG_WARN, "Error writing data." );
return false;
}
} else if ( get_direction() == SG_IO_IN ) {
if ( (length = io->readline( buf, FG_MAX_MSG_SIZE )) > 0 ) {
parse_message();
} else {
- SG_LOG( SG_IO, SG_ALERT, "Error reading data." );
+ SG_LOG( SG_IO, SG_WARN, "Error reading data." );
return false;
}
if ( (length = io->readline( buf, FG_MAX_MSG_SIZE )) > 0 ) {
parse_message();
} else {
- SG_LOG( SG_IO, SG_ALERT, "Error reading data." );
+ SG_LOG( SG_IO, SG_WARN, "Error reading data." );
return false;
}
}
// close the channel
bool FGAtlas::close() {
+ SG_LOG( SG_IO, SG_INFO, "closing FGAtlas" );
SGIOChannel *io = get_io_channel();
set_enabled( false );