77d9a5a0ee
Новый домен H (медиа/аудио). Ядро — сквозной арбитр аудио (политика фокуса/ducking поверх PipeWire, role-based), плюс медиаплеер (локальное/BT A2DP/AVRCP/радио/стриминг). Многоагентный adversarial-ревью: 24 находки, 20 подтверждено (default-refute), все применены. Ключевое из ревью: - symphonia НЕ декодирует Opus → отдельный audiopus (libopus, BSD). - AEC: module-echo-cancel (≠ filter-chain) в audio-plane, не в ассистенте — резолв D §147. - media.role (арбитраж) vs media.category (Playback/Capture) разведены. - Кнопки громкости мультируля — uinput→Wayland-input (C/K), не интенты ассистента. - Crash-safe по двум осям (source: жизнь ноды + проактивный cork по NameOwnerChanged/watchdog; sink: пересчёт при возврате output). - intra-role media-фокус (один media-продюсер), гистерезис фокуса (анти-pumping), duck = относит. аттенюатор. - boot аудио-плоскости на Stage 1; отказ-пути плеера (битый файл/обрыв A2DP/ENOSPC/underrun); resume без авто-старта. Кросс-док: D §147 AEC→✅; tech-stack (symphonia/audiopus/module-echo-cancel); hardware §4 (amp-mute-GPIO + FM-тюнер + откр. вопросы); B §4 (amp-mute перед cut); architecture §9 (аудио-арбитр → H); domains/README (строка H). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
48 lines
4.8 KiB
Markdown
48 lines
4.8 KiB
Markdown
# Домены (Tier 2)
|
||
|
||
> Детальные спеки подсистем. Каждый домен — отдельный документ по **единому
|
||
> шаблону** (ниже). Файлы создаём по мере наполнения; здесь — карта и план.
|
||
|
||
Статус: **индекс + шаблон**. Содержательные файлы доменов появляются по ходу работы.
|
||
|
||
## Единый шаблон домена
|
||
|
||
1. **Назначение и границы** — что делает, чего НЕ делает.
|
||
2. **Функции** — таблица: `функция | MVP / later | зависит от | фаза`.
|
||
3. **Данные и интерфейсы** — что домен публикует/потребляет на шине (ссылки на `../contracts/`).
|
||
4. **Зависимости** — ссылки на другие домены и контракты (← здесь «связи»).
|
||
5. **Открытые вопросы / решения.**
|
||
|
||
## Карта доменов
|
||
|
||
| # | Домен | Файл | Кратко |
|
||
|---|-------|------|--------|
|
||
| A | Базовая система / OS | `a-base-system.md` | образ, read-only rootfs, boot, watchdog, OTA, board support |
|
||
| B | Питание и жизненный цикл | `b-power-lifecycle.md` | ACC, graceful shutdown, sleep, защита eMMC |
|
||
| C | Shell / UX / лаунчер | `c-shell-ux.md` | тайлы, темы день/ночь, профили, driver-distraction, ввод с **мультируля**, мультидисплей |
|
||
| D | Голосовой ассистент | `d-assistant.md` | wake→STT→LLM→TTS, vehicle-context, **память о водителе (`.md`)**, офлайн-фолбэк, провайдер-агностик |
|
||
| E | Vehicle Data (OBD/CAN, read-only) | `e-vehicle-data.md` | PIDs, DTC + расшифровка, поездки, расход, VSS-модель |
|
||
| F | Plugin host & экосистема | `f-plugin-host.md` | загрузка/sandbox/lifecycle плагинов, дистрибуция, dev-tools (API — в `../contracts/plugin-sdk.md`) |
|
||
| G | Связь / телефон | `g-connectivity-phone.md` | BT HFP, модем/LTE, WiFi/hotspot, проекция телефона |
|
||
| H | Медиа / аудио | `h-media-audio.md` | **вся стандартная мультимедиа** (локальное/BT A2DP/AVRCP/радио/стриминг) + **арбитр аудио** (политика фокуса/ducking поверх PipeWire) |
|
||
| I | Навигация | `i-navigation.md` | офлайн-карты OSM, роутинг, POI, связка с ассистентом |
|
||
| J | Камеры / видео | `j-cameras-video.md` | задняя камера, парктроник-оверлей, dashcam |
|
||
| K | Датчики / периферия | `k-sensors-peripherals.md` | GPS/Location, IMU; кнопки руля — резистивная ADC-лесенка (CAN-кнопки/TPMS/климат/парктроник на CAN — у E); выделенные не-CAN датчики |
|
||
| L | Облако / компаньон | `l-cloud-companion.md` | мобильное приложение, синхронизация, бэкап, OTA-канал, телеметрия (opt-in) |
|
||
|
||
> Порядок наполнения определим в [roadmap.md](../roadmap.md); технически — после контрактов.
|
||
|
||
## Заделы (сиды для будущих доменов)
|
||
|
||
Идеи на будущее, пойманные по ходу проектирования; раскрываются при наполнении домена.
|
||
|
||
- **J (Камеры).** Камеры — **динамический набор 0..N источников видео**, не одна задняя.
|
||
Задел: подключение доп. камер — фронтальная для **видеорегистратора (dashcam)**,
|
||
камеры **кругового обзора (360°/surround)** и т.п. Набор источников и «виды»
|
||
(например surround-композит) — расширяемые, плагин может добавить источник/вид.
|
||
- **K (Датчики).** **Парктроники** и подобные датчики ближнего действия — как источник
|
||
*данных* (чтение с CAN через Vehicle-Data или отдельный датчик) для оверлеев/
|
||
предупреждений поверх видео-вида.
|
||
- **Архитектурная связь:** видео-источники идут через data-plane (PipeWire/V4L2);
|
||
задняя/парктроник-вид требуют низколатентного раннего пути (см. Решение №3 и lifecycle).
|