mirror of
https://git.vladimir.cc/vladimir/ewsdr.git
synced 2026-08-25 20:37:33 +00:00
chore: refine project documentation
This commit is contained in:
+10
-13
@@ -1,22 +1,19 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Стенд «как MSHV»: повторяет TCI-клиента MSHV по его исходникам и говорит,
|
||||
почему он не подключается.
|
||||
"""Стенд совместимости с TCI-клиентом MSHV.
|
||||
|
||||
Зачем: MSHV — самый распространённый TCI-клиент для цифры, и ведёт он себя не
|
||||
так, как наш собственный стенд. Две его особенности определяют всё:
|
||||
|
||||
1. ВСЕ входящие строки он фильтрует по номеру приёмника:
|
||||
if (ls2.at(0)!=tci_trx) continue; // network.cpp
|
||||
то есть клиенту в режиме RX2 (tci_trx = "1") строка `trx:0,false`
|
||||
1. Входящие строки фильтруются по номеру приёмника, поэтому клиенту в режиме
|
||||
RX2 (tci_trx = "1") строка `trx:0,false`
|
||||
не существует в природе.
|
||||
|
||||
2. Инициализация — это ожидание ОДНОГО ответа. Он шлёт `vfo:<rx>,0;` раз в
|
||||
500 мс, максимум 5 попыток, и ждёт `vfo:<rx>,0,<частота>`. Не дождался —
|
||||
«Error To Initialize TCI Server» (network.cpp, Network::initAll,
|
||||
ветка s_ModelID==3||4). Никаких других причин у этой ошибки нет.
|
||||
сообщает об ошибке инициализации.
|
||||
|
||||
Соответствие настроек MSHV: «TCI Client rx1» → приёмник 0, «TCI Client rx2» →
|
||||
приёмник 1 (hvrigcontrol.cpp: netServPort[3]/[4], network.cpp: tci_trx).
|
||||
Соответствие настроек: «TCI Client rx1» → приёмник 0, «TCI Client rx2» →
|
||||
приёмник 1.
|
||||
|
||||
Стенд по умолчанию БЕЗОПАСЕН на приём: ни TRX, ни TUNE, ни START/STOP, ни
|
||||
TX-аудио не отправляются. Передающую часть включает явный --tx.
|
||||
@@ -38,8 +35,8 @@ from live_rx_test import WS, split_commands, parse_command # noqa: E402
|
||||
|
||||
HDR = struct.Struct("<16I")
|
||||
|
||||
# Умолчания MSHV из его же диалога настроек (hvrigcontrol.cpp): каналов 2,
|
||||
# сэмплов 2048, тип float32, частота 48 кГц, буфер TX 24 мс.
|
||||
# Параметры совместимого клиента: 2 канала, 2048 сэмплов, float32,
|
||||
# частота 48 кГц и буфер TX 24 мс.
|
||||
MSHV_CHANNELS = "2"
|
||||
MSHV_SAMPLES = "2048"
|
||||
MSHV_TYPE = "float32"
|
||||
@@ -65,7 +62,7 @@ class Verdict:
|
||||
|
||||
|
||||
class MshvClient:
|
||||
"""Ровно та логика, что в Network::* у MSHV — включая её ограничения."""
|
||||
"""Минимальная модель поведения совместимого TCI-клиента."""
|
||||
|
||||
def __init__(self, ws, rx, verdict):
|
||||
self.ws = ws
|
||||
@@ -148,7 +145,7 @@ class MshvClient:
|
||||
if len(payload) < HDR.size:
|
||||
return
|
||||
head = HDR.unpack(payload[:HDR.size])
|
||||
# MSHV: if (pStream->receiver != tci_trx) return;
|
||||
# Блоки других приёмников клиент игнорирует.
|
||||
if head[0] != int(self.rx):
|
||||
self.audio_foreign += 1
|
||||
return
|
||||
|
||||
Reference in New Issue
Block a user