]> git.mxchange.org Git - flightgear.git/commitdiff
Various tweaks to ATC Flight Sim hardware inputs/outputs.
authorcurt <curt>
Thu, 30 Dec 2004 14:57:58 +0000 (14:57 +0000)
committercurt <curt>
Thu, 30 Dec 2004 14:57:58 +0000 (14:57 +0000)
src/Network/ATC-Inputs.cxx
src/Network/ATC-Main.cxx
src/Network/ATC-Main.hxx
src/Network/ATC-Outputs.cxx

index 16817743e2c076a41a1ae637c5e9d7c74a4764c1..d8e6a551e7d60236bcd83f3955d27e7fe7f8479d 100644 (file)
@@ -136,11 +136,14 @@ bool FGATCInput::open() {
     init_config();
 
     SG_LOG( SG_IO, SG_ALERT,
-           "Initializing ATC hardware, please wait ..." );
+           "Initializing ATC input hardware, please wait ..." );
 
-    snprintf( analog_in_file, 256, "/proc/atc610x/board%d/analog_in", board );
-    snprintf( radios_file, 256, "/proc/atc610x/board%d/radios", board );
-    snprintf( switches_file, 256, "/proc/atc610x/board%d/switches", board );
+    snprintf( analog_in_file, 256,
+              "/proc/atcflightsim/board%d/analog_in", board );
+    snprintf( radios_file, 256,
+              "/proc/atcflightsim/board%d/radios", board );
+    snprintf( switches_file, 256,
+              "/proc/atcflightsim/board%d/switches", board );
 
 #if defined( unix ) || defined( __CYGWIN__ )
 
@@ -182,7 +185,7 @@ bool FGATCInput::open() {
     /////////////////////////////////////////////////////////////////////
 
     SG_LOG( SG_IO, SG_ALERT,
-           "Done initializing ATC hardware." );
+           "Done initializing ATC input hardware." );
 
     is_open = true;
 
