init commit
This commit is contained in:
@@ -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()`.
|
||||
Reference in New Issue
Block a user