-
Notifications
You must be signed in to change notification settings - Fork 0
1.0 Ethos lua Basiswissen
Ich möchte mit den absoluten Grundlagen starten, die überhaupt nichts zum Wissen um die Programmierung beitragen:
Unter Ethos existieren diverse Lua-Script Typen, die hinsichtlich Funktionsumfang auf Ihr Aufgabengebiet „optimiert“ sind.
Die häufigsten sind:
Der bekannteste Typ dürfte wohl das widget sein. Diese Luas werden in den Home screens verwendet.
Home Screens, also die screens, die man nach dem Einschalten sofort sieht bzw durch die man danach blättern kann, besitzen vom Benutzer definierte unterschiedliche Layouts und damit Rahmengrössen für ein widget. (bis hin zum Vollbild). Pro Rahmen kann ein lua konfiguriert werden. Das lua „lebt“ quasi in diesem Rahmen und sieht ihn als „Gültigkeitshorizont“.
Das bedeutet z.B. dass beim Zeichnen nicht aus diesem Rahmen hinaus gezeichnet werden kann, die obere linke Ecke hat immer die Koordinaten 0,0, egal wo sich auf dem Bildschirm der Rahmen befindet.
Das System-tool script ist ein „Einmalscript“ es wird manuell über das System Menue gestartet und nach verlassen werden keine weiteren Aktionen mehr ausgeführt.
Typischer Anwendungszweck ist das Konfigurieren von Geräten wie (Gyro-) Empfänger, ESC's, Redundnanzboxen etc..
Wer mit Ethos bereits ein wenig gearbeitet hat kennt den Begriff „Quelle“ bzw „Sources“.
In vielen Menues können „Quellen“ aus Kategorien wie analoge Geber, Schalter, Telemetriewerte usw. ausgewählt werden, um Werte zu liefern.
Sobald ein Source script in ein Modell hineinkonfiguriert wurde, ist dies in der Lage ebenfalls (im script berechnete) Werte zur Verfügung zu stellen
hier können im Hintergrund z.B. event gesteuert Aufgaben abgearbeitet werden, die weder Darstellungen auf dem Display noch Ausgabe von Werten in Form der kategory Quelle benötigen
Ausser den bereits oben genannten scripten existieren weitere Typen mit sehr speziellen Einsatzbereichen, z.B. für RF Module wie Multiprotokoll, Ghost, ELRS, Crossfire
Was bedeutet "Registrierung" ? Alle auf dem Sender gefunden scripte müssen beim Start des Senders "registriert" und daher dem Betriebssystem bekannt gemacht werden. Dies geschieht unabhängig davon, welche Scripte im jeweiligen Modell überhaupt verwendet werden. Der Senderr besitzt nach Beenden des Bootvorgangs quasi einen "Katalog" von verfügbaren scripten der jeweiligen Typklassen und kann daraufhin während der Bedienung Auswahllisten präsentieren.
Jedes lua script unterteilt sich in gewisse „Module“, sogenannte handler, die jeweils spezielle Aufgabengebiete abdecken. (z.B. Datenverarbeitung im Hintergrund, Display ansteuern / zeichnen, widget konfigurieren, Konfiguration lesen bzw speichen, Ereignisse abfangen und auswerten….).
Auf jeden Fall muss jedes script den sogenannten init-handler definiert haben, damit beim Senderstart das jeweilige script registriert wird. In dem Vorgang wird auch mit angegeben, welche „module“, also weiteren handler, im script benutzt werden.
Die Methode so ein script zu registrieren ist eine „Systemfunktion“ und damit aus der Klasse system
Ein widget wird beispielsweise mit der Methode „system.registerWidget()“ deklariert. Als Code-snippet das mögliche Beispiel eines kompletten init Handlers für ein widget:
local function init()
system.registerWidget({key="Xample", name=“Beispiel“, create=create, wakeup=wakeup, paint=paint})
end
- key ist der EINDEUTIGE Schlüssel für das script, dieser darf in keinem anderen script, egal welchen Typs, nochmals vorkommen
- name ist der in einer Auswahlliste präsentierte Name
- create ist der handler, der beim ersten Aufruf des scripts ausgeführt wird und wird der funktion gleichen namens „create“ zugewiesen
- entsprechend wird der Hintergrund handler wakeup definiert
- und ebenso der paint handler für grafische Darstellungen
Eine detailierte Übersicht der script-Typ spezifischen Registrierungs Methoden sowie der parameter sind der Online Doku bzw dem Lua Reference Guide zu entnehmen, Quelle dazu wird später noch gelistet.