Showing 10 changed files with 1291 additions and 45 deletions
+15 -4
Models/header-nav-comm.svg
... ...
@@ -24,8 +24,8 @@
24 24
      inkscape:pageopacity="0.0"
25 25
      inkscape:pageshadow="2"
26 26
      inkscape:zoom="1.4142136"
27
-     inkscape:cx="510.72149"
28
-     inkscape:cy="555.21759"
27
+     inkscape:cx="383.08872"
28
+     inkscape:cy="552.38916"
29 29
      inkscape:document-units="px"
30 30
      inkscape:current-layer="PFD-navbox"
31 31
      showgrid="false"
... ...
@@ -422,8 +422,8 @@
422 422
          xml:space="preserve"><tspan
423 423
            sodipodi:role="line"
424 424
            id="tspan102"
425
-           x="504.70834"
426
-           y="40.998669"></tspan></text>
425
+           x="350.70834"
426
+           y="13.998669" /></text>
427 427
       <text
428 428
          inkscape:label="DIS"
429 429
          id="DIS"
... ...
@@ -469,6 +469,17 @@
469 469
            x="681.65094"
470 470
            id="tspan4569"
471 471
            sodipodi:role="line">--:--</tspan></text>
472
+      <text
473
+         xml:space="preserve"
474
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:21.33333397px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ff00ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
475
+         x="267.12048"
476
+         y="22.123667"
477
+         id="AP-text"
478
+         inkscape:label="AP-text"><tspan
479
+           sodipodi:role="line"
480
+           id="tspan100"
481
+           x="267.12048"
482
+           y="42.998669"></tspan></text>
472 483
     </g>
473 484
     <g
474 485
        id="MFD-navbox"
