docs(domain E): v2 — ретро-ревью pass-2 (5 находок) + tech-stack ISO-TP

- ISO-TP (ISO 15765-2): нативный CAN-OBD требует can-isotp/CAN_ISOTP для multiframe
  (Mode 03 DTC, Mode 09 VIN), не голый socketcan; адресация 0x7DF/0x7E8..0x7EF
- планировщик опроса: бюджет req/s на транспорт (ELM327 half-duplex) + приоритеты PID,
  round-robin при насыщении; эффективная частота = min(desired, потолок, доля бюджета)
- §5a безопасность активного опроса: гейт по движению, предпочтение passive listen-only,
  fail-safe при аномалиях шины, риск ретрофита; «безобидность» read-запросов условна
- §5b отказ/восстановление транспорта: bus-off + restart-ms, ELM327 reconnect,
  Online=false → unavailable, без зависания (#4)
- владение computed: core (состояние/мгновенный расход) vs плагин (trip-производные)
- tech-stack: CAN/OBD row + ISO-TP

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-21 01:27:25 +03:00
parent 02f13db1f3
commit 08d787d977
2 changed files with 39 additions and 6 deletions
+1 -1
View File
@@ -42,7 +42,7 @@
| **Песочница** | **bubblewrap** + systemd-hardening | апы/плагины; WASM-тир — позже |
| **OS base** | Armbian/Debian (RK3588), ядро ближе к mainline | read-only rootfs + overlay |
| **Init / lifecycle** | **systemd** | ядро; апы/плагины — App-Host |
| **CAN/OBD (read-only)** | **SocketCAN** (крейт `socketcan`) | ELM327 на старте; `python-OBD` только в симуляторе |
| **CAN/OBD (read-only)** | **SocketCAN** (`socketcan`) + **ISO-TP** (`can-isotp`/`CAN_ISOTP`) для нативного OBD | ELM327 (мульти-протокол, прячет ISO-TP) на старте; `python-OBD` — в симуляторе |
| **Wake-word** | **openWakeWord** | RU-фраза «Штурман»; Porcupine отвергнут (проприетарный, #12) |
| **VAD** | Silero VAD | через ONNX Runtime |
| **STT** | Vosk · Silero | офлайн, RU; через биндинги / `ort` |