From 90b65247eb399c3574495f065c42d8031d8dd3ac Mon Sep 17 00:00:00 2001 From: Stuart Buchanan Date: Thu, 14 Feb 2019 22:29:01 +0000 Subject: [PATCH] FG1000: GFC700 ALTS/ALT vertical autopilot modes GFC700 now supports the Selected Altitude Capture (ALTS) and Altitude Hold (ALT) modes. ALTS is automatically armed in more vertical modes, and allows capture of whatever altitude is selected. --- .../FG1000/GFC700-vertical-FSM.xml | 89 +++++++++++++++++-- Aircraft/Instruments-3d/FG1000/GFC700.xml | 16 ++-- .../Instruments-3d/FG1000/Nasal/Commands.nas | 11 ++- 3 files changed, 96 insertions(+), 20 deletions(-) diff --git a/Aircraft/Instruments-3d/FG1000/GFC700-vertical-FSM.xml b/Aircraft/Instruments-3d/FG1000/GFC700-vertical-FSM.xml index af471c65a..e23eb7f03 100644 --- a/Aircraft/Instruments-3d/FG1000/GFC700-vertical-FSM.xml +++ b/Aircraft/Instruments-3d/FG1000/GFC700-vertical-FSM.xml @@ -157,17 +157,17 @@ ALTS Capture - + ALTS-ARM ALTS - /autopilot/internal/target-altitude-delta-ft - 500 + /autopilot/internal/ALTS-target-altitude-delta-ft + 200 - /autopilot/internal/target-altitude-delta-ft - -500 + /autopilot/internal/ALTS-target-altitude-delta-ft + -200 @@ -180,7 +180,7 @@ - setprop("/autopilot/settings/target-altitude-ft-2", getprop("/autopilot/settings/target-altitude-ft")); + setprop("/autopilot/settings/target-altitude-ft-2", getprop("/autopilot/settings/target-alt-ft")); setprop("/autopilot/annunciator/vertical-mode-target", sprintf("%ift", getprop("/autopilot/settings/target-altitude-ft-2")) ); @@ -218,10 +218,10 @@ ALTS-ARM - + /sim/time/elapsed-sec 0 - + @@ -275,6 +275,18 @@ + + VNV + + + + BC + + + + FLC + + OFF-PIT @@ -335,7 +347,7 @@ - VS + VS-ON VS true @@ -343,6 +355,9 @@ + + + GA @@ -371,4 +386,60 @@ + + + VS-OFF + VS + PIT + true + + /autopilot/vertical-mode-buttonVS + + + + + + ALT-OFF + ALT + PIT + true + + /autopilot/vertical-mode-buttonALT + + + + + + VNV-OFF + VNV + PIT + true + + /autopilot/vertical-mode-buttonVNV + + + + + + BC-OFF + BC + PIT + true + + /autopilot/vertical-mode-buttonBC + + + + + + FLC-OFF + FLC + PIT + true + + /autopilot/vertical-mode-buttonFLC + + + + diff --git a/Aircraft/Instruments-3d/FG1000/GFC700.xml b/Aircraft/Instruments-3d/FG1000/GFC700.xml index 251cfe0f0..b266e77e4 100644 --- a/Aircraft/Instruments-3d/FG1000/GFC700.xml +++ b/Aircraft/Instruments-3d/FG1000/GFC700.xml @@ -174,9 +174,9 @@ false gain - /autopilot/settings/target-altitude-ft + /autopilot/settings/target-alt-ft - /instrumentation/altimeter/indicated-altitude-ft-2 + /instrumentation/altimeter/indicated-altitude-ft -1.0 @@ -467,15 +467,15 @@ /autopilot/settings/target-pitch-deg - -0.01 + 0.1 1.0 0.1 0.0 - 10.0 + 1.0 0.00001 - -1.0 - 1.0 + -15.0 + 15.0 @@ -496,7 +496,7 @@ - /position/altitude-ft + /instrumentation/altimeter/indicated-altitude-ft /autopilot/settings/target-altitude-ft @@ -528,7 +528,7 @@ - /position/altitude-ft + /instrumentation/altimeter/indicated-altitude-ft /autopilot/settings/target-altitude-ft-2 diff --git a/Aircraft/Instruments-3d/FG1000/Nasal/Commands.nas b/Aircraft/Instruments-3d/FG1000/Nasal/Commands.nas index a1f79b6db..f454e1a1a 100644 --- a/Aircraft/Instruments-3d/FG1000/Nasal/Commands.nas +++ b/Aircraft/Instruments-3d/FG1000/Nasal/Commands.nas @@ -20,19 +20,24 @@ io.include("Constants.nas"); removecommand("FG1000HardKeyPushed"); addcommand("FG1000HardKeyPushed", func(node) { - var device = int(node.getNode("device", 1).getValue()); + var device = node.getNode("device", 1).getValue(); var name = node.getNode("notification",1).getValue(); # The knob animation stores the value as an offset property var value = node.getNode("offset", 1).getValue(); + if (name == nil) { + print("FG1000HardKeyPushed: No argument passed to fgcommand"); + return; + } + if (value == nil) { print("FG1000HardKeyPushed: No argument passed to fgcommand"); return; } if (device == nil) { - print("FG1000HardKeyPushed: Unknown device" ~ node.getNode("device").getValue()); + print("FG1000HardKeyPushed: No argument passed to fgcommand for " ~ name); return; } @@ -49,7 +54,7 @@ addcommand("FG1000HardKeyPushed", var notification = notifications.PFDEventNotification.new( "MFD", - device, + int(device), notifications.PFDEventNotification.HardKeyPushed, { Id: name, Value: value } );