+71
Nasal/afcs.nas
... ...
@@ -0,0 +1,71 @@
1
+var APClass = {
2
+    new : func {
3
+        var m = { parents: [ APClass ] };
4
+
5
+        m.system = 'none';
6
+        var ap_systems = { # described AP systems to search, if it returns true system is set
7
+        };
8
+        foreach (var s; sort(keys(ap_systems), func(a,b) cmp(a,b))) {
9
+            call(ap_systems[s], [], nil, nil, var errors = []);
10
+            if (!size(errors)) {
11
+                msg('found autopilot system: ' ~ s);
12
+                m.system = s;
13
+                break;
14
+            }
15
+        }
16
+        ap_systems = nil;
17
+
18
+        m.engaged = 0;
19
+
20
+        if (! contains(data.timers, 'updateAP')) {
21
+            data.timers.updateAP = maketimer(1, m, m.systems[m.system].updateDisplay);
22
+            data.timers.updateAP.start();
23
+        }
24
+
25
+        if (! contains(data.timers, 'AP_blinking')) {
26
+            data.timers.AP_blinking = maketimer(0, m,  m._blinking);
27
+            data.timers.AP_blinking.singleShot = 1;
28
+        }
29
+
30
+        if (contains(m.systems[m.system], 'hook') and typeof(m.systems[m.system].hook) == 'func')
31
+                m.systems[m.system].hook();
32
+
33
+        return m;
34
+    },
35
+    softkey: func (side, row, a) {
36
+        if (a == 0 or me._locked)
37
+            return;
38
+        var _system = me.systems[me.system];
39
+        var _side = _system[side];
40
+        _side[row]();
41
+    },
42
+    _locked: 0, # no status modification while blinking, is it really useful ?
43
+    _blinking: func {
44
+        autopilot._locked += 1;
45
+        var _display = flightdeck['PFD'].display;
46
+        var i = math.mod(autopilot._locked, 2);
47
+        var delays = [ 0.7, 0.3 ];
48
+
49
+        _display.screenElements['AP-text'].setVisible(i);
50
+        
51
+        if (autopilot._locked < 11)
52
+            data.timers.AP_blinking.restart(delays[i]);
53
+        else {
54
+            autopilot._locked = 0;
55
+            data.timers.AP_blinking.stop();
56
+            _display.screenElements['AP-text']
57
+                .setVisible(1)
58
+                .setText('');
59
+        }
60
+    },
61
+    systems : {
62
+        # L: AP FD  NAV ALT VS FLC
63
+        # R: YD HDG APR VNV UP DN
64
+        none: {
65
+            updateDisplay: func,
66
+            hook: func,
67
+            L: [ func, func, func, func, func, func ],
68
+            R: [ func, func, func, func, func, func ],
69
+        },
70
+    }
71
+};
+2
Nasal/core.nas
... ...
@@ -173,6 +173,8 @@ var powerOn = func {
173 173
     foreach (var freq; keys(data.timers))
174 174
         data.timers[freq].start();
175 175
 
176
+    autopilot = APClass.new();
177
+
176 178
     foreach (var name; keys(flightdeck))
177 179
         if (zkv.getNode(name) != nil)
178 180
 #            thread.newthread(func {
+5 -1
Nasal/display.nas
... ...
@@ -137,7 +137,7 @@ var displayClass = {
137 137
                     'WindData-OPTN1-HDG-text', 'WindData-OPTN1-SPD-text',
138 138
                     'WindData-OPTN2-crosswind-text', 'WindData-OPTN2-headwind-text',
139 139
                     'XPDR-MODE-text', 'XPDR-DIGIT-3-text', 'XPDR-DIGIT-2-text', 'XPDR-DIGIT-1-text', 'XPDR-DIGIT-0-text',
140
-                    'ETE', 'ETE-text', 'DIS', 'DIS-text', 'LEG-text',
140
+                    'AP-text', 'ETE', 'ETE-text', 'DIS', 'DIS-text', 'LEG-text',
141 141
                     'AltBigC', 'AltSmallC'
142 142
 # }}}
143 143
                 );
... ...
@@ -403,6 +403,10 @@ var displayClass = {
403 403
         'LEG-text' : {
404 404
             alignment : 'center-center',
405 405
         },
406
+        'AP-text' : {
407
+            alignment : 'left-center',
408
+            color : [0, 1, 1],
409
+        },
406 410
 #        'TAS-text' : {
407 411
 #            alignment : 'right-bottom',
408 412
 #        },
+1
README.md
... ...
@@ -87,6 +87,7 @@ Please report bug at <zkv1000@seb.lautre.net>.
87 87
   * Bearing needs some checks to be sure it shows the correct information
88 88
   * XPDR: emergency code depending of the country (eg.: 1200 for US, 7700 for Europe), should be set in settings
89 89
   * use of [maketimer()](http://wiki.flightgear.org/Nasal_library#maketimer.28.29) instead of [settimer()](http://wiki.flightgear.org/Nasal_library#settimer.28.29) when possible
90
+  * AFCS capabilities
90 91
 * ![][80%]
91 92
   * route displayed on map: legs ![][done], current and next leg ![][done], TOC/TOD ![][ongoing], OBS ![][ongoing]
92 93
 * ![][70%]
+288
mfd.xml
... ...
@@ -1195,4 +1195,292 @@
1195 1195
     </action>
1196 1196
   </animation>
1197 1197
 
1198
+  <animation>
1199
+    <type>pick</type>
1200
+    <object-name>AP.L0</object-name>
1201
+    <action>
1202
+      <button>0</button>
1203
+      <binding>
1204
+        <condition>
1205
+          <property>/instrumentation/zkv1000/MFD/status</property>
1206
+        </condition>
1207
+       <command>nasal</command>
1208
+       <script>zkv1000.autopilot.softkey('L', 0, 1);</script>
1209
+      </binding>
1210
+      <mod-up>
1211
+        <binding>
1212
+          <condition>
1213
+            <property>/instrumentation/zkv1000/MFD/status</property>
1214
+          </condition>
1215
+          <command>nasal</command>
1216
+          <script>zkv1000.autopilot.softkey('L', 0, 0);</script>
1217
+        </binding>
1218
+      </mod-up>
1219
+    </action>
1220
+  </animation>
1221
+
1222
+  <animation>
1223
+    <type>pick</type>
1224
+    <object-name>AP.L1</object-name>
1225
+    <action>
1226
+      <button>0</button>
1227
+      <binding>
1228
+        <condition>
1229
+          <property>/instrumentation/zkv1000/MFD/status</property>
1230
+        </condition>
1231
+       <command>nasal</command>
1232
+       <script>zkv1000.autopilot.softkey('L', 1, 1);</script>
1233
+      </binding>
1234
+      <mod-up>
1235
+        <binding>
1236
+          <condition>
1237
+            <property>/instrumentation/zkv1000/MFD/status</property>
1238
+          </condition>
1239
+          <command>nasal</command>
1240
+          <script>zkv1000.autopilot.softkey('L', 1, 0);</script>
1241
+        </binding>
1242
+      </mod-up>
1243
+    </action>
1244
+  </animation>
1245
+
1246
+  <animation>
1247
+    <type>pick</type>
1248
+    <object-name>AP.L2</object-name>
1249
+    <action>
1250
+      <button>0</button>
1251
+      <binding>
1252
+        <condition>
1253
+          <property>/instrumentation/zkv1000/MFD/status</property>
1254
+        </condition>
1255
+       <command>nasal</command>
1256
+       <script>zkv1000.autopilot.softkey('L', 2, 1);</script>
1257
+      </binding>
1258
+      <mod-up>
1259
+        <binding>
1260
+          <condition>
1261
+            <property>/instrumentation/zkv1000/MFD/status</property>
1262
+          </condition>
1263
+          <command>nasal</command>
1264
+          <script>zkv1000.autopilot.softkey('L', 2, 0);</script>
1265
+        </binding>
1266
+      </mod-up>
1267
+    </action>
1268
+  </animation>
1269
+
1270
+  <animation>
1271
+    <type>pick</type>
1272
+    <object-name>AP.L3</object-name>
1273
+    <action>
1274
+      <button>0</button>
1275
+      <binding>
1276
+        <condition>
1277
+          <property>/instrumentation/zkv1000/MFD/status</property>
1278
+        </condition>
1279
+       <command>nasal</command>
1280
+       <script>zkv1000.autopilot.softkey('L', 3, 1);</script>
1281
+      </binding>
1282
+      <mod-up>
1283
+        <binding>
1284
+          <condition>
1285
+            <property>/instrumentation/zkv1000/MFD/status</property>
1286
+          </condition>
1287
+          <command>nasal</command>
1288
+          <script>zkv1000.autopilot.softkey('L', 3, 0);</script>
1289
+        </binding>
1290
+      </mod-up>
1291
+    </action>
1292
+  </animation>
1293
+
1294
+  <animation>
1295
+    <type>pick</type>
1296
+    <object-name>AP.L4</object-name>
1297
+    <action>
1298
+      <button>0</button>
1299
+      <binding>
1300
+        <condition>
1301
+          <property>/instrumentation/zkv1000/MFD/status</property>
1302
+        </condition>
1303
+       <command>nasal</command>
1304
+       <script>zkv1000.autopilot.softkey('L', 4, 1);</script>
1305
+      </binding>
1306
+      <mod-up>
1307
+        <binding>
1308
+          <condition>
1309
+            <property>/instrumentation/zkv1000/MFD/status</property>
1310
+          </condition>
1311
+          <command>nasal</command>
1312
+          <script>zkv1000.autopilot.softkey('L', 4, 0);</script>
1313
+        </binding>
1314
+      </mod-up>
1315
+    </action>
1316
+  </animation>
1317
+
1318
+  <animation>
1319
+    <type>pick</type>
1320
+    <object-name>AP.L5</object-name>
1321
+    <action>
1322
+      <button>0</button>
1323
+      <binding>
1324
+        <condition>
1325
+          <property>/instrumentation/zkv1000/MFD/status</property>
1326
+        </condition>
1327
+       <command>nasal</command>
1328
+       <script>zkv1000.autopilot.softkey('L', 5, 1);</script>
1329
+      </binding>
1330
+      <mod-up>
1331
+        <binding>
1332
+          <condition>
1333
+            <property>/instrumentation/zkv1000/MFD/status</property>
1334
+          </condition>
1335
+          <command>nasal</command>
1336
+          <script>zkv1000.autopilot.softkey('L', 5, 0);</script>
1337
+        </binding>
1338
+      </mod-up>
1339
+    </action>
1340
+  </animation>
1341
+
1342
+  <animation>
1343
+    <type>pick</type>
1344
+    <object-name>AP.R0</object-name>
1345
+    <action>
1346
+      <button>0</button>
1347
+      <binding>
1348
+        <condition>
1349
+          <property>/instrumentation/zkv1000/MFD/status</property>
1350
+        </condition>
1351
+       <command>nasal</command>
1352
+       <script>zkv1000.autopilot.softkey('R', 0, 1);</script>
1353
+      </binding>
1354
+      <mod-up>
1355
+        <binding>
1356
+          <condition>
1357
+            <property>/instrumentation/zkv1000/MFD/status</property>
1358
+          </condition>
1359
+          <command>nasal</command>
1360
+          <script>zkv1000.autopilot.softkey('R', 0, 0);</script>
1361
+        </binding>
1362
+      </mod-up>
1363
+    </action>
1364
+  </animation>
1365
+
1366
+  <animation>
1367
+    <type>pick</type>
1368
+    <object-name>AP.R1</object-name>
1369
+    <action>
1370
+      <button>0</button>
1371
+      <binding>
1372
+        <condition>
1373
+          <property>/instrumentation/zkv1000/MFD/status</property>
1374
+        </condition>
1375
+       <command>nasal</command>
1376
+       <script>zkv1000.autopilot.softkey('R', 1, 1);</script>
1377
+      </binding>
1378
+      <mod-up>
1379
+        <binding>
1380
+          <condition>
1381
+            <property>/instrumentation/zkv1000/MFD/status</property>
1382
+          </condition>
1383
+          <command>nasal</command>
1384
+          <script>zkv1000.autopilot.softkey('R', 1, 0);</script>
1385
+        </binding>
1386
+      </mod-up>
1387
+    </action>
1388
+  </animation>
1389
+
1390
+  <animation>
1391
+    <type>pick</type>
1392
+    <object-name>AP.R2</object-name>
1393
+    <action>
1394
+      <button>0</button>
1395
+      <binding>
1396
+        <condition>
1397
+          <property>/instrumentation/zkv1000/MFD/status</property>
1398
+        </condition>
1399
+       <command>nasal</command>
1400
+       <script>zkv1000.autopilot.softkey('R', 2, 1);</script>
1401
+      </binding>
1402
+      <mod-up>
1403
+        <binding>
1404
+          <condition>
1405
+            <property>/instrumentation/zkv1000/MFD/status</property>
1406
+          </condition>
1407
+          <command>nasal</command>
1408
+          <script>zkv1000.autopilot.softkey('R', 2, 0);</script>
1409
+        </binding>
1410
+      </mod-up>
1411
+    </action>
1412
+  </animation>
1413
+
1414
+  <animation>
1415
+    <type>pick</type>
1416
+    <object-name>AP.R3</object-name>
1417
+    <action>
1418
+      <button>0</button>
1419
+      <binding>
1420
+        <condition>
1421
+          <property>/instrumentation/zkv1000/MFD/status</property>
1422
+        </condition>
1423
+       <command>nasal</command>
1424
+       <script>zkv1000.autopilot.softkey('R', 3, 1);</script>
1425
+      </binding>
1426
+      <mod-up>
1427
+        <binding>
1428
+          <condition>
1429
+            <property>/instrumentation/zkv1000/MFD/status</property>
1430
+          </condition>
1431
+          <command>nasal</command>
1432
+          <script>zkv1000.autopilot.softkey('R', 3, 0);</script>
1433
+        </binding>
1434
+      </mod-up>
1435
+    </action>
1436
+  </animation>
1437
+
1438
+  <animation>
1439
+    <type>pick</type>
1440
+    <object-name>AP.R4</object-name>
1441
+    <action>
1442
+      <button>0</button>
1443
+      <binding>
1444
+        <condition>
1445
+          <property>/instrumentation/zkv1000/MFD/status</property>
1446
+        </condition>
1447
+       <command>nasal</command>
1448
+       <script>zkv1000.autopilot.softkey('R', 4, 1);</script>
1449
+      </binding>
1450
+      <mod-up>
1451
+        <binding>
1452
+          <condition>
1453
+            <property>/instrumentation/zkv1000/MFD/status</property>
1454
+          </condition>
1455
+          <command>nasal</command>
1456
+          <script>zkv1000.autopilot.softkey('R', 4, 0);</script>
1457
+        </binding>
1458
+      </mod-up>
1459
+    </action>
1460
+  </animation>
1461
+
1462
+  <animation>
1463
+    <type>pick</type>
1464
+    <object-name>AP.R5</object-name>
1465
+    <action>
1466
+      <button>0</button>
1467
+      <binding>
1468
+        <condition>
1469
+          <property>/instrumentation/zkv1000/MFD/status</property>
1470
+        </condition>
1471
+       <command>nasal</command>
1472
+       <script>zkv1000.autopilot.softkey('R', 5, 1);</script>
1473
+      </binding>
1474
+      <mod-up>
1475
+        <binding>
1476
+          <condition>
1477
+            <property>/instrumentation/zkv1000/MFD/status</property>
1478
+          </condition>
1479
+          <command>nasal</command>
1480
+          <script>zkv1000.autopilot.softkey('R', 5, 0);</script>
1481
+        </binding>
1482
+      </mod-up>
1483
+    </action>
1484
+  </animation>
1485
+
1198 1486
 </PropertyList>
+302 -13
pfd-copilot.xml
... ...
@@ -67,6 +67,18 @@
67 67
     <object-name>SoftKey.009</object-name>
68 68
     <object-name>SoftKey.010</object-name>
69 69
     <object-name>SoftKey.011</object-name>
70
+    <object-name>AP.L0</object-name>
71
+    <object-name>AP.L1</object-name>
72
+    <object-name>AP.L2</object-name>
73
+    <object-name>AP.L3</object-name>
74
+    <object-name>AP.L4</object-name>
75
+    <object-name>AP.L5</object-name>
76
+    <object-name>AP.R0</object-name>
77
+    <object-name>AP.R1</object-name>
78
+    <object-name>AP.R2</object-name>
79
+    <object-name>AP.R3</object-name>
80
+    <object-name>AP.R4</object-name>
81
+    <object-name>AP.R5</object-name>
70 82
     <object-name>Cover</object-name>
71 83
     <texture-prop>texture</texture-prop>
72 84
     <texture>Textures/GDU-104X.png</texture>
... ...
@@ -120,11 +132,6 @@
120 132
     <object-name>SoftKey.009</object-name>
121 133
     <object-name>SoftKey.010</object-name>
122 134
     <object-name>SoftKey.011</object-name>
123
-    <object-name>Cover</object-name>
124
-  </effect>
125
-
126
-  <animation>
127
-    <object-name>Cover</object-name>
128 135
     <object-name>AP.L0</object-name>
129 136
     <object-name>AP.L1</object-name>
130 137
     <object-name>AP.L2</object-name>
... ...
@@ -137,14 +144,8 @@
137 144
     <object-name>AP.R3</object-name>
138 145
     <object-name>AP.R4</object-name>
139 146
     <object-name>AP.R5</object-name>
140
-    <type>select</type>
141
-    <condition>
142
-      <equals>
143
-        <value type="bool">false</value>
144
-        <value type="bool">true</value>
145
-      </equals>
146
-    </condition>
147
-  </animation>
147
+    <object-name>Cover</object-name>
148
+  </effect>
148 149
 
149 150
   <animation>
150 151
     <name>PFD-copilot</name>
... ...
@@ -1236,4 +1237,292 @@
1236 1237
     </action>
1237 1238
   </animation>
1238 1239
 
1240
+  <animation>
1241
+    <type>pick</type>
1242
+    <object-name>AP.L0</object-name>
1243
+    <action>
1244
+      <button>0</button>
1245
+      <binding>
1246
+        <condition>
1247
+          <property>/instrumentation/zkv1000/PFD-copilot/status</property>
1248
+        </condition>
1249
+       <command>nasal</command>
1250
+       <script>zkv1000.autopilot.softkey('L', 0, 1);</script>
1251
+      </binding>
1252
+      <mod-up>
1253
+        <binding>
1254
+          <condition>
1255
+            <property>/instrumentation/zkv1000/PFD-copilot/status</property>
1256
+          </condition>
1257
+          <command>nasal</command>
1258
+          <script>zkv1000.autopilot.softkey('L', 0, 0);</script>
1259
+        </binding>
1260
+      </mod-up>
1261
+    </action>
1262
+  </animation>
1263
+
1264
+  <animation>
1265
+    <type>pick</type>
1266
+    <object-name>AP.L1</object-name>
1267
+    <action>
1268
+      <button>0</button>
1269
+      <binding>
1270
+        <condition>
1271
+          <property>/instrumentation/zkv1000/PFD-copilot/status</property>
1272
+        </condition>
1273
+       <command>nasal</command>
1274
+       <script>zkv1000.autopilot.softkey('L', 1, 1);</script>
1275
+      </binding>
1276
+      <mod-up>
1277
+        <binding>
1278
+          <condition>
1279
+            <property>/instrumentation/zkv1000/PFD-copilot/status</property>
1280
+          </condition>
1281
+          <command>nasal</command>
1282
+          <script>zkv1000.autopilot.softkey('L', 1, 0);</script>
1283
+        </binding>
1284
+      </mod-up>
1285
+    </action>
1286
+  </animation>
1287
+
1288
+  <animation>
1289
+    <type>pick</type>
1290
+    <object-name>AP.L2</object-name>
1291
+    <action>
1292
+      <button>0</button>
1293
+      <binding>
1294
+        <condition>
1295
+          <property>/instrumentation/zkv1000/PFD-copilot/status</property>
1296
+        </condition>
1297
+       <command>nasal</command>
1298
+       <script>zkv1000.autopilot.softkey('L', 2, 1);</script>
1299
+      </binding>
1300
+      <mod-up>
1301
+        <binding>
1302
+          <condition>
1303
+            <property>/instrumentation/zkv1000/PFD-copilot/status</property>
1304
+          </condition>
1305
+          <command>nasal</command>
1306
+          <script>zkv1000.autopilot.softkey('L', 2, 0);</script>
1307
+        </binding>
1308
+      </mod-up>
1309
+    </action>
1310
+  </animation>
1311
+
1312
+  <animation>
1313
+    <type>pick</type>
1314
+    <object-name>AP.L3</object-name>
1315
+    <action>
1316
+      <button>0</button>
1317
+      <binding>
1318
+        <condition>
1319
+          <property>/instrumentation/zkv1000/PFD-copilot/status</property>
1320
+        </condition>
1321
+       <command>nasal</command>
1322
+       <script>zkv1000.autopilot.softkey('L', 3, 1);</script>
1323
+      </binding>
1324
+      <mod-up>
1325
+        <binding>
1326
+          <condition>
1327
+            <property>/instrumentation/zkv1000/PFD-copilot/status</property>
1328
+          </condition>
1329
+          <command>nasal</command>
1330
+          <script>zkv1000.autopilot.softkey('L', 3, 0);</script>
1331
+        </binding>
1332
+      </mod-up>
1333
+    </action>
1334
+  </animation>
1335
+
1336
+  <animation>
1337
+    <type>pick</type>
1338
+    <object-name>AP.L4</object-name>
1339
+    <action>
1340
+      <button>0</button>
1341
+      <binding>
1342
+        <condition>
1343
+          <property>/instrumentation/zkv1000/PFD-copilot/status</property>
1344
+        </condition>
1345
+       <command>nasal</command>
1346
+       <script>zkv1000.autopilot.softkey('L', 4, 1);</script>
1347
+      </binding>
1348
+      <mod-up>
1349
+        <binding>
1350
+          <condition>
1351
+            <property>/instrumentation/zkv1000/PFD-copilot/status</property>
1352
+          </condition>
1353
+          <command>nasal</command>
1354
+          <script>zkv1000.autopilot.softkey('L', 4, 0);</script>
1355
+        </binding>
1356
+      </mod-up>
1357
+    </action>
1358
+  </animation>
1359
+
1360
+  <animation>
1361
+    <type>pick</type>
1362
+    <object-name>AP.L5</object-name>
1363
+    <action>
1364
+      <button>0</button>
1365
+      <binding>
1366
+        <condition>
1367
+          <property>/instrumentation/zkv1000/PFD-copilot/status</property>
1368
+        </condition>
1369
+       <command>nasal</command>
1370
+       <script>zkv1000.autopilot.softkey('L', 5, 1);</script>
1371
+      </binding>
1372
+      <mod-up>
1373
+        <binding>
1374
+          <condition>
1375
+            <property>/instrumentation/zkv1000/PFD-copilot/status</property>
1376
+          </condition>
1377
+          <command>nasal</command>
1378
+          <script>zkv1000.autopilot.softkey('L', 5, 0);</script>
1379
+        </binding>
1380
+      </mod-up>
1381
+    </action>
1382
+  </animation>
1383
+
1384
+  <animation>
1385
+    <type>pick</type>
1386
+    <object-name>AP.R0</object-name>
1387
+    <action>
1388
+      <button>0</button>
1389
+      <binding>
1390
+        <condition>
1391
+          <property>/instrumentation/zkv1000/PFD-copilot/status</property>
1392
+        </condition>
1393
+       <command>nasal</command>
1394
+       <script>zkv1000.autopilot.softkey('R', 0, 1);</script>
1395
+      </binding>
1396
+      <mod-up>
1397
+        <binding>
1398
+          <condition>
1399
+            <property>/instrumentation/zkv1000/PFD-copilot/status</property>
1400
+          </condition>
1401
+          <command>nasal</command>
1402
+          <script>zkv1000.autopilot.softkey('R', 0, 0);</script>
1403
+        </binding>
1404
+      </mod-up>
1405
+    </action>
1406
+  </animation>
1407
+
1408
+  <animation>
1409
+    <type>pick</type>
1410
+    <object-name>AP.R1</object-name>
1411
+    <action>
1412
+      <button>0</button>
1413
+      <binding>
1414
+        <condition>
1415
+          <property>/instrumentation/zkv1000/PFD-copilot/status</property>
1416
+        </condition>
1417
+       <command>nasal</command>
1418
+       <script>zkv1000.autopilot.softkey('R', 1, 1);</script>
1419
+      </binding>
1420
+      <mod-up>
1421
+        <binding>
1422
+          <condition>
1423
+            <property>/instrumentation/zkv1000/PFD-copilot/status</property>
1424
+          </condition>
1425
+          <command>nasal</command>
1426
+          <script>zkv1000.autopilot.softkey('R', 1, 0);</script>
1427
+        </binding>
1428
+      </mod-up>
1429
+    </action>
1430
+  </animation>
1431
+
1432
+  <animation>
1433
+    <type>pick</type>
1434
+    <object-name>AP.R2</object-name>
1435
+    <action>
1436
+      <button>0</button>
1437
+      <binding>
1438
+        <condition>
1439
+          <property>/instrumentation/zkv1000/PFD-copilot/status</property>
1440
+        </condition>
1441
+       <command>nasal</command>
1442
+       <script>zkv1000.autopilot.softkey('R', 2, 1);</script>
1443
+      </binding>
1444
+      <mod-up>
1445
+        <binding>
1446
+          <condition>
1447
+            <property>/instrumentation/zkv1000/PFD-copilot/status</property>
1448
+          </condition>
1449
+          <command>nasal</command>
1450
+          <script>zkv1000.autopilot.softkey('R', 2, 0);</script>
1451
+        </binding>
1452
+      </mod-up>
1453
+    </action>
1454
+  </animation>
1455
+
1456
+  <animation>
1457
+    <type>pick</type>
1458
+    <object-name>AP.R3</object-name>
1459
+    <action>
1460
+      <button>0</button>
1461
+      <binding>
1462
+        <condition>
1463
+          <property>/instrumentation/zkv1000/PFD-copilot/status</property>
1464
+        </condition>
1465
+       <command>nasal</command>
1466
+       <script>zkv1000.autopilot.softkey('R', 3, 1);</script>
1467
+      </binding>
1468
+      <mod-up>
1469
+        <binding>
1470
+          <condition>
1471
+            <property>/instrumentation/zkv1000/PFD-copilot/status</property>
1472
+          </condition>
1473
+          <command>nasal</command>
1474
+          <script>zkv1000.autopilot.softkey('R', 3, 0);</script>
1475
+        </binding>
1476
+      </mod-up>
1477
+    </action>
1478
+  </animation>
1479
+
1480
+  <animation>
1481
+    <type>pick</type>
1482
+    <object-name>AP.R4</object-name>
1483
+    <action>
1484
+      <button>0</button>
1485
+      <binding>
1486
+        <condition>
1487
+          <property>/instrumentation/zkv1000/PFD-copilot/status</property>
1488
+        </condition>
1489
+       <command>nasal</command>
1490
+       <script>zkv1000.autopilot.softkey('R', 4, 1);</script>
1491
+      </binding>
1492
+      <mod-up>
1493
+        <binding>
1494
+          <condition>
1495
+            <property>/instrumentation/zkv1000/PFD-copilot/status</property>
1496
+          </condition>
1497
+          <command>nasal</command>
1498
+          <script>zkv1000.autopilot.softkey('R', 4, 0);</script>
1499
+        </binding>
1500
+      </mod-up>
1501
+    </action>
1502
+  </animation>
1503
+
1504
+  <animation>
1505
+    <type>pick</type>
1506
+    <object-name>AP.R5</object-name>
1507
+    <action>
1508
+      <button>0</button>
1509
+      <binding>
1510
+        <condition>
1511
+          <property>/instrumentation/zkv1000/PFD-copilot/status</property>
1512
+        </condition>
1513
+       <command>nasal</command>
1514
+       <script>zkv1000.autopilot.softkey('R', 5, 1);</script>
1515
+      </binding>
1516
+      <mod-up>
1517
+        <binding>
1518
+          <condition>
1519
+            <property>/instrumentation/zkv1000/PFD-copilot/status</property>
1520
+          </condition>
1521
+          <command>nasal</command>
1522
+          <script>zkv1000.autopilot.softkey('R', 5, 0);</script>
1523
+        </binding>
1524
+      </mod-up>
1525
+    </action>
1526
+  </animation>
1527
+
1239 1528
 </PropertyList>
+302 -13
pfd-pilot.xml
... ...
@@ -67,6 +67,18 @@
67 67
     <object-name>SoftKey.009</object-name>
68 68
     <object-name>SoftKey.010</object-name>
69 69
     <object-name>SoftKey.011</object-name>
70
+    <object-name>AP.L0</object-name>
71
+    <object-name>AP.L1</object-name>
72
+    <object-name>AP.L2</object-name>
73
+    <object-name>AP.L3</object-name>
74
+    <object-name>AP.L4</object-name>
75
+    <object-name>AP.L5</object-name>
76
+    <object-name>AP.R0</object-name>
77
+    <object-name>AP.R1</object-name>
78
+    <object-name>AP.R2</object-name>
79
+    <object-name>AP.R3</object-name>
80
+    <object-name>AP.R4</object-name>
81
+    <object-name>AP.R5</object-name>
70 82
     <object-name>Cover</object-name>
71 83
     <texture-prop>texture</texture-prop>
72 84
     <texture>Textures/GDU-104X.png</texture>
... ...
@@ -120,11 +132,6 @@
120 132
     <object-name>SoftKey.009</object-name>
121 133
     <object-name>SoftKey.010</object-name>
122 134
     <object-name>SoftKey.011</object-name>
123
-    <object-name>Cover</object-name>
124
-  </effect>
125
-
126
-  <animation>
127
-    <object-name>Cover</object-name>
128 135
     <object-name>AP.L0</object-name>
129 136
     <object-name>AP.L1</object-name>
130 137
     <object-name>AP.L2</object-name>
... ...
@@ -137,14 +144,8 @@
137 144
     <object-name>AP.R3</object-name>
138 145
     <object-name>AP.R4</object-name>
139 146
     <object-name>AP.R5</object-name>
140
-    <type>select</type>
141
-    <condition>
142
-      <equals>
143
-        <value type="bool">false</value>
144
-        <value type="bool">true</value>
145
-      </equals>
146
-    </condition>
147
-  </animation>
147
+    <object-name>Cover</object-name>
148
+  </effect>
148 149
 
149 150
   <animation>
150 151
     <name>PFD-pilot</name>
... ...
@@ -1236,4 +1237,292 @@
1236 1237
     </action>
1237 1238
   </animation>
1238 1239
 
1240
+  <animation>
1241
+    <type>pick</type>
1242
+    <object-name>AP.L0</object-name>
1243
+    <action>
1244
+      <button>0</button>
1245
+      <binding>
1246
+        <condition>
1247
+          <property>/instrumentation/zkv1000/PFD-pilot/status</property>
1248
+        </condition>
1249
+       <command>nasal</command>
1250
+       <script>zkv1000.autopilot.softkey('L', 0, 1);</script>
1251
+      </binding>
1252
+      <mod-up>
1253
+        <binding>
1254
+          <condition>
1255
+            <property>/instrumentation/zkv1000/PFD-pilot/status</property>
1256
+          </condition>
1257
+          <command>nasal</command>
1258
+          <script>zkv1000.autopilot.softkey('L', 0, 0);</script>
1259
+        </binding>
1260
+      </mod-up>
1261
+    </action>
1262
+  </animation>
1263
+
1264
+  <animation>
1265
+    <type>pick</type>
1266
+    <object-name>AP.L1</object-name>
1267
+    <action>
1268
+      <button>0</button>
1269
+      <binding>
1270
+        <condition>
1271
+          <property>/instrumentation/zkv1000/PFD-pilot/status</property>
1272
+        </condition>
1273
+       <command>nasal</command>
1274
+       <script>zkv1000.autopilot.softkey('L', 1, 1);</script>
1275
+      </binding>
1276
+      <mod-up>
1277
+        <binding>
1278
+          <condition>
1279
+            <property>/instrumentation/zkv1000/PFD-pilot/status</property>
1280
+          </condition>
1281
+          <command>nasal</command>
1282
+          <script>zkv1000.autopilot.softkey('L', 1, 0);</script>
1283
+        </binding>
1284
+      </mod-up>
1285
+    </action>
1286
+  </animation>
1287
+
1288
+  <animation>
1289
+    <type>pick</type>
1290
+    <object-name>AP.L2</object-name>
1291
+    <action>
1292
+      <button>0</button>
1293
+      <binding>
1294
+        <condition>
1295
+          <property>/instrumentation/zkv1000/PFD-pilot/status</property>
1296
+        </condition>
1297
+       <command>nasal</command>
1298
+       <script>zkv1000.autopilot.softkey('L', 2, 1);</script>
1299
+      </binding>
1300
+      <mod-up>
1301
+        <binding>
1302
+          <condition>
1303
+            <property>/instrumentation/zkv1000/PFD-pilot/status</property>
1304
+          </condition>
1305
+          <command>nasal</command>
1306
+          <script>zkv1000.autopilot.softkey('L', 2, 0);</script>
1307
+        </binding>
1308
+      </mod-up>
1309
+    </action>
1310
+  </animation>
1311
+
1312
+  <animation>
1313
+    <type>pick</type>
1314
+    <object-name>AP.L3</object-name>
1315
+    <action>
1316
+      <button>0</button>
1317
+      <binding>
1318
+        <condition>
1319
+          <property>/instrumentation/zkv1000/PFD-pilot/status</property>
1320
+        </condition>
1321
+       <command>nasal</command>
1322
+       <script>zkv1000.autopilot.softkey('L', 3, 1);</script>
1323
+      </binding>
1324
+      <mod-up>
1325
+        <binding>
1326
+          <condition>
1327
+            <property>/instrumentation/zkv1000/PFD-pilot/status</property>
1328
+          </condition>
1329
+          <command>nasal</command>
1330
+          <script>zkv1000.autopilot.softkey('L', 3, 0);</script>
1331
+        </binding>
1332
+      </mod-up>
1333
+    </action>
1334
+  </animation>
1335
+
1336
+  <animation>
1337
+    <type>pick</type>
1338
+    <object-name>AP.L4</object-name>
1339
+    <action>
1340
+      <button>0</button>
1341
+      <binding>
1342
+        <condition>
1343
+          <property>/instrumentation/zkv1000/PFD-pilot/status</property>
1344
+        </condition>
1345
+       <command>nasal</command>
1346
+       <script>zkv1000.autopilot.softkey('L', 4, 1);</script>
1347
+      </binding>
1348
+      <mod-up>
1349
+        <binding>
1350
+          <condition>
1351
+            <property>/instrumentation/zkv1000/PFD-pilot/status</property>
1352
+          </condition>
1353
+          <command>nasal</command>
1354
+          <script>zkv1000.autopilot.softkey('L', 4, 0);</script>
1355
+        </binding>
1356
+      </mod-up>
1357
+    </action>
1358
+  </animation>
1359
+
1360
+  <animation>
1361
+    <type>pick</type>
1362
+    <object-name>AP.L5</object-name>
1363
+    <action>
1364
+      <button>0</button>
1365
+      <binding>
1366
+        <condition>
1367
+          <property>/instrumentation/zkv1000/PFD-pilot/status</property>
1368
+        </condition>
1369
+       <command>nasal</command>
1370
+       <script>zkv1000.autopilot.softkey('L', 5, 1);</script>
1371
+      </binding>
1372
+      <mod-up>
1373
+        <binding>
1374
+          <condition>
1375
+            <property>/instrumentation/zkv1000/PFD-pilot/status</property>
1376
+          </condition>
1377
+          <command>nasal</command>
1378
+          <script>zkv1000.autopilot.softkey('L', 5, 0);</script>
1379
+        </binding>
1380
+      </mod-up>
1381
+    </action>
1382
+  </animation>
1383
+
1384
+  <animation>
1385
+    <type>pick</type>
1386
+    <object-name>AP.R0</object-name>
1387
+    <action>
1388
+      <button>0</button>
1389
+      <binding>
1390
+        <condition>
1391
+          <property>/instrumentation/zkv1000/PFD-pilot/status</property>
1392
+        </condition>
1393
+       <command>nasal</command>
1394
+       <script>zkv1000.autopilot.softkey('R', 0, 1);</script>
1395
+      </binding>
1396
+      <mod-up>
1397
+        <binding>
1398
+          <condition>
1399
+            <property>/instrumentation/zkv1000/PFD-pilot/status</property>
1400
+          </condition>
1401
+          <command>nasal</command>
1402
+          <script>zkv1000.autopilot.softkey('R', 0, 0);</script>
1403
+        </binding>
1404
+      </mod-up>
1405
+    </action>
1406
+  </animation>
1407
+
1408
+  <animation>
1409
+    <type>pick</type>
1410
+    <object-name>AP.R1</object-name>
1411
+    <action>
1412
+      <button>0</button>
1413
+      <binding>
1414
+        <condition>
1415
+          <property>/instrumentation/zkv1000/PFD-pilot/status</property>
1416
+        </condition>
1417
+       <command>nasal</command>
1418
+       <script>zkv1000.autopilot.softkey('R', 1, 1);</script>
1419
+      </binding>
1420
+      <mod-up>
1421
+        <binding>
1422
+          <condition>
1423
+            <property>/instrumentation/zkv1000/PFD-pilot/status</property>
1424
+          </condition>
1425
+          <command>nasal</command>
1426
+          <script>zkv1000.autopilot.softkey('R', 1, 0);</script>
1427
+        </binding>
1428
+      </mod-up>
1429
+    </action>
1430
+  </animation>
1431
+
1432
+  <animation>
1433
+    <type>pick</type>
1434
+    <object-name>AP.R2</object-name>
1435
+    <action>
1436
+      <button>0</button>
1437
+      <binding>
1438
+        <condition>
1439
+          <property>/instrumentation/zkv1000/PFD-pilot/status</property>
1440
+        </condition>
1441
+       <command>nasal</command>
1442
+       <script>zkv1000.autopilot.softkey('R', 2, 1);</script>
1443
+      </binding>
1444
+      <mod-up>
1445
+        <binding>
1446
+          <condition>
1447
+            <property>/instrumentation/zkv1000/PFD-pilot/status</property>
1448
+          </condition>
1449
+          <command>nasal</command>
1450
+          <script>zkv1000.autopilot.softkey('R', 2, 0);</script>
1451
+        </binding>
1452
+      </mod-up>
1453
+    </action>
1454
+  </animation>
1455
+
1456
+  <animation>
1457
+    <type>pick</type>
1458
+    <object-name>AP.R3</object-name>
1459
+    <action>
1460
+      <button>0</button>
1461
+      <binding>
1462
+        <condition>
1463
+          <property>/instrumentation/zkv1000/PFD-pilot/status</property>
1464
+        </condition>
1465
+       <command>nasal</command>
1466
+       <script>zkv1000.autopilot.softkey('R', 3, 1);</script>
1467
+      </binding>
1468
+      <mod-up>
1469
+        <binding>
1470
+          <condition>
1471
+            <property>/instrumentation/zkv1000/PFD-pilot/status</property>
1472
+          </condition>
1473
+          <command>nasal</command>
1474
+          <script>zkv1000.autopilot.softkey('R', 3, 0);</script>
1475
+        </binding>
1476
+      </mod-up>
1477
+    </action>
1478
+  </animation>
1479
+
1480
+  <animation>
1481
+    <type>pick</type>
1482
+    <object-name>AP.R4</object-name>
1483
+    <action>
1484
+      <button>0</button>
1485
+      <binding>
1486
+        <condition>
1487
+          <property>/instrumentation/zkv1000/PFD-pilot/status</property>
1488
+        </condition>
1489
+       <command>nasal</command>
1490
+       <script>zkv1000.autopilot.softkey('R', 4, 1);</script>
1491
+      </binding>
1492
+      <mod-up>
1493
+        <binding>
1494
+          <condition>
1495
+            <property>/instrumentation/zkv1000/PFD-pilot/status</property>
1496
+          </condition>
1497
+          <command>nasal</command>
1498
+          <script>zkv1000.autopilot.softkey('R', 4, 0);</script>
1499
+        </binding>
1500
+      </mod-up>
1501
+    </action>
1502
+  </animation>
1503
+
1504
+  <animation>
1505
+    <type>pick</type>
1506
+    <object-name>AP.R5</object-name>
1507
+    <action>
1508
+      <button>0</button>
1509
+      <binding>
1510
+        <condition>
1511
+          <property>/instrumentation/zkv1000/PFD-pilot/status</property>
1512
+        </condition>
1513
+       <command>nasal</command>
1514
+       <script>zkv1000.autopilot.softkey('R', 5, 1);</script>
1515
+      </binding>
1516
+      <mod-up>
1517
+        <binding>
1518
+          <condition>
1519
+            <property>/instrumentation/zkv1000/PFD-pilot/status</property>
1520
+          </condition>
1521
+          <command>nasal</command>
1522
+          <script>zkv1000.autopilot.softkey('R', 5, 0);</script>
1523
+        </binding>
1524
+      </mod-up>
1525
+    </action>
1526
+  </animation>
1527
+
1239 1528
 </PropertyList>
+302 -13
pfd.xml
... ...
@@ -67,6 +67,18 @@
67 67
     <object-name>SoftKey.009</object-name>
68 68
     <object-name>SoftKey.010</object-name>
69 69
     <object-name>SoftKey.011</object-name>
70
+    <object-name>AP.L0</object-name>
71
+    <object-name>AP.L1</object-name>
72
+    <object-name>AP.L2</object-name>
73
+    <object-name>AP.L3</object-name>
74
+    <object-name>AP.L4</object-name>
75
+    <object-name>AP.L5</object-name>
76
+    <object-name>AP.R0</object-name>
77
+    <object-name>AP.R1</object-name>
78
+    <object-name>AP.R2</object-name>
79
+    <object-name>AP.R3</object-name>
80
+    <object-name>AP.R4</object-name>
81
+    <object-name>AP.R5</object-name>
70 82
     <object-name>Cover</object-name>
71 83
     <texture-prop>texture</texture-prop>
72 84
     <texture>Textures/GDU-104X.png</texture>
... ...
@@ -120,11 +132,6 @@
120 132
     <object-name>SoftKey.009</object-name>
121 133
     <object-name>SoftKey.010</object-name>
122 134
     <object-name>SoftKey.011</object-name>
123
-    <object-name>Cover</object-name>
124
-  </effect>
125
-
126
-  <animation>
127
-    <object-name>Cover</object-name>
128 135
     <object-name>AP.L0</object-name>
129 136
     <object-name>AP.L1</object-name>
130 137
     <object-name>AP.L2</object-name>
... ...
@@ -137,14 +144,8 @@
137 144
     <object-name>AP.R3</object-name>
138 145
     <object-name>AP.R4</object-name>
139 146
     <object-name>AP.R5</object-name>
140
-    <type>select</type>
141
-    <condition>
142
-      <equals>
143
-        <value type="bool">false</value>
144
-        <value type="bool">true</value>
145
-      </equals>
146
-    </condition>
147
-  </animation>
147
+    <object-name>Cover</object-name>
148
+  </effect>
148 149
 
149 150
   <animation>
150 151
     <name>PFD</name>
... ...
@@ -1236,4 +1237,292 @@
1236 1237
     </action>
1237 1238
   </animation>
1238 1239
 
1240
+  <animation>
1241
+    <type>pick</type>
1242
+    <object-name>AP.L0</object-name>
1243
+    <action>
1244
+      <button>0</button>
1245
+      <binding>
1246
+        <condition>
1247
+          <property>/instrumentation/zkv1000/PFD/status</property>
1248
+        </condition>
1249
+       <command>nasal</command>
1250
+       <script>zkv1000.autopilot.softkey('L', 0, 1);</script>
1251
+      </binding>
1252
+      <mod-up>
1253
+        <binding>
1254
+          <condition>
1255
+            <property>/instrumentation/zkv1000/PFD/status</property>
1256
+          </condition>
1257
+          <command>nasal</command>
1258
+          <script>zkv1000.autopilot.softkey('L', 0, 0);</script>
1259
+        </binding>
1260
+      </mod-up>
1261
+    </action>
1262
+  </animation>
1263
+
1264
+  <animation>
1265
+    <type>pick</type>
1266
+    <object-name>AP.L1</object-name>
1267
+    <action>
1268
+      <button>0</button>
1269
+      <binding>
1270
+        <condition>
1271
+          <property>/instrumentation/zkv1000/PFD/status</property>
1272
+        </condition>
1273
+       <command>nasal</command>
1274
+       <script>zkv1000.autopilot.softkey('L', 1, 1);</script>
1275
+      </binding>
1276
+      <mod-up>
1277
+        <binding>
1278
+          <condition>
1279
+            <property>/instrumentation/zkv1000/PFD/status</property>
1280
+          </condition>
1281
+          <command>nasal</command>
1282
+          <script>zkv1000.autopilot.softkey('L', 1, 0);</script>
1283
+        </binding>
1284
+      </mod-up>
1285
+    </action>
1286
+  </animation>
1287
+
1288
+  <animation>
1289
+    <type>pick</type>
1290
+    <object-name>AP.L2</object-name>
1291
+    <action>
1292
+      <button>0</button>
1293
+      <binding>
1294
+        <condition>
1295
+          <property>/instrumentation/zkv1000/PFD/status</property>
1296
+        </condition>
1297
+       <command>nasal</command>
1298
+       <script>zkv1000.autopilot.softkey('L', 2, 1);</script>
1299
+      </binding>
1300
+      <mod-up>
1301
+        <binding>
1302
+          <condition>
1303
+            <property>/instrumentation/zkv1000/PFD/status</property>
1304
+          </condition>
1305
+          <command>nasal</command>
1306
+          <script>zkv1000.autopilot.softkey('L', 2, 0);</script>
1307
+        </binding>
1308
+      </mod-up>
1309
+    </action>
1310
+  </animation>
1311
+
1312
+  <animation>
1313
+    <type>pick</type>
1314
+    <object-name>AP.L3</object-name>
1315
+    <action>
1316
+      <button>0</button>
1317
+      <binding>
1318
+        <condition>
1319
+          <property>/instrumentation/zkv1000/PFD/status</property>
1320
+        </condition>
1321
+       <command>nasal</command>
1322
+       <script>zkv1000.autopilot.softkey('L', 3, 1);</script>
1323
+      </binding>
1324
+      <mod-up>
1325
+        <binding>
1326
+          <condition>
1327
+            <property>/instrumentation/zkv1000/PFD/status</property>
1328
+          </condition>
1329
+          <command>nasal</command>
1330
+          <script>zkv1000.autopilot.softkey('L', 3, 0);</script>
1331
+        </binding>
1332
+      </mod-up>
1333
+    </action>
1334
+  </animation>
1335
+
1336
+  <animation>
1337
+    <type>pick</type>
1338
+    <object-name>AP.L4</object-name>
1339
+    <action>
1340
+      <button>0</button>
1341
+      <binding>
1342
+        <condition>
1343
+          <property>/instrumentation/zkv1000/PFD/status</property>
1344
+        </condition>
1345
+       <command>nasal</command>
1346
+       <script>zkv1000.autopilot.softkey('L', 4, 1);</script>
1347
+      </binding>
1348
+      <mod-up>
1349
+        <binding>
1350
+          <condition>
1351
+            <property>/instrumentation/zkv1000/PFD/status</property>
1352
+          </condition>
1353
+          <command>nasal</command>
1354
+          <script>zkv1000.autopilot.softkey('L', 4, 0);</script>
1355
+        </binding>
1356
+      </mod-up>
1357
+    </action>
1358
+  </animation>
1359
+
1360
+  <animation>
1361
+    <type>pick</type>
1362
+    <object-name>AP.L5</object-name>
1363
+    <action>
1364
+      <button>0</button>
1365
+      <binding>
1366
+        <condition>
1367
+          <property>/instrumentation/zkv1000/PFD/status</property>
1368
+        </condition>
1369
+       <command>nasal</command>
1370
+       <script>zkv1000.autopilot.softkey('L', 5, 1);</script>
1371
+      </binding>
1372
+      <mod-up>
1373
+        <binding>
1374
+          <condition>
1375
+            <property>/instrumentation/zkv1000/PFD/status</property>
1376
+          </condition>
1377
+          <command>nasal</command>
1378
+          <script>zkv1000.autopilot.softkey('L', 5, 0);</script>
1379
+        </binding>
1380
+      </mod-up>
1381
+    </action>
1382
+  </animation>
1383
+
1384
+  <animation>
1385
+    <type>pick</type>
1386
+    <object-name>AP.R0</object-name>
1387
+    <action>
1388
+      <button>0</button>
1389
+      <binding>
1390
+        <condition>
1391
+          <property>/instrumentation/zkv1000/PFD/status</property>
1392
+        </condition>
1393
+       <command>nasal</command>
1394
+       <script>zkv1000.autopilot.softkey('R', 0, 1);</script>
1395
+      </binding>
1396
+      <mod-up>
1397
+        <binding>
1398
+          <condition>
1399
+            <property>/instrumentation/zkv1000/PFD/status</property>
1400
+          </condition>
1401
+          <command>nasal</command>
1402
+          <script>zkv1000.autopilot.softkey('R', 0, 0);</script>
1403
+        </binding>
1404
+      </mod-up>
1405
+    </action>
1406
+  </animation>
1407
+
1408
+  <animation>
1409
+    <type>pick</type>
1410
+    <object-name>AP.R1</object-name>
1411
+    <action>
1412
+      <button>0</button>
1413
+      <binding>
1414
+        <condition>
1415
+          <property>/instrumentation/zkv1000/PFD/status</property>
1416
+        </condition>
1417
+       <command>nasal</command>
1418
+       <script>zkv1000.autopilot.softkey('R', 1, 1);</script>
1419
+      </binding>
1420
+      <mod-up>
1421
+        <binding>
1422
+          <condition>
1423
+            <property>/instrumentation/zkv1000/PFD/status</property>
1424
+          </condition>
1425
+          <command>nasal</command>
1426
+          <script>zkv1000.autopilot.softkey('R', 1, 0);</script>
1427
+        </binding>
1428
+      </mod-up>
1429
+    </action>
1430
+  </animation>
1431
+
1432
+  <animation>
1433
+    <type>pick</type>
1434
+    <object-name>AP.R2</object-name>
1435
+    <action>
1436
+      <button>0</button>
1437
+      <binding>
1438
+        <condition>
1439
+          <property>/instrumentation/zkv1000/PFD/status</property>
1440
+        </condition>
1441
+       <command>nasal</command>
1442
+       <script>zkv1000.autopilot.softkey('R', 2, 1);</script>
1443
+      </binding>
1444
+      <mod-up>
1445
+        <binding>
1446
+          <condition>
1447
+            <property>/instrumentation/zkv1000/PFD/status</property>
1448
+          </condition>
1449
+          <command>nasal</command>
1450
+          <script>zkv1000.autopilot.softkey('R', 2, 0);</script>
1451
+        </binding>
1452
+      </mod-up>
1453
+    </action>
1454
+  </animation>
1455
+
1456
+  <animation>
1457
+    <type>pick</type>
1458
+    <object-name>AP.R3</object-name>
1459
+    <action>
1460
+      <button>0</button>
1461
+      <binding>
1462
+        <condition>
1463
+          <property>/instrumentation/zkv1000/PFD/status</property>
1464
+        </condition>
1465
+       <command>nasal</command>
1466
+       <script>zkv1000.autopilot.softkey('R', 3, 1);</script>
1467
+      </binding>
1468
+      <mod-up>
1469
+        <binding>
1470
+          <condition>
1471
+            <property>/instrumentation/zkv1000/PFD/status</property>
1472
+          </condition>
1473
+          <command>nasal</command>
1474
+          <script>zkv1000.autopilot.softkey('R', 3, 0);</script>
1475
+        </binding>
1476
+      </mod-up>
1477
+    </action>
1478
+  </animation>
1479
+
1480
+  <animation>
1481
+    <type>pick</type>
1482
+    <object-name>AP.R4</object-name>
1483
+    <action>
1484
+      <button>0</button>
1485
+      <binding>
1486
+        <condition>
1487
+          <property>/instrumentation/zkv1000/PFD/status</property>
1488
+        </condition>
1489
+       <command>nasal</command>
1490
+       <script>zkv1000.autopilot.softkey('R', 4, 1);</script>
1491
+      </binding>
1492
+      <mod-up>
1493
+        <binding>
1494
+          <condition>
1495
+            <property>/instrumentation/zkv1000/PFD/status</property>
1496
+          </condition>
1497
+          <command>nasal</command>
1498
+          <script>zkv1000.autopilot.softkey('R', 4, 0);</script>
1499
+        </binding>
1500
+      </mod-up>
1501
+    </action>
1502
+  </animation>
1503
+
1504
+  <animation>
1505
+    <type>pick</type>
1506
+    <object-name>AP.R5</object-name>
1507
+    <action>
1508
+      <button>0</button>
1509
+      <binding>
1510
+        <condition>
1511
+          <property>/instrumentation/zkv1000/PFD/status</property>
1512
+        </condition>
1513
+       <command>nasal</command>
1514
+       <script>zkv1000.autopilot.softkey('R', 5, 1);</script>
1515
+      </binding>
1516
+      <mod-up>
1517
+        <binding>
1518
+          <condition>
1519
+            <property>/instrumentation/zkv1000/PFD/status</property>
1520
+          </condition>
1521
+          <command>nasal</command>
1522
+          <script>zkv1000.autopilot.softkey('R', 5, 0);</script>
1523
+        </binding>
1524
+      </mod-up>
1525
+    </action>
1526
+  </animation>
1527
+
1239 1528
 </PropertyList>
+3 -1
zkv1000.nas
... ...
@@ -14,8 +14,8 @@ files_to_load = [
14 14
     'display.nas',
15 15
     'menu.nas',    # manage windows
16 16
     'core.nas',    # the scheduler and switch on button
17
+    'afcs.nas',    # Automatic Flight Control System
17 18
 ];
18
-#    'afcs.nas',    # Automatic Flight Control System
19 19
 #    'routes.nas',  # manages flightplans and routes
20 20
 #    'display.nas', # display messages and popups
21 21
 #    'infos.nas',   # get informations from environment
... ...
@@ -24,6 +24,8 @@ files_to_load = [
24 24
 
25 25
 var flightdeck = {};
26 26
 
27
+var autopilot = {};
28
+
27 29
 var data = { # set of data common to all devices
28 30
     roll : 0,
29 31
     pitch : 0,