Files
contracts/schema/envelope.json
T
mikkeli d9d942745b Host signals: the Orin's health on yukart/host/<signal> (source host)
Temperatures, CPU/GPU load, memory, module power, fan, WiFi/LTE/tablet
links and the UPS battery, published by svc-core's orin-status.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DDwfd6Ki8UfG4hK6W5YpJz
2026-10-12 16:33:15 +09:00

52 lines
1.4 KiB
JSON

{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://yukart/schema/envelope.json",
"title": "Signal envelope",
"description": "Every decoded signal published on yukart/vehicle/*, yukart/gnss/* and yukart/host/*. Raw CAN uses the binary frame encoding instead.",
"type": "object",
"required": [
"timestamp",
"monotonic",
"value",
"unit"
],
"additionalProperties": false,
"properties": {
"timestamp": {
"type": "integer",
"description": "UTC epoch microseconds. Absolute reference. Subject to NTP steps; use monotonic for ordering."
},
"monotonic": {
"type": "integer",
"description": "Nanoseconds from CLOCK_MONOTONIC. Authoritative for ordering and for any interval within a session. Not comparable across boots."
},
"value": {
"type": [
"number",
"string",
"boolean",
"null"
],
"description": "null means the signal is known but currently has no value."
},
"unit": {
"type": "string",
"description": "Derived from signals.json. Never authored per message."
},
"quality": {
"enum": [
"ok",
"stale",
"invalid"
],
"default": "ok",
"description": "Omitted when ok."
},
"mock": {
"type": "boolean",
"default": false,
"description": "Present and true when synthesised. Must be rendered visibly by any display."
}
}
}