ArmorLink Runtime
Die ArmorLink Runtime ist der zentrale Einstiegspunkt, um ArmorLink in einem Sketch zu starten und auszuführen.
Sie verbindet ein ArmorLinkModule mit den ArmorLinkOptions und stellt Laufzeitfunktionen wie Command-Versand und Logging bereit.
Weitere Informationen findest du unter ArmorLinkOptions.
Grundlegende Verwendung
Ein typischer ArmorLink-Sketch initialisiert die Runtime in setup() und aktualisiert sie in loop().
#include <ArmorLink.h>
ArmorLinkModule module("Helmet", ArmorLinkModuleType::Helmet);
ArmorLinkRuntime ArmorLink;
void setup()
{
Serial.begin(115200);
ArmorLinkOptions options;
options.enableEspNow = true;
ArmorLink.begin(module, options);
}
void loop()
{
ArmorLink.loop();
}
begin(...)
Initialisiert ArmorLink für ein Module.
ArmorLink.begin(module, options);
begin(...) verbindet die Runtime mit der Moduldefinition und übernimmt die ausgewählten Laufzeitoptionen.
Dabei werden die aktivierten Subsysteme wie ESP-NOW, BLE oder Gateway-Funktionalität gestartet.
Beispiel:
ArmorLinkModule module("Chest", ArmorLinkModuleType::Chest);
ArmorLinkRuntime ArmorLink;
void setup()
{
Serial.begin(115200);
ArmorLinkOptions options;
options.enableGateway = true;
options.enableEspNow = true;
options.enableBle = true;
options.enableSerialMenu = true;
ArmorLink.begin(module, options);
}
Weitere Informationen findest du unter ArmorLinkModule.
loop()
Aktualisiert die ArmorLink Runtime.
ArmorLink.loop();
loop() sollte kontinuierlich aus der Arduino-loop()-Funktion aufgerufen werden.
Dadurch kann ArmorLink Kommunikation, Routing, Pairing, Logging, Telemetry und andere Laufzeitaufgaben verarbeiten.
Beispiel:
void loop()
{
ArmorLink.loop();
// Eigene Anwendungslogik kann hier ebenfalls laufen.
}
Rufe ArmorLink.loop() regelmäßig auf.
Blockierender Code, lange Delays oder langsame Schleifen können Kommunikation und Reaktionsfähigkeit beeinträchtigen.
sendCommand(...)
Sendet einen Command über das ArmorLink-Netzwerk.
ArmorLink.sendCommand(
"Helmet",
"Facemask",
"toggle"
);
Ein Command besteht aus:
- Ziel-Module
- Entity
- Command
Commands werden über das Gateway geroutet und können passende Actions auf dem Ziel-Module auslösen.
Weitere Informationen findest du unter Commands.
broadcastCommand(...)
Sendet einen Command an alle Modules.
ArmorLink.broadcastCommand(
"Flaps",
"toggle"
);
Ein Broadcast-Command enthält:
- Entity
- Command
Das Ziel wird automatisch als „alle Modules“ behandelt.
Jedes Module mit einer passenden Action kann auf den Broadcast reagieren.
Beispiel einer passenden Action:
module.actions()
.add("toggleFlaps")
.label("Toggle Flaps")
.command("Flaps", "toggle")
.onExecute([]{
toggleFlaps();
});
Weitere Informationen findest du unter Commands.
Commands aus der Anwendungslogik senden
Commands werden häufig aus normalem Firmware-Code heraus gesendet, beispielsweise aus Button-Handlern, Sensorereignissen oder Timern.
Beispiel:
void btn1_handleClick()
{
ArmorLink.sendCommand(
"Helmet",
"Facemask",
"toggle"
);
}
Der Button-Handler selbst ist normale Anwendungslogik.
Der Command ist die ArmorLink-Nachricht, die an ein anderes Module gesendet wird.
Weitere Informationen findest du unter Modules.
debug(...)
Schreibt eine Debug-Nachricht über das ArmorLink-Logging-System.
ArmorLink.debug("Opening helmet");
Abhängig von den Laufzeitoptionen und dem Status der ArmorLink App können Log-Nachrichten lokal über Serial ausgegeben und optional über Remote Logging an die ArmorLink App weitergeleitet werden.
Weitere Informationen findest du unter Remote Logging.
Gateway-Laufzeitverhalten
Wenn enableGateway aktiviert ist, übernimmt die Runtime zusätzlich Gateway-Aufgaben.
ArmorLinkOptions options;
options.enableGateway = true;
Dazu gehören:
- Command-Routing
- Modulerkennung
- Pairing
- Module-Presence-Verwaltung
- BLE-Kommunikation mit der ArmorLink App
Weitere Informationen findest du unter Gateway.
Laufzeitverhalten normaler Modules
Wenn enableGateway deaktiviert ist, verhält sich die Runtime wie ein normales Module.
ArmorLinkOptions options;
options.enableGateway = false;
Ein normales Module kann:
- Commands senden
- Commands empfangen
- Actions ausführen
- Configuration bereitstellen
- Telemetry veröffentlichen
- Remote Logs senden
Weitere Informationen findest du unter Modules.
Zusammenfassung
Die ArmorLink Runtime ist dafür verantwortlich, ArmorLink innerhalb eines Arduino-Sketches auszuführen.
Die meisten Projekte verwenden:
ArmorLink.begin(module, options)ArmorLink.loop()ArmorLink.sendCommand(...)ArmorLink.broadcastCommand(...)ArmorLink.debug(...)
begin(...) initialisiert ArmorLink.
loop() hält ArmorLink aktiv.
sendCommand(...) sendet Commands an ein bestimmtes Module.
broadcastCommand(...) sendet Commands an alle Modules.
debug(...) schreibt Diagnoseinformationen.