#!/usr/bin/perl # # autopilot.pl - Handle autopilot functions # # Written by Curtis L. Olson, started January 2004 # # Copyright (C) 2004 Curtis L. Olson - curt@flightgear.org # # This code is placed in the public domain by Curtis L. Olson. # There is no warranty, etc. etc. etc. # # $Id$ # ---------------------------------------------------------------------------- require "telnet.pl"; use strict; sub autopilot_off { my( $fgfs ) = shift; &set_prop( $fgfs, "/autopilot/locks/heading", "" ); &set_prop( $fgfs, "/autopilot/locks/altitude", "" ); &set_prop( $fgfs, "/autopilot/locks/speed", "" ); } sub wing_leveler { my( $fgfs ) = shift; my( $state ) = shift; if ( $state ) { &set_prop( $fgfs, "/autopilot/locks/heading", "wing-leveler" ); } else { &set_prop( $fgfs, "/autopilot/locks/heading", "" ); } } sub bank_hold { my( $fgfs ) = shift; my( $state ) = shift; my( $bank_deg ) = shift; if ( $state ) { &set_prop( $fgfs, "/autopilot/locks/heading", "bank-hold" ); &set_prop( $fgfs, "/autopilot/settings/target-bank-deg", $bank_deg ); } else { &set_prop( $fgfs, "/autopilot/locks/heading", "" ); } } sub heading_hold { my( $fgfs ) = shift; my( $state ) = shift; my( $hdg_deg ) = shift; if ( $state ) { &set_prop( $fgfs, "/autopilot/locks/heading", "dg-heading-hold" ); &set_prop( $fgfs, "/autopilot/settings/heading-bug-deg", $hdg_deg ); } else { &set_prop( $fgfs, "/autopilot/locks/heading", "" ); } } sub pitch_hold_trim { my( $fgfs ) = shift; my( $state ) = shift; my( $pitch_deg ) = shift; if ( $state ) { &set_prop( $fgfs, "/autopilot/locks/altitude", "pitch-hold" ); &set_prop( $fgfs, "/autopilot/settings/target-pitch-deg", $pitch_deg ); } else { &set_prop( $fgfs, "/autopilot/locks/altitude", "" ); } } sub pitch_hold_yoke { my( $fgfs ) = shift; my( $state ) = shift; my( $pitch_deg ) = shift; if ( $state ) { &set_prop( $fgfs, "/autopilot/locks/altitude", "pitch-hold-yoke" ); &set_prop( $fgfs, "/autopilot/settings/target-pitch-deg", $pitch_deg ); } else { &set_prop( $fgfs, "/autopilot/locks/altitude", "" ); } } sub altitude_hold { my( $fgfs ) = shift; my( $state ) = shift; my( $alt_ft ) = shift; if ( $state ) { &set_prop( $fgfs, "/autopilot/locks/altitude", "altitude-hold" ); &set_prop( $fgfs, "/autopilot/settings/target-altitude-ft", $alt_ft ); } else { &set_prop( $fgfs, "/autopilot/locks/altitude", "" ); } } sub auto_speed_throttle { my( $fgfs ) = shift; my( $state ) = shift; my( $kts ) = shift; if ( $state ) { &set_prop( $fgfs, "/autopilot/locks/speed", "speed-with-throttle" ); &set_prop( $fgfs, "/autopilot/settings/target-speed-kt", $kts ); } else { &set_prop( $fgfs, "/autopilot/locks/speed", "" ); } } sub auto_speed_pitch_trim { my( $fgfs ) = shift; my( $state ) = shift; my( $kts ) = shift; if ( $state ) { &set_prop( $fgfs, "/autopilot/locks/speed", "speed-with-pitch-trim" ); &set_prop( $fgfs, "/autopilot/settings/target-speed-kt", $kts ); } else { &set_prop( $fgfs, "/autopilot/locks/speed", "" ); } } sub auto_speed_pitch_yoke { my( $fgfs ) = shift; my( $state ) = shift; my( $kts ) = shift; if ( $state ) { &set_prop( $fgfs, "/autopilot/locks/speed", "speed-with-pitch-yoke" ); &set_prop( $fgfs, "/autopilot/settings/target-speed-kt", $kts ); } else { &set_prop( $fgfs, "/autopilot/locks/speed", "" ); } }