@@ -859,6 +862,10 @@ bool FGATCInput::close() {
 
 #if defined( unix ) || defined( __CYGWIN__ )
 
+    if ( !is_open ) {
+        return true;
+    }
+
     int result;
 
     result = ::close( analog_in_fd );
index 45f491d363f52ca13eeb7295907806f1dfeb77d9..e291bb22b216934c04fe959cbc057388681b6247 100644 (file)
@@ -118,8 +118,8 @@ bool FGATCMain::open() {
     // Open the /proc files
     /////////////////////////////////////////////////////////////////////
 
-    string lock0_file = "/proc/atc610x/board0/lock";
-    string lock1_file = "/proc/atc610x/board1/lock";
+    string lock0_file = "/proc/atcflightsim/board0/lock";
+    string lock1_file = "/proc/atcflightsim/board1/lock";
 
     lock0_fd = ::open( lock0_file.c_str(), O_RDWR );
     if ( lock0_fd == -1 ) {
@@ -171,21 +171,35 @@ bool FGATCMain::open() {
 
 
 bool FGATCMain::process() {
-    // Lock the hardware, skip if it's not ready yet
-    if ( fgATCMainLock( lock0_fd ) <= 0 ) {
-        return false;
+    // cout << "Main::process()\n";
+
+    bool board0_locked = false;
+    bool board1_locked = false;
+
+    if ( input0 != NULL || output0 != NULL ) {
+        // Lock board0 if we have a configuration for it
+        if ( fgATCMainLock( lock0_fd ) > 0 ) {
+            board0_locked = true;
+        }
     }
-    if ( fgATCMainLock( lock1_fd ) <= 0 ) {
-        // lock0 will be locked here, so release before we return
-       fgATCMainRelease( lock0_fd );
-        return false;
+
+    if ( input1 != NULL || output1 != NULL ) {
+        // Lock board1 if we have a configuration for it
+        if ( fgATCMainLock( lock1_fd ) > 0 ) {
+            board1_locked = true;
+        }
     }
 
+    // cout << "  locks: ";
+    // if ( board0_locked ) { cout << "board0 "; }
+    // if ( board1_locked ) { cout << "board1 "; }
+    // cout << endl;
+
     // process the ATC inputs
-    if ( input0 != NULL ) {
+    if ( input0 != NULL && board0_locked ) {
         input0->process();
     }
-    if ( input1 != NULL ) {
+    if ( input1 != NULL && board1_locked ) {
         input1->process();
     }
 
@@ -204,23 +218,42 @@ bool FGATCMain::process() {
     }
 
     // process the ATC outputs
-    if ( output0 != NULL ) {
+    if ( output0 != NULL && board0_locked ) {
         output0->process();
     }
-    if ( output1 != NULL ) {
+    if ( output1 != NULL && board1_locked ) {
         output1->process();
     }
 
-    fgATCMainRelease( lock0_fd );
-    fgATCMainRelease( lock1_fd );
+    if ( board0_locked ) {
+        fgATCMainRelease( lock0_fd );
+    }
+    if ( board1_locked ) {
+        fgATCMainRelease( lock1_fd );
+    }
 
     return true;
 }
 
 
 bool FGATCMain::close() {
+    cout << "FGATCMain::close()" << endl;
+
     int result;
 
+    if ( input0 != NULL ) {
+        input0->close();
+    }
+    if ( input1 != NULL ) {
+        input1->close();
+    }
+    if ( output0 != NULL ) {
+        output0->close();
+    }
+    if ( output1 != NULL ) {
+        output1->close();
+    }
+
     result = ::close( lock0_fd );
     if ( result == -1 ) {
        SG_LOG( SG_IO, SG_ALERT, "errno = " << errno );
index b6f4598a959f323970f521d7d8d34c373985bfd9..538a56dc09195db0d98369fef756916b4c468ddf 100644 (file)
@@ -69,6 +69,7 @@ public:
     { }
 
     ~FGATCMain() {
+        cout << "FGATCMain destructor" << endl;
         delete input0;
         delete input1;
         delete output0;
index b73637f80715bec4eed61facf342e4e75c370df2..29ae37f05239bf3cab35017fbadf1269aad55386 100644 (file)
@@ -201,11 +201,14 @@ bool FGATCOutput::open( int lock_fd ) {
     init_config();
 
     SG_LOG( SG_IO, SG_ALERT,
-           "Initializing ATC hardware, please wait ..." );
+           "Initializing ATC output hardware, please wait ..." );
 
-    snprintf( lamps_file, 256, "/proc/atc610x/board%d/lamps", board );
-    snprintf( radio_display_file, 256, "/proc/atc610x/board%d/radios", board );
-    snprintf( stepper_file, 256, "/proc/atc610x/board%d/steppers", board );
+    snprintf( lamps_file, 256,
+              "/proc/atcflightsim/board%d/lamps", board );
+    snprintf( radio_display_file, 256,
+              "/proc/atcflightsim/board%d/radios", board );
+    snprintf( stepper_file, 256,
+              "/proc/atcflightsim/board%d/steppers", board );
 
 #if defined( unix ) || defined( __CYGWIN__ )
 
@@ -327,7 +330,7 @@ bool FGATCOutput::open( int lock_fd ) {
     /////////////////////////////////////////////////////////////////////
 
     SG_LOG( SG_IO, SG_ALERT,
-           "Done initializing ATC hardware." );
+           "Done initializing ATC output hardware." );
 
     is_open = true;
 
@@ -402,7 +405,7 @@ static bool navcom1_has_power() {
     static SGPropertyNode *navcom1_bus_power
         = fgGetNode( "/systems/electrical/outputs/nav[0]", true );
     static SGPropertyNode *navcom1_power_btn
-        = fgGetNode( "/instrumentation/comm[0]/inputs/power-btn", true );
+        = fgGetNode( "/instrumentation/nav[0]/power-btn", true );
 
     return (navcom1_bus_power->getDoubleValue() > 1.0)
         && navcom1_power_btn->getBoolValue();
@@ -412,7 +415,7 @@ static bool navcom2_has_power() {
     static SGPropertyNode *navcom2_bus_power
         = fgGetNode( "/systems/electrical/outputs/nav[1]", true );
     static SGPropertyNode *navcom2_power_btn
-        = fgGetNode( "/instrumentation/comm[1]/inputs/power-btn", true );
+        = fgGetNode( "/instrumentation/nav[1]/power-btn", true );
 
     return (navcom2_bus_power->getDoubleValue() > 1.0)
         && navcom2_power_btn->getBoolValue();
@@ -915,6 +918,10 @@ bool FGATCOutput::close() {
 
 #if defined( unix ) || defined( __CYGWIN__ )
 
+    if ( !is_open ) {
+        return true;
+    }
+
     int result;
 
     result = ::close( lamps_fd );