#include <simgear/compiler.h>
-#include <stdlib.h> // atoi()
+#include <cstdlib> // atoi()
#include <string>
#include <Network/ATC-Main.hxx>
#include <Network/atlas.hxx>
#include <Network/AV400.hxx>
+#include <Network/AV400Sim.hxx>
#include <Network/garmin.hxx>
#include <Network/httpd.hxx>
#ifdef FG_JPEG_SERVER
#include "globals.hxx"
#include "fg_io.hxx"
+using std::atoi;
using std::string;
} else if ( protocol == "AV400" ) {
FGAV400 *av400 = new FGAV400;
io = av400;
+ } else if ( protocol == "AV400Sim" ) {
+ FGAV400Sim *av400sim = new FGAV400Sim;
+ io = av400sim;
} else if ( protocol == "garmin" ) {
FGGarmin *garmin = new FGGarmin;
io = garmin;
FGRUL *rul = new FGRUL;
io = rul;
} else if ( protocol == "generic" ) {
- int configToken;
- if (tokens[1] == "socket")
+ size_t configToken;
+ if (tokens[1] == "socket") {
configToken = 7;
- else if (tokens[1] == "file")
+ } else if (tokens[1] == "file") {
configToken = 5;
- else
+ } else {
configToken = 6;
- FGGeneric *generic = new FGGeneric( tokens[configToken] );
+ }
+
+ if (configToken >= tokens.size()) {
+ SG_LOG( SG_IO, SG_ALERT, "Not enough tokens passed for the generic protocol.");
+ return NULL;
+ }
+
+ FGGeneric *generic = new FGGeneric( tokens );
io = generic;
} else if ( protocol == "multiplay" ) {
if ( tokens.size() != 5 ) {
string baud = tokens[5];
SG_LOG( SG_IO, SG_INFO, " baud = " << baud );
+
SGSerial *ch = new SGSerial( device, baud );
io->set_io_channel( ch );
} else if ( medium == "file" ) {
string file = tokens[4];
SG_LOG( SG_IO, SG_INFO, " file name = " << file );
- bool repeat = false;
- if (tokens.size() >= 7 && tokens[6] == "repeat")
- repeat = true;
+ int repeat = 1;
+ if (tokens.size() >= 7 && tokens[6] == "repeat") {
+ if (tokens.size() >= 8) {
+ repeat = atoi(tokens[7].c_str());
+ FGGeneric* generic = dynamic_cast<FGGeneric*>(io);
+ if (generic)
+ generic->setExitOnError(true);
+ } else {
+ repeat = -1;
+ }
+ }
SGFile *ch = new SGFile( file, repeat );
io->set_io_channel( ch );
} else if ( medium == "socket" ) {
}
}
+void
+FGIO::reinit()
+{
+}
+
// process any IO channel work
void