Skip to content

1.0 Ethos lua Basiswissen

Udo edited this page Jul 4, 2024 · 4 revisions



Ich möchte mit den absoluten Grundlagen starten, die überhaupt nichts zum Wissen um die Programmierung beitragen:



Die unterschiedlichen Lua script Typen in Ethos

Unter Ethos existieren diverse Lua-Script Typen, die hinsichtlich Funktionsumfang auf Ihr Aufgabengebiet „optimiert“ sind.

Die häufigsten sind:

Widget

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.

System-tool

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..

Sourcescripte

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

Task scripte

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

sonstige scripte

Ausser den bereits oben genannten scripten existieren weitere Typen mit sehr speziellen Einsatzbereichen, z.B. für RF Module wie Multiprotokoll, Ghost, ELRS, Crossfire


die Registrierung

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.



handler

init

create

wakeup

paint

event

configure

read

write

menu

close

Clone this wiki locally