X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FNetwork%2Fnative.cxx;h=48edaf11566d4d81ccb1d697598ad8090190b4e9;hb=206053722eb59b31ed2fb182044f84bac0058f8a;hp=83682604fdc11e45eefd6368f11e8c025fbbbdd3;hpb=4c0a3b3db43f5be847129b77d71f35036c452ad1;p=flightgear.git diff --git a/src/Network/native.cxx b/src/Network/native.cxx index 83682604f..48edaf115 100644 --- a/src/Network/native.cxx +++ b/src/Network/native.cxx @@ -2,7 +2,7 @@ // // 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 @@ -16,17 +16,22 @@ // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. // // $Id$ +#ifdef HAVE_CONFIG_H +# include +#endif #include -#include -#include + #include "native.hxx" +#include
+#include +#include FGNative::FGNative() { } @@ -38,7 +43,7 @@ FGNative::~FGNative() { // open hailing frequencies bool FGNative::open() { if ( is_enabled() ) { - FG_LOG( FG_IO, FG_ALERT, "This shouldn't happen, but the channel " + SG_LOG( SG_IO, SG_ALERT, "This shouldn't happen, but the channel " << "is already in use, ignoring" ); return false; } @@ -46,7 +51,7 @@ bool FGNative::open() { SGIOChannel *io = get_io_channel(); if ( ! io->open( get_direction() ) ) { - FG_LOG( FG_IO, FG_ALERT, "Error opening channel communication layer." ); + SG_LOG( SG_IO, SG_ALERT, "Error opening channel communication layer." ); return false; } @@ -55,34 +60,21 @@ bool FGNative::open() { return true; } - // process work for this port -bool FGNative::process() { +bool FGNative::process() +{ + FDMShell* fdm = static_cast(globals->get_subsystem("flight")); + FGInterface* fdmState = fdm->getInterface(); + if (!fdmState) { + return false; + } + SGIOChannel *io = get_io_channel(); - int length = sizeof(*cur_fdm_state); - if ( get_direction() == SG_IO_OUT ) { - // cout << "size of cur_fdm_state = " << length << endl; - buf = *cur_fdm_state; - if ( ! io->write( (char *)(& buf), length ) ) { - FG_LOG( FG_IO, FG_ALERT, "Error writing data." ); - return false; - } - } else if ( get_direction() == SG_IO_IN ) { - if ( io->get_type() == sgFileType ) { - if ( io->read( (char *)(& buf), length ) == length ) { - FG_LOG( FG_IO, FG_ALERT, "Success reading data." ); - *cur_fdm_state = buf; - } - } else { - while ( io->read( (char *)(& buf), length ) == length ) { - FG_LOG( FG_IO, FG_ALERT, "Success reading data." ); - *cur_fdm_state = buf; - } - } + return fdmState->writeState(io); + } else { + return fdmState->readState(io); } - - return true; }