Showing 5 changed files with 118 additions and 1 deletions
+5
Nasal/core.nas
... ...
@@ -83,6 +83,11 @@ var deviceClass = {
83 83
         var m = { parents: [ deviceClass ] };
84 84
         m.role = role;
85 85
         m.node = zkv.getNode(role, 1);
86
+        m.data = {};
87
+        foreach (var v; ['Vx', 'Vy', 'Vr', 'Vglide']) {
88
+            m.data[v] = alerts.getNode(v).getValue();
89
+            m.data[v ~ '-visible'] = 1;
90
+        }
86 91
         m.display  = displayClass.new(m, m.role);
87 92
         m.display.showInitProgress(m.role);
88 93
         m.softkeys = softkeysClass.new(m, m.node, m.role);
+11
Nasal/display.nas
... ...
@@ -114,6 +114,7 @@ var displayClass = {
114 114
                     'GSPD',
115 115
                     'BARO-bg',
116 116
                     'SlipSkid',
117
+                    'IAS-Vx', 'IAS-Vy', 'IAS-Vr', 'IAS-Vglide',
117 118
                 );
118 119
                 append(groups.hide,
119 120
                     'EIS',
... ...
@@ -531,6 +532,16 @@ var displayClass = {
531 532
             me.screenElements['IAS-bg']
532 533
                 .setColorFill(0,0,0);
533 534
         }
535
+        foreach (var v; ['Vx', 'Vy', 'Vr', 'Vglide']) {
536
+            if (me.device.data[v ~ '-visible'] and abs(me.device.data[v] - ias) < 30)
537
+                me.screenElements['IAS-' ~ v]
538
+                    .setTranslation(0, (ias - me.device.data[v]) * 5.711)
539
+                    .show();
540
+            else
541
+                me.screenElements['IAS-' ~ v]
542
+                    .hide();
543
+        }
544
+
534 545
         var now = systime();
535 546
         # estimated speed in 6s
536 547
         var Sy = 6 * (ias - me._last_ias_kt) / (now - me._last_ias_s);
+15 -1
README.md
... ...
@@ -71,6 +71,7 @@ Please report bug at <seb.marque@free.fr>.
71 71
   * Slipskid animation
72 72
   * Radio stack, including ID for NAV
73 73
   * windows management: selectable items ![][done], modifiable items ![][done], scrolling ![][done]
74
+  * display of V-speeds in ruler: Vx, Vy, Vr and Vglide (specific for aircraft, see installation instruction)
74 75
 * ![][90%]
75 76
   * Bearing needs some checks to be sure it shows the correct information
76 77
   * XPDR: emergency code depending of the country (eg.: 1200 for US, 7700 for Europe), should be set in settings
... ...
@@ -91,7 +92,6 @@ Please report bug at <seb.marque@free.fr>.
91 92
 * ![][0%] (TODO list, unsorted)
92 93
   * CDI/GPS: scale depending of the flight phase
93 94
   * some aircraft specific data to retrieve from aircraft XML files (VNE, etc)
94
-  * display of specific speeds in ruler
95 95
   * angle of attack display
96 96
   * Alerts
97 97
   * Flight planning (MFD)
... ...
@@ -117,6 +117,20 @@ In the `<nasal>` place of your aircraft configuration
117 117
 
118 118
 Actually this is where everything begins, please have a look at this code, it would help you to follow the script.
119 119
 
120
+## Set specific values for your aircraft
121
+Specifics values for aircraft can be set via the aircraft configuration, in the `<instrumentation>` section, just add a section `<zkv1000>` and set here the needed values.
122
+
123
+### Vspeeds
124
+To see the Vspeeds bugs, set the corresponding V-speeds in knots by adding in your `<instrumentation><zkv1000>` section the following lines (here are the numbers for the Lancair-235, ![](https://upload.wikimedia.org/wikipedia/commons/thumb/1/12/Achtung-orange.svg/32px-Achtung-orange.svg.png) values are not to be used in real life).
125
+If not set, defaults to 999 knots
126
+
127
+        <alerts>
128
+          <Vx>99</Vx>
129
+          <Vy>110</Vy>
130
+          <Vr>65</Vr>
131
+          <Vglide>80</Vglide>
132
+        </alerts>
133
+
120 134
 ## 3D models
121 135
 In the definition of your flightdeck (here are the values for the installation in the Lancair 235 in which I develop the device)
122 136
 put it everywhere you want to
+79
Systems/screen.svg
... ...
@@ -4152,6 +4152,85 @@
4152 4152
              id="tspan6681-2-0-7-2"
4153 4153
              sodipodi:role="line">110</tspan></text>
4154 4154
       </g>
4155
+      <g
4156
+         style="display:inline"
4157
+         id="IAS-Vglide"
4158
+         inkscape:label="IAS-Vglide">
4159
+        <path
4160
+           inkscape:connector-curvature="0"
4161
+           id="path5945-6-5-1"
4162
+           d="m 240,284.52756 7.1477,-7.1477 h 7.55334 v 14.87397 h -7.32064 z"
4163
+           style="fill:#ff00ff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
4164
+        <text
4165
+           id="text5949-7-6-2"
4166
+           y="289.44748"
4167
+           x="245.35812"
4168
+           style="font-style:normal;font-weight:normal;font-size:13.33333397px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
4169
+           xml:space="preserve"><tspan
4170
+             y="289.44748"
4171
+             x="245.35812"
4172
+             id="tspan5947-5-2-7"
4173
+             sodipodi:role="line">G</tspan></text>
4174
+      </g>
4175
+      <g
4176
+         style="display:inline"
4177
+         id="IAS-Vr"
4178
+         inkscape:label="IAS-Vr">
4179
+        <path
4180
+           inkscape:connector-curvature="0"
4181
+           id="path5945-6-5"
4182
+           d="m 240,284.52756 7.1477,-7.1477 h 7.55334 v 14.87397 h -7.32064 z"
4183
+           style="fill:#ff00ff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
4184
+        <text
4185
+           id="text5949-7-6"
4186
+           y="289.44748"
4187
+           x="245.35812"
4188
+           style="font-style:normal;font-weight:normal;font-size:13.33333397px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
4189
+           xml:space="preserve"><tspan
4190
+             y="289.44748"
4191
+             x="245.35812"
4192
+             id="tspan5947-5-2"
4193
+             sodipodi:role="line">R</tspan></text>
4194
+      </g>
4195
+      <g
4196
+         style="display:inline"
4197
+         id="IAS-Vy"
4198
+         inkscape:label="IAS-Vy">
4199
+        <path
4200
+           inkscape:connector-curvature="0"
4201
+           id="path5945-6"
4202
+           d="m 240,284.52756 7.1477,-7.1477 h 7.55334 v 14.87397 h -7.32064 z"
4203
+           style="fill:#ff00ff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
4204
+        <text
4205
+           id="text5949-7"
4206
+           y="289.44748"
4207
+           x="245.35812"
4208
+           style="font-style:normal;font-weight:normal;font-size:13.33333397px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
4209
+           xml:space="preserve"><tspan
4210
+             y="289.44748"
4211
+             x="245.35812"
4212
+             id="tspan5947-5"
4213
+             sodipodi:role="line">Y</tspan></text>
4214
+      </g>
4215
+      <g
4216
+         id="IAS-Vx"
4217
+         inkscape:label="IAS-Vx">
4218
+        <path
4219
+           inkscape:connector-curvature="0"
4220
+           id="path5945"
4221
+           d="m 240,284.52756 7.1477,-7.1477 h 7.55334 v 14.87397 h -7.32064 z"
4222
+           style="fill:#ff00ff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
4223
+        <text
4224
+           id="text5949"
4225
+           y="289.44748"
4226
+           x="245.35812"
4227
+           style="font-style:normal;font-weight:normal;font-size:13.33333397px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
4228
+           xml:space="preserve"><tspan
4229
+             y="289.44748"
4230
+             x="245.35812"
4231
+             id="tspan5947"
4232
+             sodipodi:role="line">X</tspan></text>
4233
+      </g>
4155 4234
       <g
4156 4235
          id="VSI">
4157 4236
         <path
+8
zkv1000.nas
... ...
@@ -58,6 +58,14 @@ var init_props = func {
58 58
     alerts.getNode('warning', 1).setBoolValue(0);
59 59
     alerts.getNode('alert', 1).setBoolValue(0);
60 60
     alerts.getNode('message', 1).setValue('');
61
+    var v = getprop('/instrumentation/zkv1000/alerts/Vx');
62
+    alerts.getNode('Vx', 1).setIntValue(v != nil ? v : 999);
63
+    v = getprop('/instrumentation/zkv1000/alerts/Vy');
64
+    alerts.getNode('Vy', 1).setIntValue(v != nil ? v : 999);
65
+    v = getprop('/instrumentation/zkv1000/alerts/Vr');
66
+    alerts.getNode('Vr', 1).setIntValue(v != nil ? v : 999);
67
+    v = getprop('/instrumentation/zkv1000/alerts/Vglide');
68
+    alerts.getNode('Vglide', 1).setIntValue(v != nil ? v : 999);
61 69
 
62 70
     afcs = zkv.getNode('afcs',1);
63 71
     afcs.getNode('fd-bars-visible',1).setBoolValue(0);