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__ )
/////////////////////////////////////////////////////////////////////
SG_LOG( SG_IO, SG_ALERT,
- "Done initializing ATC hardware." );
+ "Done initializing ATC input hardware." );
is_open = true;
#if defined( unix ) || defined( __CYGWIN__ )
+ if ( !is_open ) {
+ return true;
+ }
+
int result;
result = ::close( analog_in_fd );
// 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 ) {
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();
}
}
// 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 );
{ }
~FGATCMain() {
+ cout << "FGATCMain destructor" << endl;
delete input0;
delete input1;
delete output0;
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__ )
/////////////////////////////////////////////////////////////////////
SG_LOG( SG_IO, SG_ALERT,
- "Done initializing ATC hardware." );
+ "Done initializing ATC output hardware." );
is_open = true;
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();
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();
#if defined( unix ) || defined( __CYGWIN__ )
+ if ( !is_open ) {
+ return true;
+ }
+
int result;
result = ::close( lamps_fd );