#include <simgear/io/sg_serial.hxx>
#include <simgear/io/sg_socket.hxx>
#include <simgear/math/sg_types.hxx>
-
-#include <Main/options.hxx>
+#include <simgear/timing/timestamp.hxx>
#include <Network/protocol.hxx>
-#include <Network/native.hxx>
+#include <Network/atlas.hxx>
#include <Network/garmin.hxx>
+#include <Network/joyclient.hxx>
+#include <Network/native.hxx>
#include <Network/nmea.hxx>
#include <Network/props.hxx>
#include <Network/pve.hxx>
#include <Network/ray.hxx>
#include <Network/rul.hxx>
-#include <Network/joyclient.hxx>
-#include <Time/timestamp.hxx>
+#include "globals.hxx"
FG_USING_STD(string);
FG_LOG( FG_IO, FG_INFO, " protocol = " << protocol );
FGProtocol *io;
- if ( protocol == "native" ) {
- FGNative *native = new FGNative;
- io = native;
+ if ( protocol == "atlas" ) {
+ FGAtlas *atlas = new FGAtlas;
+ io = atlas;
} else if ( protocol == "garmin" ) {
FGGarmin *garmin = new FGGarmin;
io = garmin;
+ } else if ( protocol == "joyclient" ) {
+ FGJoyClient *joyclient = new FGJoyClient;
+ io = joyclient;
+ } else if ( protocol == "native" ) {
+ FGNative *native = new FGNative;
+ io = native;
} else if ( protocol == "nmea" ) {
FGNMEA *nmea = new FGNMEA;
io = nmea;
} else if ( protocol == "rul" ) {
FGRUL *rul = new FGRUL;
io = rul;
- } else if ( protocol == "joyclient" ) {
- FGJoyClient *joyclient = new FGJoyClient;
- io = joyclient;
} else {
return NULL;
}
// step through the port config streams (from fgOPTIONS) and setup
// serial port channels for each
void fgIOInit() {
+ // FG_LOG( FG_IO, FG_INFO, "I/O Channel initialization, " <<
+ // globals->get_channel_options_list()->size() << " requests." );
+
FGProtocol *p;
- string_list channel_options_list =
- current_options.get_channel_options_list();
+ string_list *channel_options_list = globals->get_channel_options_list();
// we could almost do this in a single step except pushing a valid
// port onto the port list copies the structure and destroys the
// parse the configuration strings and store the results in the
// appropriate FGIOChannel structures
- for ( int i = 0; i < (int)channel_options_list.size(); ++i ) {
- p = parse_port_config( channel_options_list[i] );
+ for ( int i = 0; i < (int)channel_options_list->size(); ++i ) {
+ p = parse_port_config( (*channel_options_list)[i] );
if ( p != NULL ) {
p->open();
global_io_list.push_back( p );
if ( !p->is_enabled() ) {
- FG_LOG( FG_IO, FG_INFO, "I/O Channel config failed." );
+ FG_LOG( FG_IO, FG_ALERT, "I/O Channel config failed." );
+ exit(-1);
}
} else {
FG_LOG( FG_IO, FG_INFO, "I/O Channel parse failed." );
static int inited = 0;
int interval;
- static FGTimeStamp last;
- FGTimeStamp current;
+ static SGTimeStamp last;
+ SGTimeStamp current;
if ( ! inited ) {
inited = 1;
}
}
}
+
+
+// shutdown all I/O connections
+void fgIOShutdownAll() {
+ FGProtocol *p;
+
+ // cout << "processing I/O channels" << endl;
+
+ for ( int i = 0; i < (int)global_io_list.size(); ++i ) {
+ // cout << " channel = " << i << endl;
+ p = global_io_list[i];
+
+ if ( p->is_enabled() ) {
+ p->close();
+ }
+ }
+}