Zum Hauptinhalt springen

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

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.