flightgear/scripts/perl/examples/reset.pl

80 lines
2.0 KiB
Perl
Raw Normal View History

2022-10-20 20:29:11 +08:00
#!/usr/bin/perl
require "telnet.pl";
use strict;
my( $airport_id ) = "KSNA";
my( $rwy_no ) = "19R";
my( $reset_sec ) = 300;
my( $server ) = "localhost";
my( $port ) = 5401;
my( $timeout ) = 5;
while ( 1 ) {
print "Reseting to $airport_id $rwy_no\n";
reset_position( $airport_id, $rwy_no );
sleep( $reset_sec );
}
sub reset_position {
my( $aptid ) = shift;
my( $rwy ) = shift;
my( $prop, $value );
my( %HASH ) = ();
$HASH{ "/sim/presets/airport-id" } = $aptid;
$HASH{ "/sim/presets/runway" } = $rwy;
$HASH{ "/sim/presets/vor-id" } = "";
$HASH{ "/sim/presets/vor-freq" } = "";
$HASH{ "/sim/presets/ndb-id" } = "";
$HASH{ "/sim/presets/ndb-freq" } = "";
$HASH{ "/sim/presets/fix" } = "";
$HASH{ "/sim/presets/longitude-deg" } = "-9999.0";
$HASH{ "/sim/presets/latitude-deg" } = "-9999.0";
$HASH{ "/sim/presets/offset-distance" } = "";
$HASH{ "/sim/presets/offset-azimuth" } = "";
$HASH{ "/sim/presets/heading-deg" } = "-9999.0";
$HASH{ "/sim/presets/altitude-ft" } = "";
$HASH{ "/sim/presets/glideslope-deg" } = "";
$HASH{ "/sim/presets/airspeed-kt" } = "";
my( $fgfs );
if ( !( $fgfs = &connect($server, $port, $timeout) ) ) {
print "Error: can't open socket\n";
return;
}
&send( $fgfs, "data" ); # switch to raw data mode
foreach $prop ( keys(%HASH) ) {
$value = $HASH{$prop};
# if ( $value eq "" ) {
# $value = 0;
# }
print "setting $prop = $value\n";
&set_prop( $fgfs, $prop, $value );
}
&send( $fgfs, "run presets-commit" );
# set time of day to noon
&send( $fgfs, "run timeofday noon" );
# start the engine
&set_prop( $fgfs, "/controls/engines/engine[0]/magnetos", "3" );
&set_prop( $fgfs, "/controls/engines/engine[0]/starter", "true" );
sleep(2);
&set_prop( $fgfs, "/controls/engines/engine[0]/starter", "false" );
&send( $fgfs, "quit" );
close $fgfs;
}