X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FNetwork%2Fjoyclient.cxx;h=b163cb00ee69b175341d1d9c27c75438e04315fe;hb=b0dcb657e77579ecc79798ff365737095f96f9e2;hp=f399ce5898703942793bffadf2bc5cddf5c1c542;hpb=f03cfb6b4a11334fe41977243bfd96f5407be580;p=flightgear.git diff --git a/src/Network/joyclient.cxx b/src/Network/joyclient.cxx index f399ce589..b163cb00e 100644 --- a/src/Network/joyclient.cxx +++ b/src/Network/joyclient.cxx @@ -2,7 +2,7 @@ // // Written by Curtis Olson, started April 2000. // -// Copyright (C) 2000 Curtis L. Olson - curt@flightgear.org +// Copyright (C) 2000 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,16 +16,20 @@ // // 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 "config.h" +#endif #include +#include -#include +#include +#include
-#include "iochannel.hxx" #include "joyclient.hxx" @@ -39,15 +43,15 @@ FGJoyClient::~FGJoyClient() { // open hailing frequencies bool FGJoyClient::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; } - FGIOChannel *io = get_io_channel(); + 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; } @@ -59,29 +63,50 @@ bool FGJoyClient::open() { // process work for this port bool FGJoyClient::process() { - FGIOChannel *io = get_io_channel(); + SGIOChannel *io = get_io_channel(); int length = sizeof(int[2]); - if ( get_direction() == out ) { - FG_LOG( FG_IO, FG_ALERT, "joyclient protocol is read only" ); + if ( get_direction() == SG_IO_OUT ) { + SG_LOG( SG_IO, SG_ALERT, "joyclient protocol is read only" ); return false; - } else if ( get_direction() == in ) { - FG_LOG( FG_IO, FG_DEBUG, "Searching for data." ); - while ( io->read( (char *)(& buf), length ) == length ) { - FG_LOG( FG_IO, FG_DEBUG, "Success reading data." ); - int *msg; - msg = (int *)buf; - FG_LOG( FG_IO, FG_INFO, "X = " << msg[0] << " Y = " << msg[1] ); - double aileron = ((double)msg[0] / 2048.0) - 1.0; - double elevator = ((double)msg[1] / 2048.0) - 1.0; - if ( fabs(aileron) < 0.05 ) { - aileron = 0.0; + } else if ( get_direction() == SG_IO_IN ) { + SG_LOG( SG_IO, SG_DEBUG, "Searching for data." ); + if ( io->get_type() == sgFileType ) { + if ( io->read( (char *)(& buf), length ) == length ) { + SG_LOG( SG_IO, SG_DEBUG, "Success reading data." ); + int *msg; + msg = (int *)buf; + SG_LOG( SG_IO, SG_DEBUG, "X = " << msg[0] << " Y = " + << msg[1] ); + double aileron = ((double)msg[0] / 2048.0) - 1.0; + double elevator = ((double)msg[1] / 2048.0) - 1.0; + if ( fabs(aileron) < 0.05 ) { + aileron = 0.0; + } + if ( fabs(elevator) < 0.05 ) { + elevator = 0.0; + } + globals->get_controls()->set_aileron( aileron ); + globals->get_controls()->set_elevator( -elevator ); } - if ( fabs(elevator) < 0.05 ) { - elevator = 0.0; + } else { + while ( io->read( (char *)(& buf), length ) == length ) { + SG_LOG( SG_IO, SG_DEBUG, "Success reading data." ); + int *msg; + msg = (int *)buf; + SG_LOG( SG_IO, SG_DEBUG, "X = " << msg[0] << " Y = " + << msg[1] ); + double aileron = ((double)msg[0] / 2048.0) - 1.0; + double elevator = ((double)msg[1] / 2048.0) - 1.0; + if ( fabs(aileron) < 0.05 ) { + aileron = 0.0; + } + if ( fabs(elevator) < 0.05 ) { + elevator = 0.0; + } + globals->get_controls()->set_aileron( aileron ); + globals->get_controls()->set_elevator( -elevator ); } - controls.set_aileron( aileron ); - controls.set_elevator( -elevator ); } } @@ -91,7 +116,7 @@ bool FGJoyClient::process() { // close the channel bool FGJoyClient::close() { - FGIOChannel *io = get_io_channel(); + SGIOChannel *io = get_io_channel(); set_enabled( false );