... | ... |
@@ -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); |
... | ... |
@@ -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); |
... | ... |
@@ -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 |
... | ... |
@@ -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 |
... | ... |
@@ -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); |