ArmorLinkOptions
ArmorLinkOptions controls how the ArmorLink runtime starts a node.
ArmorLink 0.4.0 also mirrors the core options into the generated configuration descriptor, so setup tools can change node identity, Gateway mode, Bluetooth and ESP-NOW settings.
Current Options
struct ArmorLinkOptions {
String nodeName = "";
String bleName = "ArmorLink";
uint8_t espNowChannel = 1;
bool enableBle = false;
bool enableEspNow = true;
bool enableGateway = false;
bool enableSerialLogging = true;
bool syncLoggingStateOnModuleOnline = false;
bool requestStateSyncAfterBoot = true;
uint32_t startupStateSyncDelayMs = 5000;
uint32_t startupStateSyncRetryMs = 10000;
String nvsNamespace = "armorlink";
uint32_t moduleHeartbeatIntervalMs = 30000;
bool forceRemoteLogging = false;
uint32_t remoteLogMinIntervalMs = 100;
String defaultLogTarget = "";
bool enableSerialCommands = true;
bool enableSerialMenu = false;
uint32_t modulePresenceCheckIntervalMs = 300000;
uint32_t moduleTimeoutMs = 900000;
};
Core Options
| Option | Default | Description |
|---|---|---|
nodeName | "" | Overrides the ArmorLink node name. If empty, the module constructor name is used. |
bleName | "ArmorLink" | BLE device name shown during discovery. |
espNowChannel | 1 | ESP-NOW/Wi-Fi channel. All nodes in one network must use the same channel. |
enableBle | false | Enables BLE for the App and setup tools. Usually enabled on Gateways or single-node projects. |
enableEspNow | true | Enables wireless ArmorLink node-to-node communication. |
enableGateway | false | Makes this node the Gateway/bridge for the network. |
enableSerialLogging | true | Prints local logs to Serial. |
enableSerialCommands | true | Enables structured serial commands used by the Web Node Configurator. |
enableSerialMenu | false | Enables the human-friendly Gateway serial menu. |
System Config Mirror
At startup ArmorLink registers these config fields automatically:
| Option | Config key | Reboot required |
|---|---|---|
nodeName | nodeName | Yes |
enableGateway | bridgeMode | Yes |
enableBle | bluetoothSetup | Yes |
bleName | bluetoothName | Yes |
enableEspNow | nodeLink | Yes |
espNowChannel | nodeLinkChannel | Yes |
If your firmware already defines one of these keys, ArmorLink does not add a duplicate.
Gateway Setup
ArmorLinkModule module("Chest", ArmorLinkModuleType::Chest);
ArmorLinkOptions options;
options.nodeName = "Chest";
options.enableGateway = true;
options.enableEspNow = true;
options.enableBle = true;
options.enableSerialMenu = true;
options.bleName = "ArmorLink Chest";
ArmorLink.begin(module, options);
Regular Module Setup
ArmorLinkModule module("Helmet", ArmorLinkModuleType::Helmet);
ArmorLinkOptions options;
options.nodeName = "Helmet";
options.enableGateway = false;
options.enableEspNow = true;
options.enableBle = false;
ArmorLink.begin(module, options);
Single-Node App-Controlled Setup
ArmorLinkModule module("Helmet", ArmorLinkModuleType::Helmet);
ArmorLinkOptions options;
options.nodeName = "Helmet";
options.enableGateway = true;
options.enableEspNow = false;
options.enableBle = true;
options.bleName = "ArmorLink Helmet";
ArmorLink.begin(module, options);
Use this when the same ESP32 is both the product module and the App-facing Gateway.
Storage Options
nvsNamespace
options.nvsNamespace = "armorlink";
ArmorLink uses NVS for configuration, pairing and profile-related values.
If left as "armorlink", ArmorLink derives a namespace from the module name. Override it only when you need stable storage across node renames or multiple ArmorLink instances.
Logging Options
| Option | Description |
|---|---|
forceRemoteLogging | Sends remote logs even when the App did not request them. Useful for debugging. |
remoteLogMinIntervalMs | Minimum interval between remote log messages. |
defaultLogTarget | Optional fallback target for module logs before pairing/routing is fully established. |
syncLoggingStateOnModuleOnline | Gateway syncs current log state when a paired module comes online. |
Startup State Sync
| Option | Default | Description |
|---|---|---|
requestStateSyncAfterBoot | true | Module asks the Gateway for current logging/telemetry state after boot. |
startupStateSyncDelayMs | 5000 | Delay before the first startup sync request. |
startupStateSyncRetryMs | 10000 | Retry interval while the module is waiting for sync. |
Presence Options
| Option | Default | Description |
|---|---|---|
moduleHeartbeatIntervalMs | 30000 | Reserved heartbeat interval. Presence is primarily activity based. |
modulePresenceCheckIntervalMs | 300000 | Gateway interval for checking paired module presence. |
moduleTimeoutMs | 900000 | Time without traffic before a module is considered offline. |
For live App updates, the Gateway emits module presence events and snapshots.