Die Firmware des Textil-Spions enthält die gesamte Logik für die Kommunikation zwischen Datenbank, MQTT und den Messgeräten (sprich deren Ansteuerung über SCPI) sowie die Zustandsüberwachung und Zustandsüberführung des Spions selbst.
Außerdem wird ein Webserver zur direkten Konfiguration des Spions zur Verfügung gestellt, den man einerseits über den Spion-Hotspot, wenn der Spion noch keinen Zugriff auf das Internet hat, oder über die durch den verbundenen WLAN-Router vergebene IP-Adresse des Spions erreichen kann.
Codestruktur
Hier sieht man die Struktur des Firmware-Programmcodes.
Es wurde eine Superloop implementiert, welche durchgehend läuft und je nach Zustand des Spions (aktiv, offline, wartend,…) andere Module verwendet.
Ablauf Superloop
Hier wird der generelle Ablauf der Superloop angedeutet.
Aktionen die nach einer festgelegten Zeit durch Timer oder über MQTT ausgelöst werden, wie z.B. das Senden des Heartbeats oder Herunterladen von durch MQTT signalisierte neue Missionen, wurden in diesem Flowchart nicht berücksichtigt, da diese unabhängig vom aktuellen Zustand des Spions wenn möglich durchgeführt werden.
Webserver
Der Webserver ist quasi durchgehend verfügbar, nur die zu verwendende IP-Adresse ist abhängig vom aktuellen Zustand des Spions:
- Kein WLAN (neuer Spion, neuer Standort,… – blaue LED blinkt, Spion wartet auf SSID/Passwort):
Es wird ein S.P.E.C.T.R.E. Hotspot geöffnet zu dem man sich verbinden kann, IP-Adresse immer 192.168.43.1 - Mit WLAN verbunden (blaue LED leuchtet):
Webserver ist über die vergebene IP-Adresse des Spions, welche mit jedem Heartbeat alle 2 Minuten ausgegeben wird, verfügbar
Der Webserver bietet neben der Konfiguration der WLAN-Verbindung auch die Möglichkeit, den Namen des Spions zu ändern (wird automatisch in der Datenbank aktualisiert).
Am Wichtigsten ist jedoch die Möglichkeit, Geräte zu konfigurieren. Die am Webserver angegebenen Geräte müssen für jede Mission möglicherweise neu angepasst werden, da sie die angeschlossenen Geräte am Spion repräsentieren. Sprich, wenn eine Mission ausgeführt werden soll und das für ein Kommando notwendige Gerät nicht in der Liste am Webserver aufscheint, wird die Mission mit Fehler abgebrochen.
Low-Level Kommunikation mit Messgeräten
Die Low-Level Kommunikation mit Messgeräten (Oszi, generator, Analyzer) erfolgt via TCP im SCPI-Protokoll. Gesteuert vom missionlog aus, werden ein oder mehrere Devices (Messgeräte) verbunden, zyklisch mit Mess-Befehlen beschickt und nach abgearbeiteter Mission wieder getrennt.
Parallel werden Antworten der Geräte (in erster Linie Messdaten) aufgesammelt, formattiert und an eine höhere Schicht in der FW, dem missionlog zurückgegebn.