docs(domain B): v2 после adversarial-ревью (22 находки) + кросс-док
Существенная переработка power-lifecycle: - детект running по НАПРЯЖЕНИЮ бортсети (~14В генератор vs ~12.4В покой), не RPM (v2); Power.IgnitionState — единственный канон lifecycle-состояния - триггер shutdown ≠ rate-of-change: ACC-off / under-voltage-held / thermal-trip; cold-crank до ~6В — НОРМА (ride-through), не индикатор обрыва - SoC↔MCU shutdown-протокол специфицирован СЕЙЧАС: hold-up-таймер + heartbeat + safe-to-cut + fail-safe при потере линка (обе стороны); MCU — fail-safe-авторитет - abort при re-power до PONR (ShutdownAborted); shutting-down разбит abortable/committed - НОВОЕ: thermal shutdown (триггер/гистерезис/UX); ordered teardown (E закрывает ISO-TP); таблица MCU-vs-supercap; battery deep-discharge cutoff; монотонные часы для таймеров; первый boot без времени; периодическое сохранение времени - watchdog по фазам (runtime + shutdown RebootWatchdogSec/MCU-дедлайн + boot-окно); v0=SoC+MCU+reboot, bootcount=v4 - фазы: MCU HW fail-safe-таймер = v0 (не v1); save-time = v0 - кросс-док: security-privacy (mic power-gated), ipc Power (enum/reason/ShutdownAborted), e/data-model (engine_running не дублирует IgnitionState), a-base §7 (периодич. save) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -96,8 +96,9 @@ PID** (Mode 01, PID `0x00/0x20/0x40/…` — битовые маски подд
|
||||
**оценка** из MAF (предполагает бензин/стехиометрию — помечаем как `estimate`,
|
||||
зависит от типа топлива).
|
||||
- **Пробег поездки / средний расход** (интеграл по времени; нужен trip-стейт).
|
||||
- **Состояние машины** (`off` / `accessory` / `running`) — грубо из RPM/зажигания;
|
||||
нужно ассистенту, чтобы отличать «двигатель заглушен» от «сигнал недоступен» от «ноль».
|
||||
- **`engine_running`** (running/stopped/unknown, из RPM) — узкий дискриминатор «двигатель
|
||||
заглушен» vs «сигнал недоступен». **Lifecycle-состояние** (off/accessory/running) — канонический
|
||||
`Power.IgnitionState` (домен B), здесь не дублируется.
|
||||
- Помечаются `source = computed`; зависят от наличия исходных сигналов.
|
||||
|
||||
## 6. Модель DTC (диагностические коды)
|
||||
|
||||
@@ -56,10 +56,10 @@
|
||||
- **Properties (горячие):** `Speed`, `Rpm`, `CoolantTemp`, `ModuleVoltage` (питание ЭБУ ≈ бортсеть, не клеммы АКБ), `Online`.
|
||||
- ⛔ **Методов записи нет** — ни `SetSignal`, ни actuator-команд, ни clear-DTC. Архитектурная гарантия read-only (принцип #2). Типы — [data-model.md](data-model.md).
|
||||
|
||||
### `ru.shturman.Power` — питание и жизненный цикл
|
||||
- **Методы:** `GetPowerState() → state`, `RequestSleep()` (внутр.).
|
||||
- **Сигналы:** `AccChanged(on)`, `ShutdownImminent(seconds)`, `Sleep()`, `Wake()`.
|
||||
- **Properties:** `IgnitionState`, `Uptime`, `PowerSource`.
|
||||
### `ru.shturman.Power` — питание и жизненный цикл (домен B)
|
||||
- **Методы:** `GetPowerState() → state` (enum `off`/`accessory`/`running`/`shutting_down`/`sleep`/`battery_cutoff`), `RequestSleep()` (внутр.).
|
||||
- **Сигналы:** `AccChanged(on)`, `ShutdownImminent(seconds, reason)` (`reason ∈ acc_off|under_voltage|thermal|battery_cutoff`), **`ShutdownAborted()`** (re-power до PONR), `Sleep()`, `Wake()`.
|
||||
- **Properties:** `IgnitionState` (off/accessory/running — **канон**; E зеркалит, не дублирует), `Uptime` (монотонные часы), `PowerSource` (`vehicle_12v`/`holdup_cap`/`sleep_rail`/`low_battery`).
|
||||
|
||||
### `ru.shturman.Settings` — конфигурация и состояние
|
||||
- **Методы:** `Get(key) → value`, `Set(key, value)`, `List(prefix) → [key]`, `Reset(key)`.
|
||||
|
||||
@@ -144,8 +144,9 @@ PipeWire-capture/location). Для `audio_in`/`location` — **while-in-use**:
|
||||
обработчика ПДн и правовое основание передачи (→ legal-трек). **Локализация ≠ покрытие
|
||||
152-ФЗ:** «данные в РФ» (где хранятся) ≠ основание на обработку/передачу (согласие).
|
||||
|
||||
**Микрофон:** wake-word слушает постоянно, но **локально**; в обработку идёт только
|
||||
после слова-активатора; включённый микрофон показывается **видимым индикатором**.
|
||||
**Микрофон:** wake-word слушает **в состояниях `running`/`accessory`** (гейт Power — **не**
|
||||
безусловно always-on; в `sleep`/`off` выключен, риск разряда АКБ, принцип #5; домен B §7 / D §8),
|
||||
всё **локально**; в обработку идёт только после слова-активатора; включённый микрофон — **видимый индикатор**.
|
||||
|
||||
**Охват гарантий и рисковые комбинации.** Таблица выше описывает поведение
|
||||
first-party (ассистент). Сторонний плагин с `network` **+** чувствительными данными
|
||||
|
||||
Reference in New Issue
Block a user