How-to guides
Relay priority (remote access)
The user can also connect to the vehicle remotely, through the central relay server (mobile network, limited bandwidth). Then the Komod's data goes according to the relay priority. You give the default value, the user can override it in the graph editor.
[Komod("acme.camera", RelayPriority = RelayPriority.Low)] // Komod level
public sealed class AcmeCameraKomod : KomodBase<AcmeCameraSettings>
{
[Output("frame")] // inherits: Low
public required IOutput<CameraFrame> Frame { get; init; }
[Output("status", RelayPriority = RelayPriority.High)] // small, important data: always goes
public required IOutput<Scalar> Status { get; init; }
}
| Value | Meaning |
|---|---|
Auto (default) |
The Komod is High if it has no output that carries raw bytes (byte[], ReadOnlyMemory<byte>), otherwise Low. A port inherits the Komod's value. |
High |
Small traffic (about 2 KB/s per port). If a port sends more, KOFA thins it and warns; a byte-carrying port cannot be High (load error). |
Low |
Large data that may be updated less often (camera image, map grid). |
None |
Sends nothing towards the relay, but its commands and UI inputs work (a controlled-only Komod). |
Blocked |
Not reachable through the relay at all. Can be set only at Komod level. |
From the UI
Based on IKomodClientContext.IsRelaySession and GetRelayPriorityAsync(port) a view can show a placeholder. On a relay the subscription of a None/Blocked port ends immediately, and a Low one may update rarely.