From aa02e72829421c4f479401690767dabf4a455928 Mon Sep 17 00:00:00 2001
From: curt <curt>
Date: Thu, 19 Nov 1998 03:35:43 +0000
Subject: [PATCH] Updates ...

---
 Serial/serial.cxx     | 26 +++++++++++++++++++++-----
 Serial/testserial.cxx | 15 ++++++++++++++-
 2 files changed, 35 insertions(+), 6 deletions(-)

diff --git a/Serial/serial.cxx b/Serial/serial.cxx
index 0106e242c..9c9106b59 100644
--- a/Serial/serial.cxx
+++ b/Serial/serial.cxx
@@ -50,22 +50,37 @@ fgSERIAL::~fgSERIAL() {
 }
 
 bool fgSERIAL::open_port(const string& device) {
+    struct termios config;
+
     if ( (fd = open(device.c_str(), O_RDWR | O_NONBLOCK)) == -1 ) {
 	FG_LOG( FG_SERIAL, FG_ALERT, "Cannot open " << device
 		<< " for serial I/O" );
 	return false;
     } else {
 	dev_open = true;
-	return true;
     }
+
+    // set software flow control 
+    if ( tcgetattr( fd, &config ) != 0 ) {
+	FG_LOG( FG_SERIAL, FG_ALERT, "Unable to poll port settings" );
+	return false;
+    }
+
+    config.c_iflag |= IXON;
+    config.c_iflag |= IXOFF;
+
+    if ( tcsetattr( fd, TCSANOW, &config ) != 0 ) {
+	FG_LOG( FG_SERIAL, FG_ALERT, "Unable to update port settings" );
+	return false;
+    }
+
+    return true;
 }
 
 bool fgSERIAL::set_baud(int baud) {
     struct termios config;
     speed_t speed;
 
-    cout << "attempting to set baud rate to: " << baud << endl;
-
     if ( tcgetattr( fd, &config ) != 0 ) {
 	FG_LOG( FG_SERIAL, FG_ALERT, "Unable to poll port settings" );
 	return false;
@@ -111,8 +126,6 @@ bool fgSERIAL::set_baud(int baud) {
 	return false;
     }
 
-    cout << "successfully set baud to " << baud << endl;
-
     return true;
 }
 
@@ -157,6 +170,9 @@ int fgSERIAL::write_port(const string& value) {
 
 
 // $Log$
+// Revision 1.2  1998/11/19 03:35:43  curt
+// Updates ...
+//
 // Revision 1.1  1998/11/16 13:53:02  curt
 // Initial revision.
 //
diff --git a/Serial/testserial.cxx b/Serial/testserial.cxx
index b563ac76a..c582c13c3 100644
--- a/Serial/testserial.cxx
+++ b/Serial/testserial.cxx
@@ -1,10 +1,23 @@
 #include <string>
 
+#include <Debug/logstream.hxx>
+
 #include "serial.hxx"
 
 main () {
-    fgSERIAL port( "/dev/ttyS1", 4800);
+    fgSERIAL port;
     string value;
+    bool result;
+
+    fglog().setLogLevels( FG_ALL, FG_INFO );
+
+    cout << "start of main" << endl;
+
+    result = port.open_port("/dev/ttyS1");
+    cout << "opened port, result = " << result << endl;
+
+    result = port.set_baud(4800);
+    cout << "set baud, result = " << result << endl;
 
     port.write_port("ATDT 626-9800\n");