docs(domain G): v2 — связь/телефон (Connectivity+Phone), после adversarial-ревью (15 находок) + кросс-док
Новый домен G: Connectivity-core (WiFi/LTE/tethering + BT-адаптер/паринг) + Phone-ап (HFP-звонки/контакты). Многоагентный adversarial-ревью: 24 находки, 15 подтверждено (default-refute; tech-измерение — 0, техника устояла), все применены. Ключевое из ревью: - BT-шов резолвнут двунаправленно: владелец BlueZ — Connectivity-core (G §3 ↔ H §6/§15 ✅). - Граница голоса: только HFP спаренного телефона; встроенный модем — data-only (VoLTE/eCall вне скоупа). - SIM PIN/PUK-флоу (sim_locked/no_sim) + captive-portal детект (portal/limited, не ложный online) — модем v1. - Connectivity поднимается на Stage 2 (синхр. с architecture §6). - Мультипаринг: ровно один active-телефон для HFP/PBAP (Dial/CallStateChanged однозначны). - SCO-loss mid-call → CallState=audio_lost + снятие роли phone_call → H раскорчивает медиа (не залипает). - Входящий-оверлей не перекрывает реверс-вид (z-order overlay-слота → C); tethering-петля AP+tether запрещена. - PBAP-синк фоновый; отказ-пути паринга/no_service симметрично J/H. Кросс-док: H §6/§15 (BlueZ ✅) + якоря D §147/§148→§10; architecture §3 (Connectivity+BT) /§6 (Stage 2); ipc §3 (Type+tether, State enum, CallState=audio_lost); security-privacy §7 (контакты/журнал/SMS local-first); hardware §4 (Bluetooth); tech-stack (NM/MM/BlueZ); C §11 (z-order overlay). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -82,7 +82,7 @@ fail-safe при отказе/зависании самого MCU** (незав
|
||||
| **Дисплей** | HDMI + USB-тачскрин | MIPI-DSI / LVDS панель |
|
||||
| **CAN/OBD** | ELM327 (USB/BT) | нативный CAN-трансивер → **SocketCAN** |
|
||||
| **GPS** | USB/UART, NMEA | **внешняя/активная антенна** (LNA); 1PPS — опц. (PPS-точность времени; на USB-донглах обычно нет) |
|
||||
| **Связь** | USB-модем (ModemManager) / Wi-Fi | — |
|
||||
| **Связь** | USB-модем (ModemManager) / Wi-Fi / **Bluetooth** (BlueZ: HFP/A2DP/PBAP) | — |
|
||||
| **Аудио** | I2S codec + усилитель (+ mute/enable-GPIO — anti-pop) | — |
|
||||
| **Микрофон** | USB **mic-массив** (wake-word, шумоподавление) | — |
|
||||
| **Радио** *(later)* | — | FM-тюнер (Si47xx-класс) — нужен для радио (домен H §7); 🟡 добавить или отказаться |
|
||||
|
||||
@@ -86,8 +86,8 @@
|
||||
|
||||
### `ru.shturman.Connectivity` — сеть (обёртка NM/MM)
|
||||
- **Методы:** `GetStatus() → status`, `ListNetworks() → [...]`, `Connect(id)`, `Disconnect()`.
|
||||
- **Сигналы:** `ConnectivityChanged(online)`, `NetworkChanged(...)`.
|
||||
- **Properties:** `Online` (bool — «сервис ещё не поднят» ≠ «offline»), `Type` (wifi/modem), `SignalStrength`.
|
||||
- **Сигналы:** `ConnectivityChanged(state)`, `NetworkChanged(...)`.
|
||||
- **Properties:** `Online` (bool — «сервис ещё не поднят» ≠ «offline»), `Type` (wifi/modem/tether), `State` (offline/portal/limited/online + модем sim_locked/no_sim/no_service — домен G), `SignalStrength`.
|
||||
|
||||
### `ru.shturman.Location` — GPS/положение (владелец — домен K)
|
||||
- **Properties:** `Latitude`, `Longitude`, `Heading`, `Speed`, `FixQuality` (enum `no_fix`/`fix_2d`/`fix_3d`/`augmented`/`dead_reckoning`), `HDOP`, `satellites`, `ts`; per-property quality для `Speed`/`Heading` (зануление у нуля — domain K §2).
|
||||
|
||||
@@ -133,6 +133,7 @@ PipeWire-capture/location). Для `audio_in`/`location` — **while-in-use**:
|
||||
| Текст запроса | локально → онлайн-LLM при необходимости | только текст, только в онлайн-режиме |
|
||||
| Данные машины (OBD/DTC) | локально | **в промпт онлайн-LLM** — только онлайн, по запросу **И при явном (отзываемом) согласии** на весь исходящий промпт; офлайн — не уходит |
|
||||
| Память о водителе (`.md`) | локально | нет (без явного согласия) |
|
||||
| Контакты/журнал/SMS (PBAP/MAP, домен G) | локально (fscrypt) | нет (без явного согласия) |
|
||||
| Телеметрия | локально | **opt-in**, по умолчанию выключена |
|
||||
|
||||
- Онлайн-LLM — только **RU-провайдеры** (GigaChat/YandexGPT), данные в РФ (152-ФЗ).
|
||||
|
||||
Reference in New Issue
Block a user