1
0
Fork 0

detection for GPWS alert modes

This commit is contained in:
Inuyaksa 2021-02-24 23:00:46 +01:00
parent 42adeb85ed
commit ec429b8c83
2 changed files with 28 additions and 19 deletions

View file

@ -1,7 +1,13 @@
# See: http://wiki.flightgear.org/MapStructure
# Class things:
## Airbus Terrain on ND by InuYaksa*2021
## EGPWS device - Applicable to: MSN 0112
## Ident.: DSC-31-45-00009586.0012001 / 22 MAY 12
## Ident.: DSC-31-45-00009586.0009001 / 08 AUG 13
## inspired from work on 787-family - thanks a lots
## and a great help from legoboyvdlp
var name = 'TERRAIN';
var parents = [DotSym];
@ -13,13 +19,13 @@ var element_type = "group";
var terrain_minalt = props.globals.initNode("/instrumentation/efis[0]/nd/terrain-on-nd/min-altitude", 0,"INT");
var terrain_maxalt = props.globals.initNode("/instrumentation/efis[0]/nd/terrain-on-nd/max-altitude", -9999,"INT");
var terrain_alert = props.globals.initNode("/instrumentation/efis[0]/nd/terrain-on-nd/alert", 0,"INT");
var terrain_alert = props.globals.getNode("/instrumentation/mk-viii/outputs/alert-mode");
var tile_list = [
nil,"tile_gl.png","tile_gh.png","tile_al.png","tile_ah.png","tile_rh.png", # 0-5 low alt - imho real ND displays likely in amber color than yellow one
nil,"tile_gl.png","tile_gh.png","tile_al.png","tile_ah.png","tile_rh.png", # 0-5 low alt - imho real ND displays as amber-ish color than yellow one
"tile_gl.png","tile_gh.png","tile_gh.png","tile_gs.png", # 6-9 hi alt
"tile_ml.png","tile_cl.png", # 10 magenta - 11 cyan (water)
"tile_as.png","tile_rs.png" # 12-13 alert
"tile_ml.png","tile_cl.png", # 10 magenta - 11 cyan-ish/blue (water)
"tile_as.png","tile_rs.png" # 12-13 alert - solid colors
];
var is_terrain = 0;
@ -270,7 +276,7 @@ var init = func {
setlistener("/instrumentation/mk-viii/inputs/discretes/ta-tcf-inhibit", func{ # detect GPWS switch status
me.onfailure = getprop("/instrumentation/mk-viii/inputs/discretes/ta-tcf-inhibit");
},0,0);
},1,0);
};
@ -387,17 +393,4 @@ var draw = func {
}
};
## TODO - it doesnt work. listeners seem not to have trigged
#setlistener("instrumentation/mk-viii/outputs/discretes/gpws-warning", func { #warning - TERRAIN red - solid red
# me.terrain_alert.setValue( (getprop("instrumentation/mk-viii/outputs/discretes/gpws-warning") ) ? 2 : 0 );
# print("Terrain warning:" ~ getprop("instrumentation/mk-viii/outputs/discretes/gpws-warning"));
# print( me.terrain_alert.getValue() );
#});
#setlistener("instrumentation/mk-viii/outputs/discretes/gpws-alert", func { #caution - TERRAIN amber - solid yellow
# me.terrain_alert.setValue( (getprop("instrumentation/mk-viii/outputs/discretes/gpws-alert") ) ? 1 : 0 );
# print("Terrain alert:" ~ getprop("instrumentation/mk-viii/outputs/discretes/gpws-alert"));
# print( me.terrain_alert.getValue() );
#});
};

View file

@ -202,10 +202,12 @@ var systemsLoop = func(notification) {
# GPWS
var GPWS = {
inhibitNode: props.globals.getNode("/instrumentation/mk-viii/inputs/discretes/gpws-inhibit"),
tatcfInhibit: props.globals.getNode("/instrumentation/mk-viii/inputs/discretes/ta-tcf-inhibit"),
volume: props.globals.getNode("/instrumentation/mk-viii/speaker/volume"),
flapAllOverride: props.globals.getNode("/instrumentation/mk-viii/inputs/discretes/momentary-flap-all-override"),
flap3Override: props.globals.getNode("/instrumentation/mk-viii/inputs/discretes/momentary-flap-3-override"),
flapOverride: props.globals.getNode("/instrumentation/mk-viii/inputs/discretes/momentary-flap-override"),
alertMode: props.globals.initNode("/instrumentation/mk-viii/outputs/alert-mode",0,"INT"),
};
setlistener("/instrumentation/mk-viii/inputs/discretes/gpws-inhibit", func() {
@ -232,6 +234,20 @@ setlistener("/instrumentation/mk-viii/inputs/discretes/momentary-flap-3-override
updateGPWSFlap();
}, 0, 0);
# GPWS alert pooling for get mode change - a little esoteric way but it works
var gpws_alert_watch = maketimer(0.8,func {
var alert = 0;
if (getprop("instrumentation/mk-viii/outputs/discretes/gpws-warning")) alert = 2; # MODE2 - warning - RED
else if (getprop("instrumentation/mk-viii/outputs/discretes/gpws-alert")) alert = 1; # MODE1 - caution - YELLOW
if (GPWS.alertMode.getValue()!=alert) GPWS.alertMode.setValue(alert);
});
setlistener("/instrumentation/mk-viii/inputs/discretes/ta-tcf-inhibit", func{ # detect GPWS switch status
var failure = GPWS.tatcfInhibit.getBoolValue();
if (!failure) gpws_alert_watch.start();
else gpws_alert_watch.stop();
},1,0);
# Replay
var replayState = props.globals.getNode("/sim/replay/replay-state");
setlistener("/sim/replay/replay-state", func() {