#include <simgear/debug/logstream.hxx>
+#include <simgear/io/iochannel.hxx>
#include <Aircraft/aircraft.hxx>
-#include "iochannel.hxx"
#include "joyclient.hxx"
// 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;
}
// 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 );
}
}
// close the channel
bool FGJoyClient::close() {
- FGIOChannel *io = get_io_channel();
+ SGIOChannel *io = get_io_channel();
set_enabled( false );