]> git.mxchange.org Git - flightgear.git/blob - scripts/perl/examples/environment.pl
Fix my mailing address by replacing it with my web page.
[flightgear.git] / scripts / perl / examples / environment.pl
1 #!/usr/bin/perl
2 #
3 # environment.pl - Handle environment setup
4 #
5 # Written by Curtis L. Olson, started January 2004
6 #
7 # Copyright (C) 2004  Curtis L. Olson - http://www.flightgear.org/~curt
8 #
9 # This code is placed in the public domain by Curtis L. Olson.
10 # There is no warranty, etc. etc. etc.
11 #
12 # $Id$
13 # ----------------------------------------------------------------------------
14
15
16 require "telnet.pl";
17
18 use strict;
19
20
21 sub set_timeofday {
22     my( $fgfs ) = shift;
23     my( $timeofday ) = shift;
24
25     &send( $fgfs, "run timeofday $timeofday" );
26 }
27
28
29 sub set_env_layer {
30     my( $fgfs ) = shift;
31     my( $layer_type ) = shift;  # boundary or aloft
32     my( $layer_num ) = shift;
33     my( $wind_hdg_deg ) = shift;
34     my( $wind_spd_kt ) = shift;
35     my( $turb_norm ) = shift;
36     my( $temp_degc ) = shift;
37     my( $press_inhg ) = shift;
38     my( $dew_degc ) = shift;
39     my( $vis ) = shift;
40     my( $elevation ) = shift;
41
42     my( $prop, $value );
43     my( %HASH ) = ();
44
45     my( $prefix ) = "/environment/config/$layer_type/entry[$layer_num]";
46     $HASH{ "$prefix/wind-from-heading-deg" } = $wind_hdg_deg;
47     $HASH{ "$prefix/wind-speed-kt" } = $wind_spd_kt;
48     $HASH{ "$prefix/turbulence/magnitude-norm" } = $turb_norm;
49     $HASH{ "$prefix/temperature-degc" } = $temp_degc;
50     $HASH{ "$prefix/pressure-sea-level-inhg" } = $press_inhg;
51     $HASH{ "$prefix/dewpoint-degc" } = $dew_degc;
52     $HASH{ "$prefix/visibility-m" } = $vis;
53     $HASH{ "$prefix/elevation-ft" } = $elevation;
54
55     foreach $prop ( keys(%HASH) ) {
56         $value = $HASH{$prop};
57         # print "setting $prop = $value\n";
58         &set_prop( $fgfs, $prop, $value );
59     }
60 }
61
62
63 sub set_oat {
64     my( $fgfs ) = shift;
65     my( $oat ) = shift;
66
67     # set the outside air temperature (simply)
68     &send( $fgfs, "run set-outside-air-temp-degc $oat" );
69 }
70
71
72 sub set_pressure {
73     my( $fgfs ) = shift;
74     my( $pressure_inhg ) = shift;
75
76     my( $layer_type ) = shift;  # boundary or aloft
77     my( $layer_num ) = shift;
78     my( $wind_hdg_deg ) = shift;
79     my( $wind_spd_kt ) = shift;
80     my( $turb_norm ) = shift;
81     my( $temp_degc ) = shift;
82     my( $press_inhg ) = shift;
83     my( $dew_degc ) = shift;
84     my( $vis ) = shift;
85     my( $elevation ) = shift;
86
87     my( $prop, $value );
88     my( %HASH ) = ();
89
90     my( $i );
91
92     for ( $i = 0; $i < 3; ++$i ) {
93         my( $prefix ) = "/environment/config/boundary/entry[$i]";
94         $HASH{ "$prefix/pressure-sea-level-inhg" } = $pressure_inhg;
95     }
96
97     for ( $i = 0; $i < 5; ++$i ) {
98         my( $prefix ) = "/environment/config/aloft/entry[$i]";
99         $HASH{ "$prefix/pressure-sea-level-inhg" } = $pressure_inhg;
100     }
101
102     foreach $prop ( keys(%HASH) ) {
103         $value = $HASH{$prop};
104         # print "setting $prop = $value\n";
105         &set_prop( $fgfs, $prop, $value );
106     }
107 }
108
109
110 sub set_cloud_layer {
111     my( $fgfs ) = shift;
112     my( $layer ) = shift;
113     my( $coverage ) = shift;
114     my( $elevation_ft ) = shift;
115     my( $thickness_ft ) = shift;
116     my( $transition_ft ) = shift;
117
118     my( $prop, $value );
119     my( %HASH ) = ();
120
121     $HASH{ "/environment/clouds/layer[$layer]/coverage" } = $coverage;
122     $HASH{ "/environment/clouds/layer[$layer]/elevation-ft" } = $elevation_ft;
123     $HASH{ "/environment/clouds/layer[$layer]/thickness-ft" } = $thickness_ft;
124     $HASH{ "/environment/clouds/layer[$layer]/transition-ft" } = $transition_ft;
125
126     foreach $prop ( keys(%HASH) ) {
127         $value = $HASH{$prop};
128         # print "setting $prop = $value\n";
129         &set_prop( $fgfs, $prop, $value );
130     }
131 }
132
133
134 sub reinit_environment() {
135     my( $fgfs ) = shift;
136
137     &send( $fgfs, "run reinit environment" );
138 }