Control6

Aus Ethersex_Wiki
Wechseln zu: Navigation, Suche

Control6 ist eine auf Protothreads fußende Art von Skriptsprache, die ein wenig von Basic inspiriert ist. Control6 soll insbesondere dazu dienen, dass man die einzelnen Komponenten von Ethersex schnell zusammenfügen kann. Beispielsweise können in einer Endlosschleife die Temperaturen von KTY-Sensoren ausgelesen werden und in Abhängigkeit der Werte dann Pins geschaltet, SYSLOG-Nachrichten abgesetzt oder ECMD-Befehle versendet werden.

Die Skripte werden während des Kompiliervorgangs in C-Code übersetzt und letztlich mit in die Firmware einkompiliert. Sie sind somit statisch und nur durch Neuprogrammierung änderbar.

So fängt man an

Standardmäßig werden, wenn in Menuconfig die Funktion Control6 aktiviert wurde, die Instruktionen aus der Datei control6/control6.src in die Firmware eingebunden. Für Eigenentwicklungen, die nicht in die "Distribution" aufgenommen werden sollen, empfiehlt es sich separate Dateien in der Ethersex Ordnerstruktur anzulegen, sodass es zu keinen (oder zumindest seltener) zu Konflikten beim Update auf eine neuere offizielle Firmwareversion kommt.

Dazu einfach eine beliebige Datei im Stile der o.g. control6.src anlegen, zum Beispiel eine control6/erste-schritte.src und diese dem Makesystem bekannt machen. Letzteres durch folgenden Eintrag in der Datei config.mk im Hauptverzeichnis (wenn diese noch nicht existiert, einfach eine neue Datei anlegen und nur diese Zeile eintragen):

C6_SOURCE = $(TOPDIR)/control6/erste-schritte.src

Konzepte

  • Ein Control6-Skript wird immer von den Tags CONTROL_START und CONTROL_END umschlossen.
  • Mit THREAD resp. THREAD_END können leicht quasi nebenläufige Programmabschnitte erstellt werden. Dies ermöglicht mehrere Aufgaben, die miteinander nichts zu tun haben, auch getrennt voneinander im Control6-Code abzubilden.

Befehlssatz

Control6 ist momentan schon relativ mächtig und stellt durchaus eine Alternative zum Verfassen von C-Code dar. Es werden aber nachwievor nicht alle Aspekte von Ethersex auch in Control6 abgebildet (und noch weniger werden hier im Wiki bislang thematisiert). Wenn du möchtest, du bist herzlich willkommen beim Ausbau der Funktionalität mitzuhelfen :-)