init commit

This commit is contained in:
Ayzen
2026-03-05 14:42:33 +03:00
commit fd4618b20d
964 changed files with 325114 additions and 0 deletions
+35
View File
@@ -0,0 +1,35 @@
# Hardware layer
## 1. LibreVNA
- `hardware_full/librevna_service.py`: orchestration facade.
- `hardware_full/librevna_backends.py`:
- `NativeLibreVnaBackend`
- `MockLibreVnaBackend`
- `hardware_full/librevna_driver/*`: низкоуровневый USB/protocol stack.
### Native flow
1. `LibreVnaService.open()`
2. `configure(RadarSweepModel)`
3. `acquire_s21()`
4. `close()`
### Device limits
- `read_device_limits()` возвращает min/max frequency, IFBW, power и max points.
- GUI применяет лимиты для clamp/labels и live B-scan frequency bounds.
## 2. Switches
- `switch_service.py`: выбор mock/native драйвера по конфигурации.
- `switch_drivers/*`:
- `MockSwitchDriver`
- `H7992Driver`
- `HMC349ADriver`
- `gpio_uapi.py` (Linux GPIO v2 wrapper)
### Инварианты
- Позиции валидируются на уровне драйвера.
- Драйверы требуют `open()` перед `switch_to()`.
- Для native GPIO ошибки ОС конвертируются в Python `RuntimeError` с контекстом.
## 3. Расширение hardware слоя
- Новый радар: добавить backend с тем же контрактом, подключить в service.
- Новый switch: реализовать `SwitchDriverProtocol` и добавить ветку в `SwitchService._build_driver()`.