Toto je starší verze dokumentu!
Obsah
Sasl
Vize autora
http://forums.x-plane.org/index.php?showtopic=38827
Everybody who tried to make own aircraft model discovered that real avionics often can't be simulated by default X-Plane gauges. Generic gauges was a great step to avionics simulation but it lacks most important thing: ability to specify custom logic. For example it is not possible to simulate Boeing FMC with generics and it is not possible to make Tu-16 autopilot AP-5 (I believe it is weirdest autopilot in the world) by using default features.
Some day I decided to solve this problem. Actually there was a lot of more problems those days because of generics doesn't existed yet. My goal was to make technology which will allow:
- Simulate virtually any avionics
- Avionics should work in 3D cockpit, 2D panels and 2D popup panels
- Avionics should work over network (internet) on remote computers to allow creation of complex training devices
- Avionics development should to be easy and fast
After few years of development I've finished with SASL toolkit. While it is in active development phase it is already can do everything from list above.
SASL approach to avionics can be described as „components and scripting“. Everything in SASL world consist of 'components'. For example, typical simple gauge consists of 2 components: background texture and needle which can rotate depending on value of variable. Often X-Plane variable is not enough and one can write any function which can describe needle rotation. For example one can add jitter to ADF needle to make it more realistic. Complex gauges can use other gauges as their subcomponents. Components haven't to be visual: one can make some logic as component. For example such component can add few more failures (may be useful for training) or entire autopilot.
Developing new avionics is relative fast. First of all easiest way is to find completed required gauge. While number of aircrafts increasing more and more gauges sees light. If you are no lucky you have to create your own one. It is fast because you haven't recompile your project and wait for X-Plane startup after every change. Just edit gauge description text file, press F8 key and it will be loaded instantly. Properly designed gauge can be copied to another aircraft or launched over network on another computer.
SASL is open source project and can be used in any simulator, not just X-Plane. For now it is employed in following X-Plane models:
- Tu-104B (http://code.google.com/p/sasl/): SASL usage example and playground
- IL-14 (http://www.store.x-plane.su/): complex payware aircraft by Felis. Has a lot of custom logic and failures
- Yak-40 (http://code.google.com/p/yk40/): open source work-in-progress, will be another SASL demonstrator
SASL source codes and snapshot builds available here: http://code.google.com/p/sasl/
You can download Tu-104 example aircraft (just unpack it to your X-Plane directory; everything required is inside of archive; no additional installation steps required). Also you can download stand-alone avionics application (slava) which allows to run gauges over network. Generic soviet stile navigator panel included in slava archive. In order to run it you have to open Tu-104 (or other sasl enabled aircraft) in X-Plane, specify network password in plugins menu and start server. Next you have to edit slava.bat (or slava.sh depending on your OS) end set the same password and X-Plane computer IP address. Run slava.bat (slava.sh) after that and you'll see navigator panel working over network.
For now I'm going to stop adding new features for a while and write documentation for avionics developers. I'm highly very interested in your thoughts about future of this project. Don't hesitate to ask any questions.
Obecně
- v projektu je samostatná aplikace „Slava“, která umožňuje vytvořit přístrojový panel propojený s X-Plane Sasl po síti. Funguje nejen vizualizace, ale také ovládání přístrojů.
- plno komerčních letadel obsahuje Sasl plugin v sobě.
- Některá jej používají skutečně pro vytváření přístrojů, některé sasl používají pouze jako doplnění speciálních efektů - například 3d zvuk, chvění kabiny, odstranění pilota při pohledu z kokpitu…
- Aby se zobrazili přístroje ve slava aplikaci, musí být nadefinován panel.lua. V defaultu je k dispozici jeden demo ruský panel. Funguje obecně na jakékoliv letadlo, které používá uvedené dataref.
- existuje více verzí sasl
- původní, zatím živý, projekt
- pak nějaký fork….
- komerční verze s .sec soubory
Kompilace Slava
- na webu se mluví o verzi 0.8 a 1.0 RC, v svn je ale verze kompatibilní s 2.0 (aktuálně 2.0.3)
- kompilace se spouští pomocí ./mkdistr.sh
- soubor je potřeba upravit :)
- není tam žádný configure, takže se musí upravit cesty a doinstalovat závislosti
- pro kompilaci slava není potřeba kompilovat xap, který závisí na X-Plane SDK od XSquawkBox
- já jsem řešil tyto problémy při kompilaci
luna.h:10:17: fatal error: lua.h: Adresář nebo soubor neexistuje
#include <lua.h>
^
locate lua.h
fps.h:5:17: fatal error: SDL.h: Adresář nebo soubor neexistuje #include <SDL.h>
apt-get install libsdl2-dev
#include <SOIL.h>
^
locate SOIL.h <code> <code> apt-get install libsoil-dev
EXTRA_CXXFLAGS = -I/usr/include/lua5.1/ -I/usr/include/SOIL/
ln -s /usr/lib/x86_64-linux-gnu/libopenal.so.1 slava/libopenal.so
-I/usr/include/lua5.1/ -I/usr/include/SOIL/ ./mkdistr.sh
/usr/bin/ld: cannot find -lalsound /usr/bin/ld: cannot find -lluajit-5.1 /usr/bin/ld: cannot find -lopenal
-L./ -L../
ln -s /usr/lib/x86_64-linux-gnu/libluajit-5.1.so.2 libluajit-5.1.so
n.cpp g++ -o slava -L/usr/lib/x86_64-linux-gnu/ -L./ -L../ -L../libavionics -L../libaccgl -L../alsound -L/usr/local/lib -L/usr/local/lib utils.o cmdline.o fps.o main.o -lm `sdl2-config –libs` -lavionics -lalsound -laccgl -lluajit-5.1 -ldl -lSOIL -lGL -lopenal /usr/bin/ld: cannot find -lalsound collect2: error: ld returned 1 exit status Makefile:25: návod pro cíl „slava“ selhal make: *** [slava] Chyba 1
ten alsound se musi zkompilovat :) je to adresar… a vyzdauje
alsound.cpp:19:20: fatal error: AL/al.h: Adresář nebo soubor neexistuje
#include <AL/al.h>
install libopenal-dev
a pozooor.. nasel jsem ten divnej build :)) https://github.com/der-On/sasl .. tady server posila NP1 na NP2 :)
uprava default conf.mk
# extra CXXFLAGS EXTRA_CXXFLAGS = -I/usr/include/lua5.1/ -I/usr/include/SOIL/ # extra LNFLAGS EXTRA_LNFLAGS = -L/usr/lib/x86_64-linux-gnu/ -L./ -L../
Index: libavionics/propsclient.cpp
===================================================================
--- libavionics/propsclient.cpp (revision 224)
+++ libavionics/propsclient.cpp (working copy)
@@ -601,6 +601,10 @@
md5_state_t md5;
md5_init(&md5);
+ if (buf.getData()[2]=='1') {
+ props->log.error("I have received NP1... rewriting to NP2 :)");
+ buf.getData()[2]='2';
+ }
md5_append(&md5, buf.getData(), 20);
md5_append(&md5, (md5_byte_t*)props->secret.c_str(),
props->secret.length());
upravy mkdistr.sh... zakomentoval jsem jeste nejake kraivny ohledne buildu toho modulu do xpl
--- mkdistr.sh (revision 224) +++ mkdistr.sh (working copy) +# build alsound +cd alsound +make clean +make +if [ $? != 0 ] ; then + echo "Can't build alsound!" + exit -1 +fi +cd ..
Testování slava-Sasl
build mam hotov.. proc to nekomunikuje???
v saas2.0.zip je navod, co se posila v packetech.. je tam vlastne popis celeho komunikacnicho protokolu (ten zip mas v aircrafts u toho hangaru pc12)
vlastten tady less /opt/X-Plane\ 10/Aircraft/General\ Aviation/Eclipse\ 550-v1-5/plugins/sasl/netprops.txt
kdyz poslu NP1 na eclipse, tak on nereaguje kdyz poslu NP2, tak on odpovi NP1+16B … podle zdrojaku co mam, by mel ale odepsat NP2 :)
takze to vypada, ze tam je nejaka jina verze :) ale jaka?
u toho eclipse se pise neco o verzi 2.0.0… z svn mam cosi jako 2.0.3 :)
vzal jsem sasl plugin z eclipse a hodil to do TU letounu… no a funguje to ted na 64bit teoreticky, kdyz si udelam vlastni build sasl, tak by to pak mohlo frcet :) no ne?
jinak.. ten sasl plugin by nemel vesmes delat tak nejak nic.. vsechno by melo byt v custom cocpit!!
Zprovoznění Sasl u letadel
- je tam 64 bit verze?
- ldd na lin.xpl - not found knihovny?? tohle většinou způsobilo nezobrazení pluginu v menu * zkoumáním log.txt * typicky tam je problém s velikosti písmen v názvu souboru tohle plugin zobrazilo v plugin info, ale nebyla tma položka v menu
SASL INFO: including soundInit.lua SASL ERROR: Can't find sound sounds/INBEE.wav SASL ERROR: Can't find sound sounds/INBEE.wav SASL ERROR: Can't find sound sounds/BEE.wav SASL ERROR: Can't find sound sounds/BEE.wav SASL ERROR: Can't find sound sounds/xrpm4R.wav SASL ERROR: Can't find sound sounds/xrpm4R.wav
TODO
- zmapuj, jake verze sasl jsou v jekych letadlech :) – verze z xpl a checksum souboru
- co se stane, když dáš všude tu nejnovější verzi?? :)
- proč spadne xpl, když dám stop serveru u sasl, když jsem připojen slava klientem?
- co zkompilovat sasl 2.0.3 a dát ho do caranado letadel?? bude to pořád padat v xpl?
- co ten fork sasl?? nebude to lepší? – nepadat?
- udělat si vlastní panel s pár přístroji… cesna style :) v milmi2 je hodně custom component, ale můžu i ukrást jen obrázky přístroju prostě z cesna letadla.. vytváření přístrojů by mělo být lehké
- ve v35 je nejaky xpscrollwell plugin :) nehodil by se i do jiných letadel?
- http://forums.x-plane.org/index.php?showtopic=68571 encrypted sasl
- home/djbuldog/tmp/slava-0.8.0 .. tady mas testovaci buuild
links
-
- docela zive vlakno :D
